pxd 0.0.54 → 0.0.60

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 (341) hide show
  1. package/README.md +18 -4
  2. package/dist/components/_internal/fragment-container.vue +3 -2
  3. package/dist/components/active-graph/index.d.vue.ts +6 -31
  4. package/dist/components/active-graph/index.vue +65 -38
  5. package/dist/components/active-graph/types.d.ts +42 -0
  6. package/dist/components/avatar/index.d.vue.ts +4 -11
  7. package/dist/components/avatar/index.vue +22 -11
  8. package/dist/components/avatar/types.d.ts +15 -0
  9. package/dist/components/avatar-group/index.d.vue.ts +2 -2
  10. package/dist/components/avatar-group/index.vue +5 -4
  11. package/dist/components/backtop/index.d.vue.ts +2 -7
  12. package/dist/components/backtop/types.d.ts +6 -0
  13. package/dist/components/badge/index.d.vue.ts +4 -11
  14. package/dist/components/badge/index.vue +47 -3
  15. package/dist/components/badge/types.d.ts +32 -0
  16. package/dist/components/book/index.d.vue.ts +2 -9
  17. package/dist/components/book/index.vue +3 -2
  18. package/dist/components/book/types.d.ts +9 -0
  19. package/dist/components/browser/index.d.vue.ts +2 -4
  20. package/dist/components/browser/index.vue +6 -2
  21. package/dist/components/browser/types.d.ts +3 -0
  22. package/dist/components/button/index.d.vue.ts +2 -2
  23. package/dist/components/button/index.vue +60 -12
  24. package/dist/{types/components/button.d.ts → components/button/types.d.ts} +1 -1
  25. package/dist/components/carousel/index.d.vue.ts +24 -2
  26. package/dist/components/carousel/index.vue +341 -28
  27. package/dist/{types/components/carousel.d.ts → components/carousel/types.d.ts} +6 -2
  28. package/dist/components/{command-menu-item → carousel-item}/index.d.vue.ts +2 -2
  29. package/dist/components/carousel-item/index.vue +49 -0
  30. package/dist/components/checkbox/index.d.vue.ts +2 -6
  31. package/dist/components/checkbox/index.vue +68 -31
  32. package/dist/components/checkbox/types.d.ts +15 -0
  33. package/dist/components/checkbox-group/index.d.vue.ts +2 -7
  34. package/dist/components/checkbox-group/index.vue +11 -29
  35. package/dist/components/checkbox-group/types.d.ts +12 -0
  36. package/dist/components/chip/index.d.vue.ts +4 -10
  37. package/dist/components/chip/index.vue +31 -2
  38. package/dist/components/chip/types.d.ts +8 -0
  39. package/dist/components/choicebox/index.d.vue.ts +12 -6
  40. package/dist/components/choicebox/index.vue +36 -54
  41. package/dist/components/choicebox/types.d.ts +20 -0
  42. package/dist/components/choicebox-item/index.d.vue.ts +16 -0
  43. package/dist/components/choicebox-item/index.vue +67 -0
  44. package/dist/{types/components/choicebox.d.ts → components/choicebox-item/types.d.ts} +1 -11
  45. package/dist/components/collapse/index.d.vue.ts +6 -8
  46. package/dist/components/collapse/index.vue +47 -30
  47. package/dist/components/collapse/types.d.ts +8 -0
  48. package/dist/components/collapse-group/index.d.vue.ts +2 -8
  49. package/dist/components/collapse-group/index.vue +8 -20
  50. package/dist/components/collapse-group/types.d.ts +6 -0
  51. package/dist/components/command-menu/index.d.vue.ts +4 -11
  52. package/dist/components/command-menu/index.vue +6 -7
  53. package/dist/components/command-menu/types.d.ts +18 -0
  54. package/dist/components/command-menu-group/index.d.vue.ts +2 -5
  55. package/dist/components/command-menu-group/index.vue +3 -2
  56. package/dist/components/command-menu-group/types.d.ts +5 -0
  57. package/dist/components/config-provider/index.d.vue.ts +3 -3
  58. package/dist/components/config-provider/index.vue +6 -4
  59. package/dist/components/config-provider/types.d.ts +7 -0
  60. package/dist/components/countdown/index.d.vue.ts +3 -6
  61. package/dist/components/countdown/index.vue +3 -2
  62. package/dist/components/countdown/types.d.ts +11 -0
  63. package/dist/components/dash-line/index.d.vue.ts +3 -10
  64. package/dist/components/dash-line/index.vue +3 -1
  65. package/dist/components/dash-line/types.d.ts +9 -0
  66. package/dist/components/description/index.d.vue.ts +3 -7
  67. package/dist/components/description/index.vue +8 -7
  68. package/dist/components/description/types.d.ts +5 -0
  69. package/dist/components/drawer/index.d.vue.ts +7 -22
  70. package/dist/components/drawer/index.vue +20 -15
  71. package/dist/components/drawer/types.d.ts +27 -0
  72. package/dist/components/ellipsis-text/index.d.vue.ts +14 -0
  73. package/dist/components/ellipsis-text/index.vue +242 -0
  74. package/dist/components/ellipsis-text/types.d.ts +14 -0
  75. package/dist/components/empty-state/index.d.vue.ts +2 -5
  76. package/dist/components/empty-state/index.vue +6 -2
  77. package/dist/components/empty-state/types.d.ts +4 -0
  78. package/dist/components/error/index.d.vue.ts +2 -10
  79. package/dist/components/error/index.vue +20 -5
  80. package/dist/components/error/types.d.ts +14 -0
  81. package/dist/components/fader/index.d.vue.ts +3 -9
  82. package/dist/components/fader/index.vue +30 -11
  83. package/dist/components/fader/types.d.ts +8 -0
  84. package/dist/components/gauge/index.d.vue.ts +2 -9
  85. package/dist/components/gauge/index.vue +7 -2
  86. package/dist/components/gauge/types.d.ts +9 -0
  87. package/dist/components/grid/index.d.vue.ts +2 -7
  88. package/dist/components/grid/index.vue +9 -4
  89. package/dist/components/grid/types.d.ts +7 -0
  90. package/dist/components/grid-item/index.d.vue.ts +2 -6
  91. package/dist/components/grid-item/index.vue +16 -8
  92. package/dist/components/grid-item/types.d.ts +6 -0
  93. package/dist/components/hold-button/index.d.vue.ts +5 -12
  94. package/dist/components/hold-button/index.vue +7 -4
  95. package/dist/components/hold-button/types.d.ts +19 -0
  96. package/dist/components/index.d.ts +7 -4
  97. package/dist/components/index.js +7 -4
  98. package/dist/components/input/index.d.vue.ts +6 -8
  99. package/dist/components/input/index.vue +57 -23
  100. package/dist/components/input/types.d.ts +39 -0
  101. package/dist/components/intersection-observer/index.d.vue.ts +3 -11
  102. package/dist/components/intersection-observer/index.vue +12 -3
  103. package/dist/components/intersection-observer/types.d.ts +17 -0
  104. package/dist/components/kbd/index.d.vue.ts +2 -12
  105. package/dist/components/kbd/index.vue +2 -2
  106. package/dist/components/kbd/types.d.ts +11 -0
  107. package/dist/components/link-button/index.d.vue.ts +4 -12
  108. package/dist/components/link-button/index.vue +5 -4
  109. package/dist/components/link-button/types.d.ts +14 -0
  110. package/dist/components/list/index.d.vue.ts +12 -16
  111. package/dist/components/list/index.vue +50 -54
  112. package/dist/components/list/types.d.ts +23 -0
  113. package/dist/components/list-item/index.d.vue.ts +7 -13
  114. package/dist/components/list-item/index.vue +45 -16
  115. package/dist/components/list-item/types.d.ts +15 -0
  116. package/dist/components/loading-bar/index.d.vue.ts +2 -9
  117. package/dist/components/loading-bar/index.vue +33 -2
  118. package/dist/components/loading-bar/types.d.ts +10 -0
  119. package/dist/components/loading-dots/index.vue +3 -2
  120. package/dist/components/material/index.d.vue.ts +2 -4
  121. package/dist/components/material/index.vue +7 -0
  122. package/dist/components/material/types.d.ts +3 -0
  123. package/dist/components/menu/index.d.vue.ts +8 -12
  124. package/dist/components/menu/index.vue +4 -1
  125. package/dist/components/menu/types.d.ts +16 -0
  126. package/dist/components/message/index.d.vue.ts +21 -25
  127. package/dist/components/message/index.vue +8 -12
  128. package/dist/components/message/types.d.ts +14 -0
  129. package/dist/components/message-item/index.d.vue.ts +3 -10
  130. package/dist/components/message-item/index.vue +13 -7
  131. package/dist/components/message-item/types.d.ts +11 -0
  132. package/dist/components/modal/index.d.vue.ts +6 -20
  133. package/dist/components/modal/index.vue +17 -13
  134. package/dist/components/modal/types.d.ts +26 -0
  135. package/dist/components/more-button/index.d.vue.ts +3 -7
  136. package/dist/components/more-button/types.d.ts +10 -0
  137. package/dist/components/noise-background/index.d.vue.ts +3 -6
  138. package/dist/components/noise-background/index.vue +4 -3
  139. package/dist/components/noise-background/types.d.ts +5 -0
  140. package/dist/components/note/index.d.vue.ts +4 -11
  141. package/dist/components/note/index.vue +81 -29
  142. package/dist/components/note/types.d.ts +17 -0
  143. package/dist/components/number-input/index.d.vue.ts +4 -13
  144. package/dist/components/number-input/index.vue +36 -6
  145. package/dist/components/number-input/types.d.ts +26 -0
  146. package/dist/components/overlay/index.d.vue.ts +3 -12
  147. package/dist/components/overlay/index.vue +1 -1
  148. package/dist/components/overlay/types.d.ts +16 -0
  149. package/dist/components/pagination/index.d.vue.ts +2 -9
  150. package/dist/components/pagination/index.vue +5 -3
  151. package/dist/components/pagination/types.d.ts +9 -0
  152. package/dist/components/pin-input/index.d.vue.ts +9 -17
  153. package/dist/components/pin-input/index.vue +66 -23
  154. package/dist/components/pin-input/types.d.ts +23 -0
  155. package/dist/components/placeholder/index.d.vue.ts +2 -6
  156. package/dist/components/placeholder/index.vue +2 -1
  157. package/dist/components/placeholder/types.d.ts +5 -0
  158. package/dist/components/popover/index.d.vue.ts +4 -30
  159. package/dist/components/popover/index.vue +134 -77
  160. package/dist/components/popover/types.d.ts +39 -0
  161. package/dist/components/progress/index.d.vue.ts +4 -13
  162. package/dist/components/progress/index.vue +17 -2
  163. package/dist/components/progress/types.d.ts +16 -0
  164. package/dist/components/project-banner/index.d.vue.ts +18 -0
  165. package/dist/components/project-banner/index.vue +59 -0
  166. package/dist/components/project-banner/types.d.ts +8 -0
  167. package/dist/components/radio/index.d.vue.ts +1 -1
  168. package/dist/components/radio/index.vue +62 -20
  169. package/dist/components/radio/types.d.ts +13 -0
  170. package/dist/components/radio-group/index.d.vue.ts +2 -4
  171. package/dist/components/radio-group/index.vue +11 -16
  172. package/dist/components/radio-group/types.d.ts +12 -0
  173. package/dist/components/resizable/index.d.vue.ts +3 -6
  174. package/dist/components/resizable/index.vue +3 -1
  175. package/dist/components/resizable/types.d.ts +18 -0
  176. package/dist/components/resizable-handle/index.vue +4 -2
  177. package/dist/components/resizable-panel/index.d.vue.ts +2 -5
  178. package/dist/components/resizable-panel/index.vue +7 -2
  179. package/dist/components/resizable-panel/types.d.ts +4 -0
  180. package/dist/components/scrollable/index.d.vue.ts +29 -0
  181. package/dist/components/scrollable/index.vue +101 -84
  182. package/dist/components/scrollable/types.d.ts +38 -0
  183. package/dist/components/skeleton/index.d.vue.ts +3 -11
  184. package/dist/components/skeleton/index.vue +24 -1
  185. package/dist/components/skeleton/types.d.ts +10 -0
  186. package/dist/components/slider/index.d.vue.ts +9 -19
  187. package/dist/components/slider/index.vue +86 -44
  188. package/dist/components/slider/types.d.ts +17 -0
  189. package/dist/components/snippet/index.d.vue.ts +4 -11
  190. package/dist/components/snippet/index.vue +28 -2
  191. package/dist/components/snippet/types.d.ts +13 -0
  192. package/dist/components/spinner/index.vue +4 -2
  193. package/dist/components/stack/index.d.vue.ts +5 -15
  194. package/dist/components/stack/index.vue +35 -3
  195. package/dist/components/stack/types.d.ts +13 -0
  196. package/dist/components/status-dot/index.d.vue.ts +3 -7
  197. package/dist/components/status-dot/index.vue +6 -2
  198. package/dist/components/status-dot/types.d.ts +6 -0
  199. package/dist/components/switch/index.d.vue.ts +11 -8
  200. package/dist/components/switch/index.vue +35 -44
  201. package/dist/components/switch/types.d.ts +14 -0
  202. package/dist/components/switch-item/index.d.vue.ts +14 -0
  203. package/dist/components/switch-item/index.vue +79 -0
  204. package/dist/components/switch-item/types.d.ts +9 -0
  205. package/dist/components/teleport/index.d.vue.ts +3 -6
  206. package/dist/components/teleport/index.vue +1 -1
  207. package/dist/components/teleport/types.d.ts +9 -0
  208. package/dist/components/text/index.d.vue.ts +3 -12
  209. package/dist/components/text/index.vue +36 -22
  210. package/dist/components/text/types.d.ts +10 -0
  211. package/dist/components/textarea/index.d.vue.ts +8 -22
  212. package/dist/components/textarea/index.vue +33 -4
  213. package/dist/components/textarea/types.d.ts +22 -0
  214. package/dist/components/theme-switcher/index.d.vue.ts +2 -3
  215. package/dist/components/theme-switcher/types.d.ts +5 -0
  216. package/dist/components/time-picker/index.d.vue.ts +4 -19
  217. package/dist/components/time-picker/index.vue +43 -9
  218. package/dist/components/time-picker/types.d.ts +27 -0
  219. package/dist/components/toggle/index.d.vue.ts +9 -23
  220. package/dist/components/toggle/index.vue +11 -10
  221. package/dist/components/toggle/types.d.ts +22 -0
  222. package/dist/components/toggle-button/index.d.vue.ts +22 -0
  223. package/dist/components/toggle-button/index.vue +110 -0
  224. package/dist/components/toggle-button/types.d.ts +16 -0
  225. package/dist/components/{choicebox-group → toggle-button-group}/index.d.vue.ts +5 -5
  226. package/dist/components/toggle-button-group/index.vue +68 -0
  227. package/dist/components/toggle-button-group/types.d.ts +22 -0
  228. package/dist/components/tooltip/index.d.vue.ts +6 -16
  229. package/dist/components/tooltip/index.vue +9 -3
  230. package/dist/components/tooltip/types.d.ts +17 -0
  231. package/dist/components/virtual-list/index.d.vue.ts +26 -9
  232. package/dist/components/virtual-list/index.vue +66 -10
  233. package/dist/components/virtual-list/types.d.ts +10 -0
  234. package/dist/composables/index.d.ts +2 -2
  235. package/dist/composables/index.js +2 -2
  236. package/dist/composables/use-browser-observer.d.ts +5 -5
  237. package/dist/composables/use-browser-observer.js +23 -20
  238. package/dist/composables/use-copy-click.js +4 -0
  239. package/dist/composables/use-countdown.d.ts +2 -2
  240. package/dist/composables/use-delay-destroy.d.ts +2 -1
  241. package/dist/composables/use-delay-destroy.js +1 -1
  242. package/dist/composables/use-focus-trap.d.ts +6 -2
  243. package/dist/composables/use-focus-trap.js +19 -7
  244. package/dist/composables/use-forward-ref-expose.d.ts +2 -0
  245. package/dist/composables/use-forward-ref-expose.js +41 -0
  246. package/dist/composables/use-message.d.ts +4 -7
  247. package/dist/composables/use-model-value.d.ts +9 -8
  248. package/dist/composables/use-popover-responsive.d.ts +2 -2
  249. package/dist/composables/use-popover-responsive.js +3 -3
  250. package/dist/composables/use-repeat-action.js +2 -2
  251. package/dist/composables/use-virtual-list.d.ts +21 -12
  252. package/dist/composables/use-virtual-list.js +90 -158
  253. package/dist/composables/use-window-size.d.ts +4 -0
  254. package/dist/composables/use-window-size.js +27 -0
  255. package/dist/contexts/avatar.d.ts +5 -2
  256. package/dist/contexts/carousel.d.ts +4 -4
  257. package/dist/contexts/carousel.js +1 -1
  258. package/dist/contexts/checkbox.d.ts +7 -2
  259. package/dist/contexts/choicebox.d.ts +8 -4
  260. package/dist/contexts/choicebox.js +1 -4
  261. package/dist/contexts/collapse.d.ts +5 -6
  262. package/dist/contexts/collapse.js +1 -1
  263. package/dist/contexts/config-provider.d.ts +5 -0
  264. package/dist/{composables/use-config-provider-context.js → contexts/config-provider.js} +8 -5
  265. package/dist/contexts/list.d.ts +1 -1
  266. package/dist/contexts/radio.d.ts +8 -2
  267. package/dist/contexts/switch.d.ts +8 -4
  268. package/dist/contexts/switch.js +1 -2
  269. package/dist/contexts/toggle-button.d.ts +7 -0
  270. package/dist/contexts/toggle-button.js +2 -0
  271. package/dist/index.d.ts +0 -1
  272. package/dist/styles/source.css +14 -2
  273. package/dist/styles/styles.css +2 -2
  274. package/dist/styles/tw.css +14 -2
  275. package/dist/types/shared/props.d.ts +1 -3
  276. package/dist/types/shared/utils.d.ts +0 -3
  277. package/dist/utils/context.d.ts +1 -0
  278. package/dist/utils/get.d.ts +1 -0
  279. package/dist/utils/get.js +14 -0
  280. package/dist/utils/responsive.js +2 -1
  281. package/dist/utils/throttle.js +9 -7
  282. package/dist/utils/uid.d.ts +1 -1
  283. package/dist/utils/uid.js +2 -2
  284. package/package.json +26 -24
  285. package/volar.d.ts +82 -80
  286. package/dist/components/badge/cn.d.ts +0 -90
  287. package/dist/components/badge/cn.js +0 -44
  288. package/dist/components/button/cn.d.ts +0 -121
  289. package/dist/components/button/cn.js +0 -55
  290. package/dist/components/carousel-group/index.d.vue.ts +0 -35
  291. package/dist/components/carousel-group/index.vue +0 -368
  292. package/dist/components/checkbox/cn.d.ts +0 -67
  293. package/dist/components/checkbox/cn.js +0 -31
  294. package/dist/components/chip/cn.d.ts +0 -49
  295. package/dist/components/chip/cn.js +0 -26
  296. package/dist/components/choicebox-group/index.vue +0 -65
  297. package/dist/components/command-menu-item/index.vue +0 -13
  298. package/dist/components/error/cn.d.ts +0 -22
  299. package/dist/components/error/cn.js +0 -15
  300. package/dist/components/input/cn.d.ts +0 -73
  301. package/dist/components/input/cn.js +0 -36
  302. package/dist/components/list-item/cn.d.ts +0 -22
  303. package/dist/components/list-item/cn.js +0 -15
  304. package/dist/components/loading-bar/cn.d.ts +0 -70
  305. package/dist/components/loading-bar/cn.js +0 -32
  306. package/dist/components/note/cn.d.ts +0 -121
  307. package/dist/components/note/cn.js +0 -66
  308. package/dist/components/pin-input/cn.d.ts +0 -46
  309. package/dist/components/pin-input/cn.js +0 -25
  310. package/dist/components/progress/cn.d.ts +0 -19
  311. package/dist/components/progress/cn.js +0 -14
  312. package/dist/components/radio/cn.d.ts +0 -46
  313. package/dist/components/radio/cn.js +0 -42
  314. package/dist/components/skeleton/cn.d.ts +0 -43
  315. package/dist/components/skeleton/cn.js +0 -24
  316. package/dist/components/snippet/cn.d.ts +0 -52
  317. package/dist/components/snippet/cn.js +0 -27
  318. package/dist/components/stack/cn.d.ts +0 -70
  319. package/dist/components/stack/cn.js +0 -33
  320. package/dist/components/switch/cn.d.ts +0 -16
  321. package/dist/components/switch/cn.js +0 -13
  322. package/dist/components/switch-group/index.d.vue.ts +0 -23
  323. package/dist/components/switch-group/index.vue +0 -54
  324. package/dist/components/text/cn.d.ts +0 -67
  325. package/dist/components/text/cn.js +0 -34
  326. package/dist/components/textarea/cn.d.ts +0 -58
  327. package/dist/components/textarea/cn.js +0 -30
  328. package/dist/composables/use-config-provider-context.d.ts +0 -8
  329. package/dist/composables/use-unique-id-context.d.ts +0 -2
  330. package/dist/composables/use-unique-id-context.js +0 -11
  331. package/dist/types/components/checkbox.d.ts +0 -17
  332. package/dist/types/components/error.d.ts +0 -6
  333. package/dist/types/components/index.d.ts +0 -12
  334. package/dist/types/components/input.d.ts +0 -29
  335. package/dist/types/components/list.d.ts +0 -12
  336. package/dist/types/components/popover.d.ts +0 -1
  337. package/dist/types/components/radio.d.ts +0 -16
  338. package/dist/types/components/switch.d.ts +0 -10
  339. package/dist/types/components/time-picker.d.ts +0 -4
  340. /package/dist/{types/components/avatar.d.ts → components/avatar-group/types.d.ts} +0 -0
  341. /package/dist/{types/components/time-picker.js → components/virtual-list/types.js} +0 -0
