@indielayer/ui 0.2.4 → 1.0.0-alpha.3

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 (396) hide show
  1. package/README.md +28 -12
  2. package/env.d.ts +1 -0
  3. package/lib/components/alert/Alert.vue.d.ts +42 -0
  4. package/lib/components/avatar/Avatar.vue.d.ts +49 -0
  5. package/lib/components/badge/Badge.vue.d.ts +70 -0
  6. package/lib/components/breadcrumbs/Breadcrumbs.vue.d.ts +30 -0
  7. package/lib/components/button/Button.vue.d.ts +87 -0
  8. package/lib/components/button/ButtonGroup.vue.d.ts +49 -0
  9. package/lib/components/card/Card.vue.d.ts +17 -0
  10. package/lib/components/checkbox/Checkbox.vue.d.ts +81 -0
  11. package/lib/components/collapse/Collapse.vue.d.ts +47 -0
  12. package/lib/components/container/Container.vue.d.ts +14 -0
  13. package/lib/components/divider/Divider.vue.d.ts +10 -0
  14. package/lib/components/drawer/Drawer.vue.d.ts +73 -0
  15. package/lib/components/form/Form.vue.d.ts +46 -0
  16. package/lib/components/icon/Icon.vue.d.ts +36 -0
  17. package/lib/components/image/Image.vue.d.ts +8 -0
  18. package/lib/components/index.d.ts +45 -0
  19. package/lib/components/input/Input.vue.d.ts +114 -0
  20. package/lib/components/link/Link.vue.d.ts +36 -0
  21. package/lib/components/menu/Menu.vue.d.ts +50 -0
  22. package/lib/components/menu/MenuItem.vue.d.ts +102 -0
  23. package/lib/components/modal/Modal.vue.d.ts +34 -0
  24. package/lib/components/notifications/Notifications.vue.d.ts +104 -0
  25. package/lib/components/pagination/Pagination.vue.d.ts +58 -0
  26. package/lib/components/pagination/PaginationItem.vue.d.ts +32 -0
  27. package/lib/components/popover/Popover.vue.d.ts +64 -0
  28. package/lib/components/popover/PopoverContainer.vue.d.ts +14 -0
  29. package/lib/components/progress/Progress.vue.d.ts +42 -0
  30. package/lib/components/radio/Radio.vue.d.ts +79 -0
  31. package/lib/components/scroll/Scroll.vue.d.ts +29 -0
  32. package/lib/components/select/Select.vue.d.ts +100 -0
  33. package/lib/components/skeleton/Skeleton.vue.d.ts +14 -0
  34. package/lib/components/slider/Slider.vue.d.ts +96 -0
  35. package/lib/components/spacer/Spacer.vue.d.ts +2 -0
  36. package/lib/components/spinner/Spinner.vue.d.ts +16 -0
  37. package/lib/components/tab/Tab.vue.d.ts +47 -0
  38. package/lib/components/tab/TabGroup.vue.d.ts +41 -0
  39. package/lib/components/table/Table.vue.d.ts +81 -0
  40. package/lib/components/table/TableBody.vue.d.ts +2 -0
  41. package/lib/components/table/TableCell.vue.d.ts +33 -0
  42. package/lib/components/table/TableHead.vue.d.ts +2 -0
  43. package/lib/components/table/TableHeader.vue.d.ts +33 -0
  44. package/lib/components/table/TableRow.vue.d.ts +23 -0
  45. package/lib/components/tag/Tag.vue.d.ts +45 -0
  46. package/lib/components/textarea/Textarea.vue.d.ts +101 -0
  47. package/lib/components/toggle/Toggle.vue.d.ts +79 -0
  48. package/lib/components/tooltip/Tooltip.vue.d.ts +2 -0
  49. package/lib/composables/colors-utils.d.ts +8 -0
  50. package/lib/composables/colors.d.ts +26 -0
  51. package/lib/composables/common.d.ts +14 -0
  52. package/lib/composables/css.d.ts +5 -0
  53. package/lib/composables/index.d.ts +7 -0
  54. package/lib/composables/inputtable.d.ts +37 -0
  55. package/lib/composables/interactive.d.ts +10 -0
  56. package/lib/composables/keys.d.ts +7 -0
  57. package/lib/composables/notification.d.ts +1 -0
  58. package/lib/create.d.ts +11 -0
  59. package/lib/index.cjs.js +15 -0
  60. package/lib/index.d.ts +6 -0
  61. package/lib/index.es.js +6172 -0
  62. package/lib/install.d.ts +4 -0
  63. package/lib/nuxt.js +32 -0
  64. package/lib/nuxt.plugin.js +8 -0
  65. package/lib/style.css +1 -0
  66. package/lib/tailwind.preset.js +43 -14
  67. package/lib/version.d.ts +2 -0
  68. package/package.json +50 -28
  69. package/src/components/alert/Alert.vue +164 -0
  70. package/src/components/avatar/Avatar.vue +114 -97
  71. package/src/components/badge/Badge.vue +107 -0
  72. package/src/components/breadcrumbs/Breadcrumbs.vue +60 -0
  73. package/src/components/button/Button.vue +405 -128
  74. package/src/components/button/ButtonGroup.vue +73 -0
  75. package/src/components/card/Card.vue +16 -21
  76. package/src/components/checkbox/Checkbox.vue +162 -85
  77. package/src/components/collapse/Collapse.vue +152 -92
  78. package/src/components/container/Container.vue +13 -11
  79. package/src/components/divider/Divider.vue +15 -19
  80. package/src/components/drawer/Drawer.vue +244 -0
  81. package/src/components/form/Form.vue +32 -22
  82. package/src/components/icon/Icon.vue +43 -33
  83. package/src/components/image/Image.vue +26 -20
  84. package/src/components/index.ts +45 -0
  85. package/src/components/input/Input.vue +149 -146
  86. package/src/components/link/Link.vue +73 -52
  87. package/src/components/menu/Menu.vue +118 -0
  88. package/src/components/menu/MenuItem.vue +277 -0
  89. package/src/components/modal/Modal.vue +157 -93
  90. package/src/components/notifications/Notifications.vue +318 -0
  91. package/src/components/pagination/Pagination.vue +157 -50
  92. package/src/components/pagination/PaginationItem.vue +49 -26
  93. package/src/components/popover/Popover.vue +167 -146
  94. package/src/components/popover/PopoverContainer.vue +13 -18
  95. package/src/components/progress/Progress.vue +68 -102
  96. package/src/components/radio/Radio.vue +161 -92
  97. package/src/components/scroll/Scroll.vue +143 -0
  98. package/src/components/select/Select.vue +362 -109
  99. package/src/components/skeleton/Skeleton.vue +13 -11
  100. package/src/components/slider/Slider.vue +240 -0
  101. package/src/components/spacer/Spacer.vue +8 -0
  102. package/src/components/spinner/Spinner.vue +28 -28
  103. package/src/components/tab/Tab.vue +100 -0
  104. package/src/components/tab/TabGroup.vue +151 -0
  105. package/src/components/table/Table.vue +101 -86
  106. package/src/components/table/TableBody.vue +8 -6
  107. package/src/components/table/TableCell.vue +43 -55
  108. package/src/components/table/TableHead.vue +9 -7
  109. package/src/components/table/TableHeader.vue +39 -54
  110. package/src/components/table/TableRow.vue +26 -34
  111. package/src/components/tag/Tag.vue +67 -62
  112. package/src/components/textarea/Textarea.vue +116 -135
  113. package/src/components/toggle/Toggle.vue +117 -101
  114. package/src/components/tooltip/Tooltip.vue +18 -14
  115. package/src/composables/colors-utils.ts +378 -0
  116. package/src/composables/colors.ts +82 -0
  117. package/src/composables/common.ts +20 -0
  118. package/src/composables/css.ts +45 -0
  119. package/src/composables/index.ts +7 -0
  120. package/src/composables/{inputtable.js → inputtable.ts} +45 -74
  121. package/src/composables/interactive.ts +16 -0
  122. package/src/composables/keys.ts +8 -0
  123. package/src/composables/notification.ts +10 -0
  124. package/src/create.ts +36 -0
  125. package/src/exports/nuxt.js +32 -0
  126. package/src/exports/nuxt.plugin.js +8 -0
  127. package/src/exports/tailwind.preset.js +55 -0
  128. package/src/index.ts +8 -0
  129. package/src/install.ts +8 -0
  130. package/src/shims-vue.d.ts +6 -0
  131. package/src/version.ts +1 -0
  132. package/volar.d.ts +52 -0
  133. package/lib/cjs/components/avatar/Avatar.vue.js +0 -9
  134. package/lib/cjs/components/avatar/Avatar.vue_vue_type_script_lang.js +0 -86
  135. package/lib/cjs/components/avatar/Avatar.vue_vue_type_template_id_2549fb8f_lang.js +0 -50
  136. package/lib/cjs/components/button/Button.vue.js +0 -9
  137. package/lib/cjs/components/button/Button.vue_vue_type_script_lang.js +0 -82
  138. package/lib/cjs/components/button/Button.vue_vue_type_template_id_5975756f_lang.js +0 -100
  139. package/lib/cjs/components/card/Card.vue.js +0 -9
  140. package/lib/cjs/components/card/Card.vue_vue_type_script_lang.js +0 -18
  141. package/lib/cjs/components/card/Card.vue_vue_type_template_id_7be81122_lang.js +0 -22
  142. package/lib/cjs/components/checkbox/Checkbox.vue.js +0 -9
  143. package/lib/cjs/components/checkbox/Checkbox.vue_vue_type_script_lang.js +0 -58
  144. package/lib/cjs/components/checkbox/Checkbox.vue_vue_type_template_id_fa43bd62_lang.js +0 -102
  145. package/lib/cjs/components/collapse/Collapse.vue.js +0 -9
  146. package/lib/cjs/components/collapse/Collapse.vue_vue_type_script_lang.js +0 -69
  147. package/lib/cjs/components/collapse/Collapse.vue_vue_type_template_id_06a1c88f_lang.js +0 -64
  148. package/lib/cjs/components/colors.vue.js +0 -12
  149. package/lib/cjs/components/colors.vue_vue_type_template_id_79d16100_lang.js +0 -406
  150. package/lib/cjs/components/container/Container.vue.js +0 -9
  151. package/lib/cjs/components/container/Container.vue_vue_type_script_lang.js +0 -14
  152. package/lib/cjs/components/container/Container.vue_vue_type_template_id_05f5acf3_lang.js +0 -16
  153. package/lib/cjs/components/divider/Divider.vue.js +0 -9
  154. package/lib/cjs/components/divider/Divider.vue_vue_type_script_lang.js +0 -18
  155. package/lib/cjs/components/divider/Divider.vue_vue_type_template_id_3a349aa3_lang.js +0 -49
  156. package/lib/cjs/components/form/Form.vue.js +0 -9
  157. package/lib/cjs/components/form/Form.vue_vue_type_script_lang.js +0 -95
  158. package/lib/cjs/components/form/Form.vue_vue_type_template_id_a6cab022_lang.js +0 -20
  159. package/lib/cjs/components/icon/Icon.vue.js +0 -9
  160. package/lib/cjs/components/icon/Icon.vue_vue_type_script_lang.js +0 -26
  161. package/lib/cjs/components/icon/Icon.vue_vue_type_template_id_0933a10f_lang.js +0 -32
  162. package/lib/cjs/components/image/Image.vue.js +0 -9
  163. package/lib/cjs/components/image/Image.vue_vue_type_script_lang.js +0 -28
  164. package/lib/cjs/components/image/Image.vue_vue_type_template_id_f1ec3bb2_lang.js +0 -13
  165. package/lib/cjs/components/index.js +0 -87
  166. package/lib/cjs/components/input/Input.vue.js +0 -9
  167. package/lib/cjs/components/input/Input.vue_vue_type_script_lang.js +0 -101
  168. package/lib/cjs/components/input/Input.vue_vue_type_template_id_21c870c5_lang.js +0 -126
  169. package/lib/cjs/components/link/Link.vue.js +0 -9
  170. package/lib/cjs/components/link/Link.vue_vue_type_script_lang.js +0 -47
  171. package/lib/cjs/components/link/Link.vue_vue_type_template_id_044f59af_lang.js +0 -59
  172. package/lib/cjs/components/modal/Modal.vue.js +0 -9
  173. package/lib/cjs/components/modal/Modal.vue_vue_type_script_lang.js +0 -55
  174. package/lib/cjs/components/modal/Modal.vue_vue_type_template_id_177f8d4b_lang.js +0 -81
  175. package/lib/cjs/components/note/Note.vue.js +0 -9
  176. package/lib/cjs/components/note/Note.vue_vue_type_script_lang.js +0 -24
  177. package/lib/cjs/components/note/Note.vue_vue_type_template_id_2b99d6a2_lang.js +0 -100
  178. package/lib/cjs/components/pagination/Pagination.vue.js +0 -9
  179. package/lib/cjs/components/pagination/Pagination.vue_vue_type_script_lang.js +0 -43
  180. package/lib/cjs/components/pagination/Pagination.vue_vue_type_template_id_084845ef_lang.js +0 -54
  181. package/lib/cjs/components/pagination/PaginationItem.vue.js +0 -9
  182. package/lib/cjs/components/pagination/PaginationItem.vue_vue_type_script_lang.js +0 -24
  183. package/lib/cjs/components/pagination/PaginationItem.vue_vue_type_template_id_241a3fbc_lang.js +0 -27
  184. package/lib/cjs/components/popover/Popover.vue.js +0 -10
  185. package/lib/cjs/components/popover/Popover.vue_vue_type_script_lang.js +0 -72
  186. package/lib/cjs/components/popover/Popover.vue_vue_type_style_index_0_id_da70cc8a_lang.css.js +0 -8
  187. package/lib/cjs/components/popover/Popover.vue_vue_type_template_id_da70cc8a_lang.js +0 -63
  188. package/lib/cjs/components/popover/PopoverContainer.vue.js +0 -9
  189. package/lib/cjs/components/popover/PopoverContainer.vue_vue_type_script_lang.js +0 -21
  190. package/lib/cjs/components/popover/PopoverContainer.vue_vue_type_template_id_798f1294_lang.js +0 -16
  191. package/lib/cjs/components/popover/PopoverItem.vue.js +0 -9
  192. package/lib/cjs/components/popover/PopoverItem.vue_vue_type_script_lang.js +0 -34
  193. package/lib/cjs/components/popover/PopoverItem.vue_vue_type_template_id_84692424_lang.js +0 -50
  194. package/lib/cjs/components/progress/Progress.vue.js +0 -9
  195. package/lib/cjs/components/progress/Progress.vue_vue_type_script_lang.js +0 -62
  196. package/lib/cjs/components/progress/Progress.vue_vue_type_template_id_9ab7cee2_lang.js +0 -77
  197. package/lib/cjs/components/radio/Radio.vue.js +0 -9
  198. package/lib/cjs/components/radio/Radio.vue_vue_type_script_lang.js +0 -61
  199. package/lib/cjs/components/radio/Radio.vue_vue_type_template_id_808cc132_lang.js +0 -120
  200. package/lib/cjs/components/select/Select.vue.js +0 -9
  201. package/lib/cjs/components/select/Select.vue_vue_type_script_lang.js +0 -62
  202. package/lib/cjs/components/select/Select.vue_vue_type_template_id_18b7de2f_lang.js +0 -122
  203. package/lib/cjs/components/skeleton/Skeleton.vue.js +0 -9
  204. package/lib/cjs/components/skeleton/Skeleton.vue_vue_type_script_lang.js +0 -14
  205. package/lib/cjs/components/skeleton/Skeleton.vue_vue_type_template_id_6ac606e2_lang.js +0 -18
  206. package/lib/cjs/components/spacer/Spacer.vue.js +0 -12
  207. package/lib/cjs/components/spacer/Spacer.vue_vue_type_template_id_793ae82f_lang.js +0 -13
  208. package/lib/cjs/components/spinner/Spinner.vue.js +0 -9
  209. package/lib/cjs/components/spinner/Spinner.vue_vue_type_script_lang.js +0 -14
  210. package/lib/cjs/components/spinner/Spinner.vue_vue_type_template_id_714bd8a3_lang.js +0 -29
  211. package/lib/cjs/components/status/StatusDot.vue.js +0 -9
  212. package/lib/cjs/components/status/StatusDot.vue_vue_type_script_lang.js +0 -24
  213. package/lib/cjs/components/status/StatusDot.vue_vue_type_template_id_367d150a_lang.js +0 -25
  214. package/lib/cjs/components/table/Table.vue.js +0 -9
  215. package/lib/cjs/components/table/Table.vue_vue_type_script_lang.js +0 -117
  216. package/lib/cjs/components/table/Table.vue_vue_type_template_id_c0433c66_lang.js +0 -88
  217. package/lib/cjs/components/table/TableBody.vue.js +0 -9
  218. package/lib/cjs/components/table/TableBody.vue_vue_type_script_lang.js +0 -7
  219. package/lib/cjs/components/table/TableBody.vue_vue_type_template_id_7288bc0f_lang.js +0 -13
  220. package/lib/cjs/components/table/TableCell.vue.js +0 -9
  221. package/lib/cjs/components/table/TableCell.vue_vue_type_script_lang.js +0 -63
  222. package/lib/cjs/components/table/TableCell.vue_vue_type_template_id_5349a862_lang.js +0 -35
  223. package/lib/cjs/components/table/TableHead.vue.js +0 -9
  224. package/lib/cjs/components/table/TableHead.vue_vue_type_script_lang.js +0 -7
  225. package/lib/cjs/components/table/TableHead.vue_vue_type_template_id_6ae9fd66_lang.js +0 -18
  226. package/lib/cjs/components/table/TableHeader.vue.js +0 -9
  227. package/lib/cjs/components/table/TableHeader.vue_vue_type_script_lang.js +0 -48
  228. package/lib/cjs/components/table/TableHeader.vue_vue_type_template_id_9d5bd38c_lang.js +0 -78
  229. package/lib/cjs/components/table/TableRow.vue.js +0 -9
  230. package/lib/cjs/components/table/TableRow.vue_vue_type_script_lang.js +0 -33
  231. package/lib/cjs/components/table/TableRow.vue_vue_type_template_id_7c4a8ffd_lang.js +0 -26
  232. package/lib/cjs/components/tabs/Tab.vue.js +0 -9
  233. package/lib/cjs/components/tabs/Tab.vue_vue_type_script_lang.js +0 -62
  234. package/lib/cjs/components/tabs/Tab.vue_vue_type_template_id_3cfc6374_lang.js +0 -29
  235. package/lib/cjs/components/tabs/Tabs.vue.js +0 -9
  236. package/lib/cjs/components/tabs/Tabs.vue_vue_type_script_lang.js +0 -37
  237. package/lib/cjs/components/tabs/Tabs.vue_vue_type_template_id_663bac2f_lang.js +0 -16
  238. package/lib/cjs/components/tag/Tag.vue.js +0 -9
  239. package/lib/cjs/components/tag/Tag.vue_vue_type_script_lang.js +0 -39
  240. package/lib/cjs/components/tag/Tag.vue_vue_type_template_id_0aa571b6_lang.js +0 -77
  241. package/lib/cjs/components/textarea/Textarea.vue.js +0 -9
  242. package/lib/cjs/components/textarea/Textarea.vue_vue_type_script_lang.js +0 -122
  243. package/lib/cjs/components/textarea/Textarea.vue_vue_type_template_id_03d2272f_lang.js +0 -70
  244. package/lib/cjs/components/toast/Toast.vue.js +0 -9
  245. package/lib/cjs/components/toast/Toast.vue_vue_type_script_lang.js +0 -87
  246. package/lib/cjs/components/toast/Toast.vue_vue_type_template_id_fe243282_lang.js +0 -64
  247. package/lib/cjs/components/toggle/Toggle.vue.js +0 -9
  248. package/lib/cjs/components/toggle/Toggle.vue_vue_type_script_lang.js +0 -58
  249. package/lib/cjs/components/toggle/Toggle.vue_vue_type_template_id_5a9e0b2f_lang.js +0 -96
  250. package/lib/cjs/components/tooltip/Tooltip.vue.js +0 -9
  251. package/lib/cjs/components/tooltip/Tooltip.vue_vue_type_script_lang.js +0 -15
  252. package/lib/cjs/components/tooltip/Tooltip.vue_vue_type_template_id_213cff12_lang.js +0 -30
  253. package/lib/cjs/composables/common.js +0 -28
  254. package/lib/cjs/composables/inputtable.js +0 -162
  255. package/lib/cjs/composables/interactive.js +0 -41
  256. package/lib/cjs/index.js +0 -129
  257. package/lib/cjs/node_modules/style-inject/dist/style-inject.es.js +0 -30
  258. package/lib/esm/components/avatar/Avatar.vue.js +0 -6
  259. package/lib/esm/components/avatar/Avatar.vue_vue_type_script_lang.js +0 -84
  260. package/lib/esm/components/avatar/Avatar.vue_vue_type_template_id_2549fb8f_lang.js +0 -46
  261. package/lib/esm/components/button/Button.vue.js +0 -6
  262. package/lib/esm/components/button/Button.vue_vue_type_script_lang.js +0 -80
  263. package/lib/esm/components/button/Button.vue_vue_type_template_id_5975756f_lang.js +0 -96
  264. package/lib/esm/components/card/Card.vue.js +0 -6
  265. package/lib/esm/components/card/Card.vue_vue_type_script_lang.js +0 -16
  266. package/lib/esm/components/card/Card.vue_vue_type_template_id_7be81122_lang.js +0 -18
  267. package/lib/esm/components/checkbox/Checkbox.vue.js +0 -6
  268. package/lib/esm/components/checkbox/Checkbox.vue_vue_type_script_lang.js +0 -56
  269. package/lib/esm/components/checkbox/Checkbox.vue_vue_type_template_id_fa43bd62_lang.js +0 -98
  270. package/lib/esm/components/collapse/Collapse.vue.js +0 -6
  271. package/lib/esm/components/collapse/Collapse.vue_vue_type_script_lang.js +0 -67
  272. package/lib/esm/components/collapse/Collapse.vue_vue_type_template_id_06a1c88f_lang.js +0 -60
  273. package/lib/esm/components/colors.vue.js +0 -10
  274. package/lib/esm/components/colors.vue_vue_type_template_id_79d16100_lang.js +0 -402
  275. package/lib/esm/components/container/Container.vue.js +0 -6
  276. package/lib/esm/components/container/Container.vue_vue_type_script_lang.js +0 -12
  277. package/lib/esm/components/container/Container.vue_vue_type_template_id_05f5acf3_lang.js +0 -12
  278. package/lib/esm/components/divider/Divider.vue.js +0 -6
  279. package/lib/esm/components/divider/Divider.vue_vue_type_script_lang.js +0 -16
  280. package/lib/esm/components/divider/Divider.vue_vue_type_template_id_3a349aa3_lang.js +0 -45
  281. package/lib/esm/components/form/Form.vue.js +0 -6
  282. package/lib/esm/components/form/Form.vue_vue_type_script_lang.js +0 -93
  283. package/lib/esm/components/form/Form.vue_vue_type_template_id_a6cab022_lang.js +0 -16
  284. package/lib/esm/components/icon/Icon.vue.js +0 -6
  285. package/lib/esm/components/icon/Icon.vue_vue_type_script_lang.js +0 -24
  286. package/lib/esm/components/icon/Icon.vue_vue_type_template_id_0933a10f_lang.js +0 -28
  287. package/lib/esm/components/image/Image.vue.js +0 -6
  288. package/lib/esm/components/image/Image.vue_vue_type_script_lang.js +0 -26
  289. package/lib/esm/components/image/Image.vue_vue_type_template_id_f1ec3bb2_lang.js +0 -9
  290. package/lib/esm/components/index.js +0 -40
  291. package/lib/esm/components/input/Input.vue.js +0 -6
  292. package/lib/esm/components/input/Input.vue_vue_type_script_lang.js +0 -99
  293. package/lib/esm/components/input/Input.vue_vue_type_template_id_21c870c5_lang.js +0 -122
  294. package/lib/esm/components/link/Link.vue.js +0 -6
  295. package/lib/esm/components/link/Link.vue_vue_type_script_lang.js +0 -45
  296. package/lib/esm/components/link/Link.vue_vue_type_template_id_044f59af_lang.js +0 -55
  297. package/lib/esm/components/modal/Modal.vue.js +0 -6
  298. package/lib/esm/components/modal/Modal.vue_vue_type_script_lang.js +0 -53
  299. package/lib/esm/components/modal/Modal.vue_vue_type_template_id_177f8d4b_lang.js +0 -77
  300. package/lib/esm/components/note/Note.vue.js +0 -6
  301. package/lib/esm/components/note/Note.vue_vue_type_script_lang.js +0 -22
  302. package/lib/esm/components/note/Note.vue_vue_type_template_id_2b99d6a2_lang.js +0 -96
  303. package/lib/esm/components/pagination/Pagination.vue.js +0 -6
  304. package/lib/esm/components/pagination/Pagination.vue_vue_type_script_lang.js +0 -41
  305. package/lib/esm/components/pagination/Pagination.vue_vue_type_template_id_084845ef_lang.js +0 -50
  306. package/lib/esm/components/pagination/PaginationItem.vue.js +0 -6
  307. package/lib/esm/components/pagination/PaginationItem.vue_vue_type_script_lang.js +0 -22
  308. package/lib/esm/components/pagination/PaginationItem.vue_vue_type_template_id_241a3fbc_lang.js +0 -23
  309. package/lib/esm/components/popover/Popover.vue.js +0 -7
  310. package/lib/esm/components/popover/Popover.vue_vue_type_script_lang.js +0 -70
  311. package/lib/esm/components/popover/Popover.vue_vue_type_style_index_0_id_da70cc8a_lang.css.js +0 -6
  312. package/lib/esm/components/popover/Popover.vue_vue_type_template_id_da70cc8a_lang.js +0 -59
  313. package/lib/esm/components/popover/PopoverContainer.vue.js +0 -6
  314. package/lib/esm/components/popover/PopoverContainer.vue_vue_type_script_lang.js +0 -19
  315. package/lib/esm/components/popover/PopoverContainer.vue_vue_type_template_id_798f1294_lang.js +0 -12
  316. package/lib/esm/components/popover/PopoverItem.vue.js +0 -6
  317. package/lib/esm/components/popover/PopoverItem.vue_vue_type_script_lang.js +0 -32
  318. package/lib/esm/components/popover/PopoverItem.vue_vue_type_template_id_84692424_lang.js +0 -46
  319. package/lib/esm/components/progress/Progress.vue.js +0 -6
  320. package/lib/esm/components/progress/Progress.vue_vue_type_script_lang.js +0 -60
  321. package/lib/esm/components/progress/Progress.vue_vue_type_template_id_9ab7cee2_lang.js +0 -73
  322. package/lib/esm/components/radio/Radio.vue.js +0 -6
  323. package/lib/esm/components/radio/Radio.vue_vue_type_script_lang.js +0 -59
  324. package/lib/esm/components/radio/Radio.vue_vue_type_template_id_808cc132_lang.js +0 -116
  325. package/lib/esm/components/select/Select.vue.js +0 -6
  326. package/lib/esm/components/select/Select.vue_vue_type_script_lang.js +0 -60
  327. package/lib/esm/components/select/Select.vue_vue_type_template_id_18b7de2f_lang.js +0 -118
  328. package/lib/esm/components/skeleton/Skeleton.vue.js +0 -6
  329. package/lib/esm/components/skeleton/Skeleton.vue_vue_type_script_lang.js +0 -12
  330. package/lib/esm/components/skeleton/Skeleton.vue_vue_type_template_id_6ac606e2_lang.js +0 -14
  331. package/lib/esm/components/spacer/Spacer.vue.js +0 -10
  332. package/lib/esm/components/spacer/Spacer.vue_vue_type_template_id_793ae82f_lang.js +0 -9
  333. package/lib/esm/components/spinner/Spinner.vue.js +0 -6
  334. package/lib/esm/components/spinner/Spinner.vue_vue_type_script_lang.js +0 -12
  335. package/lib/esm/components/spinner/Spinner.vue_vue_type_template_id_714bd8a3_lang.js +0 -25
  336. package/lib/esm/components/status/StatusDot.vue.js +0 -6
  337. package/lib/esm/components/status/StatusDot.vue_vue_type_script_lang.js +0 -22
  338. package/lib/esm/components/status/StatusDot.vue_vue_type_template_id_367d150a_lang.js +0 -21
  339. package/lib/esm/components/table/Table.vue.js +0 -6
  340. package/lib/esm/components/table/Table.vue_vue_type_script_lang.js +0 -115
  341. package/lib/esm/components/table/Table.vue_vue_type_template_id_c0433c66_lang.js +0 -84
  342. package/lib/esm/components/table/TableBody.vue.js +0 -6
  343. package/lib/esm/components/table/TableBody.vue_vue_type_script_lang.js +0 -5
  344. package/lib/esm/components/table/TableBody.vue_vue_type_template_id_7288bc0f_lang.js +0 -9
  345. package/lib/esm/components/table/TableCell.vue.js +0 -6
  346. package/lib/esm/components/table/TableCell.vue_vue_type_script_lang.js +0 -61
  347. package/lib/esm/components/table/TableCell.vue_vue_type_template_id_5349a862_lang.js +0 -31
  348. package/lib/esm/components/table/TableHead.vue.js +0 -6
  349. package/lib/esm/components/table/TableHead.vue_vue_type_script_lang.js +0 -5
  350. package/lib/esm/components/table/TableHead.vue_vue_type_template_id_6ae9fd66_lang.js +0 -14
  351. package/lib/esm/components/table/TableHeader.vue.js +0 -6
  352. package/lib/esm/components/table/TableHeader.vue_vue_type_script_lang.js +0 -46
  353. package/lib/esm/components/table/TableHeader.vue_vue_type_template_id_9d5bd38c_lang.js +0 -74
  354. package/lib/esm/components/table/TableRow.vue.js +0 -6
  355. package/lib/esm/components/table/TableRow.vue_vue_type_script_lang.js +0 -31
  356. package/lib/esm/components/table/TableRow.vue_vue_type_template_id_7c4a8ffd_lang.js +0 -22
  357. package/lib/esm/components/tabs/Tab.vue.js +0 -6
  358. package/lib/esm/components/tabs/Tab.vue_vue_type_script_lang.js +0 -60
  359. package/lib/esm/components/tabs/Tab.vue_vue_type_template_id_3cfc6374_lang.js +0 -25
  360. package/lib/esm/components/tabs/Tabs.vue.js +0 -6
  361. package/lib/esm/components/tabs/Tabs.vue_vue_type_script_lang.js +0 -35
  362. package/lib/esm/components/tabs/Tabs.vue_vue_type_template_id_663bac2f_lang.js +0 -12
  363. package/lib/esm/components/tag/Tag.vue.js +0 -6
  364. package/lib/esm/components/tag/Tag.vue_vue_type_script_lang.js +0 -37
  365. package/lib/esm/components/tag/Tag.vue_vue_type_template_id_0aa571b6_lang.js +0 -73
  366. package/lib/esm/components/textarea/Textarea.vue.js +0 -6
  367. package/lib/esm/components/textarea/Textarea.vue_vue_type_script_lang.js +0 -120
  368. package/lib/esm/components/textarea/Textarea.vue_vue_type_template_id_03d2272f_lang.js +0 -66
  369. package/lib/esm/components/toast/Toast.vue.js +0 -6
  370. package/lib/esm/components/toast/Toast.vue_vue_type_script_lang.js +0 -85
  371. package/lib/esm/components/toast/Toast.vue_vue_type_template_id_fe243282_lang.js +0 -60
  372. package/lib/esm/components/toggle/Toggle.vue.js +0 -6
  373. package/lib/esm/components/toggle/Toggle.vue_vue_type_script_lang.js +0 -56
  374. package/lib/esm/components/toggle/Toggle.vue_vue_type_template_id_5a9e0b2f_lang.js +0 -92
  375. package/lib/esm/components/tooltip/Tooltip.vue.js +0 -6
  376. package/lib/esm/components/tooltip/Tooltip.vue_vue_type_script_lang.js +0 -13
  377. package/lib/esm/components/tooltip/Tooltip.vue_vue_type_template_id_213cff12_lang.js +0 -26
  378. package/lib/esm/composables/common.js +0 -23
  379. package/lib/esm/composables/inputtable.js +0 -155
  380. package/lib/esm/composables/interactive.js +0 -35
  381. package/lib/esm/index.js +0 -85
  382. package/lib/esm/node_modules/style-inject/dist/style-inject.es.js +0 -28
  383. package/lib/umd/index.js +0 -4361
  384. package/src/components/colors.vue +0 -396
  385. package/src/components/index.js +0 -40
  386. package/src/components/note/Note.vue +0 -74
  387. package/src/components/popover/PopoverItem.vue +0 -65
  388. package/src/components/status/StatusDot.vue +0 -41
  389. package/src/components/tabs/Tab.vue +0 -81
  390. package/src/components/tabs/Tabs.vue +0 -44
  391. package/src/components/toast/Toast.vue +0 -139
  392. package/src/composables/common.js +0 -21
  393. package/src/composables/interactive.js +0 -36
  394. package/src/index.js +0 -16
  395. package/src/nuxt.js +0 -19
  396. package/src/tailwind.preset.js +0 -24
