pxd 0.0.64 → 0.1.2

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 (486) hide show
  1. package/README.md +21 -10
  2. package/dist/components/_internal/calendar-day.d.vue.ts +33 -0
  3. package/dist/components/_internal/calendar-day.vue +85 -0
  4. package/dist/components/_internal/dismiss-container.vue +68 -121
  5. package/dist/components/_internal/fragment-container.vue +3 -3
  6. package/dist/components/_internal/loading-mask.d.vue.ts +8 -0
  7. package/dist/components/_internal/loading-mask.vue +25 -0
  8. package/dist/components/_internal/mention-editor.d.vue.ts +42 -0
  9. package/dist/components/_internal/mention-editor.vue +114 -0
  10. package/dist/components/_internal/popover-arrow.vue +8 -5
  11. package/dist/components/_internal/tree-node.d.vue.ts +72 -0
  12. package/dist/components/_internal/tree-node.vue +260 -0
  13. package/dist/components/active-graph/index.d.vue.ts +2 -2
  14. package/dist/components/active-graph/index.vue +381 -239
  15. package/dist/components/active-graph/types.d.ts +2 -1
  16. package/dist/components/approval-card/index.d.vue.ts +28 -0
  17. package/dist/components/approval-card/index.vue +235 -0
  18. package/dist/components/approval-card/types.d.ts +37 -0
  19. package/dist/components/avatar/index.d.vue.ts +2 -2
  20. package/dist/components/avatar/index.vue +43 -72
  21. package/dist/components/avatar-group/index.d.vue.ts +1 -1
  22. package/dist/components/avatar-group/index.vue +38 -25
  23. package/dist/components/backtop/index.d.vue.ts +10 -3
  24. package/dist/components/backtop/index.vue +97 -54
  25. package/dist/components/backtop/types.d.ts +10 -3
  26. package/dist/components/badge/index.d.vue.ts +6 -3
  27. package/dist/components/badge/index.vue +126 -79
  28. package/dist/components/badge/types.d.ts +3 -2
  29. package/dist/components/book/index.vue +57 -162
  30. package/dist/components/border-beam/index.d.vue.ts +18 -0
  31. package/dist/components/border-beam/index.vue +64 -0
  32. package/dist/components/border-beam/types.d.ts +8 -0
  33. package/dist/components/{resizable-panel → breadcrumb}/index.d.vue.ts +3 -4
  34. package/dist/components/breadcrumb/index.vue +32 -0
  35. package/dist/components/breadcrumb/types.d.ts +6 -0
  36. package/dist/components/breadcrumb-item/index.d.vue.ts +16 -0
  37. package/dist/components/breadcrumb-item/index.vue +50 -0
  38. package/dist/components/breadcrumb-item/types.d.ts +4 -0
  39. package/dist/components/browser/index.d.vue.ts +2 -2
  40. package/dist/components/browser/index.vue +13 -28
  41. package/dist/components/bubble/index.d.vue.ts +6 -3
  42. package/dist/components/bubble/index.vue +85 -18
  43. package/dist/components/bubble/types.d.ts +3 -1
  44. package/dist/components/bubble-group/index.d.vue.ts +19 -0
  45. package/dist/components/bubble-group/index.vue +86 -0
  46. package/dist/components/bubble-group/types.d.ts +6 -0
  47. package/dist/components/bubble-group/types.js +0 -0
  48. package/dist/components/button/index.d.vue.ts +2 -1
  49. package/dist/components/button/index.vue +121 -86
  50. package/dist/components/button-group/index.vue +20 -7
  51. package/dist/components/calendar/index.d.vue.ts +41 -0
  52. package/dist/components/calendar/index.vue +247 -0
  53. package/dist/components/calendar/types.d.ts +37 -0
  54. package/dist/components/card/index.d.vue.ts +21 -0
  55. package/dist/components/card/index.vue +47 -0
  56. package/dist/components/card/types.d.ts +6 -0
  57. package/dist/components/carousel/index.d.vue.ts +8 -4
  58. package/dist/components/carousel/index.vue +232 -283
  59. package/dist/components/carousel/types.d.ts +15 -1
  60. package/dist/components/checkbox/index.d.vue.ts +6 -5
  61. package/dist/components/checkbox/index.vue +107 -90
  62. package/dist/components/checkbox/types.d.ts +6 -4
  63. package/dist/components/checkbox-group/index.d.vue.ts +6 -6
  64. package/dist/components/checkbox-group/index.vue +26 -11
  65. package/dist/components/checkbox-group/types.d.ts +3 -1
  66. package/dist/components/checkerboard/index.d.vue.ts +14 -0
  67. package/dist/components/checkerboard/index.vue +37 -0
  68. package/dist/components/checkerboard/types.d.ts +5 -0
  69. package/dist/components/chip/index.d.vue.ts +3 -1
  70. package/dist/components/chip/index.vue +49 -46
  71. package/dist/components/choicebox/index.d.vue.ts +7 -7
  72. package/dist/components/choicebox/index.vue +52 -30
  73. package/dist/components/choicebox-item/index.d.vue.ts +7 -5
  74. package/dist/components/choicebox-item/index.vue +172 -53
  75. package/dist/components/choicebox-item/types.d.ts +3 -7
  76. package/dist/components/collapse/index.d.vue.ts +2 -2
  77. package/dist/components/collapse/index.vue +72 -98
  78. package/dist/components/collapse-group/index.vue +43 -32
  79. package/dist/components/color-selector/index.vue +45 -41
  80. package/dist/components/command-menu/index.d.vue.ts +10 -7
  81. package/dist/components/command-menu/index.vue +103 -45
  82. package/dist/components/command-menu/types.d.ts +3 -2
  83. package/dist/components/config-provider/index.d.vue.ts +77 -3
  84. package/dist/components/config-provider/index.vue +54 -11
  85. package/dist/components/config-provider/types.d.ts +5 -3
  86. package/dist/components/copy-button/index.d.vue.ts +24 -0
  87. package/dist/components/copy-button/index.vue +40 -0
  88. package/dist/components/copy-button/types.d.ts +7 -0
  89. package/dist/components/countdown/index.d.vue.ts +1 -1
  90. package/dist/components/countdown/index.vue +77 -29
  91. package/dist/components/dash-line/index.d.vue.ts +2 -1
  92. package/dist/components/dash-line/index.vue +78 -76
  93. package/dist/components/date-picker/index.d.vue.ts +16 -0
  94. package/dist/components/date-picker/index.vue +295 -0
  95. package/dist/components/date-picker/types.d.ts +20 -0
  96. package/dist/components/description/index.vue +16 -7
  97. package/dist/components/drawer/index.d.vue.ts +5 -5
  98. package/dist/components/drawer/index.vue +138 -67
  99. package/dist/components/drawer/types.d.ts +1 -0
  100. package/dist/components/effort-slider/index.d.vue.ts +10 -0
  101. package/dist/components/effort-slider/index.vue +347 -0
  102. package/dist/components/effort-slider/types.d.ts +14 -0
  103. package/dist/components/ellipsis-text/index.d.vue.ts +1 -1
  104. package/dist/components/ellipsis-text/index.vue +208 -165
  105. package/dist/components/empty-state/index.vue +11 -4
  106. package/dist/components/error/index.d.vue.ts +3 -1
  107. package/dist/components/error/index.vue +42 -28
  108. package/dist/components/error/types.d.ts +1 -0
  109. package/dist/components/fader/index.d.vue.ts +1 -1
  110. package/dist/components/fader/index.vue +56 -112
  111. package/dist/components/fader/types.d.ts +2 -1
  112. package/dist/components/feedback-bar/index.d.vue.ts +12 -0
  113. package/dist/components/feedback-bar/index.vue +81 -0
  114. package/dist/components/feedback-bar/types.d.ts +9 -0
  115. package/dist/components/gauge/index.vue +89 -69
  116. package/dist/components/grid/index.vue +58 -52
  117. package/dist/components/grid-item/index.vue +44 -39
  118. package/dist/components/hold-button/index.vue +111 -115
  119. package/dist/components/hue-text/index.d.vue.ts +16 -0
  120. package/dist/components/hue-text/index.vue +48 -0
  121. package/dist/components/hue-text/types.d.ts +4 -0
  122. package/dist/components/index.d.ts +40 -5
  123. package/dist/components/index.js +40 -5
  124. package/dist/components/input/index.d.vue.ts +5 -4
  125. package/dist/components/input/index.vue +250 -134
  126. package/dist/components/input/types.d.ts +9 -6
  127. package/dist/components/intersection-observer/index.vue +65 -42
  128. package/dist/components/kbd/index.vue +45 -23
  129. package/dist/components/label/index.vue +7 -3
  130. package/dist/components/link-button/index.vue +49 -32
  131. package/dist/components/list/index.d.vue.ts +22 -14
  132. package/dist/components/list/index.vue +238 -77
  133. package/dist/components/list/types.d.ts +39 -11
  134. package/dist/components/list-group/index.d.vue.ts +4 -0
  135. package/dist/components/list-group/index.vue +22 -0
  136. package/dist/components/list-group/types.d.ts +5 -0
  137. package/dist/components/list-item/index.d.vue.ts +7 -7
  138. package/dist/components/list-item/index.vue +78 -76
  139. package/dist/components/list-item/types.d.ts +7 -4
  140. package/dist/components/loading-bar/index.vue +152 -145
  141. package/dist/components/loading-dots/index.d.vue.ts +1 -13
  142. package/dist/components/loading-dots/index.vue +13 -15
  143. package/dist/components/marching-ants/index.d.vue.ts +25 -0
  144. package/dist/components/marching-ants/index.vue +486 -0
  145. package/dist/components/marching-ants/types.d.ts +9 -0
  146. package/dist/components/marquee/index.d.vue.ts +37 -0
  147. package/dist/components/marquee/index.vue +242 -0
  148. package/dist/components/marquee/types.d.ts +18 -0
  149. package/dist/components/material/index.vue +22 -28
  150. package/dist/components/mention/index.d.vue.ts +38 -0
  151. package/dist/components/mention/index.vue +251 -0
  152. package/dist/components/mention/types.d.ts +35 -0
  153. package/dist/components/menu/index.d.vue.ts +17 -10
  154. package/dist/components/menu/index.vue +98 -27
  155. package/dist/components/menu/types.d.ts +7 -5
  156. package/dist/components/message/composables/use-group-expand.js +1 -1
  157. package/dist/components/message/composables/use-message-timer.js +2 -1
  158. package/dist/components/message/composables/use-promise-message.js +4 -4
  159. package/dist/components/message/index.d.vue.ts +7 -7
  160. package/dist/components/message/index.vue +141 -234
  161. package/dist/components/message-item/index.vue +50 -62
  162. package/dist/components/modal/index.d.vue.ts +4 -4
  163. package/dist/components/modal/index.vue +125 -63
  164. package/dist/components/modal/types.d.ts +1 -3
  165. package/dist/components/more-button/index.vue +25 -13
  166. package/dist/components/noise-background/index.d.vue.ts +0 -16
  167. package/dist/components/noise-background/index.vue +70 -9
  168. package/dist/components/noise-background/types.d.ts +4 -0
  169. package/dist/components/note/index.d.vue.ts +1 -1
  170. package/dist/components/note/index.vue +108 -98
  171. package/dist/components/note/types.d.ts +1 -0
  172. package/dist/components/number-input/index.d.vue.ts +1 -3
  173. package/dist/components/number-input/index.vue +196 -161
  174. package/dist/components/number-input/types.d.ts +1 -2
  175. package/dist/components/overlay/index.d.vue.ts +2 -2
  176. package/dist/components/overlay/index.vue +110 -68
  177. package/dist/components/page-number/index.d.vue.ts +18 -0
  178. package/dist/components/page-number/index.vue +232 -0
  179. package/dist/components/page-number/types.d.ts +18 -0
  180. package/dist/components/pagination/index.vue +14 -7
  181. package/dist/components/pin-input/index.d.vue.ts +2 -2
  182. package/dist/components/pin-input/index.vue +191 -173
  183. package/dist/components/placeholder/index.vue +22 -32
  184. package/dist/components/popover/index.d.vue.ts +0 -47
  185. package/dist/components/popover/index.vue +528 -345
  186. package/dist/components/popover/types.d.ts +7 -0
  187. package/dist/components/progress/index.d.vue.ts +2 -8
  188. package/dist/components/progress/index.vue +84 -62
  189. package/dist/components/progress/types.d.ts +0 -5
  190. package/dist/components/project-banner/index.d.vue.ts +3 -1
  191. package/dist/components/project-banner/index.vue +36 -34
  192. package/dist/components/project-banner/types.d.ts +1 -1
  193. package/dist/components/questionnaire/index.d.vue.ts +10 -0
  194. package/dist/components/questionnaire/index.vue +353 -0
  195. package/dist/components/questionnaire/types.d.ts +30 -0
  196. package/dist/components/radial-burst/index.d.vue.ts +14 -0
  197. package/dist/components/radial-burst/index.vue +53 -0
  198. package/dist/components/radial-burst/types.d.ts +5 -0
  199. package/dist/components/radio/index.d.vue.ts +4 -4
  200. package/dist/components/radio/index.vue +56 -74
  201. package/dist/components/radio-group/index.d.vue.ts +4 -4
  202. package/dist/components/radio-group/index.vue +26 -12
  203. package/dist/components/rating/index.d.vue.ts +17 -0
  204. package/dist/components/rating/index.vue +253 -0
  205. package/dist/components/rating/types.d.ts +18 -0
  206. package/dist/components/reasoning/index.d.vue.ts +16 -0
  207. package/dist/components/reasoning/index.vue +68 -0
  208. package/dist/components/reasoning/types.d.ts +3 -0
  209. package/dist/components/resizable/index.d.vue.ts +27 -4
  210. package/dist/components/resizable/index.vue +404 -158
  211. package/dist/components/resizable/types.d.ts +20 -13
  212. package/dist/components/resizable/utils.d.ts +4 -0
  213. package/dist/components/resizable/utils.js +10 -0
  214. package/dist/components/reveal/index.d.vue.ts +22 -0
  215. package/dist/components/reveal/index.vue +100 -0
  216. package/dist/components/reveal/types.d.ts +15 -0
  217. package/dist/components/rolling-number/index.d.vue.ts +17 -0
  218. package/dist/components/rolling-number/index.vue +252 -0
  219. package/dist/components/rolling-number/types.d.ts +11 -0
  220. package/dist/components/scalable-text/index.vue +113 -110
  221. package/dist/components/scroll-progress/index.d.vue.ts +22 -0
  222. package/dist/components/scroll-progress/index.vue +75 -0
  223. package/dist/components/scroll-progress/types.d.ts +9 -0
  224. package/dist/components/scroll-text/index.d.vue.ts +18 -0
  225. package/dist/components/scroll-text/index.vue +123 -0
  226. package/dist/components/scroll-text/types.d.ts +7 -0
  227. package/dist/components/scrollable/index.d.vue.ts +3 -3
  228. package/dist/components/scrollable/index.vue +281 -222
  229. package/dist/components/search-input/index.d.vue.ts +152 -0
  230. package/dist/components/search-input/index.vue +55 -0
  231. package/dist/components/search-input/types.d.ts +7 -0
  232. package/dist/components/select/index.d.vue.ts +33 -0
  233. package/dist/components/select/index.vue +134 -0
  234. package/dist/components/select/types.d.ts +23 -0
  235. package/dist/components/separator/index.vue +9 -6
  236. package/dist/components/shimmer-text/index.d.vue.ts +18 -0
  237. package/dist/components/shimmer-text/index.vue +216 -0
  238. package/dist/components/shimmer-text/types.d.ts +14 -0
  239. package/dist/components/skeleton/index.d.vue.ts +2 -2
  240. package/dist/components/skeleton/index.vue +59 -51
  241. package/dist/components/slider/index.d.vue.ts +2 -2
  242. package/dist/components/slider/index.vue +391 -261
  243. package/dist/components/slider/types.d.ts +3 -1
  244. package/dist/components/snippet/index.d.vue.ts +2 -1
  245. package/dist/components/snippet/index.vue +80 -69
  246. package/dist/components/snippet/types.d.ts +3 -3
  247. package/dist/components/spinner/index.vue +9 -8
  248. package/dist/components/spinner-dots/index.d.vue.ts +7 -0
  249. package/dist/components/spinner-dots/index.vue +232 -0
  250. package/dist/components/spinner-dots/types.d.ts +9 -0
  251. package/dist/components/split-button/index.d.vue.ts +31 -0
  252. package/dist/components/split-button/index.vue +93 -0
  253. package/dist/components/split-button/types.d.ts +18 -0
  254. package/dist/components/stack/index.d.vue.ts +1 -1
  255. package/dist/components/stack/index.vue +98 -84
  256. package/dist/components/status-dot/index.d.vue.ts +1 -1
  257. package/dist/components/status-dot/index.vue +34 -20
  258. package/dist/components/steps/index.d.vue.ts +28 -0
  259. package/dist/components/steps/index.vue +143 -0
  260. package/dist/components/steps/step-item.d.vue.ts +24 -0
  261. package/dist/components/steps/step-item.vue +86 -0
  262. package/dist/components/steps/types.d.ts +25 -0
  263. package/dist/components/stick-to-bottom/index.d.vue.ts +35 -0
  264. package/dist/components/stick-to-bottom/index.vue +78 -0
  265. package/dist/components/stick-to-bottom/types.d.ts +13 -0
  266. package/dist/components/swipe-cell/index.d.vue.ts +53 -0
  267. package/dist/components/swipe-cell/index.vue +412 -0
  268. package/dist/components/swipe-cell/instances.d.ts +7 -0
  269. package/dist/components/swipe-cell/instances.js +17 -0
  270. package/dist/components/swipe-cell/types.d.ts +52 -0
  271. package/dist/components/switch/index.d.vue.ts +1 -1
  272. package/dist/components/switch/index.vue +42 -21
  273. package/dist/components/switch-item/index.vue +36 -37
  274. package/dist/components/tabs/index.d.vue.ts +8 -6
  275. package/dist/components/tabs/index.vue +242 -196
  276. package/dist/components/tabs/tab-slot.d.ts +24 -0
  277. package/dist/components/tabs/tab-slot.js +13 -0
  278. package/dist/components/tabs/types.d.ts +11 -5
  279. package/dist/components/teleport/index.vue +69 -60
  280. package/dist/components/text/index.d.vue.ts +1 -1
  281. package/dist/components/text/index.vue +68 -57
  282. package/dist/components/textarea/index.d.vue.ts +7 -5
  283. package/dist/components/textarea/index.vue +148 -71
  284. package/dist/components/textarea/types.d.ts +5 -2
  285. package/dist/components/theme-switcher/index.d.vue.ts +2 -2
  286. package/dist/components/theme-switcher/index.vue +8 -12
  287. package/dist/components/time-picker/index.d.vue.ts +7 -8
  288. package/dist/components/time-picker/index.vue +246 -183
  289. package/dist/components/time-picker/types.d.ts +7 -7
  290. package/dist/components/timeline/index.d.vue.ts +6 -0
  291. package/dist/components/timeline/index.vue +52 -0
  292. package/dist/components/timeline/types.d.ts +6 -0
  293. package/dist/components/timeline-item/index.d.vue.ts +22 -0
  294. package/dist/components/timeline-item/index.vue +110 -0
  295. package/dist/components/timeline-item/types.d.ts +16 -0
  296. package/dist/components/toc/index.d.vue.ts +37 -0
  297. package/dist/components/toc/index.vue +199 -0
  298. package/dist/components/toc/types.d.ts +28 -0
  299. package/dist/components/todo-list/index.d.vue.ts +64 -0
  300. package/dist/components/todo-list/index.vue +357 -0
  301. package/dist/components/todo-list/types.d.ts +53 -0
  302. package/dist/components/toggle/index.d.vue.ts +6 -6
  303. package/dist/components/toggle/index.vue +92 -41
  304. package/dist/components/toggle/types.d.ts +1 -1
  305. package/dist/components/toggle-button/index.d.vue.ts +5 -5
  306. package/dist/components/toggle-button/index.vue +120 -84
  307. package/dist/components/toggle-button/types.d.ts +6 -4
  308. package/dist/components/toggle-button-group/index.d.vue.ts +7 -6
  309. package/dist/components/toggle-button-group/index.vue +63 -43
  310. package/dist/components/tool-call/index.d.vue.ts +6 -0
  311. package/dist/components/tool-call/index.vue +209 -0
  312. package/dist/components/tool-call/types.d.ts +8 -0
  313. package/dist/components/tooltip/index.d.vue.ts +5 -2
  314. package/dist/components/tooltip/index.vue +105 -50
  315. package/dist/components/tooltip/types.d.ts +1 -0
  316. package/dist/components/tree/index.d.vue.ts +108 -0
  317. package/dist/components/tree/index.vue +684 -0
  318. package/dist/components/tree/types.d.ts +126 -0
  319. package/dist/components/virtual-list/index.d.vue.ts +7 -9
  320. package/dist/components/virtual-list/index.vue +120 -54
  321. package/dist/components/virtual-list/types.d.ts +0 -1
  322. package/dist/composables/_internal/use-collapse-motion.d.ts +6 -0
  323. package/dist/composables/_internal/use-collapse-motion.js +85 -0
  324. package/dist/composables/{use-focus-trap.d.ts → _internal/use-focus-trap.d.ts} +2 -2
  325. package/dist/composables/_internal/use-focus-trap.js +64 -0
  326. package/dist/composables/{use-forward-ref-expose.js → _internal/use-forward-ref-expose.js} +1 -1
  327. package/dist/composables/_internal/use-list-filter.d.ts +15 -0
  328. package/dist/composables/_internal/use-list-filter.js +48 -0
  329. package/dist/composables/_internal/use-list-keyboard-controller.d.ts +21 -0
  330. package/dist/composables/_internal/use-list-keyboard-controller.js +27 -0
  331. package/dist/composables/_internal/use-list-navigation.d.ts +25 -0
  332. package/dist/composables/_internal/use-list-navigation.js +141 -0
  333. package/dist/composables/_internal/use-list-rows.d.ts +29 -0
  334. package/dist/composables/_internal/use-list-rows.js +58 -0
  335. package/dist/composables/_internal/use-list-selection.d.ts +23 -0
  336. package/dist/composables/_internal/use-list-selection.js +41 -0
  337. package/dist/composables/_internal/use-lock-scroll.js +57 -0
  338. package/dist/composables/_internal/use-mention-editor.d.ts +35 -0
  339. package/dist/composables/_internal/use-mention-editor.js +508 -0
  340. package/dist/composables/_internal/use-mention-suggest.d.ts +23 -0
  341. package/dist/composables/_internal/use-mention-suggest.js +113 -0
  342. package/dist/composables/{use-model-value.d.ts → _internal/use-model-value.d.ts} +1 -1
  343. package/dist/composables/_internal/use-model-value.js +13 -0
  344. package/dist/composables/_internal/use-motion-reduce.d.ts +6 -0
  345. package/dist/composables/_internal/use-motion-reduce.js +40 -0
  346. package/dist/composables/_internal/use-overlay-dialog.d.ts +25 -0
  347. package/dist/composables/_internal/use-overlay-dialog.js +25 -0
  348. package/dist/composables/{use-overlay-manager.js → _internal/use-overlay-manager.js} +2 -2
  349. package/dist/composables/{use-popover-responsive.js → _internal/use-popover-responsive.js} +1 -1
  350. package/dist/composables/_internal/use-selected-list-item.d.ts +6 -0
  351. package/dist/composables/_internal/use-selected-list-item.js +36 -0
  352. package/dist/composables/_internal/use-swipe-gesture.d.ts +88 -0
  353. package/dist/composables/_internal/use-swipe-gesture.js +345 -0
  354. package/dist/composables/_internal/use-tailwind-variant.d.ts +31 -0
  355. package/dist/composables/_internal/use-tailwind-variant.js +62 -0
  356. package/dist/composables/_internal/use-tree-drag.d.ts +23 -0
  357. package/dist/composables/_internal/use-tree-drag.js +196 -0
  358. package/dist/composables/_internal/use-tree-move.d.ts +20 -0
  359. package/dist/composables/_internal/use-tree-move.js +96 -0
  360. package/dist/composables/_internal/use-tree-rows.d.ts +46 -0
  361. package/dist/composables/_internal/use-tree-rows.js +101 -0
  362. package/dist/composables/_internal/use-tree-selection.d.ts +22 -0
  363. package/dist/composables/_internal/use-tree-selection.js +87 -0
  364. package/dist/composables/_internal/use-word-limit.d.ts +24 -0
  365. package/dist/composables/_internal/use-word-limit.js +36 -0
  366. package/dist/composables/index.d.ts +7 -10
  367. package/dist/composables/index.js +7 -10
  368. package/dist/composables/use-backoff-retry.d.ts +51 -0
  369. package/dist/composables/use-backoff-retry.js +116 -0
  370. package/dist/composables/use-color-scheme.js +28 -25
  371. package/dist/composables/use-copy-click.d.ts +2 -1
  372. package/dist/composables/use-copy-click.js +21 -18
  373. package/dist/composables/use-countdown.d.ts +0 -9
  374. package/dist/composables/use-countdown.js +12 -4
  375. package/dist/composables/use-deferred-value.js +1 -1
  376. package/dist/composables/use-delay-change.js +6 -2
  377. package/dist/composables/use-delay-destroy.d.ts +1 -1
  378. package/dist/composables/use-delay-destroy.js +16 -9
  379. package/dist/composables/use-intersection-observer.d.ts +6 -0
  380. package/dist/composables/use-intersection-observer.js +38 -0
  381. package/dist/composables/use-media-query.d.ts +0 -3
  382. package/dist/composables/use-media-query.js +19 -19
  383. package/dist/composables/use-mutation-observer.d.ts +6 -0
  384. package/dist/composables/use-mutation-observer.js +42 -0
  385. package/dist/composables/use-outside-click.d.ts +6 -4
  386. package/dist/composables/use-outside-click.js +18 -10
  387. package/dist/composables/use-repeat-action.js +31 -20
  388. package/dist/composables/use-resize-observer.d.ts +6 -0
  389. package/dist/composables/use-resize-observer.js +22 -0
  390. package/dist/composables/use-scrollspy.d.ts +15 -0
  391. package/dist/composables/use-scrollspy.js +98 -0
  392. package/dist/composables/use-stick-to-bottom.d.ts +32 -0
  393. package/dist/composables/use-stick-to-bottom.js +106 -0
  394. package/dist/composables/use-view-transition.d.ts +20 -0
  395. package/dist/composables/use-view-transition.js +79 -0
  396. package/dist/composables/use-virtual-list.d.ts +8 -5
  397. package/dist/composables/use-virtual-list.js +86 -19
  398. package/dist/contexts/breadcrumb.d.ts +2 -0
  399. package/dist/contexts/breadcrumb.js +2 -0
  400. package/dist/contexts/choicebox.d.ts +1 -0
  401. package/dist/contexts/config-provider.d.ts +3 -2
  402. package/dist/contexts/config-provider.js +4 -3
  403. package/dist/contexts/list.d.ts +4 -25
  404. package/dist/contexts/list.js +0 -8
  405. package/dist/locales/en-us.d.ts +56 -28
  406. package/dist/locales/en-us.js +56 -28
  407. package/dist/locales/index.d.ts +1 -0
  408. package/dist/locales/zh-cn.d.ts +55 -28
  409. package/dist/locales/zh-cn.js +69 -28
  410. package/dist/plugins/dayjs-millisecond-token.d.ts +2 -4
  411. package/dist/plugins/dayjs-millisecond-token.js +1 -2
  412. package/dist/styles/source.css +55 -20
  413. package/dist/styles/styles.css +2 -2
  414. package/dist/styles/tw.css +54 -20
  415. package/dist/types/shared/props.d.ts +5 -3
  416. package/dist/types/shared/utils.d.ts +7 -0
  417. package/dist/utils/context.js +2 -1
  418. package/dist/utils/date.d.ts +1 -15
  419. package/dist/utils/date.js +2 -11
  420. package/dist/utils/dom.d.ts +19 -21
  421. package/dist/utils/dom.js +57 -28
  422. package/dist/utils/event.d.ts +14 -2
  423. package/dist/utils/event.js +65 -27
  424. package/dist/utils/format.d.ts +5 -4
  425. package/dist/utils/format.js +33 -13
  426. package/dist/utils/fuzzy-match.d.ts +2 -0
  427. package/dist/utils/fuzzy-match.js +182 -0
  428. package/dist/utils/helper.d.ts +17 -0
  429. package/dist/utils/helper.js +57 -0
  430. package/dist/utils/is.d.ts +5 -1
  431. package/dist/utils/is.js +10 -2
  432. package/dist/utils/mention-html.d.ts +33 -0
  433. package/dist/utils/mention-html.js +146 -0
  434. package/dist/utils/merge.d.ts +1 -0
  435. package/dist/utils/merge.js +19 -0
  436. package/dist/utils/observer.d.ts +42 -0
  437. package/dist/utils/observer.js +173 -0
  438. package/dist/utils/timing.d.ts +19 -6
  439. package/dist/utils/timing.js +74 -16
  440. package/package.json +48 -37
  441. package/volar.d.ts +40 -5
  442. package/dist/components/carousel-item/index.d.vue.ts +0 -13
  443. package/dist/components/carousel-item/index.vue +0 -54
  444. package/dist/components/command-menu-group/index.d.vue.ts +0 -14
  445. package/dist/components/command-menu-group/index.vue +0 -31
  446. package/dist/components/command-menu-group/types.d.ts +0 -5
  447. package/dist/components/resizable-handle/index.d.vue.ts +0 -6
  448. package/dist/components/resizable-handle/index.vue +0 -116
  449. package/dist/components/resizable-panel/index.vue +0 -57
  450. package/dist/components/resizable-panel/types.d.ts +0 -4
  451. package/dist/components/tabs-item/index.d.vue.ts +0 -4
  452. package/dist/components/tabs-item/index.vue +0 -16
  453. package/dist/components/tabs-item/types.d.ts +0 -10
  454. package/dist/composables/use-browser-observer.d.ts +0 -12
  455. package/dist/composables/use-browser-observer.js +0 -74
  456. package/dist/composables/use-focus-trap.js +0 -54
  457. package/dist/composables/use-list-filter.d.ts +0 -11
  458. package/dist/composables/use-list-filter.js +0 -56
  459. package/dist/composables/use-list-navigation.d.ts +0 -27
  460. package/dist/composables/use-list-navigation.js +0 -159
  461. package/dist/composables/use-lock-scroll.js +0 -37
  462. package/dist/composables/use-model-value.js +0 -13
  463. package/dist/composables/use-swipe-gesture.d.ts +0 -65
  464. package/dist/composables/use-swipe-gesture.js +0 -98
  465. package/dist/contexts/carousel.d.ts +0 -14
  466. package/dist/contexts/carousel.js +0 -2
  467. package/dist/contexts/resizable.d.ts +0 -27
  468. package/dist/contexts/resizable.js +0 -2
  469. package/dist/contexts/tabs.d.ts +0 -15
  470. package/dist/contexts/tabs.js +0 -2
  471. package/dist/plugins/any-touch.d.ts +0 -213
  472. package/dist/plugins/any-touch.js +0 -592
  473. package/dist/utils/fuzzy-search.d.ts +0 -7
  474. package/dist/utils/fuzzy-search.js +0 -61
  475. package/dist/utils/get.d.ts +0 -9
  476. package/dist/utils/get.js +0 -55
  477. package/dist/utils/index.d.ts +0 -10
  478. package/dist/utils/index.js +0 -10
  479. package/dist/utils/ref.d.ts +0 -5
  480. package/dist/utils/ref.js +0 -8
  481. package/dist/utils/uid.d.ts +0 -1
  482. package/dist/utils/uid.js +0 -4
  483. /package/dist/composables/{use-forward-ref-expose.d.ts → _internal/use-forward-ref-expose.d.ts} +0 -0
  484. /package/dist/composables/{use-lock-scroll.d.ts → _internal/use-lock-scroll.d.ts} +0 -0
  485. /package/dist/composables/{use-overlay-manager.d.ts → _internal/use-overlay-manager.d.ts} +0 -0
  486. /package/dist/composables/{use-popover-responsive.d.ts → _internal/use-popover-responsive.d.ts} +0 -0
