pxd 0.0.55 → 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 (275) 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 +2 -3
  4. package/dist/components/active-graph/index.vue +23 -16
  5. package/dist/components/active-graph/types.d.ts +4 -3
  6. package/dist/components/avatar/index.vue +19 -10
  7. package/dist/components/avatar/types.d.ts +0 -12
  8. package/dist/components/avatar-group/index.d.vue.ts +2 -2
  9. package/dist/components/avatar-group/index.vue +4 -3
  10. package/dist/components/avatar-group/types.d.ts +11 -0
  11. package/dist/components/badge/index.d.vue.ts +1 -1
  12. package/dist/components/badge/index.vue +47 -3
  13. package/dist/components/badge/types.d.ts +24 -1
  14. package/dist/components/book/index.vue +3 -2
  15. package/dist/components/browser/index.vue +6 -2
  16. package/dist/components/button/index.d.vue.ts +1 -1
  17. package/dist/components/button/index.vue +60 -12
  18. package/dist/components/carousel/index.d.vue.ts +24 -2
  19. package/dist/components/carousel/index.vue +341 -28
  20. package/dist/components/carousel/types.d.ts +2 -2
  21. package/dist/components/carousel-item/index.d.vue.ts +13 -0
  22. package/dist/components/carousel-item/index.vue +49 -0
  23. package/dist/components/checkbox/index.d.vue.ts +1 -5
  24. package/dist/components/checkbox/index.vue +66 -31
  25. package/dist/components/checkbox/types.d.ts +2 -14
  26. package/dist/components/checkbox-group/index.d.vue.ts +2 -7
  27. package/dist/components/checkbox-group/index.vue +11 -29
  28. package/dist/components/checkbox-group/types.d.ts +12 -0
  29. package/dist/components/chip/index.d.vue.ts +1 -1
  30. package/dist/components/chip/index.vue +31 -2
  31. package/dist/components/choicebox/index.d.vue.ts +11 -5
  32. package/dist/components/choicebox/index.vue +36 -54
  33. package/dist/components/choicebox/types.d.ts +11 -18
  34. package/dist/components/choicebox-item/index.d.vue.ts +16 -0
  35. package/dist/components/choicebox-item/index.vue +67 -0
  36. package/dist/components/choicebox-item/types.d.ts +12 -0
  37. package/dist/components/collapse/index.d.vue.ts +5 -4
  38. package/dist/components/collapse/index.vue +47 -30
  39. package/dist/components/collapse/types.d.ts +2 -5
  40. package/dist/components/collapse-group/index.d.vue.ts +2 -4
  41. package/dist/components/collapse-group/index.vue +8 -20
  42. package/dist/components/collapse-group/types.d.ts +6 -0
  43. package/dist/components/command-menu/index.vue +6 -7
  44. package/dist/components/command-menu/types.d.ts +0 -5
  45. package/dist/components/command-menu-group/index.d.vue.ts +1 -1
  46. package/dist/components/command-menu-group/index.vue +3 -2
  47. package/dist/components/command-menu-group/types.d.ts +5 -0
  48. package/dist/components/config-provider/index.d.vue.ts +2 -2
  49. package/dist/components/config-provider/index.vue +6 -4
  50. package/dist/components/countdown/index.vue +3 -2
  51. package/dist/components/countdown/types.d.ts +2 -2
  52. package/dist/components/dash-line/index.vue +3 -1
  53. package/dist/components/description/index.d.vue.ts +1 -1
  54. package/dist/components/description/index.vue +8 -7
  55. package/dist/components/description/types.d.ts +1 -1
  56. package/dist/components/drawer/index.d.vue.ts +3 -2
  57. package/dist/components/drawer/index.vue +20 -15
  58. package/dist/components/drawer/types.d.ts +3 -3
  59. package/dist/components/ellipsis-text/index.d.vue.ts +14 -0
  60. package/dist/components/ellipsis-text/index.vue +242 -0
  61. package/dist/components/ellipsis-text/types.d.ts +14 -0
  62. package/dist/components/empty-state/index.vue +6 -2
  63. package/dist/components/error/index.d.vue.ts +1 -3
  64. package/dist/components/error/index.vue +21 -6
  65. package/dist/components/error/types.d.ts +7 -1
  66. package/dist/components/fader/index.vue +30 -11
  67. package/dist/components/fader/types.d.ts +2 -2
  68. package/dist/components/gauge/index.vue +7 -2
  69. package/dist/components/grid/index.vue +9 -4
  70. package/dist/components/grid/types.d.ts +0 -5
  71. package/dist/components/grid-item/index.d.vue.ts +1 -1
  72. package/dist/components/grid-item/index.vue +16 -8
  73. package/dist/components/grid-item/types.d.ts +6 -0
  74. package/dist/components/hold-button/index.d.vue.ts +2 -2
  75. package/dist/components/hold-button/index.vue +7 -4
  76. package/dist/components/index.d.ts +7 -3
  77. package/dist/components/index.js +7 -3
  78. package/dist/components/input/index.d.vue.ts +8 -8
  79. package/dist/components/input/index.vue +54 -21
  80. package/dist/components/input/types.d.ts +7 -10
  81. package/dist/components/intersection-observer/index.d.vue.ts +0 -1
  82. package/dist/components/intersection-observer/index.vue +12 -3
  83. package/dist/components/kbd/index.vue +1 -1
  84. package/dist/components/link-button/index.d.vue.ts +1 -1
  85. package/dist/components/link-button/index.vue +5 -4
  86. package/dist/components/link-button/types.d.ts +1 -1
  87. package/dist/components/list/index.d.vue.ts +8 -5
  88. package/dist/components/list/index.vue +50 -54
  89. package/dist/components/list/types.d.ts +3 -20
  90. package/dist/components/list-item/index.d.vue.ts +4 -3
  91. package/dist/components/list-item/index.vue +44 -18
  92. package/dist/components/list-item/types.d.ts +15 -0
  93. package/dist/components/loading-bar/index.vue +33 -2
  94. package/dist/components/loading-bar/types.d.ts +1 -1
  95. package/dist/components/loading-dots/index.vue +3 -2
  96. package/dist/components/menu/index.d.vue.ts +5 -2
  97. package/dist/components/menu/index.vue +4 -1
  98. package/dist/components/menu/types.d.ts +5 -0
  99. package/dist/components/message/index.d.vue.ts +11 -8
  100. package/dist/components/message/index.vue +4 -12
  101. package/dist/components/message/types.d.ts +1 -12
  102. package/dist/components/message-item/index.d.vue.ts +1 -3
  103. package/dist/components/message-item/index.vue +13 -7
  104. package/dist/components/message-item/types.d.ts +11 -0
  105. package/dist/components/modal/index.d.vue.ts +3 -2
  106. package/dist/components/modal/index.vue +17 -13
  107. package/dist/components/modal/types.d.ts +3 -3
  108. package/dist/components/noise-background/index.vue +4 -3
  109. package/dist/components/note/index.d.vue.ts +1 -2
  110. package/dist/components/note/index.vue +81 -29
  111. package/dist/components/note/types.d.ts +10 -2
  112. package/dist/components/number-input/index.d.vue.ts +5 -4
  113. package/dist/components/number-input/index.vue +36 -6
  114. package/dist/components/number-input/types.d.ts +2 -0
  115. package/dist/components/overlay/index.vue +1 -1
  116. package/dist/components/overlay/types.d.ts +1 -1
  117. package/dist/components/pagination/index.vue +5 -3
  118. package/dist/components/pin-input/index.d.vue.ts +7 -2
  119. package/dist/components/pin-input/index.vue +60 -23
  120. package/dist/components/pin-input/types.d.ts +0 -4
  121. package/dist/components/placeholder/index.vue +2 -1
  122. package/dist/components/popover/index.d.vue.ts +1 -1
  123. package/dist/components/popover/index.vue +116 -78
  124. package/dist/components/popover/types.d.ts +2 -0
  125. package/dist/components/progress/index.d.vue.ts +1 -1
  126. package/dist/components/progress/index.vue +15 -2
  127. package/dist/components/project-banner/index.d.vue.ts +18 -0
  128. package/dist/components/project-banner/index.vue +59 -0
  129. package/dist/components/project-banner/types.d.ts +8 -0
  130. package/dist/components/radio/index.vue +62 -20
  131. package/dist/components/radio/types.d.ts +1 -14
  132. package/dist/components/radio-group/index.d.vue.ts +2 -4
  133. package/dist/components/radio-group/index.vue +11 -16
  134. package/dist/components/radio-group/types.d.ts +12 -0
  135. package/dist/components/resizable/types.d.ts +5 -10
  136. package/dist/components/resizable-handle/index.vue +1 -1
  137. package/dist/components/resizable-panel/index.d.vue.ts +1 -1
  138. package/dist/components/resizable-panel/index.vue +7 -2
  139. package/dist/components/resizable-panel/types.d.ts +4 -0
  140. package/dist/components/scrollable/index.d.vue.ts +29 -0
  141. package/dist/components/scrollable/index.vue +98 -83
  142. package/dist/components/scrollable/types.d.ts +19 -5
  143. package/dist/components/skeleton/index.vue +24 -1
  144. package/dist/components/slider/index.d.vue.ts +6 -6
  145. package/dist/components/slider/index.vue +86 -44
  146. package/dist/components/slider/types.d.ts +1 -1
  147. package/dist/components/snippet/index.vue +28 -2
  148. package/dist/components/spinner/index.vue +4 -2
  149. package/dist/components/stack/index.d.vue.ts +2 -2
  150. package/dist/components/stack/index.vue +35 -3
  151. package/dist/components/stack/types.d.ts +1 -1
  152. package/dist/components/status-dot/index.vue +5 -1
  153. package/dist/components/switch/index.d.vue.ts +10 -1
  154. package/dist/components/switch/index.vue +35 -44
  155. package/dist/components/switch/types.d.ts +4 -12
  156. package/dist/components/switch-item/index.d.vue.ts +14 -0
  157. package/dist/components/switch-item/index.vue +79 -0
  158. package/dist/components/switch-item/types.d.ts +9 -0
  159. package/dist/components/teleport/index.d.vue.ts +1 -1
  160. package/dist/components/teleport/index.vue +1 -1
  161. package/dist/components/teleport/types.d.ts +1 -1
  162. package/dist/components/text/index.d.vue.ts +1 -2
  163. package/dist/components/text/index.vue +36 -22
  164. package/dist/components/text/types.d.ts +1 -1
  165. package/dist/components/textarea/index.d.vue.ts +4 -4
  166. package/dist/components/textarea/index.vue +33 -4
  167. package/dist/components/textarea/types.d.ts +0 -1
  168. package/dist/components/time-picker/index.d.vue.ts +1 -2
  169. package/dist/components/time-picker/index.vue +43 -9
  170. package/dist/components/time-picker/types.d.ts +1 -2
  171. package/dist/components/toggle/index.vue +11 -10
  172. package/dist/components/toggle-button/index.d.vue.ts +22 -0
  173. package/dist/components/toggle-button/index.vue +110 -0
  174. package/dist/components/toggle-button/types.d.ts +16 -0
  175. package/dist/components/{choicebox-group → toggle-button-group}/index.d.vue.ts +5 -5
  176. package/dist/components/toggle-button-group/index.vue +68 -0
  177. package/dist/components/toggle-button-group/types.d.ts +22 -0
  178. package/dist/components/tooltip/index.d.vue.ts +2 -0
  179. package/dist/components/tooltip/index.vue +9 -3
  180. package/dist/components/tooltip/types.d.ts +2 -0
  181. package/dist/components/virtual-list/index.d.vue.ts +25 -4
  182. package/dist/components/virtual-list/index.vue +66 -10
  183. package/dist/components/virtual-list/types.d.ts +9 -4
  184. package/dist/composables/index.d.ts +2 -2
  185. package/dist/composables/index.js +2 -2
  186. package/dist/composables/use-browser-observer.d.ts +5 -5
  187. package/dist/composables/use-browser-observer.js +23 -20
  188. package/dist/composables/use-copy-click.js +4 -0
  189. package/dist/composables/use-countdown.d.ts +2 -2
  190. package/dist/composables/use-focus-trap.d.ts +6 -2
  191. package/dist/composables/use-focus-trap.js +19 -7
  192. package/dist/composables/use-forward-ref-expose.d.ts +2 -0
  193. package/dist/composables/use-forward-ref-expose.js +41 -0
  194. package/dist/composables/use-message.d.ts +3 -6
  195. package/dist/composables/use-model-value.d.ts +9 -8
  196. package/dist/composables/use-popover-responsive.d.ts +2 -2
  197. package/dist/composables/use-popover-responsive.js +3 -3
  198. package/dist/composables/use-repeat-action.js +2 -2
  199. package/dist/composables/use-virtual-list.d.ts +21 -12
  200. package/dist/composables/use-virtual-list.js +90 -158
  201. package/dist/composables/use-window-size.d.ts +4 -0
  202. package/dist/composables/use-window-size.js +27 -0
  203. package/dist/contexts/avatar.d.ts +5 -2
  204. package/dist/contexts/carousel.d.ts +4 -4
  205. package/dist/contexts/carousel.js +1 -1
  206. package/dist/contexts/checkbox.d.ts +7 -2
  207. package/dist/contexts/choicebox.d.ts +8 -4
  208. package/dist/contexts/choicebox.js +1 -4
  209. package/dist/contexts/collapse.d.ts +5 -6
  210. package/dist/contexts/collapse.js +1 -1
  211. package/dist/contexts/config-provider.d.ts +5 -0
  212. package/dist/{composables/use-config-provider-context.js → contexts/config-provider.js} +8 -5
  213. package/dist/contexts/radio.d.ts +8 -2
  214. package/dist/contexts/switch.d.ts +8 -4
  215. package/dist/contexts/switch.js +1 -2
  216. package/dist/contexts/toggle-button.d.ts +7 -0
  217. package/dist/contexts/toggle-button.js +2 -0
  218. package/dist/styles/source.css +14 -2
  219. package/dist/styles/styles.css +2 -2
  220. package/dist/styles/tw.css +14 -2
  221. package/dist/types/shared/props.d.ts +1 -3
  222. package/dist/types/shared/utils.d.ts +0 -3
  223. package/dist/utils/context.d.ts +1 -0
  224. package/dist/utils/get.d.ts +1 -0
  225. package/dist/utils/get.js +14 -0
  226. package/dist/utils/responsive.js +2 -1
  227. package/dist/utils/throttle.js +9 -7
  228. package/dist/utils/uid.d.ts +1 -1
  229. package/dist/utils/uid.js +2 -2
  230. package/package.json +23 -21
  231. package/volar.d.ts +7 -3
  232. package/dist/components/badge/cn.d.ts +0 -90
  233. package/dist/components/badge/cn.js +0 -44
  234. package/dist/components/button/cn.d.ts +0 -121
  235. package/dist/components/button/cn.js +0 -55
  236. package/dist/components/carousel-group/index.d.vue.ts +0 -35
  237. package/dist/components/carousel-group/index.vue +0 -368
  238. package/dist/components/checkbox/cn.d.ts +0 -67
  239. package/dist/components/checkbox/cn.js +0 -31
  240. package/dist/components/chip/cn.d.ts +0 -49
  241. package/dist/components/chip/cn.js +0 -26
  242. package/dist/components/choicebox-group/index.vue +0 -65
  243. package/dist/components/error/cn.d.ts +0 -22
  244. package/dist/components/error/cn.js +0 -15
  245. package/dist/components/input/cn.d.ts +0 -73
  246. package/dist/components/input/cn.js +0 -36
  247. package/dist/components/list-item/cn.d.ts +0 -22
  248. package/dist/components/list-item/cn.js +0 -15
  249. package/dist/components/loading-bar/cn.d.ts +0 -70
  250. package/dist/components/loading-bar/cn.js +0 -32
  251. package/dist/components/note/cn.d.ts +0 -121
  252. package/dist/components/note/cn.js +0 -66
  253. package/dist/components/pin-input/cn.d.ts +0 -46
  254. package/dist/components/pin-input/cn.js +0 -25
  255. package/dist/components/progress/cn.d.ts +0 -19
  256. package/dist/components/progress/cn.js +0 -14
  257. package/dist/components/radio/cn.d.ts +0 -46
  258. package/dist/components/radio/cn.js +0 -42
  259. package/dist/components/skeleton/cn.d.ts +0 -43
  260. package/dist/components/skeleton/cn.js +0 -24
  261. package/dist/components/snippet/cn.d.ts +0 -52
  262. package/dist/components/snippet/cn.js +0 -27
  263. package/dist/components/stack/cn.d.ts +0 -70
  264. package/dist/components/stack/cn.js +0 -33
  265. package/dist/components/switch/cn.d.ts +0 -16
  266. package/dist/components/switch/cn.js +0 -13
  267. package/dist/components/switch-group/index.d.vue.ts +0 -23
  268. package/dist/components/switch-group/index.vue +0 -54
  269. package/dist/components/text/cn.d.ts +0 -67
  270. package/dist/components/text/cn.js +0 -34
  271. package/dist/components/textarea/cn.d.ts +0 -58
  272. package/dist/components/textarea/cn.js +0 -30
  273. package/dist/composables/use-config-provider-context.d.ts +0 -3
  274. package/dist/composables/use-unique-id-context.d.ts +0 -2
  275. package/dist/composables/use-unique-id-context.js +0 -11
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>
@@ -6,13 +6,12 @@ type __VLS_Slots = {} & {
6
6
  tooltip?: (props: typeof __VLS_7) => any;
7
7
  };
