@indielayer/ui 1.0.10 → 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 (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 +8 -8
  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,8 +1,18 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { Ref } from 'vue'
2
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
3
+ import type { AvatarProps } from './Avatar.vue'
2
4
 
3
- export default {
5
+ type InternalClasses = 'wrapper'
6
+ type InternalExtraData = { source: Ref<string | undefined>; }
7
+
8
+ interface InternalTheme extends ThemeComponent<AvatarProps, InternalClasses, InternalExtraData> {}
9
+ export interface AvatarTheme extends Omit<InternalTheme, 'classes'> {
10
+ classes?: Partial<ThemeClasses<AvatarProps, InternalClasses, InternalExtraData>>;
11
+ }
12
+
13
+ const theme: InternalTheme = {
4
14
  classes: {
5
- wrapper({ props }: ThemeParams) {
15
+ wrapper({ props }) {
6
16
  const classes = ['relative inline-flex items-center justify-center overflow-hidden align-middle border box-content']
7
17
 
8
18
  // radius
@@ -19,7 +29,7 @@ export default {
19
29
  },
20
30
  },
21
31
 
22
- styles({ props, colors, css, data }: ThemeParams) {
32
+ styles({ props, colors, css, data }) {
23
33
  const color = colors.getPalette(props.color)
24
34
 
25
35
  if (data.source) return css.variables({
@@ -37,3 +47,5 @@ export default {
37
47
  })
38
48
  },
39
49
  }
50
+
51
+ export default theme
@@ -1,4 +1,20 @@
1
1
  <script lang="ts">
2
+ const avatarProps = {
3
+ ...useCommon.props(),
4
+ ...useColors.props('primary'),
5
+ tag: {
6
+ type: String,
7
+ default: 'div',
8
+ },
9
+ name: String,
10
+ alt: String,
11
+ image: String,
12
+ outlined: Boolean,
13
+ rounded: Boolean,
14
+ }
15
+
16
+ export type AvatarProps = ExtractPublicPropTypes<typeof avatarProps>
17
+
2
18
  export default {
3
19
  name: 'XAvatar',
4
20
  validators: useCommon.validators(),
@@ -6,7 +22,7 @@ export default {
6
22
  </script>
7
23
 
8
24
  <script setup lang="ts">
9
- import { computed, ref, watch } from 'vue'
25
+ import { computed, ref, watch, type ExtractPublicPropTypes } from 'vue'
10
26
  import { useCommon } from '../../composables/common'
11
27
  import { useColors } from '../../composables/colors'
12
28
  import { useTheme } from '../../composables/theme'
@@ -16,19 +32,7 @@ import XIcon from '../../components/icon/Icon.vue'
16
32
 
17
33
  import theme from './Avatar.theme'
18
34
 
19
- const props = defineProps({
20
- ...useCommon.props(),
21
- ...useColors.props('primary'),
22
- tag: {
23
- type: String,
24
- default: 'div',
25
- },
26
- name: String,
27
- alt: String,
28
- image: String,
29
- outlined: Boolean,
30
- rounded: Boolean,
31
- })
35
+ const props = defineProps(avatarProps)
32
36
 
33
37
  const source = ref<string>()
34
38
  const initials = computed(() => {
@@ -0,0 +1,3 @@
1
+ export { default as XAvatar } from './Avatar.vue'
2
+ export type { AvatarProps } from './Avatar.vue'
3
+ export type { AvatarTheme } from './Avatar.theme'
@@ -1,13 +1,23 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { BadgeProps } from './Badge.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper'
5
+
6
+ interface InternalTheme extends ThemeComponent<BadgeProps, InternalClasses> {}
7
+ export interface BadgeTheme extends Omit<InternalTheme, 'classes'> {
8
+ classes?: Partial<ThemeClasses<BadgeProps, InternalClasses>>;
9
+ }
10
+
11
+ const theme: InternalTheme = {
4
12
  classes: {
5
13
  wrapper: 'inline-block',
6
14
  },
7
15
 
8
- styles({ props, colors, css }: ThemeParams) {
16
+ styles({ props, colors, css }) {
9
17
  const color = colors.getPalette(props.color)
10
18
 
11
19
  return css.get('bg', color[500])
12
20
  },
13
21
  }
22
+
23
+ export default theme
@@ -1,16 +1,7 @@
1
1
  <script lang="ts">
2
- export default { name: 'XBadge' }
3
- </script>
4
-
5
- <script setup lang="ts">
6
- import { computed, useSlots, type PropType } from 'vue'
7
- import { useTheme } from '../../composables/theme'
8
- import { useCommon } from '../../composables/common'
9
- import { useColors } from '../../composables/colors'
10
-
11
- import theme from './Badge.theme'
12
-
13
- const props = defineProps({
2
+ const badgeAlign = ['left', 'right'] as const
3
+ const badgePosition = ['top', 'bottom'] as const
4
+ const badgeProps = {
14
5
  ...useCommon.props(),
15
6
  ...useColors.props('primary'),
16
7
  tag: {
@@ -18,11 +9,11 @@ const props = defineProps({
18
9
  default: 'div',
19
10
  },
20
11
  position: {
21
- type: String as PropType<'top' | 'bottom'>,
12
+ type: String as PropType<BadgePosition>,
22
13
  default: 'top',
23
14
  },
24
15
  align: {
25
- type: String as PropType<'left' | 'right'>,
16
+ type: String as PropType<BadgeAlign>,
26
17
  default: 'right',
27
18
  },
28
19
  offsetX: [Number, String],
@@ -34,7 +25,31 @@ const props = defineProps({
34
25
  type: Boolean,
35
26
  default: true,
36
27
  },
37
- })
28
+ }
29
+
30
+ export type BadgePosition = typeof badgePosition[number]
31
+ export type BadgeAlign = typeof badgeAlign[number]
32
+ export type BadgeProps = ExtractPublicPropTypes<typeof badgeProps>
33
+
34
+ export default {
35
+ name: 'XBadge',
36
+ validators: {
37
+ ...useCommon.validators(),
38
+ position: badgePosition,
39
+ align: badgeAlign,
40
+ },
41
+ }
42
+ </script>
43
+
44
+ <script setup lang="ts">
45
+ import { computed, useSlots, type PropType, type ExtractPublicPropTypes } from 'vue'
46
+ import { useTheme } from '../../composables/theme'
47
+ import { useCommon } from '../../composables/common'
48
+ import { useColors } from '../../composables/colors'
49
+
50
+ import theme from './Badge.theme'
51
+
52
+ const props = defineProps(badgeProps)
38
53
 
39
54
  const slots = useSlots()
40
55
 
@@ -0,0 +1,3 @@
1
+ export { default as XBadge } from './Badge.vue'
2
+ export type { BadgeProps, BadgeAlign, BadgePosition } from './Badge.vue'
3
+ export type { BadgeTheme } from './Badge.theme'
@@ -1,9 +1,19 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { BreadcrumbsProps } from './Breadcrumbs.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper' | 'item' | 'lastItem'
5
+
6
+ interface InternalTheme extends ThemeComponent<BreadcrumbsProps, InternalClasses> {}
7
+ export interface BreadcrumbsTheme extends Omit<InternalTheme, 'classes'> {
8
+ classes?: Partial<ThemeClasses<BreadcrumbsProps, InternalClasses>>;
9
+ }
10
+
11
+ const theme: InternalTheme = {
4
12
  classes: {
5
13
  wrapper: 'flex items-center flex-wrap',
6
14
  item: 'flex items-center',
7
15
  lastItem: 'font-semibold',
8
16
  },
9
17
  }
18
+
19
+ export default theme
@@ -1,9 +1,31 @@
1
1
  <script lang="ts">
2
+ const breadcrumbsProps = {
3
+ ...useColors.props(),
4
+ items: Array as PropType<BreadcrumbsItem[]>,
5
+ icon: {
6
+ type: String,
7
+ default: arrowRightIcon,
8
+ },
9
+ shadow: Boolean,
10
+ underline: Boolean,
11
+ }
12
+
13
+ export type BreadcrumbsItem = {
14
+ label: string;
15
+ to?: string | object;
16
+ href?: string;
17
+ color?: string;
18
+ icon?: string;
19
+ shadow?: boolean;
20
+ underline?: boolean;
21
+ }
22
+ export type BreadcrumbsProps = ExtractPublicPropTypes<typeof breadcrumbsProps>
23
+
2
24
  export default { name: 'XBreadcrumbs' }
3
25
  </script>
4
26
 
5
27
  <script setup lang="ts">
6
- import { computed, type PropType } from 'vue'
28
+ import { computed, type ExtractPublicPropTypes, type PropType } from 'vue'
7
29
  import { useTheme } from '../../composables/theme'
8
30
  import { arrowRightIcon } from '../../common/icons'
9
31
  import { useColors } from '../../composables/colors'
@@ -13,26 +35,7 @@ import XLink from '../../components/link/Link.vue'
13
35
 
14
36
  import theme from './Breadcrumbs.theme'
15
37
 
16
- export type BreadcrumbItem = {
17
- label: string;
18
- to?: string | object;
19
- href?: string;
20
- color?: string;
21
- icon?: string;
22
- shadow?: boolean;
23
- underline?: boolean;
24
- }
25
-
26
- const props = defineProps({
27
- ...useColors.props(),
28
- items: Array as PropType<Array<BreadcrumbItem>>,
29
- icon: {
30
- type: String,
31
- default: arrowRightIcon,
32
- },
33
- shadow: Boolean,
34
- underline: Boolean,
35
- })
38
+ const props = defineProps(breadcrumbsProps)
36
39
 
37
40
  const lastItem = computed(() => props.items && props.items.length > 0 ? props.items[props.items.length - 1] : undefined)
38
41
 
@@ -0,0 +1,3 @@
1
+ export { default as XBreadcrumbs } from './Breadcrumbs.vue'
2
+ export type { BreadcrumbsProps, BreadcrumbsItem } from './Breadcrumbs.vue'
3
+ export type { BreadcrumbsTheme } from './Breadcrumbs.theme'
@@ -1,9 +1,17 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { ButtonProps } from './Button.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper' | 'iconLeft' | 'iconRight'
5
+ type InternalExtraData = { isButtonGroup: boolean; }
6
+
7
+ interface InternalTheme extends ThemeComponent<ButtonProps, InternalClasses, InternalExtraData> {}
8
+ export interface ButtonTheme extends Omit<InternalTheme, 'classes'> {
9
+ classes?: Partial<ThemeClasses<ButtonProps, InternalClasses, InternalExtraData>>;
10
+ }
11
+
12
+ const theme: InternalTheme = {
4
13
  classes: {
5
- wrapper({ props, slots, data }: ThemeParams) {
6
- /*tw*/
14
+ wrapper({ props, slots, data }) {
7
15
  const classes = ['relative transition duration-150 focus:outline-none inline-flex items-center justify-center font-medium whitespace-nowrap overflow-hidden align-middle active:!shadow-none border appearance-none']
8
16
 
9
17
  // radius
@@ -27,15 +35,15 @@ export default {
27
35
  return classes
28
36
  },
29
37
 
30
- iconLeft: ({ slots }: ThemeParams) => slots.default ? 'mr-2' : 'm-0.5',
38
+ iconLeft: ({ slots }) => slots.default ? 'mr-2' : 'm-0.5',
31
39
 
32
- iconRight: ({ slots }: ThemeParams) => slots.default ? 'ml-2' : 'm-0.5',
40
+ iconRight: ({ slots }) => slots.default ? 'ml-2' : 'm-0.5',
33
41
  },
34
42
 
35
- styles({ props, colors, css, data }: ThemeParams) {
43
+ styles({ props, colors, css, data }) {
36
44
  const gray = colors.getPalette('gray')
37
45
  const color = props.color ? colors.getPalette(props.color) : gray
38
- const vars: (object | string)[] = []
46
+ const vars = []
39
47
 
40
48
  const isLight = props.color && props.light
41
49
  const isDefault = !props.color && !props.ghost
@@ -226,3 +234,5 @@ export default {
226
234
  return vars
227
235
  },
228
236
  }
237
+
238
+ export default theme
@@ -1,21 +1,5 @@
1
1
  <script lang="ts">
2
- export default { name: 'XButton' }
3
- </script>
4
-
5
- <script setup lang="ts">
6
- import { computed, ref, inject, useAttrs, unref } from 'vue'
7
- import { useTheme } from '../../composables/theme'
8
- import { useColors } from '../../composables/colors'
9
- import { useCommon } from '../../composables/common'
10
- import { useInteractive } from '../../composables/interactive'
11
- import { injectButtonGroupKey } from '../../composables/keys'
12
-
13
- import XSpinner from '../spinner/Spinner.vue'
14
- import XIcon from '../icon/Icon.vue'
15
-
16
- import theme from './Button.theme'
17
-
18
- const props = defineProps({
2
+ const buttonProps = {
19
3
  ...useCommon.props(),
20
4
  ...useColors.props(),
21
5
  ...useInteractive.props(),
@@ -38,7 +22,32 @@ const props = defineProps({
38
22
  light: Boolean,
39
23
  block: Boolean,
40
24
  flat: Boolean,
41
- })
25
+ }
26
+
27
+ export type ButtonProps = ExtractPublicPropTypes<typeof buttonProps>
28
+
29
+ export default {
30
+ name: 'XButton',
31
+ validators: {
32
+ ...useCommon.validators(),
33
+ },
34
+ }
35
+ </script>
36
+
37
+ <script setup lang="ts">
38
+ import { computed, ref, inject, useAttrs, unref, type ExtractPublicPropTypes } from 'vue'
39
+ import { useTheme } from '../../composables/theme'
40
+ import { useColors } from '../../composables/colors'
41
+ import { useCommon } from '../../composables/common'
42
+ import { useInteractive } from '../../composables/interactive'
43
+ import { injectButtonGroupKey } from '../../composables/keys'
44
+
45
+ import XSpinner from '../spinner/Spinner.vue'
46
+ import XIcon from '../icon/Icon.vue'
47
+
48
+ import theme from './Button.theme'
49
+
50
+ const props = defineProps(buttonProps)
42
51
 
43
52
  const elRef = ref<HTMLElement | null>(null)
44
53
 
@@ -47,6 +56,7 @@ const buttonGroup = inject(injectButtonGroupKey, {
47
56
  isButtonGroup: false,
48
57
  groupProps: {},
49
58
  })
59
+
50
60
  const { isButtonGroup } = buttonGroup
51
61
  const computedSize = computed(() => buttonGroup.groupProps.size || props.size)
52
62
  const computedFlat = computed(() => buttonGroup.groupProps.flat || props.flat)
@@ -1,5 +1,18 @@
1
- export default {
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { ButtonGroupProps } from './ButtonGroup.vue'
3
+
4
+ type InternalClasses = 'wrapper'
5
+ type InternalExtraData = { isButtonGroupGroup: boolean; }
6
+
7
+ interface InternalTheme extends ThemeComponent<ButtonGroupProps, InternalClasses, InternalExtraData> {}
8
+ export interface ButtonGroupTheme extends Omit<InternalTheme, 'classes'> {
9
+ classes?: Partial<ThemeClasses<ButtonGroupProps, InternalClasses, InternalExtraData>>;
10
+ }
11
+
12
+ const theme: InternalTheme = {
2
13
  classes: {
3
14
  wrapper: 'inline-flex align-middle relative -space-x-[1px]',
4
15
  },
5
16
  }
17
+
18
+ export default theme
@@ -1,18 +1,5 @@
1
1
  <script lang="ts">
2
- export default { name: 'XButtonGroup' }
3
- </script>
4
-
5
- <script setup lang="ts">
6
- import { provide } from 'vue'
7
- import { useTheme } from '../../composables/theme'
8
- import { useCommon } from '../../composables/common'
9
- import { useColors } from '../../composables/colors'
10
- import { useInteractive } from '../../composables/interactive'
11
- import { injectButtonGroupKey } from '../../composables/keys'
12
-
13
- import theme from './ButtonGroup.theme'
14
-
15
- const props = defineProps({
2
+ const buttonGroupProps = {
16
3
  ...useCommon.props(),
17
4
  ...useColors.props(),
18
5
  ...useInteractive.props(),
@@ -24,7 +11,34 @@ const props = defineProps({
24
11
  rounded: Boolean,
25
12
  ghost: Boolean,
26
13
  light: Boolean,
27
- })
14
+ flat: Boolean,
15
+ }
16
+
17
+ export type ButtonGroupProps = ExtractPublicPropTypes<typeof buttonGroupProps>
18
+ export type ButtonGroupInjection = {
19
+ groupProps: ButtonGroupProps;
20
+ isButtonGroup: boolean;
21
+ }
22
+
23
+ export default {
24
+ name: 'XButtonGroup',
25
+ validators: {
26
+ ...useCommon.validators(),
27
+ },
28
+ }
29
+ </script>
30
+
31
+ <script setup lang="ts">
32
+ import { provide, type ExtractPublicPropTypes } from 'vue'
33
+ import { useTheme } from '../../composables/theme'
34
+ import { useCommon } from '../../composables/common'
35
+ import { useColors } from '../../composables/colors'
36
+ import { useInteractive } from '../../composables/interactive'
37
+ import { injectButtonGroupKey } from '../../composables/keys'
38
+
39
+ import theme from './ButtonGroup.theme'
40
+
41
+ const props = defineProps(buttonGroupProps)
28
42
 
29
43
  provide(injectButtonGroupKey, {
30
44
  groupProps: props,
@@ -0,0 +1,7 @@
1
+ export { default as XButton } from './Button.vue'
2
+ export type { ButtonProps } from './Button.vue'
3
+ export type { ButtonTheme } from './Button.theme'
4
+
5
+ export { default as XButtonGroup } from './ButtonGroup.vue'
6
+ export type { ButtonGroupProps, ButtonGroupInjection } from './ButtonGroup.vue'
7
+ export type { ButtonGroupTheme } from './ButtonGroup.theme'
@@ -1,7 +1,17 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { CardProps } from './Card.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper'
5
+
6
+ interface InternalTheme extends ThemeComponent<CardProps, InternalClasses> {}
7
+ export interface CardTheme extends Omit<InternalTheme, 'classes'> {
8
+ classes?: Partial<ThemeClasses<CardProps, InternalClasses>>;
9
+ }
10
+
11
+ const theme: InternalTheme = {
4
12
  classes: {
5
- wrapper: ({ props }: ThemeParams) => `rounded bg-white dark:bg-gray-800${props.flat ? '' : ' shadow'}`,
13
+ wrapper: ({ props }) => `rounded bg-white dark:bg-gray-800${props.flat ? '' : ' shadow'}`,
6
14
  },
7
15
  }
16
+
17
+ export default theme
@@ -1,19 +1,24 @@
1
1
  <script lang="ts">
2
+ const cardProps = {
3
+ tag: {
4
+ type: String,
5
+ default: 'div',
6
+ },
7
+ flat: Boolean,
8
+ }
9
+
10
+ export type CardProps = ExtractPublicPropTypes<typeof cardProps>
11
+
2
12
  export default { name: 'XCard' }
3
13
  </script>
4
14
 
5
15
  <script setup lang="ts">
16
+ import type { ExtractPublicPropTypes } from 'vue'
6
17
  import { useTheme } from '../../composables/theme'
7
18
 
8
19
  import theme from './Card.theme'
9
20
 
10
- const props = defineProps({
11
- tag: {
12
- type: String,
13
- default: 'div',
14
- },
15
- flat: Boolean,
16
- })
21
+ const props = defineProps(cardProps)
17
22
 
18
23
  const { styles, classes, className } = useTheme('card', theme, props)
19
24
  </script>
@@ -0,0 +1,3 @@
1
+ export { default as XCard } from './Card.vue'
2
+ export type { CardProps } from './Card.vue'
3
+ export type { CardTheme } from './Card.theme'
@@ -1,10 +1,20 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { Ref } from 'vue'
2
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
3
+ import type { CheckboxProps } from './Checkbox.vue'
2
4
 
3
- export default {
5
+ type InternalClasses = 'wrapper' | 'box' | 'icon' | 'label'
6
+ type InternalExtraData = { checked: Ref<boolean>; }
7
+
8
+ interface InternalTheme extends ThemeComponent<CheckboxProps, InternalClasses, InternalExtraData> {}
9
+ export interface CheckboxTheme extends Omit<InternalTheme, 'classes'> {
10
+ classes?: Partial<ThemeClasses<CheckboxProps, InternalClasses, InternalExtraData>>;
11
+ }
12
+
13
+ const theme: InternalTheme = {
4
14
  classes: {
5
15
  wrapper: 'inline-block relative cursor-pointer align-middle',
6
16
 
7
- box: ({ props }: ThemeParams) => {
17
+ box: ({ props }) => {
8
18
  const classes = ['rounded flex justify-center items-center shrink-0 border-2 border-[color:var(--x-checkbox-border)] bg-[color:var(--x-checkbox-bg)] dark:border-[color:var(--x-checkbox-dark-border)] dark:bg-[color:var(--x-checkbox-dark-bg)]']
9
19
 
10
20
  if (props.size === 'xs' || props.size === 'sm') classes.push('h-4 w-4')
@@ -14,7 +24,7 @@ export default {
14
24
  return classes
15
25
  },
16
26
 
17
- icon: ({ props }: ThemeParams) => {
27
+ icon: ({ props }) => {
18
28
  const classes = ['fill-current text-white dark:text-gray-900']
19
29
 
20
30
  if (props.size === 'xs' || props.size === 'sm') classes.push('h-2 w-2')
@@ -24,7 +34,7 @@ export default {
24
34
  return classes
25
35
  },
26
36
 
27
- label: ({ props }: ThemeParams) => {
37
+ label: ({ props }) => {
28
38
  const classes = ['inline-block font-medium text-gray-800 dark:text-gray-200 pl-2']
29
39
 
30
40
  if (props.size === 'xs') classes.push('text-xs')
@@ -36,10 +46,10 @@ export default {
36
46
  },
37
47
  },
38
48
 
39
- styles({ props, colors, css, data }: ThemeParams) {
49
+ styles({ props, colors, css, data }) {
40
50
  const gray = colors.getPalette('gray')
41
51
  const color = colors.getPalette(props.color)
42
- const vars: (object | string)[] = []
52
+ const vars = []
43
53
 
44
54
  if (props.loading) {
45
55
  return css.variables({
@@ -90,3 +100,5 @@ export default {
90
100
  return vars
91
101
  },
92
102
  }
103
+
104
+ export default theme
@@ -1,9 +1,26 @@
1
1
  <script lang="ts">
2
- export default { name: 'XCheckbox' }
2
+ const checkboxProps = {
3
+ ...useCommon.props(),
4
+ ...useColors.props('primary'),
5
+ ...useInteractive.props(),
6
+ ...useInputtable.props(),
7
+ label: String,
8
+ helper: String,
9
+ glow: Boolean,
10
+ }
11
+
12
+ export type CheckboxProps = ExtractPublicPropTypes<typeof checkboxProps>
13
+
14
+ export default {
15
+ name: 'XCheckbox',
16
+ validators: {
17
+ ...useCommon.validators(),
18
+ },
19
+ }
3
20
  </script>
4
21
 
5
22
  <script setup lang="ts">
6
- import { ref, watch } from 'vue'
23
+ import { ref, watch, type ExtractPublicPropTypes } from 'vue'
7
24
  import { useTheme } from '../../composables/theme'
8
25
  import { useCommon } from '../../composables/common'
9
26
  import { useColors } from '../../composables/colors'
@@ -15,15 +32,7 @@ import XInputError from '../helpers/InputError'
15
32
 
16
33
  import theme from './Checkbox.theme'
17
34
 
18
- const props = defineProps({
19
- ...useCommon.props(),
20
- ...useColors.props('primary'),
21
- ...useInteractive.props(),
22
- ...useInputtable.props(),
23
- label: String,
24
- helper: String,
25
- glow: Boolean,
26
- })
35
+ const props = defineProps(checkboxProps)
27
36
 
28
37
  const emit = defineEmits(useInputtable.emits(false))
29
38
 
@@ -0,0 +1,3 @@
1
+ export { default as XCheckbox } from './Checkbox.vue'
2
+ export type { CheckboxProps } from './Checkbox.vue'
3
+ export type { CheckboxTheme } from './Checkbox.theme'
@@ -1,11 +1,21 @@
1
- import type { ThemeParams } from '../../composables/theme'
1
+ import type { ThemeClasses, ThemeComponent } from '../../composables/theme'
2
+ import type { CollapseProps } from './Collapse.vue'
2
3
 
3
- export default {
4
+ type InternalClasses = 'wrapper' | 'icon' | 'content'
5
+
6
+ interface InternalTheme extends ThemeComponent<CollapseProps, InternalClasses> {}
7
+ export interface CollapseTheme extends Omit<InternalTheme, 'classes'> {
8
+ classes?: Partial<ThemeClasses<CollapseProps, InternalClasses>>;
9
+ }
10
+
11
+ const theme: InternalTheme = {
4
12
  classes: {
5
- wrapper: ({ props }: ThemeParams) => `relative flex items-center ${props.icon ? 'flex-row-reverse' : ''} ${props.disabled ? '' : 'cursor-pointer'}`,
13
+ wrapper: ({ props }) => `relative flex items-center ${props.icon ? 'flex-row-reverse' : ''} ${props.disabled ? '' : 'cursor-pointer'}`,
6
14
 
7
15
  icon: 'absolute top-1/2 transform -translate-y-1/2 right-3',
8
16
 
9
17
  content: 'transition-[height] duration-150 overflow-y-hidden',
10
18
  },
11
19
  }
20
+
21
+ export default theme