pxd 0.0.52 → 0.0.53

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 (258) hide show
  1. package/README.md +6 -3
  2. package/dist/components/active-graph/index.d.vue.ts +0 -2
  3. package/dist/components/active-graph/index.vue +35 -37
  4. package/dist/components/avatar/index.d.vue.ts +2 -2
  5. package/dist/components/avatar/index.vue +17 -16
  6. package/dist/components/avatar-group/index.d.vue.ts +1 -1
  7. package/dist/components/avatar-group/index.vue +4 -1
  8. package/dist/components/badge/cn.d.ts +90 -0
  9. package/dist/components/badge/cn.js +44 -0
  10. package/dist/components/badge/index.d.vue.ts +5 -33
  11. package/dist/components/badge/index.vue +10 -56
  12. package/dist/components/book/index.vue +90 -17
  13. package/dist/components/browser/index.vue +21 -6
  14. package/dist/components/button/cn.d.ts +121 -0
  15. package/dist/components/button/cn.js +55 -0
  16. package/dist/components/button/index.d.vue.ts +8 -14
  17. package/dist/components/button/index.vue +22 -74
  18. package/dist/components/carousel-group/index.d.vue.ts +1 -1
  19. package/dist/components/carousel-group/index.vue +32 -28
  20. package/dist/components/checkbox/cn.d.ts +67 -0
  21. package/dist/components/checkbox/cn.js +31 -0
  22. package/dist/components/checkbox/index.vue +9 -19
  23. package/dist/components/chip/cn.d.ts +49 -0
  24. package/dist/components/chip/cn.js +26 -0
  25. package/dist/components/chip/index.vue +13 -21
  26. package/dist/components/choicebox/index.vue +1 -1
  27. package/dist/components/choicebox-group/index.vue +6 -3
  28. package/dist/components/collapse/index.vue +7 -1
  29. package/dist/components/collapse-group/index.vue +7 -7
  30. package/dist/components/command-menu/index.vue +9 -8
  31. package/dist/components/command-menu-group/index.vue +4 -1
  32. package/dist/components/config-provider/index.d.vue.ts +1 -0
  33. package/dist/components/config-provider/index.vue +2 -1
  34. package/dist/components/countdown/index.vue +2 -10
  35. package/dist/components/dash-line/index.vue +22 -16
  36. package/dist/components/description/index.vue +4 -2
  37. package/dist/components/drawer/index.vue +19 -11
  38. package/dist/components/empty-state/index.vue +3 -1
  39. package/dist/components/error/cn.d.ts +22 -0
  40. package/dist/components/error/cn.js +15 -0
  41. package/dist/components/error/index.vue +13 -14
  42. package/dist/components/fader/index.vue +30 -14
  43. package/dist/components/gauge/index.vue +6 -6
  44. package/dist/components/grid/index.vue +16 -12
  45. package/dist/components/grid-item/index.vue +4 -4
  46. package/dist/components/hold-button/index.vue +19 -13
  47. package/dist/components/input/cn.d.ts +73 -0
  48. package/dist/components/input/cn.js +36 -0
  49. package/dist/components/input/index.d.vue.ts +14 -16
  50. package/dist/components/input/index.vue +74 -101
  51. package/dist/components/intersection-observer/index.vue +7 -3
  52. package/dist/components/kbd/index.vue +2 -2
  53. package/dist/components/link-button/index.d.vue.ts +8 -8
  54. package/dist/components/link-button/index.vue +17 -25
  55. package/dist/components/list/index.d.vue.ts +0 -1
  56. package/dist/components/list/index.vue +58 -57
  57. package/dist/components/list-item/cn.d.ts +22 -0
  58. package/dist/components/list-item/cn.js +15 -0
  59. package/dist/components/list-item/index.d.vue.ts +3 -3
  60. package/dist/components/list-item/index.vue +14 -25
  61. package/dist/components/loading-bar/cn.d.ts +70 -0
  62. package/dist/components/loading-bar/cn.js +32 -0
  63. package/dist/components/loading-bar/index.d.vue.ts +2 -0
  64. package/dist/components/loading-bar/index.vue +68 -61
  65. package/dist/components/loading-dots/index.vue +12 -4
  66. package/dist/components/menu/index.d.vue.ts +2 -2
  67. package/dist/components/menu/index.vue +4 -4
  68. package/dist/components/message/index.vue +82 -48
  69. package/dist/components/message-item/index.vue +7 -2
  70. package/dist/components/modal/index.vue +20 -12
  71. package/dist/components/more-button/index.d.vue.ts +1 -3
  72. package/dist/components/more-button/index.vue +7 -17
  73. package/dist/components/note/cn.d.ts +121 -0
  74. package/dist/components/note/cn.js +66 -0
  75. package/dist/components/note/index.d.vue.ts +3 -39
  76. package/dist/components/note/index.vue +18 -37
  77. package/dist/components/number-input/index.d.vue.ts +19 -10
  78. package/dist/components/number-input/index.vue +121 -75
  79. package/dist/components/overlay/index.vue +4 -20
  80. package/dist/components/pagination/index.vue +25 -8
  81. package/dist/components/pin-input/cn.d.ts +46 -0
  82. package/dist/components/pin-input/cn.js +25 -0
  83. package/dist/components/pin-input/index.vue +11 -20
  84. package/dist/components/placeholder/index.vue +11 -4
  85. package/dist/components/popover/index.d.vue.ts +4 -3
  86. package/dist/components/popover/index.vue +107 -54
  87. package/dist/components/progress/cn.d.ts +19 -0
  88. package/dist/components/progress/cn.js +14 -0
  89. package/dist/components/progress/index.d.vue.ts +1 -1
  90. package/dist/components/progress/index.vue +21 -14
  91. package/dist/components/radio/cn.d.ts +46 -0
  92. package/dist/components/radio/cn.js +42 -0
  93. package/dist/components/radio/index.vue +11 -18
  94. package/dist/components/resizable/index.vue +8 -2
  95. package/dist/components/resizable-handle/index.vue +1 -0
  96. package/dist/components/resizable-panel/index.vue +12 -11
  97. package/dist/components/skeleton/cn.d.ts +43 -0
  98. package/dist/components/skeleton/cn.js +24 -0
  99. package/dist/components/skeleton/index.d.vue.ts +4 -3
  100. package/dist/components/skeleton/index.vue +11 -20
  101. package/dist/components/slider/index.d.vue.ts +1 -1
  102. package/dist/components/slider/index.vue +14 -12
  103. package/dist/components/snippet/cn.d.ts +52 -0
  104. package/dist/components/snippet/cn.js +27 -0
  105. package/dist/components/snippet/index.vue +21 -29
  106. package/dist/components/spinner/index.vue +3 -1
  107. package/dist/components/stack/cn.d.ts +70 -0
  108. package/dist/components/stack/cn.js +33 -0
  109. package/dist/components/stack/index.d.vue.ts +2 -2
  110. package/dist/components/stack/index.vue +16 -31
  111. package/dist/components/status-dot/index.vue +5 -1
  112. package/dist/components/switch/cn.d.ts +16 -0
  113. package/dist/components/switch/cn.js +13 -0
  114. package/dist/components/switch/index.vue +5 -11
  115. package/dist/components/switch-group/index.vue +7 -4
  116. package/dist/components/text/cn.d.ts +67 -0
  117. package/dist/components/text/cn.js +34 -0
  118. package/dist/components/text/index.d.vue.ts +1 -1
  119. package/dist/components/text/index.vue +16 -25
  120. package/dist/components/textarea/cn.d.ts +58 -0
  121. package/dist/components/textarea/cn.js +30 -0
  122. package/dist/components/textarea/index.d.vue.ts +2 -0
  123. package/dist/components/textarea/index.vue +17 -24
  124. package/dist/components/theme-switcher/index.vue +6 -3
  125. package/dist/components/time-picker/index.d.vue.ts +2 -2
  126. package/dist/components/time-picker/index.vue +45 -25
  127. package/dist/components/toggle/index.vue +10 -6
  128. package/dist/components/tooltip/index.vue +3 -3
  129. package/dist/components/virtual-list/index.vue +1 -7
  130. package/dist/composables/use-browser-observer.d.ts +1 -1
  131. package/dist/composables/use-browser-observer.js +19 -15
  132. package/dist/composables/use-config-provider-context.d.ts +1 -0
  133. package/dist/composables/use-config-provider-context.js +5 -10
  134. package/dist/composables/use-countdown.js +1 -3
  135. package/dist/composables/use-deferred-value.js +1 -5
  136. package/dist/composables/use-delay-change.js +1 -4
  137. package/dist/composables/use-delay-destroy.js +1 -5
  138. package/dist/composables/use-loading-bar.d.ts +6 -14
  139. package/dist/composables/use-loading-bar.js +3 -14
  140. package/dist/composables/use-message.d.ts +9 -3
  141. package/dist/composables/use-message.js +9 -9
  142. package/dist/composables/use-model-value.d.ts +1 -0
  143. package/dist/composables/use-model-value.js +4 -2
  144. package/dist/composables/use-outside-click.js +12 -8
  145. package/dist/composables/use-pointer-gesture.js +5 -1
  146. package/dist/composables/use-toggle-value.js +1 -4
  147. package/dist/composables/use-virtual-list.js +14 -7
  148. package/dist/contexts/avatar.js +4 -4
  149. package/dist/contexts/carousel.js +1 -4
  150. package/dist/contexts/checkbox.js +1 -4
  151. package/dist/contexts/choicebox.js +2 -8
  152. package/dist/contexts/collapse.js +1 -4
  153. package/dist/contexts/list.js +5 -8
  154. package/dist/contexts/radio.js +4 -4
  155. package/dist/contexts/resizable.js +1 -4
  156. package/dist/contexts/switch.js +2 -8
  157. package/dist/index.d.ts +1 -0
  158. package/dist/styles/source.css +106 -59
  159. package/dist/styles/styles.css +1 -1
  160. package/dist/styles/tw.css +106 -59
  161. package/dist/types/components/avatar.d.ts +2 -2
  162. package/dist/types/components/button.d.ts +11 -4
  163. package/dist/types/components/index.d.ts +12 -0
  164. package/dist/types/components/input.d.ts +4 -5
  165. package/dist/types/components/list.d.ts +1 -1
  166. package/dist/types/components/switch.d.ts +1 -1
  167. package/dist/types/shared/props.d.ts +6 -4
  168. package/dist/types/shared/utils.d.ts +3 -1
  169. package/dist/utils/context.d.ts +2 -8
  170. package/dist/utils/date.d.ts +1 -1
  171. package/dist/utils/date.js +1 -5
  172. package/dist/utils/event.js +6 -18
  173. package/dist/utils/format.d.ts +1 -1
  174. package/dist/utils/format.js +1 -1
  175. package/dist/utils/is.d.ts +0 -1
  176. package/dist/utils/is.js +3 -2
  177. package/dist/utils/responsive.js +7 -4
  178. package/dist/utils/throttle.js +4 -2
  179. package/package.json +45 -43
  180. package/dist/components/_internal/fragment-container.vue.d.ts +0 -13
  181. package/dist/components/active-graph/index.vue.d.ts +0 -51
  182. package/dist/components/avatar/index.vue.d.ts +0 -34
  183. package/dist/components/avatar-group/index.vue.d.ts +0 -8
  184. package/dist/components/backtop/index.vue.d.ts +0 -21
  185. package/dist/components/badge/index.vue.d.ts +0 -52
  186. package/dist/components/book/index.vue.d.ts +0 -28
  187. package/dist/components/browser/index.vue.d.ts +0 -16
  188. package/dist/components/button/index.vue.d.ts +0 -29
  189. package/dist/components/carousel/index.vue.d.ts +0 -13
  190. package/dist/components/carousel-group/index.vue.d.ts +0 -35
  191. package/dist/components/checkbox/index.vue.d.ts +0 -26
  192. package/dist/components/checkbox-group/index.vue.d.ts +0 -28
  193. package/dist/components/chip/index.vue.d.ts +0 -24
  194. package/dist/components/choicebox/index.vue.d.ts +0 -16
  195. package/dist/components/choicebox-group/index.vue.d.ts +0 -24
  196. package/dist/components/collapse/index.vue.d.ts +0 -22
  197. package/dist/components/collapse-group/index.vue.d.ts +0 -20
  198. package/dist/components/command-menu/index.vue.d.ts +0 -42
  199. package/dist/components/command-menu-group/index.vue.d.ts +0 -17
  200. package/dist/components/command-menu-item/index.vue.d.ts +0 -13
  201. package/dist/components/config-provider/index.vue.d.ts +0 -22
  202. package/dist/components/countdown/index.vue.d.ts +0 -51
  203. package/dist/components/dash-line/index.vue.d.ts +0 -13
  204. package/dist/components/description/index.vue.d.ts +0 -20
  205. package/dist/components/drawer/index.vue.d.ts +0 -60
  206. package/dist/components/empty-state/index.vue.d.ts +0 -23
  207. package/dist/components/error/index.vue.d.ts +0 -22
  208. package/dist/components/fader/index.vue.d.ts +0 -12
  209. package/dist/components/gauge/index.vue.d.ts +0 -14
  210. package/dist/components/grid/index.vue.d.ts +0 -19
  211. package/dist/components/grid-item/index.vue.d.ts +0 -18
  212. package/dist/components/hold-button/index.vue.d.ts +0 -42
  213. package/dist/components/input/index.vue.d.ts +0 -55
  214. package/dist/components/intersection-observer/index.vue.d.ts +0 -39
  215. package/dist/components/kbd/index.vue.d.ts +0 -24
  216. package/dist/components/label/index.vue.d.ts +0 -13
  217. package/dist/components/link-button/index.vue.d.ts +0 -33
  218. package/dist/components/list/index.vue.d.ts +0 -44
  219. package/dist/components/list-item/index.vue.d.ts +0 -29
  220. package/dist/components/loading-bar/index.vue.d.ts +0 -15
  221. package/dist/components/loading-dots/index.vue.d.ts +0 -15
  222. package/dist/components/material/index.vue.d.ts +0 -18
  223. package/dist/components/menu/index.vue.d.ts +0 -33
  224. package/dist/components/message/index.vue.d.ts +0 -176
  225. package/dist/components/message-item/index.vue.d.ts +0 -15
  226. package/dist/components/modal/index.vue.d.ts +0 -58
  227. package/dist/components/more-button/index.vue.d.ts +0 -20
  228. package/dist/components/noise-background/index.vue.d.ts +0 -19
  229. package/dist/components/note/index.vue.d.ts +0 -64
  230. package/dist/components/number-input/index.vue.d.ts +0 -39
  231. package/dist/components/overlay/index.vue.d.ts +0 -35
  232. package/dist/components/pagination/index.vue.d.ts +0 -21
  233. package/dist/components/pin-input/index.vue.d.ts +0 -28
  234. package/dist/components/placeholder/index.vue.d.ts +0 -18
  235. package/dist/components/popover/index.vue.d.ts +0 -73
  236. package/dist/components/progress/index.vue.d.ts +0 -34
  237. package/dist/components/radio/index.vue.d.ts +0 -20
  238. package/dist/components/radio-group/index.vue.d.ts +0 -22
  239. package/dist/components/resizable/index.vue.d.ts +0 -19
  240. package/dist/components/resizable-handle/index.vue.d.ts +0 -3
  241. package/dist/components/resizable-panel/index.vue.d.ts +0 -20
  242. package/dist/components/scrollable/index.vue.d.ts +0 -0
  243. package/dist/components/skeleton/index.vue.d.ts +0 -26
  244. package/dist/components/slider/index.vue.d.ts +0 -26
  245. package/dist/components/snippet/index.vue.d.ts +0 -18
  246. package/dist/components/spinner/index.vue.d.ts +0 -3
  247. package/dist/components/stack/index.vue.d.ts +0 -30
  248. package/dist/components/status-dot/index.vue.d.ts +0 -11
  249. package/dist/components/switch/index.vue.d.ts +0 -20
  250. package/dist/components/switch-group/index.vue.d.ts +0 -23
  251. package/dist/components/teleport/index.vue.d.ts +0 -21
  252. package/dist/components/text/index.vue.d.ts +0 -26
  253. package/dist/components/textarea/index.vue.d.ts +0 -28
  254. package/dist/components/theme-switcher/index.vue.d.ts +0 -8
  255. package/dist/components/time-picker/index.vue.d.ts +0 -35
  256. package/dist/components/toggle/index.vue.d.ts +0 -41
  257. package/dist/components/tooltip/index.vue.d.ts +0 -32
  258. package/dist/components/virtual-list/index.vue.d.ts +0 -24