@@ -1,17 +1,24 @@
1
1
  export { default as ActiveGraph } from "./active-graph/index.vue";
2
+ export { default as ApprovalCard } from "./approval-card/index.vue";
2
3
  export { default as Avatar } from "./avatar/index.vue";
3
4
  export { default as AvatarGroup } from "./avatar-group/index.vue";
4
5
  export { default as Backtop } from "./backtop/index.vue";
5
6
  export { default as Badge } from "./badge/index.vue";
6
7
  export { default as Book } from "./book/index.vue";
8
+ export { default as BorderBeam } from "./border-beam/index.vue";
9
+ export { default as Breadcrumb } from "./breadcrumb/index.vue";
10
+ export { default as BreadcrumbItem } from "./breadcrumb-item/index.vue";
7
11
  export { default as Browser } from "./browser/index.vue";
8
12
  export { default as Bubble } from "./bubble/index.vue";
13
+ export { default as BubbleGroup } from "./bubble-group/index.vue";
9
14
  export { default as Button } from "./button/index.vue";
10
15
  export { default as ButtonGroup } from "./button-group/index.vue";
16
+ export { default as Calendar } from "./calendar/index.vue";
17
+ export { default as Card } from "./card/index.vue";
11
18
  export { default as Carousel } from "./carousel/index.vue";