@@ -1,156 +1,433 @@
1
+ <script lang="ts">
2
+ import { defineComponent, computed, ref, inject } from 'vue'
3
+ import { useCSS } from '../../composables/css'
4
+ import { useCommon } from '../../composables/common'
5
+ import { useColors } from '../../composables/colors'
6
+ import { useInteractive } from '../../composables/interactive'
7
+ import { injectButtonGroupKey } from '../../composables/keys'
8
+
9
+ import XSpinner from '../../components/spinner/Spinner.vue'
10
+ import XIcon from '../../components/icon/Icon.vue'
11
+
12
+ export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | undefined
13
+
14
+ export default defineComponent({
15
+ name: 'XButton',
16
+
17
+ components: {
18
+ XIcon,
19
+ XSpinner,
20
+ },
21
+
22
+ validators: {
23
+ ...useCommon.validators(),
24
+ },
25
+
26
+ props: {
27
+ ...useCommon.props(),
28
+ ...useColors.props(),
29
+ ...useInteractive.props(),
30
+ tag: {
31
+ type: String,
32
+ default: 'button',
33
+ },
34
+ type: {
35
+ type: String,
36
+ default: 'button',
37
+ },
38
+ icon: String,
39
+ iconRight: String,
40
+ to: String,
41
+ outlined: Boolean,
42
+ rounded: Boolean,
43
+ glow: Boolean,
44
+ ghost: Boolean,
45
+ light: Boolean,
46
+ block: Boolean,
47
+ flat: Boolean,
48
+ },
49
+ setup(props, { slots, attrs }) {
50
+ const elRef = ref<HTMLElement>()
51
+
52
+ // Button group props
53
+ const buttonGroup = inject(injectButtonGroupKey, {
54
+ isButtonGroup: false,
55
+ groupProps: {
56
+ size: undefined,
57
+ flat: undefined,
58
+ color: undefined,
59
+ ghost: undefined,
60
+ light: undefined,
61
+ outlined: undefined,
62
+ disabled: undefined,
63
+ },
64
+ })
65
+ const { isButtonGroup } = buttonGroup
66
+
67
+ const computedSize = computed(() => buttonGroup.groupProps.size || props.size)
68
+ const computedFlat = computed(() => buttonGroup.groupProps.flat || props.flat)
69
+ const computedColor = computed(() => props.color || buttonGroup.groupProps.color)
70
+ const computedGhost = computed(() => props.ghost || buttonGroup.groupProps.ghost)
71
+ const computedLight = computed(() => props.light || buttonGroup.groupProps.light)
72
+ const computedOutlined = computed(() => props.outlined || buttonGroup.groupProps.outlined)
73
+ const computedDisabled = computed(() => props.disabled || buttonGroup.groupProps.disabled)
74
+ const isLight = computed(() => computedColor.value && computedLight.value)
75
+ const isDefault = computed(() => !computedColor.value && !computedGhost.value)
76
+ const htmlTag = computed(() => (attrs.href ? 'a' : props.to ? 'router-link' : props.tag))
77
+
78
+ const css = useCSS('button')
79
+ const colors = useColors()
80
+ const gray = colors.getPalette('gray')
81
+
82
+ const styles = computed(() => {
83
+ const color = computedColor.value ? colors.getPalette(computedColor.value) : gray
84
+ const vars: (object | string)[] = []
85
+
86
+ if (props.glow) vars.push(css.get('glow', colors.getColorOpacity(computedColor.value ? color[500] : gray[500], 0.5)))
87
+
88
+ if (isDefault.value) {
89
+ if (computedDisabled.value) {
90
+ vars.push(css.variables({
91
+ bg: gray[50],
92
+ text: gray[300],
93
+ border: gray[200],
94
+ dark: {
95
+ bg: gray[900],
96
+ text: gray[600],
97
+ border: gray[700],
98
+ },
99
+ }))
100
+ } else {
101
+ vars.push(css.variables({
102
+ bg: 'white',
103
+ text: gray[800],
104
+ border: gray[300],
105
+ hover: { bg: !props.loading ? gray[100] : '' },
106
+ active: { bg: !props.loading ? gray[200] : '' },
107
+ dark: {
108
+ bg: gray[900],
109
+ text: 'white',
110
+ border: gray[600],
111
+ hover: { bg: !props.loading ? gray[800] : '' },
112
+ active: { bg: !props.loading ? gray[700] : '' },
113
+ },
114
+ }))
115
+ }
116
+ }
117
+
118
+ // light
119
+ else if (isLight.value) {
120
+ if (!computedOutlined.value || computedDisabled.value) vars.push(css.get('border', 'transparent'))
121
+
122
+ if (computedDisabled.value) {
123
+ vars.push(css.variables({
124
+ bg: color[50],
125
+ text: color[200],
126
+ border: 'transparent',
127
+ dark: {
128
+ bg: color[900],
129
+ text: color[600],
130
+ border: 'transparent',
131
+ },
132
+ }))
133
+ } else {
134
+ vars.push(css.variables({
135
+ bg: color[50],
136
+ text: color[600],
137
+ border: computedOutlined.value ? color[500] : 'transparent',
138
+ hover: { bg: !props.loading ? color[100] : '' },
139
+ active: { bg: !props.loading ? color[200] : '' },
140
+ dark: {
141
+ bg: color[200],
142
+ text: color[800],
143
+ border: computedOutlined.value ? color[500] : 'transparent',
144
+ hover: { bg: !props.loading ? color[100] : '' },
145
+ active: { bg: !props.loading ? color[50] : '' },
146
+ },
147
+ }))
148
+ }
149
+ }
150
+
151
+ // ghost
152
+ else if (computedGhost.value) {
153
+ if (!computedOutlined.value) vars.push(css.get('border', 'transparent'))
154
+
155
+ if (computedColor.value) {
156
+ if (computedDisabled.value) {
157
+ vars.push(css.variables({
158
+ text: color[200],
159
+ dark: {
160
+ text: color[700],
161
+ },
162
+ }))
163
+ } else {
164
+ vars.push(css.variables({
165
+ text: color[600],
166
+ dark: {
167
+ text: color[200],
168
+ },
169
+ }))
170
+ if (!props.loading) {
171
+ vars.push(css.variables({
172
+ hover: { bg: color[50] },
173
+ active: { bg: color[100] },
174
+ dark: {
175
+ hover: { bg: color[900] },
176
+ active: { bg: color[800] },
177
+ },
178
+ }))
179
+ }
180
+ }
181
+ } else {
182
+ if (computedDisabled.value) {
183
+ vars.push(css.variables({
184
+ text: gray[200],
185
+ dark: {
186
+ text: gray[700],
187
+ },
188
+ }))
189
+ } else {
190
+ vars.push(css.variables({
191
+ text: gray[800],
192
+ dark: {
193
+ text: 'white',
194
+ },
195
+ }))
196
+ if (!props.loading) {
197
+ vars.push(css.variables({
198
+ hover: { bg: gray[100] },
199
+ active: { bg: gray[200] },
200
+ dark: {
201
+ hover: { bg: gray[800] },
202
+ active: { bg: gray[700] },
203
+ },
204
+ }))
205
+ }
206
+ }
207
+ }
208
+ }
209
+
210
+ // outlined / filled
211
+ else {
212
+ if (computedOutlined.value) {
213
+ if (computedDisabled.value) {
214
+ vars.push(css.variables({
215
+ text: color[200],
216
+ border: color[200],
217
+ dark: {
218
+ text: color[700],
219
+ border: color[700],
220
+ },
221
+ }))
222
+ } else {
223
+ vars.push(css.variables({
224
+ text: color[600],
225
+ border: color[600],
226
+ dark: {
227
+ text: color[300],
228
+ border: color[300],
229
+ },
230
+ }))
231
+ if (!props.loading) {
232
+ vars.push(css.variables({
233
+ hover: { bg: color[100] },
234
+ active: { bg: color[200] },
235
+ dark: {
236
+ hover: { bg: color[800] },
237
+ active: { bg: color[700] },
238
+ },
239
+ }))
240
+ }
241
+ }
242
+ } else {
243
+ vars.push(css.variables({
244
+ text: '#fff',
245
+ border: !isButtonGroup ? 'transparent' : color[600],
246
+ dark: {
247
+ text: '#fff',
248
+ border: !isButtonGroup ? 'transparent' : color[500],
249
+ },
250
+ }))
251
+ if (computedDisabled.value) {
252
+ vars.push(css.variables({
253
+ bg: color[100],
254
+ dark: {
255
+ bg: color[900],
256
+ },
257
+ }))
258
+ } else {
259
+ vars.push(css.variables({
260
+ bg: color[500],
261
+ hover: { bg: !props.loading ? color[600] : '' },
262
+ active: { bg: !props.loading ? color[800] : '' },
263
+ dark: {
264
+ bg: color[600],
265
+ hover: { bg: !props.loading ? color[500] : '' },
266
+ active: { bg: !props.loading ? color[400] : '' },
267
+ },
268
+ }))
269
+ }
270
+ }
271
+ }
272
+
273
+ return vars
274
+ })
275
+
276
+ const sizeClasses = computed(() => {
277
+ if (slots.default) {
278
+ switch (computedSize.value) {
279
+ case 'xs':
280
+ return `py-1 text-xs ${props.icon ? 'px-2' : 'px-3'}`
281
+ case 'sm':
282
+ return `py-2 text-sm ${props.icon ? 'px-3' : 'px-4'}`
283
+ case 'lg':
284
+ return `py-3 text-lg ${props.icon ? 'px-4' : 'px-6'}`
285
+ case 'xl':
286
+ return `py-4 text-xl ${props.icon ? 'px-6' : 'px-6'}`
287
+ default:
288
+ return `py-2 ${props.icon ? 'px-4' : 'px-5'}`
289
+ }
290
+ } else {
291
+ switch (computedSize.value) {
292
+ case 'xs':
293
+ return 'leading-none p-1'
294
+ case 'lg':
295
+ return 'leading-none p-3'
296
+ case 'xl':
297
+ return 'leading-none p-4'
298
+ default:
299
+ return 'leading-none p-2'
300
+ }
301
+ }
302
+ })
303
+
304
+ return {
305
+ ...useInteractive(elRef),
306
+ elRef,
307
+ sizeClasses,
308
+ styles,
309
+ htmlTag,
310
+ isButtonGroup,
311
+ computedSize,
312
+ computedFlat,
313
+ computedGhost,
314
+ computedLight,
315
+ computedOutlined,
316
+ computedDisabled,
317
+ }
318
+ },
319
+ })
320
+ </script>
321
+
1
322
  <template>
