pxd 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/dist/components/_internal/calendar-day.vue +19 -19
  2. package/dist/components/_internal/dismiss-container.d.vue.ts +1 -1
  3. package/dist/components/_internal/dismiss-container.vue +19 -19
  4. package/dist/components/_internal/loading-mask.vue +9 -1
  5. package/dist/components/_internal/mention-editor.d.vue.ts +1 -1
  6. package/dist/components/_internal/mention-editor.vue +1 -1
  7. package/dist/components/_internal/popover-arrow.d.vue.ts +1 -1
  8. package/dist/components/_internal/popover-arrow.vue +1 -1
  9. package/dist/components/{steps → _internal}/step-item.d.vue.ts +1 -1
  10. package/dist/components/{steps → _internal}/step-item.vue +1 -1
  11. package/dist/components/_internal/tree-node.d.vue.ts +20 -20
  12. package/dist/components/_internal/tree-node.vue +53 -45
  13. package/dist/components/active-graph/index.d.vue.ts +2 -2
  14. package/dist/components/approval-card/index.d.vue.ts +1 -1
  15. package/dist/components/approval-card/index.vue +34 -17
  16. package/dist/components/approval-card/types.d.ts +1 -1
  17. package/dist/components/avatar/index.d.vue.ts +2 -2
  18. package/dist/components/avatar/index.vue +1 -1
  19. package/dist/components/backtop/index.d.vue.ts +3 -3
  20. package/dist/components/backtop/index.vue +17 -17
  21. package/dist/components/backtop/types.d.ts +1 -1
  22. package/dist/components/badge/index.d.vue.ts +3 -3
  23. package/dist/components/badge/index.vue +43 -43
  24. package/dist/components/badge/types.d.ts +1 -1
  25. package/dist/components/book/types.d.ts +1 -1
  26. package/dist/components/border-beam/index.vue +1 -1
  27. package/dist/components/border-beam/types.d.ts +1 -1
  28. package/dist/components/bubble/index.vue +1 -1
  29. package/dist/components/bubble-group/index.d.vue.ts +4 -4
  30. package/dist/components/button/index.d.vue.ts +5 -5
  31. package/dist/components/button/index.vue +13 -13
  32. package/dist/components/button/types.d.ts +1 -1
  33. package/dist/components/button-group/types.d.ts +1 -1
  34. package/dist/components/calendar/index.d.vue.ts +2 -2
  35. package/dist/components/calendar/index.vue +5 -5
  36. package/dist/components/calendar/types.d.ts +1 -1
  37. package/dist/components/card/types.d.ts +1 -1
  38. package/dist/components/carousel/index.d.vue.ts +7 -7
  39. package/dist/components/carousel/index.vue +1 -1
  40. package/dist/components/carousel/types.d.ts +1 -1
  41. package/dist/components/checkbox/index.vue +1 -1
  42. package/dist/components/checkbox/types.d.ts +1 -1
  43. package/dist/components/checkbox-group/index.d.vue.ts +2 -2
  44. package/dist/components/checkbox-group/types.d.ts +1 -1
  45. package/dist/components/chip/index.d.vue.ts +1 -1
  46. package/dist/components/chip/types.d.ts +1 -1
  47. package/dist/components/choicebox/index.d.vue.ts +3 -3
  48. package/dist/components/choicebox/types.d.ts +1 -1
  49. package/dist/components/choicebox-item/index.vue +8 -8
  50. package/dist/components/choicebox-item/types.d.ts +1 -1
  51. package/dist/components/collapse/index.vue +2 -2
  52. package/dist/components/collapse-group/index.vue +1 -1
  53. package/dist/components/collapse-group/types.d.ts +1 -1
  54. package/dist/components/command-menu/index.d.vue.ts +5 -5
  55. package/dist/components/command-menu/index.vue +10 -3
  56. package/dist/components/config-provider/index.d.vue.ts +40 -5
  57. package/dist/components/config-provider/types.d.ts +2 -1
  58. package/dist/components/confirm-popover/index.d.vue.ts +39 -0
  59. package/dist/components/confirm-popover/index.vue +177 -0
  60. package/dist/components/confirm-popover/types.d.ts +23 -0
  61. package/dist/components/copy-button/index.d.vue.ts +2 -6
  62. package/dist/components/copy-button/index.vue +4 -6
  63. package/dist/components/dash-line/index.d.vue.ts +1 -1
  64. package/dist/components/dash-line/index.vue +8 -8
  65. package/dist/components/dash-line/types.d.ts +1 -1
  66. package/dist/components/date-picker/index.d.vue.ts +1 -1
  67. package/dist/components/date-picker/index.vue +3 -3
  68. package/dist/components/date-picker/types.d.ts +1 -1
  69. package/dist/components/drawer/index.d.vue.ts +7 -7
  70. package/dist/components/drawer/index.vue +30 -15
  71. package/dist/components/drawer/types.d.ts +2 -2
  72. package/dist/components/effort-slider/index.vue +12 -18
  73. package/dist/components/effort-slider/types.d.ts +1 -1
  74. package/dist/components/ellipsis-text/index.d.vue.ts +2 -2
  75. package/dist/components/ellipsis-text/index.vue +75 -75
  76. package/dist/components/error/types.d.ts +1 -1
  77. package/dist/components/fader/index.vue +2 -2
  78. package/dist/components/fader/types.d.ts +1 -1
  79. package/dist/components/gauge/index.vue +2 -2
  80. package/dist/components/gauge/types.d.ts +1 -1
  81. package/dist/components/grid/types.d.ts +1 -1
  82. package/dist/components/grid-item/types.d.ts +1 -1
  83. package/dist/components/hint/index.d.vue.ts +32 -0
  84. package/dist/components/hint/index.vue +239 -0
  85. package/dist/components/hint/types.d.ts +17 -0
  86. package/dist/components/hold-button/index.d.vue.ts +4 -4
  87. package/dist/components/hold-button/index.vue +10 -10
  88. package/dist/components/index.d.ts +4 -0
  89. package/dist/components/index.js +4 -0
  90. package/dist/components/input/index.d.vue.ts +1 -1
  91. package/dist/components/input/index.vue +14 -7
  92. package/dist/components/input/types.d.ts +1 -1
  93. package/dist/components/intersection-observer/index.vue +3 -3
  94. package/dist/components/kbd/index.vue +2 -2
  95. package/dist/components/kbd/types.d.ts +1 -1
  96. package/dist/components/link-button/index.d.vue.ts +5 -5
  97. package/dist/components/list/index.d.vue.ts +4 -4
  98. package/dist/components/list/index.vue +126 -47
  99. package/dist/components/list/types.d.ts +1 -1
  100. package/dist/components/list-group/types.d.ts +1 -1
  101. package/dist/components/list-item/index.d.vue.ts +2 -2
  102. package/dist/components/list-item/index.vue +26 -8
  103. package/dist/components/loading-bar/index.vue +5 -5
  104. package/dist/components/marching-ants/index.d.vue.ts +2 -2
  105. package/dist/components/marching-ants/index.vue +56 -56
  106. package/dist/components/marching-ants/types.d.ts +1 -1
  107. package/dist/components/marquee/index.d.vue.ts +6 -6
  108. package/dist/components/marquee/index.vue +16 -16
  109. package/dist/components/marquee/types.d.ts +1 -1
  110. package/dist/components/material/index.d.vue.ts +3 -3
  111. package/dist/components/mention/index.d.vue.ts +5 -5
  112. package/dist/components/mention/index.vue +68 -68
  113. package/dist/components/menu/index.d.vue.ts +4 -4
  114. package/dist/components/menu/index.vue +10 -10
  115. package/dist/components/menu/types.d.ts +1 -1
  116. package/dist/components/message/index.d.vue.ts +1 -1
  117. package/dist/components/message/index.vue +19 -25
  118. package/dist/components/message/types.d.ts +1 -1
  119. package/dist/components/message-item/index.vue +2 -6
  120. package/dist/components/modal/index.d.vue.ts +7 -7
  121. package/dist/components/modal/index.vue +26 -11
  122. package/dist/components/modal/types.d.ts +2 -2
  123. package/dist/components/noise-background/types.d.ts +1 -1
  124. package/dist/components/note/index.vue +6 -2
  125. package/dist/components/note/types.d.ts +2 -1
  126. package/dist/components/number-input/index.d.vue.ts +11 -6
  127. package/dist/components/number-input/index.vue +57 -16
  128. package/dist/components/number-input/types.d.ts +2 -1
  129. package/dist/components/overlay/index.d.vue.ts +2 -3
  130. package/dist/components/overlay/index.vue +10 -62
  131. package/dist/components/overlay/types.d.ts +0 -2
  132. package/dist/components/page-number/index.vue +30 -29
  133. package/dist/components/page-number/types.d.ts +1 -1
  134. package/dist/components/pin-input/index.d.vue.ts +1 -1
  135. package/dist/components/pin-input/index.vue +6 -6
  136. package/dist/components/pin-input/types.d.ts +1 -1
  137. package/dist/components/popover/index.vue +49 -21
  138. package/dist/components/popover/types.d.ts +3 -1
  139. package/dist/components/progress/index.d.vue.ts +2 -2
  140. package/dist/components/progress/index.vue +12 -12
  141. package/dist/components/progress/types.d.ts +1 -1
  142. package/dist/components/project-banner/types.d.ts +1 -1
  143. package/dist/components/questionnaire/index.vue +14 -14
  144. package/dist/components/radio/index.vue +1 -1
  145. package/dist/components/radio/types.d.ts +1 -1
  146. package/dist/components/radio-group/index.d.vue.ts +2 -2
  147. package/dist/components/radio-group/types.d.ts +1 -1
  148. package/dist/components/rating/index.vue +28 -28
  149. package/dist/components/rating/types.d.ts +1 -1
  150. package/dist/components/resizable/index.d.vue.ts +1 -0
  151. package/dist/components/resizable/index.vue +130 -195
  152. package/dist/components/resizable/types.d.ts +2 -10
  153. package/dist/components/reveal/index.d.vue.ts +3 -3
  154. package/dist/components/reveal/index.vue +4 -4
  155. package/dist/components/reveal/types.d.ts +1 -1
  156. package/dist/components/rolling-number/index.d.vue.ts +2 -2
  157. package/dist/components/rolling-number/index.vue +15 -15
  158. package/dist/components/scalable-text/index.vue +9 -9
  159. package/dist/components/scroll-text/index.d.vue.ts +3 -3
  160. package/dist/components/scroll-text/index.vue +6 -6
  161. package/dist/components/scroll-text/types.d.ts +1 -1
  162. package/dist/components/scrollable/types.d.ts +2 -1
  163. package/dist/components/search-input/index.d.vue.ts +5 -5
  164. package/dist/components/search-input/index.vue +2 -1
  165. package/dist/components/select/index.d.vue.ts +12 -9
  166. package/dist/components/select/index.vue +165 -42
  167. package/dist/components/select/types.d.ts +3 -1
  168. package/dist/components/separator/index.d.vue.ts +1 -1
  169. package/dist/components/separator/types.d.ts +1 -1
  170. package/dist/components/skeleton/index.d.vue.ts +1 -1
  171. package/dist/components/skeleton/index.vue +11 -11
  172. package/dist/components/skeleton/types.d.ts +1 -1
  173. package/dist/components/slider/index.d.vue.ts +1 -1
  174. package/dist/components/slider/index.vue +1 -1
  175. package/dist/components/slider/types.d.ts +1 -1
  176. package/dist/components/snippet/index.d.vue.ts +3 -3
  177. package/dist/components/snippet/index.vue +7 -5
  178. package/dist/components/snippet/types.d.ts +1 -1
  179. package/dist/components/spinner/index.vue +5 -1
  180. package/dist/components/spinner-dots/index.d.vue.ts +1 -1
  181. package/dist/components/split-button/index.d.vue.ts +5 -5
  182. package/dist/components/split-button/types.d.ts +1 -1
  183. package/dist/components/stack/index.d.vue.ts +3 -3
  184. package/dist/components/stack/index.vue +28 -29
  185. package/dist/components/stack/types.d.ts +1 -1
  186. package/dist/components/status-dot/types.d.ts +1 -1
  187. package/dist/components/steps/index.d.vue.ts +2 -2
  188. package/dist/components/steps/index.vue +6 -6
  189. package/dist/components/steps/types.d.ts +1 -1
  190. package/dist/components/stick-to-bottom/types.d.ts +1 -1
  191. package/dist/components/swipe-cell/index.d.vue.ts +6 -6
  192. package/dist/components/swipe-cell/index.vue +64 -64
  193. package/dist/components/swipe-cell/types.d.ts +2 -1
  194. package/dist/components/switch/index.vue +1 -1
  195. package/dist/components/switch/types.d.ts +1 -1
  196. package/dist/components/switch-item/index.vue +1 -1
  197. package/dist/components/switch-item/types.d.ts +1 -1
  198. package/dist/components/tabs/index.d.vue.ts +1 -1
  199. package/dist/components/tabs/index.vue +48 -51
  200. package/dist/components/tabs/types.d.ts +1 -1
  201. package/dist/components/teleport/index.vue +2 -2
  202. package/dist/components/text/index.d.vue.ts +3 -3
  203. package/dist/components/text/index.vue +11 -11
  204. package/dist/components/text/types.d.ts +1 -1
  205. package/dist/components/textarea/index.vue +1 -1
  206. package/dist/components/textarea/types.d.ts +1 -1
  207. package/dist/components/theme-switcher/index.d.vue.ts +3 -2
  208. package/dist/components/theme-switcher/index.vue +15 -7
  209. package/dist/components/theme-switcher/types.d.ts +2 -2
  210. package/dist/components/time-ago/index.d.vue.ts +6 -0
  211. package/dist/components/time-ago/index.vue +143 -0
  212. package/dist/components/time-ago/types.d.ts +4 -0
  213. package/dist/components/time-picker/index.d.vue.ts +1 -1
  214. package/dist/components/time-picker/index.vue +7 -7
  215. package/dist/components/time-picker/types.d.ts +1 -1
  216. package/dist/components/toc/index.d.vue.ts +2 -2
  217. package/dist/components/toc/index.vue +1 -1
  218. package/dist/components/todo-list/index.d.vue.ts +4 -4
  219. package/dist/components/todo-list/index.vue +15 -15
  220. package/dist/components/todo-list/types.d.ts +1 -1
  221. package/dist/components/toggle/index.vue +3 -3
  222. package/dist/components/toggle/types.d.ts +1 -1
  223. package/dist/components/toggle-button/index.vue +14 -11
  224. package/dist/components/toggle-button/types.d.ts +2 -2
  225. package/dist/components/toggle-button-group/index.d.vue.ts +3 -3
  226. package/dist/components/toggle-button-group/index.vue +2 -2
  227. package/dist/components/toggle-button-group/types.d.ts +2 -2
  228. package/dist/components/tool-call/index.vue +5 -5
  229. package/dist/components/tooltip/index.d.vue.ts +4 -5
  230. package/dist/components/tooltip/index.vue +4 -49
  231. package/dist/components/tooltip/types.d.ts +3 -7
  232. package/dist/components/tour/index.d.vue.ts +33 -0
  233. package/dist/components/tour/index.vue +302 -0
  234. package/dist/components/tour/types.d.ts +29 -0
  235. package/dist/components/tree/index.d.vue.ts +24 -28
  236. package/dist/components/tree/index.vue +290 -223
  237. package/dist/components/tree/types.d.ts +38 -13
  238. package/dist/components/virtual-list/index.d.vue.ts +4 -4
  239. package/dist/composables/_internal/use-list-keyboard-controller.js +9 -10
  240. package/dist/composables/_internal/use-list-rows.d.ts +4 -0
  241. package/dist/composables/_internal/use-list-rows.js +12 -4
  242. package/dist/composables/_internal/use-list-selection.d.ts +1 -1
  243. package/dist/composables/_internal/use-lock-scroll.d.ts +8 -1
  244. package/dist/composables/_internal/use-lock-scroll.js +57 -36
  245. package/dist/composables/_internal/use-mention-editor.js +1 -1
  246. package/dist/composables/_internal/use-message-group.d.ts +22 -0
  247. package/dist/composables/_internal/use-message-group.js +143 -0
  248. package/dist/composables/_internal/use-overlay-dialog.js +1 -3
  249. package/dist/composables/_internal/use-overlay-manager.d.ts +4 -1
  250. package/dist/composables/_internal/use-overlay-manager.js +67 -8
  251. package/dist/composables/_internal/use-swipe-gesture.d.ts +1 -1
  252. package/dist/composables/_internal/use-tour-target.d.ts +29 -0
  253. package/dist/composables/_internal/use-tour-target.js +201 -0
  254. package/dist/composables/_internal/use-tree.d.ts +103 -0
  255. package/dist/composables/_internal/use-tree.js +676 -0
  256. package/dist/composables/_internal/use-word-limit.d.ts +1 -1
  257. package/dist/composables/index.d.ts +1 -0
  258. package/dist/composables/index.js +1 -0
  259. package/dist/composables/use-color-scheme.d.ts +1 -1
  260. package/dist/composables/use-color-scheme.js +7 -6
  261. package/dist/composables/use-delay-destroy.d.ts +1 -1
  262. package/dist/composables/use-document-hidden.d.ts +1 -1
  263. package/dist/composables/use-intersection-observer.d.ts +1 -1
  264. package/dist/composables/use-intersection-observer.js +1 -1
  265. package/dist/composables/{_internal/use-motion-reduce.js → use-motion-reduce.js} +2 -2
  266. package/dist/composables/use-mutation-observer.d.ts +1 -1
  267. package/dist/composables/use-mutation-observer.js +1 -1
  268. package/dist/composables/use-resize-observer.d.ts +1 -1
  269. package/dist/composables/use-resize-observer.js +1 -1
  270. package/dist/composables/use-view-transition.js +1 -0
  271. package/dist/composables/use-virtual-list.d.ts +1 -1
  272. package/dist/constants/tooltip-variants.d.ts +28 -0
  273. package/dist/constants/tooltip-variants.js +27 -0
  274. package/dist/contexts/avatar.js +1 -1
  275. package/dist/contexts/breadcrumb.js +1 -1
  276. package/dist/contexts/button.js +1 -1
  277. package/dist/contexts/checkbox.js +1 -1
  278. package/dist/contexts/choicebox.js +1 -1
  279. package/dist/contexts/collapse.js +1 -1
  280. package/dist/contexts/config-provider.js +1 -1
  281. package/dist/contexts/list.js +1 -1
  282. package/dist/contexts/radio.js +1 -1
  283. package/dist/contexts/switch.js +1 -1
  284. package/dist/contexts/toggle-button.js +1 -1
  285. package/dist/index.d.ts +2 -1
  286. package/dist/locales/en-us.d.ts +35 -0
  287. package/dist/locales/en-us.js +20 -0
  288. package/dist/locales/zh-cn.d.ts +35 -0
  289. package/dist/locales/zh-cn.js +20 -0
  290. package/dist/styles/styles.css +1 -1
  291. package/dist/styles/tw.css +43 -30
  292. package/dist/utils/{context.js → _internal/context.js} +1 -1
  293. package/dist/utils/{observer.d.ts → _internal/observer.d.ts} +1 -1
  294. package/dist/utils/{observer.js → _internal/observer.js} +4 -4
  295. package/dist/{components/swipe-cell/instances.d.ts → utils/_internal/swipe-cell-instances.d.ts} +1 -1
  296. package/dist/utils/event.d.ts +2 -1
  297. package/dist/utils/event.js +3 -0
  298. package/package.json +26 -50
  299. package/volar.d.ts +4 -0
  300. package/dist/components/message/composables/use-group-expand.d.ts +0 -13
  301. package/dist/components/message/composables/use-group-expand.js +0 -50
  302. package/dist/components/message/composables/use-message-timer.d.ts +0 -9
  303. package/dist/components/message/composables/use-message-timer.js +0 -62
  304. package/dist/components/message/composables/use-promise-message.d.ts +0 -4
  305. package/dist/components/message/composables/use-promise-message.js +0 -49
  306. package/dist/components/resizable/utils.d.ts +0 -4
  307. package/dist/components/resizable/utils.js +0 -10
  308. package/dist/composables/_internal/use-tree-drag.d.ts +0 -23
  309. package/dist/composables/_internal/use-tree-drag.js +0 -196
  310. package/dist/composables/_internal/use-tree-move.d.ts +0 -20
  311. package/dist/composables/_internal/use-tree-move.js +0 -96
  312. package/dist/composables/_internal/use-tree-rows.d.ts +0 -46
  313. package/dist/composables/_internal/use-tree-rows.js +0 -101
  314. package/dist/composables/_internal/use-tree-selection.d.ts +0 -22
  315. package/dist/composables/_internal/use-tree-selection.js +0 -87
  316. package/dist/styles/source.css +0 -675
  317. package/dist/types/shared/index.d.ts +0 -2
  318. /package/dist/composables/{_internal/use-motion-reduce.d.ts → use-motion-reduce.d.ts} +0 -0
  319. /package/dist/utils/{context.d.ts → _internal/context.d.ts} +0 -0
  320. /package/dist/utils/{mention-html.d.ts → _internal/mention-html.d.ts} +0 -0
  321. /package/dist/utils/{mention-html.js → _internal/mention-html.js} +0 -0
  322. /package/dist/{components/swipe-cell/instances.js → utils/_internal/swipe-cell-instances.js} +0 -0