8
8
  declare const __VLS_base: import("vue").DefineComponent<ActiveGraphProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
- "cell-click": (args_0: MouseEvent, args_1: string) => any;
9
+ select: (args_0: string, args_1: MouseEvent) => any;
10
10
  }, string, import("vue").PublicProps, Readonly<ActiveGraphProps> & Readonly<{
11
- "onCell-click"?: ((args_0: MouseEvent, args_1: string) => any) | undefined;
11
+ onSelect?: ((args_0: string, args_1: MouseEvent) => any) | undefined;
12
12
  }>, {
13
13
  data: Record<string, any>[];
14
14
  legend: boolean;
15
- graphOnly: boolean;
16
15
  tooltip: boolean;
17
16
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
17
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,6 +1,6 @@
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";
@@ -12,19 +12,21 @@ defineOptions({
12
12
  const props = defineProps({
13
13
  data: { type: Array, required: false, default: () => [] },
14
14
  legend: { type: Boolean, required: false, default: true },
15
+ colors: { type: Object, required: false },
15
16
  startDate: { type: [String, Date], required: false },
16
17
  endDate: { type: [String, Date], required: false },
17
- colors: { type: Object, required: false },
18
- graphOnly: { type: Boolean, required: false, default: false },
19
- transpose: { type: Boolean, required: false },
20
18
  tooltip: { type: Boolean, required: false, default: true },
19
+ graphOnly: { type: Boolean, required: false },
20
+ transpose: { type: Boolean, required: false },
21
21
  fieldNames: { type: Object, required: false },
22
- itemRadius: { type: [String, Number], required: false }
22
+ itemRadius: { type: [String, Number], required: false },
23
+ defaultSelect: { type: String, required: false }
23
24
  });
24
- const emits = defineEmits(["cell-click"]);
25
+ const emits = defineEmits(["select"]);
25
26
  const configProvider = useConfigProvider();
26
27
  const CELL_GAP = 3;
27
28
  const CELL_SIZE = 12;
29
+ const selectedDate = shallowRef(props.defaultSelect);
28
30
  const getDefaultStartDate = () => {
29
31
  const date = /* @__PURE__ */ new Date();
30
32
  date.setFullYear(date.getFullYear() - 1);
@@ -223,7 +225,8 @@ function onCellClick(event) {
223
225
  if (!date) {
224
226
  return;
225
227
  }
226
- emits("cell-click", event, date);
228
+ selectedDate.value = selectedDate.value === date ? "" : date;
229
+ emits("select", date, event);
227
230
  }
228
231
  let tbodyRect;
229
232
  const tbodyRef = shallowRef();
@@ -315,9 +318,13 @@ onBeforeUnmount(() => {
315
318
  <td
316
319
  v-for="col of row"
317
320
  :key="col.date"
318
- 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"
319
322
  :data-date="col.date"
320
- :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
+ }"
321
328
  :style="`background: ${col.color}`"
322
329
  />
323
330
  </tr>
@@ -326,22 +333,22 @@ onBeforeUnmount(() => {
326
333
  <tr class="pxd-active-graph--placeholder h-0.5 pointer-events-none" />
327
334
  <tr class="pxd-active-graph--legend pointer-events-none">
328
335
  <td class="h-3 relative text-foreground-secondary">
329
- <span class="right-1 absolute top-1/2 -translate-y-1/2">{{
330
- configProvider.locale.compare.less
331
- }}</span>
336
+ <span class="right-1 absolute top-1/2 -translate-y-1/2">
337
+ {{ configProvider.locale.compare.less }}
338
+ </span>
332
339
  </td>
333
340
 
334
341
  <td
335
342
  v-for="color in computedColors"
336
343
  :key="color"
337
- 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"
338
345
  :style="`background-color: ${color}`"
339
346
  />
340
347
 
341
348
  <td class="h-3 w-3 relative text-foreground-secondary">
342
- <span class="absolute top-1/2 left-px -translate-y-1/2">{{
343
- configProvider.locale.compare.more
344
- }}</span>
349
+ <span class="absolute top-1/2 left-px -translate-y-1/2">
350
+ {{ configProvider.locale.compare.more }}
351
+ </span>
345
352
  </td>
346
353
  </tr>
347
354
  </template>
@@ -6,18 +6,19 @@ interface FieldNames {
6
6
  export interface ActiveGraphProps {
7
7
  data?: Record<string, any>[]
8
8
  legend?: boolean
9
+ colors?: Record<string, string>
9
10
  startDate?: string | Date
10
11
  endDate?: string | Date
11
- colors?: Record<string, string>
12
+ tooltip?: boolean
12
13
  graphOnly?: boolean
13
14
  transpose?: boolean
14
- tooltip?: boolean
15
15
  fieldNames?: FieldNames
16
16
  itemRadius?: string | number
17
+ defaultSelect?: string
17
18
  }
18
19
 
19
20
  export interface ActiveGraphEmits {
20
- 'cell-click': [MouseEvent, string]
21
+ select: [string, MouseEvent]
21
22
  }
22
23
 
23
24
  export interface ActiveGraphCellData {
@@ -16,8 +16,10 @@ const props = defineProps({
16
16
  const emits = defineEmits(["load", "error", "loadstart"]);
17
17
  const loadingStatus = shallowRef("idle");
18
18
  const avatarGroupContext = useAvatarGroupContext();
19
- const computedSize = computed(() => getCssUnitValue(props.size || avatarGroupContext?.size, "32px"));
20
- const hideAvatar = computed(
19
+ const computedSize = computed(
20
+ () => getCssUnitValue(props.size || avatarGroupContext?.props.size, "32px")
21
+ );
22
+ const isHideAvatar = computed(
21
23
  () => !props.src || props.placeholder || loadingStatus.value === "error"
22
24
  );
23
25
  function onLoadError(event) {
@@ -42,13 +44,20 @@ defineExpose({
42
44
 
43
45
  <template>
44
46
  <div
45
- 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]"
46
48
  :style="{ '--avatar-size': computedSize }"
49
+ :data-placeholder="placeholder"
47
50
  v-bind="$attrs"
48
51
  >
49
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>
50
59
  <img
51
- v-if="!hideAvatar"
60
+ v-else
52
61
  :src="src"
53
62
  :alt="alt"
54
63
  loading="lazy"
@@ -56,7 +65,7 @@ defineExpose({
56
65
  aria-hidden="true"
57
66
  fetchpriority="low"
58
67
  crossorigin="anonymous"
59
- class="relative block size-full overflow-hidden rounded-inherit"
68
+ class="relative block size-full overflow-hidden rounded-inherit bg-gray-100"
60
69
  @load="onLoadSuccess"
61
70
  @loadstart="onLoadStart"
62
71
  @abort="onLoadError"
@@ -80,17 +89,15 @@ defineExpose({
80
89
 
81
90
  <style lang="postcss">
82
91
  .pxd-avatar {
83
- &::before,
84
- &::after {
92
+ &::after,
93
+ &[data-placeholder='true']::before {
85
94
  content: '';
86
- width: 100%;
87
- height: 100%;
88
95
  position: absolute;
89
96
  inset: 0;
90
97
  border-radius: inherit;
91
98
  }
92
99
 
93
- &::before {
100
+ &[data-placeholder='true']::before {
94
101
  background-image: linear-gradient(
95
102
  270deg,
96
103
  var(--color-gray-alpha-100),
@@ -99,6 +106,8 @@ defineExpose({
99
106
  var(--color-gray-alpha-100)
100
107
  );
101
108
  background-size: 400% 100%;
109
+ animation-name: placeholder;
110
+ animation-iteration-count: infinite;
102
111
  }
103
112
 
104
113
  &::after {
@@ -13,15 +13,3 @@ export interface AvatarEmits {
13
13
  error: [Event]
14
14
  loadstart: [Event]
15
15
  }
16
-
17
- interface AvatarOptions {
18
- src?: string
19
- alt?: string
20
- loading?: boolean
21
- }
22
-
23
- export interface AvatarGroupProps {
24
- max?: number
25
- size?: number | string
26
- options?: AvatarOptions[]
27
- }
@@ -1,8 +1,8 @@
1
- import type { AvatarGroupProps } from '../avatar/types';
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("../avatar/types").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"
@@ -0,0 +1,11 @@
1
+ interface AvatarOptions {
2
+ src?: string
3
+ alt?: string
4
+ loading?: boolean
5
+ }
6
+
7
+ export interface AvatarGroupProps {
8
+ max?: number
9
+ size?: number | string
10
+ options?: AvatarOptions[]
11
+ }
@@ -4,8 +4,8 @@ type __VLS_Slots = {} & {
4
4
  default?: (props: typeof __VLS_8) => any;
5
5
  };
6
6
  declare const __VLS_base: import("vue").DefineComponent<BadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BadgeProps> & Readonly<{}>, {
7
- variant: import("./cn").BadgeVariant;
8
7
  as: import("../../types/shared").ComponentAs;
8
+ variant: import("./types").BadgeVariant;
9
9
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
10
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
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;
@@ -1,5 +1,28 @@
1
1
  import type { ComponentAs, ComponentSize } from '../../types/shared'
2
- import type { BadgeVariant } from './cn'
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'
3
26
 
4
27
  export interface BadgeProps {
5
28
  as?: ComponentAs
@@ -2,7 +2,8 @@
2
2
  import { computed } from "vue";
3
3
  import { getResponsiveValue } from "../../utils/responsive";
4
4
  defineOptions({
5
- name: "PBook"
5
+ name: "PBook",
6
+ inheritAttrs: false
6
7
  });
7
8
  const props = defineProps({
8
9
  color: { type: String, required: false },
@@ -45,7 +46,7 @@ const computedClasses = computed(() => {
45
46
  </script>
46
47
 
47
48
  <template>
48
- <div class="pxd-book inline-flex w-fit">
49
+ <div class="pxd-book inline-flex w-fit" v-bind="$attrs">
49
50
  <div :class="computedClasses" :style="computedStyle">
50
51
  <div
51
52
  class="pxd-book--content translate-z-0 absolute flex size-full min-w-full flex-col overflow-hidden bg-background-200"
@@ -8,7 +8,8 @@ import { computed } from "vue";
8
8
  import { useCopyClick } from "../../composables/use-copy-click";
9
9
  import PButton from "../button/index.vue";
10
10
  defineOptions({
11
- name: "PBrowser"
11
+ name: "PBrowser",
12
+ inheritAttrs: false
12
13
  });
13
14
  defineProps({
14
15
  address: { type: String, required: false }
@@ -18,7 +19,10 @@ const renderIcon = computed(() => isCopied.value ? CheckIcon : CopyIcon);
18
19
  </script>
19
20
 
20
21
  <template>
21
- <div class="pxd-browser overflow-hidden rounded-md bg-background-200 shadow-border-small">
22
+ <div
23
+ class="pxd-browser overflow-hidden rounded-md bg-background-200 shadow-border-small"
24
+ v-bind="$attrs"
25
+ >
22
26
  <div class="py-2.5 px-5 gap-4 md:gap-6 flex justify-between bg-background-100">
23
27
  <div
24
28
  class="gap-4 min-w-0 md:first:max-w-35 md:last:max-w-35 max-md:first:flex-none flex flex-1 items-center justify-center first:justify-start last:justify-end"
@@ -9,9 +9,9 @@ type __VLS_Slots = {} & {
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ButtonProps> & Readonly<{}>, {
11
11
  icon: boolean;
12
+ as: import("../../types/shared").ComponentAs;
12
13
  variant: import("./types").ButtonVariant;
13
14
  align: "left" | "center" | "right";
14
- as: import("../../types/shared").ComponentAs;
15
15
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
16
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
17
  declare const _default: typeof __VLS_export;
@@ -1,15 +1,15 @@
1
1
  <script setup>
2
2
  import { computed } from "vue";
3
- import { useConfigProvider } from "../../composables/use-config-provider-context";
3
+ import { useConfigProvider } from "../../contexts/config-provider";
4
4
  import { isTruthyProp } from "../../utils/format";
5
5
  import PSpinner from "../spinner/index.vue";
6
- import { buttonVariants } from "./cn";
6
+ import { tv } from "tailwind-variants";
7
7
  defineOptions({
8
8
  name: "PButton",
9
9
  inheritAttrs: false
10
10
  });
11
11
  const props = defineProps({
12
- as: { type: null, required: false, default: "button" },
12
+ as: { type: [String, Object], required: false, default: "button" },
13
13
  variant: { type: String, required: false, default: "default" },
14
14
  size: { type: String, required: false },
15
15
  shape: { type: String, required: false },
@@ -19,8 +19,62 @@ const props = defineProps({
19
19
  disabled: { type: Boolean, required: false },
20
20
  fullWidth: { type: Boolean, required: false }
21
21
  });
22
+ const buttonVariants = tv({
23
+ base: "pxd-button inline-flex shrink-0 cursor-pointer touch-manipulation items-center font-inherit select-none motion-safe:transition-all",
24
+ variants: {
25
+ size: {
26
+ xs: "h-6 px-1 text-sm rounded-sm",
27
+ sm: "h-7.5 px-1.5 text-sm rounded-md",
28
+ md: "h-9 px-2.5 text-sm rounded-md",
29
+ lg: "h-10 px-3.5 text-base rounded-lg"
30
+ },
31
+ shape: {
32
+ square: "rounded-none",
33
+ rounded: "rounded-full",
34
+ default: ""
35
+ },
36
+ align: {
37
+ left: "justify-start",
38
+ center: "justify-center",
39
+ right: "justify-end"
40
+ },
41
+ variant: {
42
+ simple: "",
43
+ icon: "p-0! aspect-square",
44
+ link: "font-medium hover:underline hover:opacity-70 active:opacity-90 motion-safe:transition-opacity",
45
+ default: "border-input bg-background-100 text-foreground hover:bg-background-hover active:bg-background-active",
46
+ ghost: "border-transparent bg-transparent text-foreground hover:bg-background-hover active:bg-background-active",
47
+ primary: "border-transparent bg-primary text-gray-100 hover:bg-primary-hover active:bg-primary-active",
48
+ error: "text-white border-transparent bg-red-800 hover:bg-red-700 active:bg-red-900",
49
+ warning: "text-black border-transparent bg-amber-800 hover:bg-amber-700 active:bg-amber-900",
50
+ success: "text-white border-transparent bg-green-800 hover:bg-green-700 active:bg-green-900"
51
+ },
52
+ disabled: {
53
+ true: "is-disabled hover:bg-gray-100 active:bg-gray-100 disabled:cursor-not-allowed disabled:border-gray-300 disabled:bg-gray-100 disabled:text-gray-700"
54
+ },
55
+ fullWidth: {
56
+ true: "w-full"
57
+ },
58
+ icon: {
59
+ true: "p-0! aspect-square"
60
+ },
61
+ loading: {
62
+ true: ""
63
+ }
64
+ },
65
+ compoundVariants: [
66
+ {
67
+ variant: ["default", "ghost", "primary", "error", "warning", "success"],
68
+ class: "border self-focus-ring outline-none"
69
+ },
70
+ {
71
+ icon: true,
72
+ class: "p-0! aspect-square"
73
+ }
74
+ ]
75
+ });
22
76
  const configProvider = useConfigProvider();
23
- const computedDisabled = computed(
77
+ const isDisabled = computed(
24
78
  () => isTruthyProp(props.disabled) || isTruthyProp(props.loading)
25
79
  );
26
80
  const computedClasses = computed(() => {
@@ -32,19 +86,13 @@ const computedClasses = computed(() => {
32
86
  align,
33
87
  variant,
34
88
  fullWidth,
35
- disabled: computedDisabled.value
89
+ disabled: isDisabled.value
36
90
  });
37
91
  });
38
92
  </script>
39
93
 
40
94
  <template>
41
- <Component
42
- :is="as"
43
- role="button"
44
- :class="computedClasses"
45
- :disabled="computedDisabled"
46
- v-bind="$attrs"
47
- >
95
+ <Component :is="as" role="button" :class="computedClasses" :disabled="isDisabled" v-bind="$attrs">
48
96
  <PSpinner v-if="loading" />
49
97
 
50
98
  <slot name="prefix" />
@@ -1,8 +1,30 @@
1
- declare var __VLS_1: {};
1
+ import type { CarouselProps } from './types';
2
+ declare var __VLS_1: {}, __VLS_3: {
3
+ current: number;
4
+ total: number;
5
+ };
2
6
  type __VLS_Slots = {} & {
3
7
  default?: (props: typeof __VLS_1) => any;
8
+ } & {
9
+ indicator?: (props: typeof __VLS_3) => any;
4
10
  };
5
- declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
11
+ declare const __VLS_base: import("vue").DefineComponent<CarouselProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ change: (index: number) => any;
13
+ }, string, import("vue").PublicProps, Readonly<CarouselProps> & Readonly<{
14
+ onChange?: ((index: number) => any) | undefined;
15
+ }>, {
16
+ index: number;
17
+ height: number | string;
18
+ loop: boolean;
19
+ arrow: boolean;
20
+ autoplay: boolean;
21
+ interval: number;
22
+ indicator: boolean;
23
+ direction: import("../../types/shared").ComponentDirection;
24
+ indicatorType: "dot" | "line";
25
+ indicatorPosition: import("../../types/shared").BasePosition;
26
+ pauseOnHover: boolean;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
7
29
  declare const _default: typeof __VLS_export;
8
30
  export default _default;