package/README.md CHANGED
@@ -1,17 +1,23 @@
1
1
  # PXD
2
2
 
3
- A universal UI component library for Vue@2.7+ & Vue@3.2+
3
+ A Vue 2.7 & 3.2 universal component library. Built-in light/dark theme. PC & mobile ready. Animation-free mode supported.
4
+
5
+ [简体中文](README-CN.md) | [Online Preview](https://pxd-ui.netlify.app/)
4
6
 
5
- [Online Preview](https://pxd-ui.netlify.app/)
6
7
 
7
8
  > [!WARNING]
8
9
  > The project is under active development and is not ready for production.
9
10
 
10
11
  ## Features
11
12
 
12
- - Vue 3 Composition API
13
- - 100% compatible with Vue2.7+ & Vue3.2+
13
+ - Universal: One codebase for Vue 2.7+ and Vue 3.2+
14
+ - Responsive: Seamlessly works on both PC and mobile devices
15
+ - Built-in light & dark theme, no extra configuration needed
16
+ - Motion-safe: Supports fully disabling all animations
17
+ - Written in TypeScript with full type definitions
18
+ - Vue 3 Composition API with `<script setup>`
14
19
  - Complete tree-shaking support
20
+ - Inspired by the [Geist Design System](https://vercel.com/geist/introduction)
15
21
 
16
22
  ## Contribution
17
23
 
@@ -43,6 +49,14 @@ pnpm build:docs
43
49
  pnpm build
44
50
  ```
45
51
 
52
+ ## Contribution Guidelines
53
+
54
+ ### Component Naming Rules
55
+
56
+ - Components that can be used independently do not need to add -group/-item suffix, such as: `Checkbox`, `Radio`, `Toggle`, `ToggleButton`
57
+ - Components that are used to manage a group of sub-components need to add -group suffix, such as: `CheckboxGroup`, `RadioGroup`, `ToggleGroup`, `ToggleButtonGroup`
58
+ - Components that can only be used as a sub-component of another component need to add -item suffix, such as: `ListItem`, `GridItem`, `MessageItem`
59
+
46
60
  ## Reference
47
61
 
48
62
  - [Geist Design System](https://vercel.com/geist/introduction)
@@ -1,11 +1,12 @@
1
1
  <script setup>
2
2
  defineOptions({
3
- name: "PFragmentContainer"
3
+ name: "PFragmentContainer",
4
+ inheritAttrs: false
4
5
  });
5
6
  </script>
6
7
 
7
8
  <template>
8
- <div class="pxd-fragment-container">
9
+ <div class="pxd-fragment-container" v-bind="$attrs">
9
10
  <slot />
10
11
  </div>
11
12
  </template>
@@ -1,42 +1,17 @@
1
- interface FieldNames {
2
- date: string;
3
- count: string;
4
- }
5
- interface Props {
6
- data?: Record<string, any>[];
7
- legend?: boolean;
8
- startDate?: string | Date;
9
- endDate?: string | Date;
10
- colors?: Record<string, string>;
11
- graphOnly?: boolean;
12
- transpose?: boolean;
13
- tooltip?: boolean;
14
- fieldNames?: FieldNames;
15
- itemRadius?: string | number;
16
- }
17
- interface TooltipInfo {
18
- date: string;
19
- count: number;
20
- left: number;
21
- top: number;
22
- }
1
+ import type { ActiveGraphProps, ActiveGraphTooltipInfo } from './types';
23
2
  declare var __VLS_7: {
24
- data: TooltipInfo;
3
+ data: ActiveGraphTooltipInfo;
25
4
  };
26
5
  type __VLS_Slots = {} & {
27
6
  tooltip?: (props: typeof __VLS_7) => any;
28
7
  };
29
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
- "cell-click": (args_0: MouseEvent, args_1: string) => any;
31
- }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
32
- "onCell-click"?: ((args_0: MouseEvent, args_1: string) => any) | undefined;
8
+ declare const __VLS_base: import("vue").DefineComponent<ActiveGraphProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
+ select: (args_0: string, args_1: MouseEvent) => any;
10
+ }, string, import("vue").PublicProps, Readonly<ActiveGraphProps> & Readonly<{
11
+ onSelect?: ((args_0: string, args_1: MouseEvent) => any) | undefined;
33
12
  }>, {
34
13
  data: Record<string, any>[];
35
14
  legend: boolean;
36
- startDate: string | Date;
37
- endDate: string | Date;
38
- colors: Record<string, string>;
39
- graphOnly: boolean;
40
15
  tooltip: boolean;
41
16
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
42
17
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,43 +1,61 @@
1
1
  <script setup>
2
2
  import { computed, onBeforeUnmount, shallowRef } from "vue";
3
- import { useConfigProvider } from "../../composables/use-config-provider-context";
3
+ import { useConfigProvider } from "../../contexts/config-provider";
4
4
  import { useDelayChange } from "../../composables/use-delay-change";
5
5
  import { getAllDatesBetween } from "../../utils/date";
6
6
  import { getCssUnitValue } from "../../utils/format";
7
7
  import { getColorByThreshold } from "../../utils/get";
8
8
  defineOptions({
9
- name: "PActiveGraph"
9
+ name: "PActiveGraph",
10
+ inheritAttrs: false
10
11
  });
11
12
  const props = defineProps({
12
13
  data: { type: Array, required: false, default: () => [] },
13
14
  legend: { type: Boolean, required: false, default: true },
14
- startDate: { type: [String, Date], required: false, default: () => {
15
- const date = /* @__PURE__ */ new Date();
16
- date.setFullYear(date.getFullYear() - 1);
17
- while (date.getDay() !== 0) {
18
- date.setDate(date.getDate() - 1);
19
- }
20
- return date;
21
- } },
22
- endDate: { type: [String, Date], required: false, default: () => /* @__PURE__ */ new Date() },
23
- colors: { type: Object, required: false, default: () => ({
24
- 0: "",
25
- 5: "var(--color-green-300)",
26
- 10: "var(--color-green-500)",
27
- 15: "var(--color-green-700)",
28
- 20: "var(--color-green-900)"
29
- }) },
30
- graphOnly: { type: Boolean, required: false, default: false },
31
- transpose: { type: Boolean, required: false },
15
+ colors: { type: Object, required: false },
16
+ startDate: { type: [String, Date], required: false },
17
+ endDate: { type: [String, Date], required: false },
32
18
  tooltip: { type: Boolean, required: false, default: true },
19
+ graphOnly: { type: Boolean, required: false },
20
+ transpose: { type: Boolean, required: false },
33
21
  fieldNames: { type: Object, required: false },
34
- itemRadius: { type: [String, Number], required: false }
22
+ itemRadius: { type: [String, Number], required: false },
23
+ defaultSelect: { type: String, required: false }
35
24
  });
36
- const emits = defineEmits(["cell-click"]);
25
+ const emits = defineEmits(["select"]);
37
26
  const configProvider = useConfigProvider();
38
27
  const CELL_GAP = 3;
39
28
  const CELL_SIZE = 12;
40
- const rangedDates = computed(() => getAllDatesBetween(props.startDate, props.endDate));
29
+ const selectedDate = shallowRef(props.defaultSelect);
30
+ const getDefaultStartDate = () => {
31
+ const date = /* @__PURE__ */ new Date();
32
+ date.setFullYear(date.getFullYear() - 1);
33
+ while (date.getDay() !== 0) {
34
+ date.setDate(date.getDate() - 1);
35
+ }
36
+ return date;
37
+ };
38
+ const getDefaultEndDate = () => {
39
+ return /* @__PURE__ */ new Date();
40
+ };
41
+ const computedColors = computed(() => {
42
+ if (props.colors) {
43
+ return props.colors;
44
+ }
45
+ return {
46
+ 0: "",
47
+ 5: "var(--color-green-300)",
48
+ 10: "var(--color-green-500)",
49
+ 15: "var(--color-green-700)",
50
+ 20: "var(--color-green-900)"
51
+ };
52
+ });
53
+ const rangedDates = computed(
54
+ () => getAllDatesBetween(
55
+ props.startDate || getDefaultStartDate(),
56
+ props.endDate || getDefaultEndDate()
57
+ )
58
+ );
41
59
  const dateCountMap = computed(() => {
42
60
  const { date, count } = props.fieldNames || { date: "date", count: "count" };
43
61
  return props.data.reduce(
@@ -123,7 +141,7 @@ function createTransposedTableData() {
123
141
  hidden: false,
124
142
  date: dateStr,
125
143
  count,
126
- color: getColorByThreshold(count, props.colors)
144
+ color: getColorByThreshold(count, computedColors.value)
127
145
  });
128
146
  if (month !== currentMonth || year !== currentYear) {
129
147
  currentMonth = month;
@@ -175,7 +193,7 @@ function createStandardTableData() {
175
193
  hidden: false,
176
194
  date: dateStr,
177
195
  count,
178
- color: getColorByThreshold(count, props.colors)
196
+ color: getColorByThreshold(count, computedColors.value)
179
197
  });
180
198
  }
181
199
  return result;
@@ -207,7 +225,8 @@ function onCellClick(event) {
207
225
  if (!date) {
208
226
  return;
209
227
  }
210
- emits("cell-click", event, date);
228
+ selectedDate.value = selectedDate.value === date ? "" : date;
229
+ emits("select", date, event);
211
230
  }
212
231
  let tbodyRect;
213
232
  const tbodyRef = shallowRef();
@@ -254,7 +273,11 @@ onBeforeUnmount(() => {
254
273
  </script>
255
274
 
256
275
  <template>
257
- <div class="pxd-active-graph relative" :class="[graphOnly ? 'py-0.75 pr-0.75' : 'pr-5']">
276
+ <div
277
+ class="pxd-active-graph relative"
278
+ :class="[graphOnly ? 'py-0.75 pr-0.75' : 'pr-5']"
279
+ v-bind="$attrs"
280
+ >
258
281
  <table
259
282
  role="grid"
260
283
  aria-readonly="true"
@@ -295,33 +318,37 @@ onBeforeUnmount(() => {
295
318
  <td
296
319
  v-for="col of row"
297
320
  :key="col.date"
298
- class="pxd-active-graph--item w-3 min-w-3 rounded-(--item-radius) bg-gray-alpha-200 motion-safe:transition-colors"
321
+ class="pxd-active-graph--item w-3 min-w-3 rounded-(--item-radius) border border-transparent bg-gray-alpha-100 hover:border-primary motion-safe:transition-all"
299
322
  :data-date="col.date"
300
- :class="{ 'pointer-events-none opacity-0': col.hidden }"
323
+ :class="{
324
+ 'pointer-events-none invisible': col.hidden,
325
+ 'opacity-30': selectedDate && col.date !== selectedDate,
326
+ 'border-primary!': selectedDate && col.date === selectedDate
327
+ }"
301
328
  :style="`background: ${col.color}`"
302
329
  />
303
330
  </tr>
304
331
 
305
- <template v-if="props.legend">
332
+ <template v-if="legend">
306
333
  <tr class="pxd-active-graph--placeholder h-0.5 pointer-events-none" />
307
334
  <tr class="pxd-active-graph--legend pointer-events-none">
308
335
  <td class="h-3 relative text-foreground-secondary">
309
- <span class="right-1 absolute top-1/2 -translate-y-1/2">{{
310
- configProvider.locale.compare.less
311
- }}</span>
336
+ <span class="right-1 absolute top-1/2 -translate-y-1/2">
337
+ {{ configProvider.locale.compare.less }}
338
+ </span>
312
339
  </td>
313
340
 
314
341
  <td
315
- v-for="color in props.colors"
342
+ v-for="color in computedColors"
316
343
  :key="color"
317
- class="w-3 h-3 rounded-(--item-radius) bg-gray-alpha-200 motion-safe:transition-colors"
344
+ class="w-3 h-3 rounded-(--item-radius) bg-gray-alpha-100 motion-safe:transition-colors"
318
345
  :style="`background-color: ${color}`"
319
346
  />
320
347
 
321
348
  <td class="h-3 w-3 relative text-foreground-secondary">
322
- <span class="absolute top-1/2 left-px -translate-y-1/2">{{
323
- configProvider.locale.compare.more
324
- }}</span>
349
+ <span class="absolute top-1/2 left-px -translate-y-1/2">
350
+ {{ configProvider.locale.compare.more }}
351
+ </span>
325
352
  </td>
326
353
  </tr>
327
354
  </template>
@@ -0,0 +1,42 @@
1
+ interface FieldNames {
2
+ date: string
3
+ count: string
4
+ }
5
+
6
+ export interface ActiveGraphProps {
7
+ data?: Record<string, any>[]
8
+ legend?: boolean
9
+ colors?: Record<string, string>
10
+ startDate?: string | Date
11
+ endDate?: string | Date
12
+ tooltip?: boolean
13
+ graphOnly?: boolean
14
+ transpose?: boolean
15
+ fieldNames?: FieldNames
16
+ itemRadius?: string | number
17
+ defaultSelect?: string
18
+ }
19
+
20
+ export interface ActiveGraphEmits {
21
+ select: [string, MouseEvent]
22
+ }
23
+
24
+ export interface ActiveGraphCellData {
25
+ hidden?: boolean
26
+ count: number
27
+ color?: string
28
+ date?: string
29
+ }
30
+
31
+ export interface ActiveGraphRowData extends Array<ActiveGraphCellData> {
32
+ isMonthFirstRow?: boolean
33
+ monthName?: string
34
+ headerText: string
35
+ }
36
+
37
+ export interface ActiveGraphTooltipInfo {
38
+ date: string
39
+ count: number
40
+ left: number
41
+ top: number
42
+ }
@@ -1,25 +1,18 @@
1
- interface Props {
2
- src?: string;
3
- alt?: string;
4
- size?: number | string;
5
- loading?: boolean;
6
- placeholder?: boolean;
7
- }
8
- type LoadingStatus = 'idle' | 'loading' | 'loaded' | 'error';
9
- declare function getLoadingStatus(): LoadingStatus;
1
+ import type { AvatarStatus, AvatarProps } from './types';
2
+ declare function getLoadingStatus(): AvatarStatus;
10
3
  declare var __VLS_1: {}, __VLS_3: {};
11
4
  type __VLS_Slots = {} & {
12
5
  default?: (props: typeof __VLS_1) => any;
13
6
  } & {
14
7
  icon?: (props: typeof __VLS_3) => any;
15
8
  };
16
- declare const __VLS_base: import("vue").DefineComponent<Props, {
9
+ declare const __VLS_base: import("vue").DefineComponent<AvatarProps, {
17
10
  getLoadingStatus: typeof getLoadingStatus;
18
11
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
12
  load: (args_0: Event) => any;
20
13
  error: (args_0: Event) => any;
21
14
  loadstart: (args_0: Event) => any;
22
- }, string, import("vue").PublicProps, Readonly<Props> & Readonly<{
15
+ }, string, import("vue").PublicProps, Readonly<AvatarProps> & Readonly<{
23
16
  onLoad?: ((args_0: Event) => any) | undefined;
24
17
  onError?: ((args_0: Event) => any) | undefined;
25
18
  onLoadstart?: ((args_0: Event) => any) | undefined;
@@ -3,7 +3,8 @@ import { computed, shallowRef } from "vue";
3
3
  import { useAvatarGroupContext } from "../../contexts/avatar";
4
4
  import { getCssUnitValue } from "../../utils/format";
5
5
  defineOptions({
6
- name: "PAvatar"
6
+ name: "PAvatar",
7
+ inheritAttrs: false
7
8
  });
8
9
  const props = defineProps({
9
10
  src: { type: String, required: false },
@@ -15,8 +16,10 @@ const props = defineProps({
15
16
  const emits = defineEmits(["load", "error", "loadstart"]);
16
17
  const loadingStatus = shallowRef("idle");
17
18
  const avatarGroupContext = useAvatarGroupContext();
18
- const computedSize = computed(() => getCssUnitValue(props.size || avatarGroupContext?.size, "32px"));
19
- const hideAvatar = computed(
19
+ const computedSize = computed(
20
+ () => getCssUnitValue(props.size || avatarGroupContext?.props.size, "32px")
21
+ );
22
+ const isHideAvatar = computed(
20
23
  () => !props.src || props.placeholder || loadingStatus.value === "error"
21
24
  );
22
25
  function onLoadError(event) {
@@ -41,12 +44,20 @@ defineExpose({
41
44
 
42
45
  <template>
43
46
  <div
44
- class="pxd-avatar relative inline-flex size-(--avatar-size) items-center justify-center rounded-full border border-background-100 select-none before:default-animation-timing-function! motion-safe:before:animate-[placeholder_8s_infinite]"
47
+ class="pxd-avatar relative inline-flex size-(--avatar-size) items-center justify-center rounded-full border border-background-100 bg-background-100 text-13px select-none before:default-animation-timing-function! motion-safe:before:[animation-duration:8s]"
45
48
  :style="{ '--avatar-size': computedSize }"
49
+ :data-placeholder="placeholder"
50
+ v-bind="$attrs"
46
51
  >
47
52
  <slot>
53
+ <span
54
+ v-if="isHideAvatar"
55
+ class="font-medium px-1 relative flex size-full items-center justify-center overflow-hidden rounded-inherit"
56
+ >
57
+ {{ alt }}
58
+ </span>
48
59
  <img
49
- v-if="!hideAvatar"
60
+ v-else
50
61
  :src="src"
51
62
  :alt="alt"
52
63
  loading="lazy"
@@ -54,7 +65,7 @@ defineExpose({
54
65
  aria-hidden="true"
55
66
  fetchpriority="low"
56
67
  crossorigin="anonymous"
57
- class="relative block size-full overflow-hidden rounded-inherit"
68
+ class="relative block size-full overflow-hidden rounded-inherit bg-gray-100"
58
69
  @load="onLoadSuccess"
59
70
  @loadstart="onLoadStart"
60
71
  @abort="onLoadError"
@@ -78,17 +89,15 @@ defineExpose({
78
89
 
79
90
  <style lang="postcss">
80
91
  .pxd-avatar {
81
- &::before,
82
- &::after {
92
+ &::after,
93
+ &[data-placeholder='true']::before {
83
94
  content: '';
84
- width: 100%;
85
- height: 100%;
86
95
  position: absolute;
87
96
  inset: 0;
88
97
  border-radius: inherit;
89
98
  }
90
99
 
91
- &::before {
100
+ &[data-placeholder='true']::before {
92
101
  background-image: linear-gradient(
93
102
  270deg,
94
103
  var(--color-gray-alpha-100),
@@ -97,6 +106,8 @@ defineExpose({
97
106
  var(--color-gray-alpha-100)
98
107
  );
99
108
  background-size: 400% 100%;
109
+ animation-name: placeholder;
110
+ animation-iteration-count: infinite;
100
111
  }
101
112
 
102
113
  &::after {
@@ -0,0 +1,15 @@
1
+ export type AvatarStatus = 'idle' | 'loading' | 'loaded' | 'error'
2
+
3
+ export interface AvatarProps {
4
+ src?: string
5
+ alt?: string
6
+ size?: number | string
7
+ loading?: boolean
8
+ placeholder?: boolean
9
+ }
10
+
11
+ export interface AvatarEmits {
12
+ load: [Event]
13
+ error: [Event]
14
+ loadstart: [Event]
15
+ }
@@ -1,8 +1,8 @@
1
- import type { AvatarGroupProps } from '../../types/components/avatar';
1
+ import type { AvatarGroupProps } from './types';
2
2
  declare const __VLS_export: import("vue").DefineComponent<AvatarGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AvatarGroupProps> & Readonly<{}>, {
3
3
  size: number | string;
4
4
  max: number;
5
- options: import("../../types/components/avatar").AvatarOptions[];
5
+ options: import("./types").AvatarOptions[];
6
6
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
7
  declare const _default: typeof __VLS_export;
8
8
  export default _default;
@@ -3,7 +3,8 @@ import { computed } from "vue";
3
3
  import { provideAvatarGroupContext } from "../../contexts/avatar";
4
4
  import PAvatar from "../avatar/index.vue";
5
5
  defineOptions({
6
- name: "PAvatarGroup"
6
+ name: "PAvatarGroup",
7
+ inheritAttrs: false
7
8
  });
8
9
  const props = defineProps({
9
10
  max: { type: Number, required: false, default: 5 },
@@ -15,11 +16,11 @@ const slicedOptions = computed(() => {
15
16
  const maxCount = Math.max(Math.min(max, options.length), 1);
16
17
  return options.slice(0, maxCount);
17
18
  });
18
- provideAvatarGroupContext(props);
19
+ provideAvatarGroupContext({ props });
19
20
  </script>
20
21
 
21
22
  <template>
22
- <div class="pxd-avatar-group flex flex-wrap items-center">
23
+ <div class="pxd-avatar-group flex flex-wrap items-center" v-bind="$attrs">
23
24
  <PAvatar
24
25
  v-for="(option, index) in slicedOptions"
25
26
  :key="index"
@@ -27,7 +28,7 @@ provideAvatarGroupContext(props);
27
28
  :src="option.src"
28
29
  :alt="option.alt"
29
30
  :loading="option.loading"
30
- class="[&:nth-child(n+2)]:-ml-2.5 hover:z-1"
31
+ class="nth-[n+2]:-ml-2.5 hover:z-1"
31
32
  />
32
33
 
33
34
  <PAvatar
@@ -1,14 +1,9 @@
1
- interface Props {
2
- right?: string | number;
3
- bottom?: string | number;
4
- zIndex?: string | number;
5
- visibleThreshold?: number;
6
- }
1
+ import type { BacktopProps } from './types';
7
2
  declare var __VLS_7: {};
8
3
  type __VLS_Slots = {} & {
9
4
  default?: (props: typeof __VLS_7) => any;
10
5
  };
11
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
6
+ declare const __VLS_base: import("vue").DefineComponent<BacktopProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BacktopProps> & Readonly<{}>, {
12
7
  visibleThreshold: number;
13
8
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
9
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -0,0 +1,6 @@
1
+ export interface BacktopProps {
2
+ right?: string | number
3
+ bottom?: string | number
4
+ zIndex?: string | number
5
+ visibleThreshold?: number
6
+ }
@@ -1,18 +1,11 @@
1
- import type { ComponentAs, ComponentSize } from '../../types/shared';
2
- import type { BadgeVariant } from './cn';
3
- interface Props {
4
- as?: ComponentAs;
5
- href?: string;
6
- size?: ComponentSize;
7
- variant?: BadgeVariant;
8
- }
1
+ import type { BadgeProps } from './types';
9
2
  declare var __VLS_8: {};
10
3
  type __VLS_Slots = {} & {
11
4
  default?: (props: typeof __VLS_8) => any;
12
5
  };
13
- declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
14
- variant: BadgeVariant;
15
- as: ComponentAs;
6
+ declare const __VLS_base: import("vue").DefineComponent<BadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BadgeProps> & Readonly<{}>, {
7
+ as: import("../../types/shared").ComponentAs;
8
+ variant: import("./types").BadgeVariant;
16
9
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
10
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
18
11
  declare const _default: typeof __VLS_export;
@@ -1,17 +1,61 @@
1
1
  <script setup>
2
2
  import { computed } from "vue";
3
- import { useConfigProvider } from "../../composables/use-config-provider-context";
4
- import { badgeVariant } from "./cn";
3
+ import { useConfigProvider } from "../../contexts/config-provider";
4
+ import { tv } from "tailwind-variants";
5
5
  defineOptions({
6
6
  name: "PBadge",
7
7
  inheritAttrs: false
8
8
  });
9
9
  const props = defineProps({
10
- as: { type: null, required: false, default: "span" },
10
+ as: { type: [String, Object], required: false, default: "span" },
11
11
  href: { type: String, required: false },
12
12
  size: { type: String, required: false },
13
13
  variant: { type: String, required: false, default: "gray" }
14
14
  });
15
+ const badgeVariant = tv({
16
+ base: "pxd-badge font-medium gap-1 inline-flex items-center justify-center rounded-full font-sans text-nowrap whitespace-nowrap no-underline! motion-safe:transition-all",
17
+ variants: {
18
+ variant: {
19
+ pill: "bg-background-100",
20
+ primary: "bg-primary text-gray-100",
21
+ gray: "text-white bg-gray-600",
22
+ blue: "bg-blue-700 text-gray-100 dark:text-gray-1000",
23
+ purple: "bg-purple-700 text-gray-100 dark:text-gray-1000",
24
+ amber: "bg-amber-700 text-gray-1000 dark:text-gray-100",
25
+ red: "bg-red-700 text-gray-100 dark:text-gray-1000",
26
+ pink: "bg-pink-700 text-gray-100 dark:text-gray-1000",
27
+ green: "bg-green-700 text-gray-100 dark:text-gray-1000",
28
+ teal: "bg-teal-700 text-gray-100 dark:text-gray-1000",
29
+ "gray-subtle": "bg-gray-200 text-gray-1000",
30
+ "blue-subtle": "bg-blue-200 text-blue-900",
31
+ "purple-subtle": "bg-purple-200 text-purple-900",
32
+ "amber-subtle": "bg-amber-200 text-amber-900",
33
+ "red-subtle": "bg-red-200 text-red-900",
34
+ "pink-subtle": "bg-pink-200 text-pink-900",
35
+ "green-subtle": "bg-green-200 text-green-900",
36
+ "teal-subtle": "bg-teal-200 text-teal-900",
37
+ inverted: "bg-gray-1000 text-gray-100",
38
+ vue: "text-gray-100 dark:text-gray-1000",
39
+ trial: "text-gray-100 dark:text-gray-1000",
40
+ turborepo: "text-gray-100 dark:text-gray-1000"
41
+ },
42
+ size: {
43
+ sm: "px-2 h-5 text-xs",
44
+ md: "px-2.5 h-6 text-xs",
45
+ lg: "px-3 h-7.5 text-sm"
46
+ }
47
+ },
48
+ compoundVariants: [
49
+ { variant: "pill", class: "pill" },
50
+ { variant: "vue", class: "vue" },
51
+ { variant: "trial", class: "trial" },
52
+ { variant: "turborepo", class: "turborepo" }
53
+ ],
54
+ defaultVariants: {
55
+ variant: "gray",
56
+ size: "md"
57
+ }
58
+ });
15
59
  const configProvider = useConfigProvider();
16
60
  const computedClasses = computed(() => {
17
61
  const { variant, size = configProvider.size } = props;
@@ -0,0 +1,32 @@
1
+ import type { ComponentAs, ComponentSize } from '../../types/shared'
2
+
3
+ export type BadgeVariant =
4
+ | 'pill'
5
+ | 'primary'
6
+ | 'gray'
7
+ | 'blue'
8
+ | 'purple'
9
+ | 'amber'
10
+ | 'red'
11
+ | 'pink'
12
+ | 'green'
13
+ | 'teal'
14
+ | 'gray-subtle'
15
+ | 'blue-subtle'
16
+ | 'purple-subtle'
17
+ | 'amber-subtle'
18
+ | 'red-subtle'
19
+ | 'pink-subtle'
20
+ | 'green-subtle'
21
+ | 'teal-subtle'
22
+ | 'inverted'
23
+ | 'vue'
24
+ | 'trial'
25
+ | 'turborepo'
26
+
27
+ export interface BadgeProps {
28
+ as?: ComponentAs
29
+ href?: string
30
+ size?: ComponentSize
31
+ variant?: BadgeVariant
32
+ }