12
- export { default as CarouselItem } from "./carousel-item/index.vue";
13
19
  export { default as Checkbox } from "./checkbox/index.vue";
14
20
  export { default as CheckboxGroup } from "./checkbox-group/index.vue";
21
+ export { default as Checkerboard } from "./checkerboard/index.vue";
15
22
  export { default as Chip } from "./chip/index.vue";
16
23
  export { default as Choicebox } from "./choicebox/index.vue";
17
24
  export { default as ChoiceboxItem } from "./choicebox-item/index.vue";
@@ -19,30 +26,38 @@ export { default as Collapse } from "./collapse/index.vue";
19
26
  export { default as CollapseGroup } from "./collapse-group/index.vue";
20
27
  export { default as ColorSelector } from "./color-selector/index.vue";
21
28
  export { default as CommandMenu } from "./command-menu/index.vue";
22
- export { default as CommandMenuGroup } from "./command-menu-group/index.vue";
23
29
  export { default as ConfigProvider } from "./config-provider/index.vue";
30
+ export { default as CopyButton } from "./copy-button/index.vue";
24
31
  export { default as Countdown } from "./countdown/index.vue";
25
32
  export { default as DashLine } from "./dash-line/index.vue";
33
+ export { default as DatePicker } from "./date-picker/index.vue";
26
34
  export { default as Description } from "./description/index.vue";