@@ -0,0 +1,239 @@
1
+ <script setup>
2
+ import CrossIcon from "@gdsicon/vue/cross";
3
+ import { computed, onBeforeUnmount, shallowRef, watch, watchEffect } from "vue";
4
+ import { TOOLTIP_CONTENT_CLASS, TOOLTIP_VARIANTS } from "../../constants/tooltip-variants.js";
5
+ import { useConfigProvider } from "../../contexts/config-provider.js";
6
+ import PPopover from "../popover/index.vue";
7
+ defineOptions({
8
+ name: "PHint",
9
+ inheritAttrs: false
10
+ });
11
+ const props = defineProps({
12
+ content: {
13
+ type: String,
14
+ required: false
15
+ },
16
+ promise: {
17
+ type: Promise,
18
+ required: false
19
+ },
20
+ position: {
21
+ type: null,
22
+ required: false,
23
+ default: "top"
24
+ },
25
+ duration: {
26
+ type: Number,
27
+ required: false,
28
+ default: 1e3
29
+ },
30
+ closeable: {
31
+ type: Boolean,
32
+ required: false
33
+ },
34
+ pauseOnHover: {
35
+ type: Boolean,
36
+ required: false,
37
+ default: true
38
+ },
39
+ contentClass: {
40
+ type: [
41
+ String,
42
+ Array,
43
+ Object
44
+ ],
45
+ required: false
46
+ }
47
+ });
48
+ const emits = defineEmits(["close"]);
49
+ let closeTimer = null;
50
+ let closeDeadline = 0;
51
+ let closeRemaining = 0;
52
+ let isHovering = false;
53
+ let promiseToken = 0;
54
+ const visible = shallowRef(false);
55
+ const progressDuration = shallowRef(0);
56
+ const progressKey = shallowRef(0);
57
+ const status = shallowRef("idle");
58
+ const statusValue = shallowRef();
59
+ const statusError = shallowRef();
60
+ const progressVisible = computed(() => visible.value && progressDuration.value > 0 && status.value !== "pending");
61
+ const statusVariant = computed(() => status.value === "success" || status.value === "error" ? status.value : "default");
62
+ const computedVariant = computed(() => TOOLTIP_VARIANTS[statusVariant.value]);
63
+ const contentClassComputed = computed(() => [
64
+ "relative",
65
+ TOOLTIP_CONTENT_CLASS,
66
+ computedVariant.value.base,
67
+ props.contentClass
68
+ ]);
69
+ const configProvider = useConfigProvider();
70
+ function restartProgress(duration) {
71
+ progressDuration.value = duration;
72
+ progressKey.value++;
73
+ }
74
+ function clearCloseTimer() {
75
+ if (closeTimer) {
76
+ clearTimeout(closeTimer);
77
+ closeTimer = null;
78
+ }
79
+ }
80
+ function scheduleClose(delay) {
81
+ clearCloseTimer();
82
+ closeRemaining = delay;
83
+ if (!props.duration || delay <= 0 || isHovering || status.value === "pending") {
84
+ return;
85
+ }
86
+ closeDeadline = Date.now() + delay;
87
+ closeTimer = setTimeout(() => {
88
+ closeTimer = null;
89
+ visible.value = false;
90
+ }, delay);
91
+ }
92
+ function startCloseTimer() {
93
+ if (visible.value) {
94
+ restartProgress(props.duration);
95
+ scheduleClose(props.duration);
96
+ }
97
+ }
98
+ function pauseCloseTimer() {
99
+ if (!props.pauseOnHover) {
100
+ return;
101
+ }
102
+ isHovering = true;
103
+ if (closeTimer) {
104
+ clearCloseTimer();
105
+ closeRemaining = Math.max(0, closeDeadline - Date.now());
106
+ }
107
+ }
108
+ function resumeCloseTimer() {
109
+ if (!props.pauseOnHover) {
110
+ return;
111
+ }
112
+ isHovering = false;
113
+ if (!visible.value || closeTimer) {
114
+ return;
115
+ }
116
+ scheduleClose(closeRemaining);
117
+ }
118
+ function handleClose() {
119
+ visible.value = false;
120
+ }
121
+ function subscribePromise(promise) {
122
+ const token = ++promiseToken;
123
+ statusValue.value = undefined;
124
+ statusError.value = undefined;
125
+ if (!promise) {
126
+ status.value = "idle";
127
+ return;
128
+ }
129
+ status.value = "pending";
130
+ promise.then((value) => {
131
+ if (token !== promiseToken) {
132
+ return;
133
+ }
134
+ statusValue.value = value;
135
+ status.value = "success";
136
+ startCloseTimer();
137
+ }, (error) => {
138
+ if (token !== promiseToken) {
139
+ return;
140
+ }
141
+ statusError.value = error;
142
+ status.value = "error";
143
+ startCloseTimer();
144
+ });
145
+ }
146
+ watch(visible, (isVisible) => {
147
+ if (isVisible) {
148
+ startCloseTimer();
149
+ } else {
150
+ clearCloseTimer();
151
+ isHovering = false;
152
+ emits("close");
153
+ }
154
+ });
155
+ // Don't use watch(() => props.promise): Vue will attach a catch to the promise returned by the watcher getter,
156
+ // and an error will be reported in the component when it rejects.
157
+ watchEffect(() => {
158
+ subscribePromise(props.promise);
159
+ });
160
+ watch(() => props.content, () => {
161
+ if (isHovering) {
162
+ closeRemaining = props.duration;
163
+ restartProgress(props.duration);
164
+ return;
165
+ }
166
+ startCloseTimer();
167
+ });
168
+ onBeforeUnmount(() => {
169
+ clearCloseTimer();
170
+ promiseToken++;
171
+ });
172
+ </script>
173
+
174
+ <template>
175
+ <PPopover
176
+ data-hint
177
+ role="tooltip"
178
+ class="pxd-hint"
179
+ show-arrow
180
+ :data-variant="statusVariant"
181
+ :model-value="visible"
182
+ :position="position"
183
+ :toggle-on-trigger="false"
184
+ :fill-trigger-width="false"
185
+ wrapper-class="max-sm:data-[position^=top]:px-1 max-sm:data-[position^=bottom]:px-1 max-sm:data-[position^=left]:ps-1 max-sm:data-[position^=right]:pe-1"
186
+ :arrow-color="computedVariant.bg"
187
+ :content-class="contentClassComputed"
188
+ v-bind="$attrs"
189
+ trigger="click"
190
+ :close-on-press-escape="false"
191
+ :close-on-outside-click="false"
192
+ @trigger-click="startCloseTimer"
193
+ @update:model-value="visible = $event"
194
+ >
195
+ <slot :status="status" />
196
+
197
+ <template #content="{ activeTrigger, activeTriggerIndex }">
198
+ <div
199
+ class="pxd-hint--content gap-1.5 flex items-center"
200
+ :data-pause-on-hover="pauseOnHover ? 'true' : 'false'"
201
+ @pointerenter="pauseCloseTimer"
202
+ @pointerleave="resumeCloseTimer"
203
+ >
204
+ <slot
205
+ name="content"
206
+ :status="status"
207
+ :value="statusValue"
208
+ :error="statusError"
209
+ :active-trigger="activeTrigger"
210
+ :active-trigger-index="activeTriggerIndex"
211
+ >
212
+ {{ content }}
213
+ </slot>
214
+
215
+ <button
216
+ v-if="closeable"
217
+ type="button"
218
+ class="pxd-hint--close p-0.5 shrink-0 cursor-pointer appearance-none rounded-sm border-0 bg-transparent font-inherit text-inherit opacity-70 self-focus-ring outline-none hover:opacity-100 motion-safe:transition-opacity"
219
+ :aria-label="configProvider.locale.feedback.close"
220
+ @click="handleClose"
221
+ >
222
+ <CrossIcon class="size-3" />
223
+ </button>
224
+
225
+ <div
226
+ v-if="progressVisible"
227
+ :key="progressKey"
228
+ aria-hidden="true"
229
+ class="pxd-hint--progress-bar pxd-countdown-progress inset-x-0 top-0 h-0.5 absolute bg-current"
230
+ :style="{ animationDuration: `${progressDuration}ms` }"
231
+ />
232
+ </div>
233
+ </template>
234
+ </PPopover>
235
+ </template>
236
+
237
+ <style>
238
+ .pxd-hint--content[data-pause-on-hover=true]:hover .pxd-hint--progress-bar{animation-play-state:paused}
239
+ </style>
@@ -0,0 +1,17 @@
1
+ import type { ComponentClass, ComponentPosition } from '../../types/shared/props'
2
+
3
+ export type HintStatus = 'idle' | 'pending' | 'success' | 'error'
4
+
5
+ export interface HintProps {
6
+ content?: string
7
+ promise?: Promise<unknown>
8
+ position?: ComponentPosition
9
+ duration?: number
10
+ closeable?: boolean
11
+ pauseOnHover?: boolean
12
+ contentClass?: ComponentClass
13
+ }
14
+
15
+ export interface HintEmits {
16
+ close: []
17
+ }
@@ -1,11 +1,11 @@
1
1
  import type { HoldButtonProps } from './types';