2
323
  <component
3
- :is="to ? 'router-link' : tag"
4
- ref="focusRef"
324
+ :is="htmlTag"
325
+ ref="elRef"
5
326
  :to="to"
6
- class="relative leading-tight transition-colors duration-150 cursor-pointer focus:outline-none inline-block items-center justify-center font-medium"
327
+ class="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-y"
328
+ :style="styles"
7
329
  :class="[
330
+ $style['button'],
331
+ (glow && !computedDisabled && !loading) ? $style['button--glow'] : '',
332
+ sizeClasses,
8
333
  {
9
- 'shadow': !flat && !glow,
10
- [`shadow-lg shadow-${color}-500/50`]: !flat && glow,
11
- },
12
- disabled ?
13
- // disabled
14
- 'border-gray-300 dark:border-gray-600 bg-gray-200 dark:bg-gray-700 text-gray-600 dark:text-gray-400 cursor-not-allowed'
15
- : {
16
- // not disabled
17
- [`border border-${color}-500 text-${color}-500`]: outlined,
18
-
19
- // colors
20
- [`border border-transparent text-${color}-50 bg-${color}-500`]: !outlined,
21
-
22
- // colors hovers | actives
23
- 'hover:bg-dark-image active:bg-darker-image active:shadow-none': !loading && !outlined,
24
- [`hover:bg-gray-100 active:bg-gray-200 dark:hover:bg-gray-700 dark:hover:active:bg-gray-600`]: !loading && outlined,
25
- },
26
- $slots.default ? {
27
- // size
28
- 'py-1': size === 'auto',
29
- 'px-2 py-1 text-xs': size === 'xs',
30
- 'px-2 py-1 text-sm': size === 'sm',
31
- 'px-4 py-2': !['auto', 'xs', 'sm', 'lg', 'xl'].includes(size),
32
- 'px-6 py-3 text-lg': size === 'lg',
33
- 'px-10 py-6 text-xl': size === 'xl',
34
- } : 'px-3 py-2',
35
- {
36
- // icon
37
- 'inline-flex items-center': icon,
334
+ 'rounded-none border-r border-l-0': isButtonGroup,
335
+ 'rounded-full': rounded && !isButtonGroup,
336
+ 'rounded-md': !rounded && !isButtonGroup,
337
+ 'border-x': !isButtonGroup,
38
338
 
39
- // group
40
- 'rounded-button': group === false,
41
- 'rounded-l-button': group === 'first',
42
- 'rounded-r-button': group === 'last',
339
+ // shadow
340
+ 'shadow-sm':
341
+ !computedFlat &&
342
+ !computedLight &&
343
+ !computedGhost &&
344
+ !computedDisabled &&
345
+ !loading &&
346
+ !isButtonGroup,
43
347
 
44
- '!rounded-full': rounded,
45
-
46
- // loading
348
+ // cursor
349
+ 'cursor-not-allowed': computedDisabled,
47
350
  'cursor-default': loading,
351
+ 'cursor-pointer': !loading && !computedDisabled,
48
352
 
49
- // content
50
- 'flex items-center justify-center': loading,
51
- 'flex-row-reverse': icon && iconRight
353
+ // size
354
+ 'w-full': block,
52
355
  },