27
35
  export { default as Drawer } from "./drawer/index.vue";
36
+ export { default as EffortSlider } from "./effort-slider/index.vue";
28
37
  export { default as EllipsisText } from "./ellipsis-text/index.vue";
29
38
  export { default as EmptyState } from "./empty-state/index.vue";
30
39
  export { default as Error } from "./error/index.vue";
31
40
  export { default as Fader } from "./fader/index.vue";
41
+ export { default as FeedbackBar } from "./feedback-bar/index.vue";
32
42
  export { default as Gauge } from "./gauge/index.vue";
33
43
  export { default as Grid } from "./grid/index.vue";
34
44
  export { default as GridItem } from "./grid-item/index.vue";
35
45
  export { default as HoldButton } from "./hold-button/index.vue";
46
+ export { default as HueText } from "./hue-text/index.vue";
36
47
  export { default as Input } from "./input/index.vue";
37
48
  export { default as IntersectionObserver } from "./intersection-observer/index.vue";
38
49
  export { default as Kbd } from "./kbd/index.vue";
39
50
  export { default as Label } from "./label/index.vue";
40
51
  export { default as LinkButton } from "./link-button/index.vue";
41
52
  export { default as List } from "./list/index.vue";
53
+ export { default as ListGroup } from "./list-group/index.vue";
42
54
  export { default as ListItem } from "./list-item/index.vue";