2
- declare var __VLS_13: {}, __VLS_15: {}, __VLS_18: {};
2
+ declare var __VLS_12: {}, __VLS_14: {}, __VLS_17: {};
3
3
  type __VLS_Slots = {} & {
4
- prefix?: (props: typeof __VLS_13) => any;
4
+ prefix?: (props: typeof __VLS_12) => any;
5
5
  } & {
6
- default?: (props: typeof __VLS_15) => any;
6
+ default?: (props: typeof __VLS_14) => any;
7
7
  } & {
8
- suffix?: (props: typeof __VLS_18) => any;
8
+ suffix?: (props: typeof __VLS_17) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<HoldButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
11
  cancel: () => any;
@@ -42,17 +42,7 @@ const emits = defineEmits([
42
42
  "pointerup",
43
43
  "pointerdown"
44
44
  ]);
45
- const attrs = useAttrs();
46
45
  const status = shallowRef("idle");
47
- const computedAttrs = computed(() => {
48
- return {
49
- class: ["pxd-hold-button relative motion-safe:transition-appearance", {
50
- scalable: props.scalable,
51
- effective: status.value !== "canceled"
52
- }],
53
- ...attrs
54
- };
55
- });
56
46
  const computedStyle = computed(() => {
57
47
  const { durations, progressColor } = props;
58
48
  let _durations = Number(durations);
@@ -64,6 +54,16 @@ const computedStyle = computed(() => {
64
54
  "--hold-button-progress-color": progressColor
65
55
  };
66
56
  });
57
+ const attrs = useAttrs();
58
+ const computedAttrs = computed(() => {
59
+ return {
60
+ class: ["pxd-hold-button relative motion-safe:transition-appearance", {
61
+ scalable: props.scalable,
62
+ effective: status.value !== "canceled"
63
+ }],
64
+ ...attrs
65
+ };
66
+ });
67
67
  function onTriggerVibrate() {
68
68
  if (!props.vibrate) {
69
69
  return;
@@ -27,6 +27,7 @@ export { default as CollapseGroup } from './collapse-group/index.vue';
27
27
  export { default as ColorSelector } from './color-selector/index.vue';
28
28
  export { default as CommandMenu } from './command-menu/index.vue';
29
29
  export { default as ConfigProvider } from './config-provider/index.vue';
30
+ export { default as ConfirmPopover } from './confirm-popover/index.vue';
30
31
  export { default as CopyButton } from './copy-button/index.vue';
31
32
  export { default as Countdown } from './countdown/index.vue';
32
33
  export { default as DashLine } from './dash-line/index.vue';
@@ -42,6 +43,7 @@ export { default as FeedbackBar } from './feedback-bar/index.vue';
42
43
  export { default as Gauge } from './gauge/index.vue';
43
44
  export { default as Grid } from './grid/index.vue';
44
45
  export { default as GridItem } from './grid-item/index.vue';
46
+ export { default as Hint } from './hint/index.vue';
45
47
  export { default as HoldButton } from './hold-button/index.vue';
46
48
  export { default as HueText } from './hue-text/index.vue';
47
49
  export { default as Input } from './input/index.vue';
@@ -109,6 +111,7 @@ export { default as Teleport } from './teleport/index.vue';
109
111
  export { default as Text } from './text/index.vue';
110
112
  export { default as Textarea } from './textarea/index.vue';
111
113
  export { default as ThemeSwitcher } from './theme-switcher/index.vue';
114
+ export { default as TimeAgo } from './time-ago/index.vue';
112
115
  export { default as TimePicker } from './time-picker/index.vue';
113
116
  export { default as Timeline } from './timeline/index.vue';
114
117
  export { default as TimelineItem } from './timeline-item/index.vue';
@@ -119,5 +122,6 @@ export { default as ToggleButton } from './toggle-button/index.vue';
119
122
  export { default as ToggleButtonGroup } from './toggle-button-group/index.vue';
120
123
  export { default as ToolCall } from './tool-call/index.vue';
121
124
  export { default as Tooltip } from './tooltip/index.vue';
125
+ export { default as Tour } from './tour/index.vue';
122
126
  export { default as Tree } from './tree/index.vue';
123
127
  export { default as VirtualList } from './virtual-list/index.vue';
@@ -27,6 +27,7 @@ export { default as CollapseGroup } from "./collapse-group/index.vue";
27
27
  export { default as ColorSelector } from "./color-selector/index.vue";
28
28
  export { default as CommandMenu } from "./command-menu/index.vue";
29
29
  export { default as ConfigProvider } from "./config-provider/index.vue";
30
+ export { default as ConfirmPopover } from "./confirm-popover/index.vue";
30
31
  export { default as CopyButton } from "./copy-button/index.vue";
31
32
  export { default as Countdown } from "./countdown/index.vue";
32
33
  export { default as DashLine } from "./dash-line/index.vue";
@@ -42,6 +43,7 @@ export { default as FeedbackBar } from "./feedback-bar/index.vue";
42
43
  export { default as Gauge } from "./gauge/index.vue";
43
44
  export { default as Grid } from "./grid/index.vue";
44
45
  export { default as GridItem } from "./grid-item/index.vue";
46
+ export { default as Hint } from "./hint/index.vue";
45
47
  export { default as HoldButton } from "./hold-button/index.vue";
46
48
  export { default as HueText } from "./hue-text/index.vue";
47
49
  export { default as Input } from "./input/index.vue";
@@ -109,6 +111,7 @@ export { default as Teleport } from "./teleport/index.vue";
109
111
  export { default as Text } from "./text/index.vue";
110
112
  export { default as Textarea } from "./textarea/index.vue";
111
113
  export { default as ThemeSwitcher } from "./theme-switcher/index.vue";
114
+ export { default as TimeAgo } from "./time-ago/index.vue";
112
115
  export { default as TimePicker } from "./time-picker/index.vue";
113
116
  export { default as Timeline } from "./timeline/index.vue";
114
117
  export { default as TimelineItem } from "./timeline-item/index.vue";
@@ -119,5 +122,6 @@ export { default as ToggleButton } from "./toggle-button/index.vue";
119
122
  export { default as ToggleButtonGroup } from "./toggle-button-group/index.vue";
120
123
  export { default as ToolCall } from "./tool-call/index.vue";
121
124
  export { default as Tooltip } from "./tooltip/index.vue";
125
+ export { default as Tour } from "./tour/index.vue";
122
126
  export { default as Tree } from "./tree/index.vue";
123
127
  export { default as VirtualList } from "./virtual-list/index.vue";
@@ -35,7 +35,7 @@ declare const __VLS_base: import("vue").DefineComponent<InputProps, {
35
35
  onFocus?: ((args_0: FocusEvent) => any) | undefined;
36
36
  onKeydown?: ((args_0: KeyboardEvent) => any) | undefined;
37
37
  }>, {
38
- align: "left" | "center" | "right";
38
+ align: "center" | "left" | "right";
39
39
  trimOverflow: boolean;
40
40
  wordLimitPosition: "inside" | "outside";
41
41
  clearOnPressEscape: boolean;
@@ -8,9 +8,10 @@ import { useTailwindVariant } from "../../composables/_internal/use-tailwind-var
8
8
  import { useWordLimit } from "../../composables/_internal/use-word-limit.js";
9
9
  import { BASIC_HEIGHTS } from "../../constants/size.js";
10
10
  import { useConfigProvider } from "../../contexts/config-provider.js";
11
- import { NOOP } from "../../utils/event.js";
11
+ import { NOOP, isCompositionKeydown } from "../../utils/event.js";
12
12
  import { isTruthyProp } from "../../utils/format.js";
13
13
  import { getUniqueId } from "../../utils/helper.js";
14
+ import { isNil } from "../../utils/is.js";
14
15
  defineOptions({
15
16
  name: "PInput",
16
17
  inheritAttrs: false,
@@ -152,11 +153,11 @@ const emits = defineEmits([
152
153
  ]);
153
154
  const uniqueId = getUniqueId();
154
155
  const inputRef = shallowRef();
155
- const configProvider = useConfigProvider();
156
- const modelValue = useModelValue(props, emits, { withChange: false });
157
156
  const isComposing = shallowRef(false);
158
157
  const isPasswordVisible = shallowRef(!props.password);
159
158
  const inputType = computed(() => props.inputType || isPasswordVisible.value ? "text" : "password");
159
+ const configProvider = useConfigProvider();
160
+ const modelValue = useModelValue(props, emits, { withChange: false });
160
161
  const { isWordLimitShown, hasMaxLength, isWordLimitOutside, nativeMaxLength, wordLimitText, isWordLimitExceeded } = useWordLimit({
161
162
  modelValue,
162
163
  showWordLimit: () => props.showWordLimit,
@@ -226,10 +227,16 @@ function onKeydown(event) {
226
227
  if (props.readonly || props.disabled) {
227
228
  return;
228
229
  }
229
- if (event.key === "Enter") {
230
- onChange(event);
231
- } else if (event.key === "Escape" && props.clearOnPressEscape) {
232
- clear(event);
230
+ if (!isCompositionKeydown(event)) {
231
+ if (event.key === "Enter") {
232
+ onChange(event);
233
+ } else if (event.key === "Escape" && props.clearOnPressEscape) {
234
+ const hasValue = !isNil(modelValue.value) && modelValue.value !== "";
235
+ clear(event);
236
+ if (hasValue) {
237
+ event.preventDefault();
238
+ }
239
+ }
233
240
  }
234
241
  emits("keydown", event);
235
242
  }
@@ -1,4 +1,4 @@
1
- import type { ComponentSizeWithXs, ComponentClass } from '../../types/shared'
1
+ import type { ComponentSizeWithXs, ComponentClass } from '../../types/shared/props'
2
2
 
3
3
  export interface InputProps {
4
4
  size?: ComponentSizeWithXs
@@ -49,6 +49,9 @@ const containerSize = shallowRef({
49
49
  "--slot-estimated-width": getCssUnitValue(props.width),
50
50
  "--slot-estimated-height": getCssUnitValue(props.height)
51
51
  });
52
+ useIntersectionObserver(containerRef, ([{ entry }]) => {
53
+ onVisibleChange(entry.isIntersecting);
54
+ }, props);
52
55
  function getRenderedSlotSize() {
53
56
  const { offsetWidth, offsetHeight } = containerRef.value;
54
57
  containerSize.value = {
@@ -74,9 +77,6 @@ function onVisibleChange(isIntersecting) {
74
77
  }
75
78
  emits("visible-change", isIntersecting);
76
79
  }
77
- useIntersectionObserver(containerRef, ([{ entry }]) => {
78
- onVisibleChange(entry.isIntersecting);
79
- }, props);
80
80
  </script>
81
81
 
82
82
  <template>
@@ -48,13 +48,13 @@ const INTERNAL_KEYS = {
48
48
  ctrl: "Ctrl",
49
49
  enter: "↵"
50
50
  };
51
- const configProvider = useConfigProvider();
52
- const computedSize = computed(() => getFallbackValue(props.size, SIZES, configProvider.size));
53
51
  const internalKey = computed(() => {
54
52
  return Object.entries(INTERNAL_KEYS).filter(([k]) => {
55
53
  return props[k];
56
54
  }).map(([, v]) => v).join("");
57
55
  });
56
+ const configProvider = useConfigProvider();
57
+ const computedSize = computed(() => getFallbackValue(props.size, SIZES, configProvider.size));
58
58
  </script>
59
59
 
60
60
  <template>
@@ -1,4 +1,4 @@
1
- import type { ComponentSize, ComponentLabel } from '../../types/shared'
1
+ import type { ComponentSize, ComponentLabel } from '../../types/shared/props'
2
2
 
3
3
  export interface KbdProps {
4
4
  alt?: boolean
@@ -1,11 +1,11 @@
1
1
  import type { LinkButtonProps } from './types';
2
- declare var __VLS_11: {}, __VLS_13: {}, __VLS_16: {};
2
+ declare var __VLS_10: {}, __VLS_12: {}, __VLS_15: {};
3
3
  type __VLS_Slots = {} & {
4
- prefix?: (props: typeof __VLS_11) => any;
4
+ prefix?: (props: typeof __VLS_10) => any;
5
5
  } & {
6
- default?: (props: typeof __VLS_13) => any;
6
+ default?: (props: typeof __VLS_12) => any;
7
7
  } & {
8
- suffix?: (props: typeof __VLS_16) => any;
8
+ suffix?: (props: typeof __VLS_15) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<LinkButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
11
  click: (args_0: MouseEvent) => any;
@@ -13,7 +13,7 @@ declare const __VLS_base: import("vue").DefineComponent<LinkButtonProps, {}, {},
13
13
  onClick?: ((args_0: MouseEvent) => any) | undefined;
14
14
  }>, {
15
15
  target: "_blank" | "_self" | "_parent" | "_top";
16
- align: "left" | "center" | "right";
16
+ align: "center" | "left" | "right";
17
17
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
18
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
19
  declare const _default: typeof __VLS_export;
@@ -1,16 +1,16 @@
1
1
  import type { ListNavigationCommand } from '../../composables/_internal/use-list-navigation.js';
2
2
  import type { ListProps, ListOption, ListOptionSelected } from './types';
3
3
  declare function dispatchCommand(command: ListNavigationCommand): boolean;
4
- declare var __VLS_12: {
4
+ declare var __VLS_13: {
5
5
  item: ListOption;
6
6
  index: number;
7
7
  group: import("./types").ListOptionGroup | undefined;
8
8
  groupIndex: number | undefined;
9
- }, __VLS_19: {};
9
+ }, __VLS_20: {};
10
10
  type __VLS_Slots = {} & {
11
- item?: (props: typeof __VLS_12) => any;
11
+ item?: (props: typeof __VLS_13) => any;
12
12
  } & {
13
- empty?: (props: typeof __VLS_19) => any;
13
+ empty?: (props: typeof __VLS_20) => any;
14
14
  };
15
15
  declare const __VLS_base: import("vue").DefineComponent<ListProps, {
16
16
  focus: () => void | undefined;