53
-
54
356
  ]"
55
-
56
357
  :aria-busy="loading ? 'true' : null"
57
- :aria-disabled="tag !== 'button' && disabled ? 'true' : null"
58
- :disabled="disabled || loading"
358
+ :aria-disabled="tag !== 'button' && computedDisabled ? 'true' : null"
359
+ :disabled="computedDisabled || loading"
59
360
  :type="tag === 'button' ? type : null"
60
361
  >
61
- <x-spinner v-if="loading" :size="size" class="absolute" />
62
- <span
362
+ <x-spinner v-if="loading" :size="computedSize" class="absolute" />
363
+ <x-icon
63
364
  v-if="icon"
64
- class="flex"
65
- :class="[{
66
- 'mr-2': $slots.default && !iconRight,
67
- 'ml-2': $slots.default && iconRight,
68
- 'invisible': loading
69
- }]"
70
- >
71
- <x-icon :size="size" :icon="icon" />
72
- </span>
73
- <span :class="{ 'invisible': loading }">
365
+ :size="computedSize"
366
+ :icon="icon"
367
+ class="shrink-0"
368
+ :class="[
369
+ [$slots.default ? 'mr-2' : 'm-0.5'],
370
+ {
371
+ invisible: loading,
372
+ },
373
+ ]"
374
+ />
375
+ <span :class="{ invisible: loading }">
74
376
  <slot></slot>