43
55
  export { default as LoadingBar } from "./loading-bar/index.vue";
44
56
  export { default as LoadingDots } from "./loading-dots/index.vue";
57
+ export { default as MarchingAnts } from "./marching-ants/index.vue";
58
+ export { default as Marquee } from "./marquee/index.vue";
45
59
  export { default as Material } from "./material/index.vue";
60
+ export { default as Mention } from "./mention/index.vue";
46
61
  export { default as Menu } from "./menu/index.vue";
47
62
  export { default as Message } from "./message/index.vue";
48
63
  export { default as MessageItem } from "./message-item/index.vue";
@@ -52,37 +67,57 @@ export { default as NoiseBackground } from "./noise-background/index.vue";
52
67
  export { default as Note } from "./note/index.vue";
53
68
  export { default as NumberInput } from "./number-input/index.vue";
54
69
  export { default as Overlay } from "./overlay/index.vue";
70
+ export { default as PageNumber } from "./page-number/index.vue";
55
71
  export { default as Pagination } from "./pagination/index.vue";
56
72
  export { default as PinInput } from "./pin-input/index.vue";
57
73
  export { default as Placeholder } from "./placeholder/index.vue";
58
74
  export { default as Popover } from "./popover/index.vue";
59
75
  export { default as Progress } from "./progress/index.vue";
60
76
  export { default as ProjectBanner } from "./project-banner/index.vue";
77
+ export { default as Questionnaire } from "./questionnaire/index.vue";
78
+ export { default as RadialBurst } from "./radial-burst/index.vue";
61
79
  export { default as Radio } from "./radio/index.vue";
62
80
  export { default as RadioGroup } from "./radio-group/index.vue";
81
+ export { default as Rating } from "./rating/index.vue";
82
+ export { default as Reasoning } from "./reasoning/index.vue";
63
83
  export { default as Resizable } from "./resizable/index.vue";
64
- export { default as ResizableHandle } from "./resizable-handle/index.vue";
65
- export { default as ResizablePanel } from "./resizable-panel/index.vue";
84
+ export { default as Reveal } from "./reveal/index.vue";
85
+ export { default as RollingNumber } from "./rolling-number/index.vue";
66
86
  export { default as ScalableText } from "./scalable-text/index.vue";
87
+ export { default as ScrollProgress } from "./scroll-progress/index.vue";
88
+ export { default as ScrollText } from "./scroll-text/index.vue";
67
89
  export { default as Scrollable } from "./scrollable/index.vue";