@@ -36,9 +36,16 @@ const computedStyle = computed(() => {
36
36
  }
37
37
 
38
38
  --placeholder-deg: -45deg;
39
- background:
40
- linear-gradient(var(--placeholder-deg),var(--placeholder-color) 12.5%,#0000 12.5%,#0000 50%,var(--placeholder-color) 50%,var(--placeholder-color) 62.5%,#0000 62.5%,#0000 100%)
41
- 0 0 / var(--placeholder-gap, 12px) var(--placeholder-gap, 12px)
42
- padding-box fixed;
39
+ background: linear-gradient(
40
+ var(--placeholder-deg),
41
+ var(--placeholder-color) 12.5%,
42
+ #0000 12.5%,
43
+ #0000 50%,
44
+ var(--placeholder-color) 50%,
45
+ var(--placeholder-color) 62.5%,
46
+ #0000 62.5%,
47
+ #0000 100%
48
+ )
49
+ 0 0 / var(--placeholder-gap, 12px) var(--placeholder-gap, 12px) padding-box fixed;
43
50
  }
44
51
  </style>
@@ -11,16 +11,16 @@ interface Props {
11
11
  position?: ComponentPosition;
12
12
  showDelay?: number;
13
13
  hideDelay?: number;
14
- enterable?: boolean;
15
14
  showArrow?: boolean;
16
15
  arrowColor?: string;
17
- toggleClick?: boolean;
16
+ interactive?: boolean;
18
17
  autoPosition?: boolean;
19
18
  wrapperClass?: ComponentClass;
20
19
  contentClass?: ComponentClass;
21
20
  contentStyle?: CSSProperties | string;
22
21
  unsetPosition?: boolean;
23
22
  transitionType?: 'fade' | 'fade-scale' | 'fade-slide';
23
+ toggleOnTrigger?: boolean;
24
24
  closeOnInvisible?: boolean;
25
25
  closeOnPressEscape?: boolean;
26
26
  lockScrollOnVisible?: boolean;
@@ -57,10 +57,11 @@ declare const __VLS_base: import("vue").DefineComponent<Props, {
57
57
  showDelay: number;
58
58
  hideDelay: number;
59
59
  arrowColor: string;
60
- toggleClick: boolean;
60
+ interactive: boolean;
61
61
  autoPosition: boolean;
62
62
  unsetPosition: boolean;
63
63
  transitionType: "fade" | "fade-scale" | "fade-slide";
64
+ toggleOnTrigger: boolean;
64
65
  closeOnInvisible: boolean;
65
66
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
66
67
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -8,6 +8,7 @@ import { useOutsideClick } from "../../composables/use-outside-click";
8
8
  import { debounce } from "../../utils/debounce";
9
9
  import { cachedOff, cachedOn, sleep } from "../../utils/event";
10
10
  import { getCssUnitValue, toArray } from "../../utils/format";
11
+ import { useConfigProvider } from "../../composables/use-config-provider-context";
11
12
  import PTeleport from "../teleport/index.vue";
12
13
  defineOptions({
13
14
  name: "PPopover",
@@ -21,18 +22,18 @@ const props = defineProps({
21
22
  disabled: { type: Boolean, required: false },
22
23
  maxWidth: { type: [Number, String], required: false },
23
24
  position: { type: null, required: false, default: "bottom" },
24
- showDelay: { type: Number, required: false, default: 300 },
25
- hideDelay: { type: Number, required: false, default: 300 },
26
- enterable: { type: Boolean, required: false },
25
+ showDelay: { type: Number, required: false, default: 0 },
26
+ hideDelay: { type: Number, required: false, default: 0 },
27
27
  showArrow: { type: Boolean, required: false },
28
28
  arrowColor: { type: String, required: false, default: "hsl(var(--primary))" },
29
- toggleClick: { type: Boolean, required: false, default: true },
29
+ interactive: { type: Boolean, required: false, default: true },
30
30
  autoPosition: { type: Boolean, required: false, default: true },
31
31
  wrapperClass: { type: [String, Array, Object], required: false },
32
32
  contentClass: { type: [String, Array, Object], required: false },
33
33
  contentStyle: { type: [Object, String], required: false },
34
34
  unsetPosition: { type: Boolean, required: false, default: false },
35
35
  transitionType: { type: String, required: false, default: "fade-scale" },
36
+ toggleOnTrigger: { type: Boolean, required: false, default: true },
36
37
  closeOnInvisible: { type: Boolean, required: false, default: true },
37
38
  closeOnPressEscape: { type: Boolean, required: false },
38
39
  lockScrollOnVisible: { type: Boolean, required: false }
@@ -48,13 +49,11 @@ const localPosition = shallowRef(props.position);
48
49
  const triggerMethods = computed(() => toArray(props.trigger));
49
50
  const wrapperStyle = computed(() => ({
50
51
  "z-index": props.zIndex,
51
- "--popover-bg": props.arrowColor,
52
+ "--popover-arrow-bg": props.arrowColor,
52
53
  "--popover-max-width": getCssUnitValue(props.maxWidth)
53
54
  }));
54
- const {
55
- lockScroll,
56
- unlockScroll
57
- } = useLockScroll();
55
+ const configProvider = useConfigProvider();
56
+ const { lockScroll, unlockScroll } = useLockScroll();
58
57
  const {
59
58
  render: isRender,
60
59
  visible: isVisible,
@@ -88,13 +87,17 @@ useOutsideClick(wrapperRef, {
88
87
  const el = ev.target;
89
88
  return !(triggerRef.value?.contains(el) || wrapperRef.value?.contains(el));
90
89
  },
91
- onTrigger: debounce((ev) => {
92
- emits("outside-click", ev);
93
- if (triggerMethods.value.includes("manual")) {
94
- return;
95
- }
96
- handlePopoverHide();
97
- }, 500, { edges: ["leading"] })
90
+ onTrigger: debounce(
91
+ (ev) => {
92
+ emits("outside-click", ev);
93
+ if (triggerMethods.value.includes("manual")) {
94
+ return;
95
+ }
96
+ handlePopoverHide();
97
+ },
98
+ 500,
99
+ { edges: ["leading"] }
100
+ )
98
101
  });
99
102
  useIntersectionObserver(triggerRef, ([entry]) => {
100
103
  if (props.closeOnInvisible && isVisible.value && entry.intersectionRatio === 0) {
@@ -158,10 +161,13 @@ async function handlePopoverHide(immediate = false) {
158
161
  clearTimeout(showPopoverTimer);
159
162
  showPopoverTimer = null;
160
163
  }
161
- hidePopoverTimer = setTimeout(() => {
162
- hidePopoverTimer = null;
163
- resolve();
164
- }, immediate ? 0 : props.hideDelay);
164
+ hidePopoverTimer = setTimeout(
165
+ () => {
166
+ hidePopoverTimer = null;
167
+ resolve();
168
+ },
169
+ immediate ? 0 : props.hideDelay
170
+ );
165
171
  });
166
172
  await hidePopover();
167
173
  if (props.closeOnPressEscape) {
@@ -186,7 +192,7 @@ async function onTriggerClick(ev) {
186
192
  if (!triggerMethods.value.includes("click")) {
187
193
  return;
188
194
  }
189
- if (isVisible.value && props.toggleClick) {
195
+ if (isVisible.value && props.toggleOnTrigger) {
190
196
  handlePopoverHide();
191
197
  return;
192
198
  }
@@ -234,7 +240,7 @@ function onContentPointerEnter() {
234
240
  if (props.disabled) {
235
241
  return;
236
242
  }
237
- if (!props.enterable || !isVisible.value) {
243
+ if (!props.interactive || !isVisible.value) {
238
244
  return;
239
245
  }
240
246
  handlePopoverShow();
@@ -243,7 +249,7 @@ function onContentPointerLeave() {
243
249
  if (props.disabled) {
244
250
  return;
245
251
  }
246
- if (props.enterable && !triggerMethods.value.includes("hover")) {
252
+ if (props.interactive && !triggerMethods.value.includes("hover")) {
247
253
  return;
248
254
  }
249
255
  handlePopoverHide();
@@ -286,15 +292,16 @@ defineExpose({
286
292
  :class="wrapperClass"
287
293
  :style="wrapperStyle"
288
294
  :data-visible="isVisible"
289
- :data-enterable="enterable"
290
- class="pxd-popover--wrapper sm:max-w-(--popover-max-width) absolute isolate z-10 flex max-w-full outline-none data-[enterable=false]:pointer-events-none motion-reduce:data-[visible=false]:hidden"
295
+ :data-interactive="interactive"
296
+ class="pxd-popover--wrapper sm:max-w-(--popover-max-width) absolute isolate z-10 flex max-w-full outline-none data-[interactive=false]:pointer-events-none data-[visible=false]:pointer-events-none motion-reduce:data-[visible=false]:hidden"
291
297
  @pointerenter="onContentPointerEnter"
292
298
  @pointerleave="onContentPointerLeave"
293
299
  >
294
300
  <div
295
- class="pxd-popover--container pointer-events-auto relative z-1 w-inherit"
301
+ class="pxd-popover--container pointer-events-auto relative z-1 w-inherit transform-gpu default-animation-duration default-animation-timing-function"
296
302
  :data-position="localPosition"
297
303
  :data-transition-type="transitionType"
304
+ :data-show-transition="configProvider.popoverShowTransition"
298
305
  >
299
306
  <i v-if="showArrow" ref="arrayRef" class="pxd-popover--arrow absolute z-1 border-solid" />
300
307
  <div class="pxd-popover--content" :class="contentClass" :style="contentStyle">
@@ -308,55 +315,101 @@ defineExpose({
308
315
 
309
316
  <style lang="postcss">
310
317
  @keyframes popover-fade-show {
311
- 0% { opacity: 0; pointer-events: none; }
312
- 100% { opacity: 1 }
318
+ 0% {
319
+ opacity: 0;
320
+ pointer-events: none;
321
+ }
322
+ 100% {
323
+ opacity: 1;
324
+ }
313
325
  }
314
326
  @keyframes popover-fade-hide {
315
- 0% { opacity: 1 }
316
- 100% { opacity: 0; pointer-events: none; }
327
+ 0% {
328
+ opacity: 1;
329
+ }
330
+ 100% {
331
+ opacity: 0;
332
+ pointer-events: none;
333
+ }
317
334
  }
318
335
  @keyframes popover-fade-scale-show {
319
- 0% { transform: scale(0.95); opacity: 0; pointer-events: none; }
320
- 100% { transform: scale(1); opacity: 1 }
336
+ 0% {
337
+ transform: scale(0.95);
338
+ opacity: 0;
339
+ pointer-events: none;
340
+ }
341
+ 100% {
342
+ transform: scale(1);
343
+ opacity: 1;
344
+ }
321
345
  }
322
346
  @keyframes popover-fade-scale-hide {
323
- 0% { transform: scale(1); opacity: 1 }
324
- 100% { transform: scale(0.95); opacity: 0; pointer-events: none; }
347
+ 0% {
348
+ transform: scale(1);
349
+ opacity: 1;
350
+ }
351
+ 100% {
352
+ transform: scale(0.95);
353
+ opacity: 0;
354
+ pointer-events: none;
355
+ }
325
356
  }
326
357
  @keyframes popover-fade-slide-show {
327
- 0% { transform: translateY(100%); opacity: 0; pointer-events: none; }
328
- 100% { transform: translateY(0); opacity: 1 }
358
+ 0% {
359
+ transform: translateY(100%);
360
+ opacity: 0;
361
+ pointer-events: none;
362
+ }
363
+ 100% {
364
+ transform: translateY(0);
365
+ opacity: 1;
366
+ }
329
367
  }
330
368
  @keyframes popover-fade-slide-hide {
331
- 0% { transform: translateY(0); opacity: 1 }
332
- 100% { transform: translateY(100%); opacity: 0; pointer-events: none; }
369
+ 0% {
370
+ transform: translateY(0);
371
+ opacity: 1;
372
+ }
373
+ 100% {
374
+ transform: translateY(100%);
375
+ opacity: 0;
376
+ pointer-events: none;
377
+ }
333
378
  }
334
379
 
335
380
  .pxd-popover--container {
336
- will-change: transform, opacity;
337
- animation: popover-fade-show var(--default-transition-duration) var(--default-transition-timing-function) forwards;
381
+ animation-name: popover-fade-show;
382
+ animation-fill-mode: forwards;
383
+
384
+ &:hover {
385
+ will-change: transform, animation;
386
+ }
387
+
388
+ [data-visible='true'] &[data-show-transition='false'] {
389
+ animation-name: none !important;
390
+ }
338
391
 
339
- [data-visible="true"] &[data-transition-type="fade"] {
392
+ [data-visible='true'] &[data-transition-type='fade'] {
340
393
  animation-name: popover-fade-show;
341
394
  }
342
395
 
343
- [data-visible="false"] &[data-transition-type="fade"] {
396
+ [data-visible='false'] &[data-transition-type='fade'] {
344
397
  animation-name: popover-fade-hide;
345
398
  }
346
399
 
347
- [data-visible="true"] &[data-transition-type="fade-scale"] {
400
+ [data-visible='true'] &[data-transition-type='fade-scale'] {
348
401
  animation-name: popover-fade-scale-show;
349
402
  }
350
403
 
351
- [data-visible="false"] &[data-transition-type="fade-scale"] {
404
+ [data-visible='false'] &[data-transition-type='fade-scale'] {
352
405
  animation-name: popover-fade-scale-hide;
353
406
  }
354
407
 
355
- [data-visible="true"] &[data-transition-type="fade-slide"] {
408
+ [data-visible='true'] &[data-transition-type='fade-slide'] {
356
409
  animation-name: popover-fade-slide-show;
357
410
  }
358
411
 
359
- [data-visible="false"] &[data-transition-type="fade-slide"] {
412
+ [data-visible='false'] &[data-transition-type='fade-slide'] {
360
413
  animation-name: popover-fade-slide-hide;
361
414
  }
362
415
 
@@ -381,7 +434,7 @@ defineExpose({
381
434
  }
382
435
 
383
436
  &[data-position='left'] {
384
- transform-origin: right center ;
437
+ transform-origin: right center;
385
438
  }
386
439
  &[data-position='left-start'] {
387
440
  transform-origin: right top;
@@ -400,12 +453,12 @@ defineExpose({
400
453
  transform-origin: left bottom;
401
454
  }
402
455
 
403
- &[data-position="top"] .pxd-popover--arrow,
404
- &[data-position="top-start"] .pxd-popover--arrow,
405
- &[data-position="top-end"] .pxd-popover--arrow {
456
+ &[data-position='top'] .pxd-popover--arrow,
457
+ &[data-position='top-start'] .pxd-popover--arrow,
458
+ &[data-position='top-end'] .pxd-popover--arrow {
406
459
  bottom: -5px;
407
460
  border-width: 6px 6px 0;
408
- border-color: var(--popover-bg) transparent transparent;
461
+ border-color: var(--popover-arrow-bg) transparent transparent;
409
462
  }
410
463
 
411
464
  &[data-position='bottom'] .pxd-popover--arrow,
@@ -413,7 +466,7 @@ defineExpose({
413
466
  &[data-position='bottom-end'] .pxd-popover--arrow {
414
467
  top: -5px;
415
468
  border-width: 0 6px 6px;
416
- border-color: transparent transparent var(--popover-bg);
469
+ border-color: transparent transparent var(--popover-arrow-bg);
417
470
  }
418
471
 
419
472
  &[data-position='left'] .pxd-popover--arrow,
@@ -421,7 +474,7 @@ defineExpose({
421
474
  &[data-position='left-end'] .pxd-popover--arrow {
422
475
  right: -5px;
423
476
  border-width: 6px 0 6px 6px;
424
- border-color: transparent transparent transparent var(--popover-bg);
477
+ border-color: transparent transparent transparent var(--popover-arrow-bg);
425
478
  }
426
479
 
427
480
  &[data-position='right'] .pxd-popover--arrow,
@@ -429,7 +482,7 @@ defineExpose({
429
482
  &[data-position='right-end'] .pxd-popover--arrow {
430
483
  left: -5px;
431
484
  border-width: 6px 6px 6px 0;
432
- border-color: transparent var(--popover-bg) transparent transparent;
485
+ border-color: transparent var(--popover-arrow-bg) transparent transparent;
433
486
  }
434
487
  }
435
488
  </style>
@@ -0,0 +1,19 @@
1
+ export declare const progressVariant: import("tailwind-variants").TVReturnType<{
2
+ size: {
3
+ sm: string;
4
+ md: string;
5
+ lg: string;
6
+ };
7
+ }, undefined, "pxd-progress-bar flex-1 shrink-0 overflow-hidden rounded-full bg-gray-200", {
8
+ size: {
9
+ sm: string;
10
+ md: string;
11
+ lg: string;
12
+ };
13
+ }, undefined, import("tailwind-variants").TVReturnType<{
14
+ size: {
15
+ sm: string;
16
+ md: string;
17
+ lg: string;
18
+ };
19
+ }, undefined, "pxd-progress-bar flex-1 shrink-0 overflow-hidden rounded-full bg-gray-200", unknown, unknown, undefined>>;
@@ -0,0 +1,14 @@
1
+ import { tv } from "tailwind-variants";
2
+ export const progressVariant = tv({
3
+ base: "pxd-progress-bar flex-1 shrink-0 overflow-hidden rounded-full bg-gray-200",
4
+ variants: {
5
+ size: {
6
+ sm: "h-2",
7
+ md: "h-2.5",
8
+ lg: "h-3.5"
9
+ }
10
+ },
11
+ defaultVariants: {
12
+ size: "md"
13
+ }
14
+ });
@@ -20,8 +20,8 @@ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, i
20
20
  "onUpdate:modelValue"?: ((args_0: number) => any) | undefined;
21
21
  }>, {
22
22
  label: boolean | string | number;
23
- variant: ComponentVariant | "secondary";
24
23
  max: number;
24
+ variant: ComponentVariant | "secondary";
25
25
  min: number;
26
26
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -3,7 +3,8 @@ import { computed } from "vue";
3
3
  import { useConfigProvider } from "../../composables/use-config-provider-context";
4
4
  import { useModelValue } from "../../composables/use-model-value";
5
5
  import { isTruthyProp } from "../../utils/format";
6
- import { getColorByThreshold, getFallbackValue } from "../../utils/get";
6
+ import { getColorByThreshold } from "../../utils/get";
7
+ import { progressVariant } from "./cn";
7
8
  defineOptions({
8
9
  name: "PProgress",
9
10
  model: {
@@ -21,12 +22,7 @@ const props = defineProps({
21
22
  modelValue: { type: [Number, null], required: false }
22
23
  });
23
24
  const emits = defineEmits(["change", "update:modelValue"]);
24
- const config = useConfigProvider();
25
- const SIZES = {
26
- sm: "h-2",
27
- md: "h-2.5",
28
- lg: "h-3.5"
29
- };
25
+ const configProvider = useConfigProvider();
30
26
  const VARIANTS_COLORS = {
31
27
  primary: "var(--color-primary)",
32
28
  success: "hsl(var(--color-blue-700-value))",
@@ -47,9 +43,8 @@ const computedLabel = computed(() => {
47
43
  }
48
44
  return false;
49
45
  });
50
- const computedClass = computed(() => {
51
- const classes = ["pxd-progress-bar flex-1 shrink-0 overflow-hidden rounded-full bg-gray-200", getFallbackValue(props.size, SIZES, config.size)];
52
- return classes.join(" ");
46
+ const computedClasses = computed(() => {
47
+ return progressVariant({ size: props.size || configProvider.size });
53
48
  });
54
49
  const computedColors = computed(() => {
55
50
  const { colors, variant } = props;
@@ -68,12 +63,24 @@ const computedProgressBarStyles = computed(() => {
68
63
  </script>
69
64
 
70
65
  <template>
71
- <div role="progressbar" class="pxd-progress flex w-full items-center" :aria-valuenow="progress" :aria-valuemin="min" :aria-valuemax="max">
72
- <div :class="computedClass">
73
- <div class="h-full rounded-inherit motion-safe:transition-all" :style="computedProgressBarStyles" />
66
+ <div
67
+ role="progressbar"
68
+ class="pxd-progress flex w-full items-center"
69
+ :aria-valuenow="progress"
70
+ :aria-valuemin="min"
71
+ :aria-valuemax="max"
72
+ >
73
+ <div :class="computedClasses">
74
+ <div
75
+ class="h-full rounded-inherit motion-safe:transition-all"
76
+ :style="computedProgressBarStyles"
77
+ />
74
78
  </div>
75
79
 
76
- <span v-if="computedLabel || $slots.default" class="text-sm ml-3 font-mono text-foreground-secondary empty:hidden">
80
+ <span
81
+ v-if="computedLabel || $slots.default"
82
+ class="text-sm ml-3 font-mono text-foreground-secondary empty:hidden"
83
+ >
77
84
  <slot>
78
85
  {{ computedLabel }}
79
86
  </slot>
@@ -0,0 +1,46 @@
1
+ export declare const radioVariant: import("tailwind-variants").TVReturnType<{
2
+ checked: {
3
+ true: {
4
+ base: string;
5
+ disabled: string;
6
+ };
7
+ false: {
8
+ base: string;
9
+ disabled: string;
10
+ };
11
+ };
12
+ disabled: {
13
+ true: string;
14
+ false: string;
15
+ };
16
+ }, undefined, "pxd-radio--inner size-4 inline-flex items-center justify-center rounded-full border peer-focus-ring after:content-empty after:size-2 after:scale-40 after:rounded-full after:bg-primary after:opacity-0 peer-checked:after:scale-100 peer-checked:after:opacity-100 motion-safe:transition-colors motion-safe:after:transition-all", {
17
+ checked: {
18
+ true: {
19
+ base: string;
20
+ disabled: string;
21
+ };
22
+ false: {
23
+ base: string;
24
+ disabled: string;
25
+ };
26
+ };
27
+ disabled: {
28
+ true: string;
29
+ false: string;
30
+ };
31
+ }, undefined, import("tailwind-variants").TVReturnType<{
32
+ checked: {
33
+ true: {
34
+ base: string;
35
+ disabled: string;
36
+ };
37
+ false: {
38
+ base: string;
39
+ disabled: string;
40
+ };
41
+ };
42
+ disabled: {
43
+ true: string;
44
+ false: string;
45
+ };
46
+ }, undefined, "pxd-radio--inner size-4 inline-flex items-center justify-center rounded-full border peer-focus-ring after:content-empty after:size-2 after:scale-40 after:rounded-full after:bg-primary after:opacity-0 peer-checked:after:scale-100 peer-checked:after:opacity-100 motion-safe:transition-colors motion-safe:after:transition-all", unknown, unknown, undefined>>;
@@ -0,0 +1,42 @@
1
+ import { tv } from "tailwind-variants";
2
+ export const radioVariant = tv({
3
+ base: "pxd-radio--inner size-4 inline-flex items-center justify-center rounded-full border peer-focus-ring after:content-empty after:size-2 after:scale-40 after:rounded-full after:bg-primary after:opacity-0 peer-checked:after:scale-100 peer-checked:after:opacity-100 motion-safe:transition-colors motion-safe:after:transition-all",
4
+ variants: {
5
+ checked: {
6
+ true: {
7
+ base: "border-primary bg-background-100 peer-checked:after:scale-100",
8
+ disabled: "border-gray-500 bg-gray-100 peer-disabled:after:bg-gray-500"
9
+ },
10
+ false: {
11
+ base: "border-gray-alpha-400 bg-background-100 group-hover/radio:bg-gray-200",
12
+ disabled: "border-gray-500 bg-gray-100"
13
+ }
14
+ },
15
+ disabled: {
16
+ true: "",
17
+ false: ""
18
+ }
19
+ },
20
+ compoundVariants: [
21
+ {
22
+ checked: true,
23
+ disabled: false,
24
+ class: "border-primary bg-background-100 peer-checked:after:scale-100"
25
+ },
26
+ {
27
+ checked: true,
28
+ disabled: true,
29
+ class: "border-gray-500 bg-gray-100 peer-disabled:after:bg-gray-500"
30
+ },
31
+ {
32
+ checked: false,
33
+ disabled: false,
34
+ class: "border-gray-alpha-400 bg-background-100 group-hover/radio:bg-gray-200"
35
+ },
36
+ { checked: false, disabled: true, class: "border-gray-500 bg-gray-100" }
37
+ ],
38
+ defaultVariants: {
39
+ checked: false,
40
+ disabled: false
41
+ }
42
+ });
@@ -4,6 +4,7 @@ import { useModelValue } from "../../composables/use-model-value";
4
4
  import { useUniqueId } from "../../composables/use-unique-id-context";
5
5
  import { useRadioGroupContext } from "../../contexts/radio";
6
6
  import { getUniqueId } from "../../utils/uid";
7
+ import { radioVariant } from "./cn";
7
8
  defineOptions({
8
9
  name: "PRadio",
9
10
  model: {
@@ -23,24 +24,16 @@ const uniqueId = getUniqueId();
23
24
  const modelValue = useModelValue(props, emits);
24
25
  const radioGroupName = useUniqueId("RadioGroupName");
25
26
  const radioGroupContext = useRadioGroupContext();
26
- const isChecked = computed(() => (radioGroupContext?.modelValue ?? modelValue.value) === props.value);
27
+ const isChecked = computed(
28
+ () => (radioGroupContext?.modelValue ?? modelValue.value) === props.value
29
+ );
27
30
  const computedDisabled = computed(() => props.disabled || radioGroupContext?.disabled);
28
31
  const computedRequired = computed(() => props.required || radioGroupContext?.required);
29
- const computedInnerClasses = computed(() => {
30
- const classes = [
31
- "pxd-radio--inner size-4 inline-flex items-center justify-center rounded-full border peer-focus-ring motion-safe:transition-colors",
32
- "after:content-empty after:size-2 after:scale-40 after:rounded-full after:bg-primary after:opacity-0 peer-checked:after:scale-100 peer-checked:after:opacity-100 motion-safe:after:transition-all"
33
- ];
34
- if (isChecked.value) {
35
- classes.push(
36
- computedDisabled.value ? "bg-gray-100 border-gray-500 peer-disabled:after:bg-gray-500" : "bg-background-100 border-primary peer-checked:after:scale-100"
37
- );
38
- } else {
39
- classes.push(
40
- computedDisabled.value ? "bg-gray-100 border-gray-500" : "bg-background-100 border-gray-alpha-400 group-hover/radio:bg-gray-200"
41
- );
42
- }
43
- return classes.join(" ");
32
+ const computedClasses = computed(() => {
33
+ return radioVariant({
34
+ checked: isChecked.value,
35
+ disabled: computedDisabled.value
36
+ });
44
37
  });
45
38
  function onChangeValue() {
46
39
  emits("update:modelValue", props.value);
@@ -66,9 +59,9 @@ function onChangeValue() {
66
59
  :required="computedRequired"
67
60
  :disabled="computedDisabled"
68
61
  @change="onChangeValue"
69
- >
62
+ />
70
63
 
71
- <span aria-hidden="true" :class="computedInnerClasses" />
64
+ <span aria-hidden="true" :class="computedClasses" />
72
65
 
73
66
  <span class="text-sm flex-1 shrink-0 empty:hidden">
74
67
  <slot>
@@ -17,7 +17,10 @@ function registerPanel(config) {
17
17
  if (existingIndex === -1) {
18
18
  panelConfigs.value.push({ ...config, order: orderCounter.value++ });
19
19
  } else {
20
- panelConfigs.value[existingIndex] = { ...config, order: panelConfigs.value[existingIndex].order };
20
+ panelConfigs.value[existingIndex] = {
21
+ ...config,
22
+ order: panelConfigs.value[existingIndex].order
23
+ };
21
24
  }
22
25
  panelConfigs.value.sort((a, b) => a.order - b.order);
23
26
  nextTick(() => {
@@ -36,7 +39,10 @@ function registerHandle(config) {
36
39
  if (existingIndex === -1) {
37
40
  handleConfigs.value.push({ ...config, order: orderCounter.value++ });
38
41
  } else {
39
- handleConfigs.value[existingIndex] = { ...config, order: handleConfigs.value[existingIndex].order };
42
+ handleConfigs.value[existingIndex] = {
43
+ ...config,
44
+ order: handleConfigs.value[existingIndex].order
45
+ };
40
46
  }
41
47
  handleConfigs.value.sort((a, b) => a.order - b.order);
42
48
  }
@@ -27,6 +27,7 @@ function handlePointerMove(e) {
27
27
  startPosition = { x: e.clientX, y: e.clientY };
28
28
  }
29
29
  function handlePointerUp(e) {
30
+ ;
30
31
  e.target.releasePointerCapture(e.pointerId);
31
32
  isDragging = false;
32
33
  }