75
377
  </span>
378
+ <x-icon
379
+ v-if="iconRight"
380
+ :size="computedSize"
381
+ :icon="iconRight"
382
+ class="shrink-0"
383
+ :class="[
384
+ [$slots.default ? 'mr-2' : 'm-0.5'],
385
+ {
386
+ invisible: loading,
387
+ },
388
+ ]"
389
+ />
76
390
  </component>
77
391
  </template>
78
392
 
79
- <script>
80
- import { withProps, withValidator, useInteractive } from '../../composables/interactive'
81
- import XSpinner from '../spinner/Spinner.vue'
82
- import XIcon from '../icon/Icon.vue'
393
+ <style lang="postcss" module scoped>
394
+ .button {
395
+ color: var(--x-button-text);
396
+ background-color: var(--x-button-bg);
397
+ border-color: var(--x-button-border);
83
398
 
84
- const validator = {
85
- group: [false, true, '', 'first', 'last'],
86
- }
399
+ &--glow {
400
+ box-shadow: 0 0 #000, 0 0 #000, 0 10px 15px -3px var(--x-button-glow), 0 4px 6px -4px var(--x-button-glow);
401
+ }
87
402
 
88
- export default {
89
- name: 'XButton',
90
- components: {
91
- XSpinner,
92
- XIcon,
93
- },
94
-
95
- validator: {
96
- ...withValidator(),
97
- ...validator,
98
- },
403
+ &:hover {
404
+ color: var(--x-button-text-hover, var(--x-button-text));
405
+ background-color: var(--x-button-bg-hover, var(--x-button-bg));
406
+ border-color: var(--x-button-border-hover, var(--x-button-border));
407
+ }
99
408
 
100
- props: {
101
- ...withProps(),
409
+ &:active {
410
+ color: var(--x-button-text-active, var(--x-button-text));
411
+ background-color: var(--x-button-bg-active, var(--x-button-bg));
412
+ border-color: var(--x-button-border-active, var(--x-button-border));
413
+ }
102
414
 
103
- group: {
104
- default: false,
105
- type: [String, Boolean],
106
- validator: (value) => validator.group.includes(value),
107
- },
415
+ :global(.dark) & {
416
+ color: var(--x-dark-button-text, var(--x-button-text));
417
+ background-color: var(--x-dark-button-bg, var(--x-button-bg));
418
+ border-color: var(--x-dark-button-border, var(--x-button-border));
108
419
 
109
- icon: {
110
- type: String,
111
- default: null,
112
- },
113
-
114
- iconRight: {
115
- type: Boolean,
116
- default: false,
117
- },
118
-
119
- to: {
120
- type: String,
121
- default: undefined,
122
- },
123
-
124
- tag: {
125
- type: String,
126
- default: 'button',
127
- },
128
-
129
- type: {
130
- type: String,
131
- default: 'button',
132
- },
133
-
134
- outlined: {
135
- type: Boolean,
136
- default: false,
137
- },
138
-
139
- rounded: {
140
- type: Boolean,
141
- default: false,
142
- },
143
-
144
- glow: {
145
- type: Boolean,
146
- default: false,
147
- },
148
- },
420
+ &:hover {
421
+ color: var(--x-dark-button-text-hover, var(--x-dark-button-text, var(--x-button-text)));
422
+ background-color: var(--x-dark-button-bg-hover, var(--x-dark-button-bg, var(--x-button-bg)));
423
+ border-color: var(--x-dark-button-border-hover, var(--x-dark-button-border, var(--x-button-border)));
424
+ }
149
425
 
150
- setup() {
151
- return {
152
- ...useInteractive(),
426
+ &:active {
427
+ color: var(--x-dark-button-text-active, var(--x-dark-button-text));
428
+ background-color: var(--x-dark-button-bg-active, var(--x-dark-button-bg, var(--x-button-bg)));
429
+ border-color: var(--x-dark-button-border-active, var(--x-dark-button-border, var(--x-button-border)));
153
430
  }
154
- },
431
+ }
155
432
  }
156
- </script>
433
+ </style>
@@ -0,0 +1,73 @@
1
+ <script lang="ts">
2
+ import { defineComponent, provide } from 'vue'
3
+ import { useCommon } from '../../composables/common'
4
+ import { useColors } from '../../composables/colors'
5
+ import { useInteractive } from '../../composables/interactive'
6
+ import { injectButtonGroupKey } from '../../composables/keys'
7
+
8
+ export default defineComponent({
9
+ name: 'XButtonGroup',
10
+
11
+ validators: {
12
+ ...useCommon.validators(),
13
+ },
14
+
15
+ props: {
16
+ ...useCommon.props(),
17
+ ...useColors.props(),
18
+ ...useInteractive.props(),
19
+ tag: {
20
+ type: String,
21
+ default: 'div',
22
+ },
23
+ outlined: Boolean,
24
+ rounded: Boolean,
25
+ ghost: Boolean,
26
+ light: Boolean,
27
+ },
28
+
29
+ setup(props) {
30
+ provide(injectButtonGroupKey, {
31
+ groupProps: props,
32
+ isButtonGroup: true,
33
+ })
34
+ },
35
+ })
36
+ </script>
37
+
38
+ <template>
39
+ <component
40
+ :is="tag"
41
+ class="inline-flex align-middle relative"
42
+ :class="[
43
+ $style['button-group'],
44
+ rounded ? $style['button-group--rounded'] : ''
45
+ ]"
46
+ >
47
+ <slot></slot>
48
+ </component>
49
+ </template>
50
+
51
+ <style lang="postcss" module>
52
+ .button-group {
53
+ &:not(&--rounded) {
54
+ > :first-child {
55
+ @apply rounded-l-md border-l
56
+ }
57
+
58
+ > :last-child {
59
+ @apply rounded-r-md
60
+ }
61
+ }
62
+
63
+ &--rounded {
64
+ > :first-of-type {
65
+ @apply rounded-l-full border-l
66
+ }
67
+
68
+ > :last-child {
69
+ @apply rounded-r-full
70
+ }
71
+ }
72
+ }
73
+ </style>
@@ -1,30 +1,25 @@
1
- <template>
2
- <component
3
- :is="tag"
4
- class="rounded bg-white dark:bg-gray-800"
5
- :class="[
6
- {
7
- 'shadow': !flat,
8
- },
9
- ]"
10
- >
11
- <slot></slot>
12
- </component>
13
- </template>
1
+ <script lang="ts">
2
+ import { defineComponent } from 'vue'
14
3
 
15
- <script>
16
- export default {
4
+ export default defineComponent({
17
5
  name: 'XCard',
18
- props: {
19
- flat: {
20
- type: Boolean,
21
- default: false,
22
- },
23
6
 
7
+ props: {
24
8
  tag: {
25
9
  type: String,
26
10
  default: 'div',
27
11
  },
12
+ flat: Boolean,
28
13
  },
29
- }
14
+ })
30
15
  </script>
16
+
17
+ <template>
18
+ <component
19
+ :is="tag"
20
+ class="rounded bg-white dark:bg-gray-800"
21
+ :class="[{ 'shadow': !flat }]"
22
+ >
23
+ <slot></slot>
24
+ </component>
25
+ </template>