90
+ export { default as SearchInput } from "./search-input/index.vue";
91
+ export { default as Select } from "./select/index.vue";
68
92
  export { default as Separator } from "./separator/index.vue";
93
+ export { default as ShimmerText } from "./shimmer-text/index.vue";
69
94
  export { default as Skeleton } from "./skeleton/index.vue";
70
95
  export { default as Slider } from "./slider/index.vue";
71
96
  export { default as Snippet } from "./snippet/index.vue";
72
97
  export { default as Spinner } from "./spinner/index.vue";
98
+ export { default as SpinnerDots } from "./spinner-dots/index.vue";
99
+ export { default as SplitButton } from "./split-button/index.vue";
73
100
  export { default as Stack } from "./stack/index.vue";
74
101
  export { default as StatusDot } from "./status-dot/index.vue";
102
+ export { default as Steps } from "./steps/index.vue";
103
+ export { default as StickToBottom } from "./stick-to-bottom/index.vue";
104
+ export { default as SwipeCell } from "./swipe-cell/index.vue";
75
105
  export { default as Switch } from "./switch/index.vue";
76
106
  export { default as SwitchItem } from "./switch-item/index.vue";
77
107
  export { default as Tabs } from "./tabs/index.vue";
78
- export { default as TabsItem } from "./tabs-item/index.vue";
79
108
  export { default as Teleport } from "./teleport/index.vue";
80
109
  export { default as Text } from "./text/index.vue";
81
110
  export { default as Textarea } from "./textarea/index.vue";
82
111
  export { default as ThemeSwitcher } from "./theme-switcher/index.vue";
83
112
  export { default as TimePicker } from "./time-picker/index.vue";
113
+ export { default as Timeline } from "./timeline/index.vue";
114
+ export { default as TimelineItem } from "./timeline-item/index.vue";
115
+ export { default as Toc } from "./toc/index.vue";
116
+ export { default as TodoList } from "./todo-list/index.vue";
84
117
  export { default as Toggle } from "./toggle/index.vue";
85
118
  export { default as ToggleButton } from "./toggle-button/index.vue";
86
119
  export { default as ToggleButtonGroup } from "./toggle-button-group/index.vue";
120
+ export { default as ToolCall } from "./tool-call/index.vue";
87
121
  export { default as Tooltip } from "./tooltip/index.vue";
122
+ export { default as Tree } from "./tree/index.vue";
88
123
  export { default as VirtualList } from "./virtual-list/index.vue";
@@ -17,9 +17,8 @@ declare const __VLS_base: import("vue").DefineComponent<InputProps, {
17
17
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
18
18
  change: (args_0: string, args_1: Event) => any;
19
19
  "update:modelValue": (args_0: string) => any;
20
- input: (args_0: string) => any;
21
- blur: (args_0: FocusEvent) => any;
22
20
  click: (args_0: MouseEvent) => any;
21
+ blur: (args_0: FocusEvent) => any;
23
22
  compositionend: (args_0: CompositionEvent) => any;
24
23
  compositionstart: (args_0: CompositionEvent) => any;
25
24
  compositionupdate: (args_0: CompositionEvent) => any;
@@ -28,9 +27,8 @@ declare const __VLS_base: import("vue").DefineComponent<InputProps, {
28
27
  }, string, import("vue").PublicProps, Readonly<InputProps> & Readonly<{
29
28
  onChange?: ((args_0: string, args_1: Event) => any) | undefined;
30
29
  "onUpdate:modelValue"?: ((args_0: string) => any) | undefined;
31
- onInput?: ((args_0: string) => any) | undefined;
32
- onBlur?: ((args_0: FocusEvent) => any) | undefined;
33
30
  onClick?: ((args_0: MouseEvent) => any) | undefined;
31
+ onBlur?: ((args_0: FocusEvent) => any) | undefined;
34
32
  onCompositionend?: ((args_0: CompositionEvent) => any) | undefined;
35
33
  onCompositionstart?: ((args_0: CompositionEvent) => any) | undefined;
36
34
  onCompositionupdate?: ((args_0: CompositionEvent) => any) | undefined;
@@ -38,6 +36,9 @@ declare const __VLS_base: import("vue").DefineComponent<InputProps, {
38
36
  onKeydown?: ((args_0: KeyboardEvent) => any) | undefined;
39
37
  }>, {
40
38
  align: "left" | "center" | "right";
39
+ trimOverflow: boolean;
40
+ wordLimitPosition: "inside" | "outside";
41
+ clearOnPressEscape: boolean;
41
42
  defaultPrefixStyle: boolean;
42
43
  defaultSuffixStyle: boolean;
43
44
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -2,82 +2,154 @@
2
2
  import CrossIcon from "@gdsicon/vue/cross";
3
3
  import EyeIcon from "@gdsicon/vue/eye";
4
4
  import EyeOffIcon from "@gdsicon/vue/eye-off";
5
- import { tv } from "tailwind-variants";
6
5
  import { computed, shallowRef } from "vue";
7
- import { useModelValue } from "../../composables/use-model-value";
8
- import { BASIC_HEIGHTS } from "../../constants/size";
9
- import { useConfigProvider } from "../../contexts/config-provider";
10
- import { NOOP } from "../../utils/event";
11
- import { isTruthyProp } from "../../utils/format";
12
- import { getUniqueId } from "../../utils/uid";
6
+ import { useModelValue } from "../../composables/_internal/use-model-value.js";
7
+ import { useTailwindVariant } from "../../composables/_internal/use-tailwind-variant.js";
8
+ import { useWordLimit } from "../../composables/_internal/use-word-limit.js";
9
+ import { BASIC_HEIGHTS } from "../../constants/size.js";
10
+ import { useConfigProvider } from "../../contexts/config-provider.js";
11
+ import { NOOP } from "../../utils/event.js";
12
+ import { isTruthyProp } from "../../utils/format.js";
13
+ import { getUniqueId } from "../../utils/helper.js";
13
14
  defineOptions({
14
- name: "PInput",
15
- inheritAttrs: false,
16
- model: {
17
- prop: "modelValue",
18
- event: "update:modelValue"
19
- }
15
+ name: "PInput",
16
+ inheritAttrs: false,
17
+ model: {
18
+ prop: "modelValue",
19
+ event: "update:modelValue"
20
+ }
20
21
  });
21
22
  const props = defineProps({
22
- size: { type: String, required: false },
23
- error: { type: [Boolean, String], required: false },
24
- min: { type: [Number, String], required: false },
25
- max: { type: [Number, String], required: false },
26
- align: { type: String, required: false, default: "left" },
27
- readonly: { type: Boolean, required: false },
28
- disabled: { type: Boolean, required: false },
29
- password: { type: Boolean, required: false },
30
- autofocus: { type: Boolean, required: false },
31
- inputType: { type: String, required: false },
32
- inputmode: { type: String, required: false },
33
- minlength: { type: [Number, String], required: false },
34
- maxlength: { type: [Number, String], required: false },
35
- clearable: { type: Boolean, required: false },
36
- clearValue: { type: [String, Number, null], required: false },
37
- modelValue: { type: [String, Number, null], required: false },
38
- placeholder: { type: String, required: false },
39
- prefixClass: { type: [String, Array, Object], required: false },
40
- suffixClass: { type: [String, Array, Object], required: false },
41
- selectOnFocus: { type: Boolean, required: false },
42
- defaultPrefixStyle: { type: Boolean, required: false, default: true },
43
- defaultSuffixStyle: { type: Boolean, required: false, default: true }
44
- });
45
- const emits = defineEmits(["click", "input", "change", "focus", "blur", "keydown", "update:modelValue", "compositionstart", "compositionupdate", "compositionend"]);
46
- const inputVariant = tv({
47
- base: "pxd-input pxd-input--border group relative flex w-full max-w-full items-center overflow-hidden bg-background-100 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:bg-gray-100 motion-safe:transition-all",
48
- variants: {
49
- size: {
50
- xs: `${BASIC_HEIGHTS.xs} text-sm rounded-sm`,
51
- sm: `${BASIC_HEIGHTS.sm} text-sm rounded-md`,
52
- md: `${BASIC_HEIGHTS.md} text-sm rounded-md`,
53
- lg: `${BASIC_HEIGHTS.lg} text-base rounded-lg`
54
- },
55
- align: {
56
- left: "text-left",
57
- center: "text-center",
58
- right: "text-right"
59
- },
60
- disabled: {
61
- true: "is-disabled",
62
- false: ""
63
- },
64
- readonly: {
65
- true: "is-readonly",
66
- false: ""
67
- },
68
- error: {
69
- true: "is-error",
70
- false: ""
71
- }
72
- },
73
- defaultVariants: {
74
- size: "md",
75
- align: "left",
76
- disabled: false,
77
- readonly: false,
78
- error: false
79
- }
23
+ size: {
24
+ type: String,
25
+ required: false
26
+ },
27
+ error: {
28
+ type: [Boolean, String],
29
+ required: false
30
+ },
31
+ min: {
32
+ type: [Number, String],
33
+ required: false
34
+ },
35
+ max: {
36
+ type: [Number, String],
37
+ required: false
38
+ },
39
+ align: {
40
+ type: String,
41
+ required: false,
42
+ default: "left"
43
+ },
44
+ readonly: {
45
+ type: Boolean,
46
+ required: false
47
+ },
48
+ disabled: {
49
+ type: Boolean,
50
+ required: false
51
+ },
52
+ password: {
53
+ type: Boolean,
54
+ required: false
55
+ },
56
+ autofocus: {
57
+ type: Boolean,
58
+ required: false
59
+ },
60
+ inputType: {
61
+ type: String,
62
+ required: false
63
+ },
64
+ inputMode: {
65
+ type: String,
66
+ required: false
67
+ },
68
+ minLength: {
69
+ type: [Number, String],
70
+ required: false
71
+ },
72
+ maxLength: {
73
+ type: [Number, String],
74
+ required: false
75
+ },
76
+ trimOverflow: {
77
+ type: Boolean,
78
+ required: false,
79
+ default: false
80
+ },
81
+ clearable: {
82
+ type: Boolean,
83
+ required: false
84
+ },
85
+ clearValue: {
86
+ type: null,
87
+ required: false
88
+ },
89
+ modelValue: {
90
+ type: null,
91
+ required: false
92
+ },
93
+ placeholder: {
94
+ type: String,
95
+ required: false
96
+ },
97
+ prefixClass: {
98
+ type: [
99
+ String,
100
+ Array,
101
+ Object
102
+ ],
103
+ required: false
104
+ },
105
+ suffixClass: {
106
+ type: [
107
+ String,
108
+ Array,
109
+ Object
110
+ ],
111
+ required: false
112
+ },
113
+ selectOnFocus: {
114
+ type: Boolean,
115
+ required: false
116
+ },
117
+ showWordLimit: {
118
+ type: Boolean,
119
+ required: false
120
+ },
121
+ wordLimitPosition: {
122
+ type: String,
123
+ required: false,
124
+ default: "inside"
125
+ },
126
+ clearOnPressEscape: {
127
+ type: Boolean,
128
+ required: false,
129
+ default: true
130
+ },
131
+ defaultPrefixStyle: {
132
+ type: Boolean,
133
+ required: false,
134
+ default: true
135
+ },
136
+ defaultSuffixStyle: {
137
+ type: Boolean,
138
+ required: false,
139
+ default: true
140
+ }
80
141
  });
142
+ const emits = defineEmits([
143
+ "click",
144
+ "change",
145
+ "focus",
146
+ "blur",
147
+ "keydown",
148
+ "update:modelValue",
149
+ "compositionstart",
150
+ "compositionupdate",
151
+ "compositionend"
152
+ ]);
81
153
  const uniqueId = getUniqueId();
82
154
  const inputRef = shallowRef();
83
155
  const configProvider = useConfigProvider();
@@ -85,105 +157,136 @@ const modelValue = useModelValue(props, emits, { withChange: false });
85
157
  const isComposing = shallowRef(false);
86
158
  const isPasswordVisible = shallowRef(!props.password);
87
159
  const inputType = computed(() => props.inputType || isPasswordVisible.value ? "text" : "password");
88
- const computedClasses = computed(() => {
89
- return inputVariant({
90
- size: props.size || configProvider.size,
91
- align: props.align,
92
- error: isTruthyProp(props.error),
93
- disabled: isTruthyProp(props.disabled),
94
- readonly: isTruthyProp(props.readonly)
95
- });
160
+ const { isWordLimitShown, hasMaxLength, isWordLimitOutside, nativeMaxLength, wordLimitText, isWordLimitExceeded } = useWordLimit({
161
+ modelValue,
162
+ showWordLimit: () => props.showWordLimit,
163
+ maxLength: () => props.maxLength,
164
+ wordLimitPosition: () => props.wordLimitPosition,
165
+ isComposing
96
166
  });
167
+ const { attrs, classes } = useTailwindVariant({
168
+ base: "pxd-input pxd-input--border group relative flex w-full max-w-full items-center bg-background-100 data-[disabled=true]:cursor-not-allowed data-[disabled=true]:bg-gray-100 motion-safe:transition-appearance",
169
+ variants: {
170
+ size: {
171
+ xs: `${BASIC_HEIGHTS.xs} text-sm rounded-sm`,
172
+ sm: `${BASIC_HEIGHTS.sm} text-sm rounded-md`,
173
+ md: `${BASIC_HEIGHTS.md} text-sm rounded-md`,
174
+ lg: `${BASIC_HEIGHTS.lg} text-base rounded-lg`
175
+ },
176
+ align: {
177
+ left: "text-left",
178
+ center: "text-center",
179
+ right: "text-right"
180
+ },
181
+ disabled: { true: "is-disabled" },
182
+ readonly: { true: "is-readonly" },
183
+ error: { true: "is-error" }
184
+ }
185
+ }, { selection: () => ({
186
+ size: props.size || configProvider.size,
187
+ align: props.align,
188
+ error: isTruthyProp(props.error) || isWordLimitExceeded.value,
189
+ disabled: isTruthyProp(props.disabled),
190
+ readonly: isTruthyProp(props.readonly)
191
+ }) });
97
192
  function getInputValue(ev) {
98
- return ev.target.value;
193
+ return ev.target.value;
194
+ }
195
+ function trimInputValue(inputValue) {
196
+ if (props.trimOverflow && hasMaxLength.value) {
197
+ return inputValue.slice(0, Number(props.maxLength));
198
+ }
199
+ return inputValue;
99
200
  }
100
201
  function onFocus(event) {
101
- if (props.selectOnFocus) {
102
- inputRef.value?.select();
103
- }
104
- emits("focus", event);
202
+ if (props.selectOnFocus) {
203
+ inputRef.value?.select();
204
+ }
205
+ emits("focus", event);
105
206
  }
106
207
  function onBlur(event) {
107
- emits("blur", event);
208
+ emits("blur", event);
108
209
  }
109
210
  function onClick(event) {
110
- emits("click", event);
211
+ emits("click", event);
111
212
  }
112
213
  function onChange(event) {
113
- const inputValue = getInputValue(event);
114
- emits("change", inputValue, event);
214
+ const inputValue = getInputValue(event);
215
+ emits("change", inputValue, event);
115
216
  }
116
- async function onInput(event) {
117
- const ev = event;
118
- if (ev.isComposing || isComposing.value) {
119
- return;
120
- }
121
- const inputValue = getInputValue(event);
122
- modelValue.value = inputValue;
123
- emits("input", inputValue);
217
+ function onInput(event) {
218
+ const ev = event;
219
+ if (ev.isComposing || isComposing.value) {
220
+ return;
221
+ }
222
+ const inputValue = getInputValue(event);
223
+ modelValue.value = inputValue;
124
224
  }
125
225
  function onKeydown(event) {
126
- if (props.readonly) {
127
- return;
128
- }
129
- if (event.key === "Enter") {
130
- onChange(event);
131
- }
132
- emits("keydown", event);
226
+ if (props.readonly || props.disabled) {
227
+ return;
228
+ }
229
+ if (event.key === "Enter") {
230
+ onChange(event);
231
+ } else if (event.key === "Escape" && props.clearOnPressEscape) {
232
+ clear(event);
233
+ }
234
+ emits("keydown", event);
133
235
  }
134
236
  function onCompositionStart(event) {
135
- isComposing.value = true;
136
- emits("compositionstart", event);
237
+ isComposing.value = true;
238
+ emits("compositionstart", event);
137
239
  }
138
240
  function onCompositionUpdate(event) {
139
- isComposing.value = true;
140
- emits("compositionupdate", event);
241
+ isComposing.value = true;
242
+ emits("compositionupdate", event);
141
243
  }
142
- async function onCompositionEnd(event) {
143
- isComposing.value = false;
144
- emits("compositionend", event);
145
- const inputValue = getInputValue(event);
146
- modelValue.value = inputValue;
147
- emits("input", inputValue);
244
+ function onCompositionEnd(event) {
245
+ isComposing.value = false;
246
+ emits("compositionend", event);
247
+ const target = event.target;
248
+ const inputValue = trimInputValue(getInputValue(event));
249
+ target.value = inputValue;
250
+ modelValue.value = inputValue;
148
251
  }
149
252
  function toggleType() {
150
- isPasswordVisible.value = !isPasswordVisible.value;
253
+ isPasswordVisible.value = !isPasswordVisible.value;
151
254
  }
152
255
  function blur() {
153
- inputRef.value?.blur();
256
+ inputRef.value?.blur();
154
257
  }
155
258
  function focus() {
156
- inputRef.value?.focus();
259
+ inputRef.value?.focus();
157
260
  }
158
261
  function select() {
159
- inputRef.value?.select();
262
+ inputRef.value?.select();
160
263
  }
161
264
  function clear(ev) {
162
- const clearValue = props.clearValue ?? "";
163
- emits("input", "");
164
- emits("change", "", ev);
165
- modelValue.value = clearValue;
265
+ const clearValue = props.clearValue ?? "";
266
+ emits("change", "", ev);
267
+ modelValue.value = clearValue;
166
268
  }
167
269
  defineExpose({
168
- blur,
169
- clear,
170
- focus,
171
- select
270
+ blur,
271
+ clear,
272
+ focus,
273
+ select
172
274
  });
173
275
  </script>
174
276
 
175
277
  <template>
176
278
  <label
279
+ data-input
177
280
  :for="uniqueId"
178
281
  :data-disabled="disabled"
179
- :class="computedClasses"
180
- v-bind="$attrs"
282
+ :class="classes"
283
+ v-bind="attrs"
181
284
  @click="onClick"
182
285
  @dragstart.prevent="NOOP"
183
286
  >
184
287
  <div
185
288
  v-if="$slots.prefix"
186
- class="pxd-input--prefix text-sm flex h-full items-center text-foreground-secondary"
289
+ class="pxd-input--prefix text-sm flex h-full shrink-0 items-center rounded-inherit text-foreground-secondary"
187
290
  :class="[
188
291
  { 'px-3 rounded-l-inherit border-r border-gray-300 bg-background-200': defaultPrefixStyle },
189
292
  prefixClass
@@ -206,9 +309,9 @@ defineExpose({
206
309
  :value="modelValue"
207
310
  :readonly="readonly"
208
311
  :disabled="disabled"
209
- :inputmode="inputmode"
210
- :minlength="minlength"
211
- :maxlength="maxlength"
312
+ :inputmode="inputMode"
313
+ :minlength="minLength"
314
+ :maxlength="nativeMaxLength"
212
315
  :autofocus="autofocus"
213
316
  :aria-disabled="disabled"
214
317
  :placeholder="placeholder"
@@ -225,12 +328,13 @@ defineExpose({
225
328
  <div
226
329
  v-if="password || clearable"
227
330
  v-show="modelValue"
228
- :class="{ 'pr-2': password && clearable }"
229
- class="pxd-input--icon top-0 right-0 gap-1 flex aspect-square h-full items-center justify-center rounded-r-inherit text-foreground-secondary"
331
+ :class="{ 'pe-2': password && clearable }"
332
+ class="pxd-input--icon top-0 right-0 pe-2 gap-1 flex h-full items-center justify-center rounded-r-inherit text-foreground-secondary"
230
333
  @pointerdown.prevent="NOOP"
231
334
  >
232
335
  <button
233
336
  v-if="password"
337
+ type="button"
234
338
  class="p-1 cursor-pointer appearance-none rounded-sm font-inherit self-focus-ring outline-none hover:bg-background-hover hover:text-foreground active:bg-background-active motion-safe:transition-colors"
235
339
  @click.stop.prevent="toggleType"
236
340
  >
@@ -239,6 +343,7 @@ defineExpose({
239
343
  </button>
240
344
  <button
241
345
  v-if="clearable"
346
+ type="button"
242
347
  class="p-1 cursor-pointer appearance-none rounded-sm font-inherit self-focus-ring outline-none hover:bg-background-hover hover:text-foreground active:bg-background-active motion-safe:transition-colors"
243
348
  @click.stop.prevent="clear"
244
349
  >
@@ -246,9 +351,20 @@ defineExpose({
246
351
  </button>
247
352
  </div>
248
353
 
354
+ <span
355
+ v-if="isWordLimitShown"
356
+ class="pxd-input--word-limit text-xs px-1.5 -ms-1.5 pointer-events-none shrink-0 text-nowrap text-foreground-secondary"
357
+ :class="{
358
+ 'right-0 pe-0 mbs-1 absolute top-full': isWordLimitOutside,
359
+ 'text-red-900': isWordLimitExceeded
360
+ }"
361
+ >
362
+ {{ wordLimitText }}
363
+ </span>
364
+
249
365
  <div
250
366
  v-if="$slots.suffix"
251
- class="pxd-input--suffix text-sm flex h-full items-center text-foreground-secondary"
367
+ class="pxd-input--suffix text-sm flex h-full shrink-0 items-center rounded-inherit text-foreground-secondary"
252
368
  :class="[
253
369
  { 'px-3 rounded-r-inherit border-l border-gray-300 bg-background-200': defaultSuffixStyle },
254
370
  suffixClass
@@ -11,23 +11,26 @@ export interface InputProps {
11
11
  password?: boolean
12
12
  autofocus?: boolean
13
13
  inputType?: string
14
- inputmode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
15
- minlength?: number | string
16
- maxlength?: number | string
14
+ inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'
15
+ minLength?: number | string
16
+ maxLength?: number | string
17
+ trimOverflow?: boolean
17
18
  clearable?: boolean
18
- clearValue?: string | number | null
19
- modelValue?: string | number | null
19
+ clearValue?: any
20
+ modelValue?: any
20
21
  placeholder?: string
21
22
  prefixClass?: ComponentClass
22
23
  suffixClass?: ComponentClass
23
24
  selectOnFocus?: boolean
25
+ showWordLimit?: boolean
26
+ wordLimitPosition?: 'inside' | 'outside'
27
+ clearOnPressEscape?: boolean
24
28
  defaultPrefixStyle?: boolean
25
29
  defaultSuffixStyle?: boolean
26
30
  }
27
31
 
28
32
  export interface InputEmits {
29
33
  click: [MouseEvent]
30
- input: [string]
31
34
  change: [string, Event]
32
35
  focus: [FocusEvent]
33
36
  blur: [FocusEvent]