pxd 0.0.64 → 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 (545) 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.d.vue.ts +1 -1
  5. package/dist/components/_internal/dismiss-container.vue +74 -127
  6. package/dist/components/_internal/fragment-container.vue +3 -3
  7. package/dist/components/_internal/loading-mask.d.vue.ts +8 -0
  8. package/dist/components/_internal/loading-mask.vue +33 -0
  9. package/dist/components/_internal/mention-editor.d.vue.ts +42 -0
  10. package/dist/components/_internal/mention-editor.vue +114 -0
  11. package/dist/components/_internal/popover-arrow.d.vue.ts +1 -1
  12. package/dist/components/_internal/popover-arrow.vue +9 -6
  13. package/dist/components/_internal/step-item.d.vue.ts +24 -0
  14. package/dist/components/_internal/step-item.vue +86 -0
  15. package/dist/components/_internal/tree-node.d.vue.ts +72 -0
  16. package/dist/components/_internal/tree-node.vue +268 -0
  17. package/dist/components/active-graph/index.d.vue.ts +4 -4
  18. package/dist/components/active-graph/index.vue +381 -239
  19. package/dist/components/active-graph/types.d.ts +2 -1
  20. package/dist/components/approval-card/index.d.vue.ts +28 -0
  21. package/dist/components/approval-card/index.vue +252 -0
  22. package/dist/components/approval-card/types.d.ts +37 -0
  23. package/dist/components/avatar/index.vue +43 -72
  24. package/dist/components/avatar-group/index.d.vue.ts +1 -1
  25. package/dist/components/avatar-group/index.vue +38 -25
  26. package/dist/components/backtop/index.d.vue.ts +10 -3
  27. package/dist/components/backtop/index.vue +97 -54
  28. package/dist/components/backtop/types.d.ts +10 -3
  29. package/dist/components/badge/index.d.vue.ts +6 -3
  30. package/dist/components/badge/index.vue +126 -79
  31. package/dist/components/badge/types.d.ts +3 -2
  32. package/dist/components/book/index.vue +57 -162
  33. package/dist/components/book/types.d.ts +1 -1
  34. package/dist/components/border-beam/index.d.vue.ts +18 -0
  35. package/dist/components/border-beam/index.vue +64 -0
  36. package/dist/components/border-beam/types.d.ts +8 -0
  37. package/dist/components/{resizable-panel → breadcrumb}/index.d.vue.ts +3 -4
  38. package/dist/components/breadcrumb/index.vue +32 -0
  39. package/dist/components/breadcrumb/types.d.ts +6 -0
  40. package/dist/components/breadcrumb-item/index.d.vue.ts +16 -0
  41. package/dist/components/breadcrumb-item/index.vue +50 -0
  42. package/dist/components/breadcrumb-item/types.d.ts +4 -0
  43. package/dist/components/browser/index.d.vue.ts +2 -2
  44. package/dist/components/browser/index.vue +13 -28
  45. package/dist/components/bubble/index.d.vue.ts +6 -3
  46. package/dist/components/bubble/index.vue +85 -18
  47. package/dist/components/bubble/types.d.ts +3 -1
  48. package/dist/components/bubble-group/index.d.vue.ts +19 -0
  49. package/dist/components/bubble-group/index.vue +86 -0
  50. package/dist/components/bubble-group/types.d.ts +6 -0
  51. package/dist/components/bubble-group/types.js +0 -0
  52. package/dist/components/button/index.d.vue.ts +6 -5
  53. package/dist/components/button/index.vue +121 -86
  54. package/dist/components/button/types.d.ts +1 -1
  55. package/dist/components/button-group/index.vue +20 -7
  56. package/dist/components/button-group/types.d.ts +1 -1
  57. package/dist/components/calendar/index.d.vue.ts +41 -0
  58. package/dist/components/calendar/index.vue +247 -0
  59. package/dist/components/calendar/types.d.ts +37 -0
  60. package/dist/components/card/index.d.vue.ts +21 -0
  61. package/dist/components/card/index.vue +47 -0
  62. package/dist/components/card/types.d.ts +6 -0
  63. package/dist/components/carousel/index.d.vue.ts +11 -7
  64. package/dist/components/carousel/index.vue +232 -283
  65. package/dist/components/carousel/types.d.ts +15 -1
  66. package/dist/components/checkbox/index.d.vue.ts +6 -5
  67. package/dist/components/checkbox/index.vue +107 -90
  68. package/dist/components/checkbox/types.d.ts +7 -5
  69. package/dist/components/checkbox-group/index.d.vue.ts +8 -8
  70. package/dist/components/checkbox-group/index.vue +26 -11
  71. package/dist/components/checkbox-group/types.d.ts +4 -2
  72. package/dist/components/checkerboard/index.d.vue.ts +14 -0
  73. package/dist/components/checkerboard/index.vue +37 -0
  74. package/dist/components/checkerboard/types.d.ts +5 -0
  75. package/dist/components/chip/index.d.vue.ts +3 -1
  76. package/dist/components/chip/index.vue +49 -46
  77. package/dist/components/chip/types.d.ts +1 -1
  78. package/dist/components/choicebox/index.d.vue.ts +7 -7
  79. package/dist/components/choicebox/index.vue +52 -30
  80. package/dist/components/choicebox/types.d.ts +1 -1
  81. package/dist/components/choicebox-item/index.d.vue.ts +7 -5
  82. package/dist/components/choicebox-item/index.vue +172 -53
  83. package/dist/components/choicebox-item/types.d.ts +3 -7
  84. package/dist/components/collapse/index.d.vue.ts +2 -2
  85. package/dist/components/collapse/index.vue +73 -99
  86. package/dist/components/collapse-group/index.vue +43 -32
  87. package/dist/components/collapse-group/types.d.ts +1 -1
  88. package/dist/components/color-selector/index.vue +45 -41
  89. package/dist/components/command-menu/index.d.vue.ts +10 -7
  90. package/dist/components/command-menu/index.vue +111 -46
  91. package/dist/components/command-menu/types.d.ts +3 -2
  92. package/dist/components/config-provider/index.d.vue.ts +116 -7
  93. package/dist/components/config-provider/index.vue +54 -11
  94. package/dist/components/config-provider/types.d.ts +6 -3
  95. package/dist/components/confirm-popover/index.d.vue.ts +39 -0
  96. package/dist/components/confirm-popover/index.vue +177 -0
  97. package/dist/components/confirm-popover/types.d.ts +23 -0
  98. package/dist/components/copy-button/index.d.vue.ts +20 -0
  99. package/dist/components/copy-button/index.vue +38 -0
  100. package/dist/components/copy-button/types.d.ts +7 -0
  101. package/dist/components/countdown/index.d.vue.ts +1 -1
  102. package/dist/components/countdown/index.vue +77 -29
  103. package/dist/components/dash-line/index.d.vue.ts +2 -1
  104. package/dist/components/dash-line/index.vue +78 -76
  105. package/dist/components/dash-line/types.d.ts +1 -1
  106. package/dist/components/date-picker/index.d.vue.ts +16 -0
  107. package/dist/components/date-picker/index.vue +295 -0
  108. package/dist/components/date-picker/types.d.ts +20 -0
  109. package/dist/components/description/index.vue +16 -7
  110. package/dist/components/drawer/index.d.vue.ts +11 -11
  111. package/dist/components/drawer/index.vue +156 -70
  112. package/dist/components/drawer/types.d.ts +3 -2
  113. package/dist/components/effort-slider/index.d.vue.ts +10 -0
  114. package/dist/components/effort-slider/index.vue +341 -0
  115. package/dist/components/effort-slider/types.d.ts +14 -0
  116. package/dist/components/ellipsis-text/index.d.vue.ts +1 -1
  117. package/dist/components/ellipsis-text/index.vue +209 -166
  118. package/dist/components/empty-state/index.vue +11 -4
  119. package/dist/components/error/index.d.vue.ts +3 -1
  120. package/dist/components/error/index.vue +42 -28
  121. package/dist/components/error/types.d.ts +2 -1
  122. package/dist/components/fader/index.d.vue.ts +1 -1
  123. package/dist/components/fader/index.vue +58 -114
  124. package/dist/components/fader/types.d.ts +3 -2
  125. package/dist/components/feedback-bar/index.d.vue.ts +12 -0
  126. package/dist/components/feedback-bar/index.vue +81 -0
  127. package/dist/components/feedback-bar/types.d.ts +9 -0
  128. package/dist/components/gauge/index.vue +91 -71
  129. package/dist/components/gauge/types.d.ts +1 -1
  130. package/dist/components/grid/index.vue +58 -52
  131. package/dist/components/grid/types.d.ts +1 -1
  132. package/dist/components/grid-item/index.vue +44 -39
  133. package/dist/components/grid-item/types.d.ts +1 -1
  134. package/dist/components/hint/index.d.vue.ts +32 -0
  135. package/dist/components/hint/index.vue +239 -0
  136. package/dist/components/hint/types.d.ts +17 -0
  137. package/dist/components/hold-button/index.d.vue.ts +4 -4
  138. package/dist/components/hold-button/index.vue +114 -118
  139. package/dist/components/hue-text/index.d.vue.ts +16 -0
  140. package/dist/components/hue-text/index.vue +48 -0
  141. package/dist/components/hue-text/types.d.ts +4 -0
  142. package/dist/components/index.d.ts +44 -5
  143. package/dist/components/index.js +44 -5
  144. package/dist/components/input/index.d.vue.ts +6 -5
  145. package/dist/components/input/index.vue +259 -136
  146. package/dist/components/input/types.d.ts +10 -7
  147. package/dist/components/intersection-observer/index.vue +65 -42
  148. package/dist/components/kbd/index.vue +47 -25
  149. package/dist/components/kbd/types.d.ts +1 -1
  150. package/dist/components/label/index.vue +7 -3
  151. package/dist/components/link-button/index.d.vue.ts +5 -5
  152. package/dist/components/link-button/index.vue +49 -32
  153. package/dist/components/list/index.d.vue.ts +22 -14
  154. package/dist/components/list/index.vue +318 -78
  155. package/dist/components/list/types.d.ts +39 -11
  156. package/dist/components/list-group/index.d.vue.ts +4 -0
  157. package/dist/components/list-group/index.vue +22 -0
  158. package/dist/components/list-group/types.d.ts +5 -0
  159. package/dist/components/list-item/index.d.vue.ts +7 -7
  160. package/dist/components/list-item/index.vue +95 -75
  161. package/dist/components/list-item/types.d.ts +7 -4
  162. package/dist/components/loading-bar/index.vue +148 -141
  163. package/dist/components/loading-dots/index.d.vue.ts +1 -13
  164. package/dist/components/loading-dots/index.vue +13 -15
  165. package/dist/components/marching-ants/index.d.vue.ts +25 -0
  166. package/dist/components/marching-ants/index.vue +486 -0
  167. package/dist/components/marching-ants/types.d.ts +9 -0
  168. package/dist/components/marquee/index.d.vue.ts +37 -0
  169. package/dist/components/marquee/index.vue +242 -0
  170. package/dist/components/marquee/types.d.ts +18 -0
  171. package/dist/components/material/index.d.vue.ts +3 -3
  172. package/dist/components/material/index.vue +22 -28
  173. package/dist/components/mention/index.d.vue.ts +38 -0
  174. package/dist/components/mention/index.vue +251 -0
  175. package/dist/components/mention/types.d.ts +35 -0
  176. package/dist/components/menu/index.d.vue.ts +17 -10
  177. package/dist/components/menu/index.vue +99 -28
  178. package/dist/components/menu/types.d.ts +8 -6
  179. package/dist/components/message/index.d.vue.ts +7 -7
  180. package/dist/components/message/index.vue +140 -239
  181. package/dist/components/message/types.d.ts +1 -1
  182. package/dist/components/message-item/index.vue +46 -62
  183. package/dist/components/modal/index.d.vue.ts +10 -10
  184. package/dist/components/modal/index.vue +143 -66
  185. package/dist/components/modal/types.d.ts +3 -5
  186. package/dist/components/more-button/index.vue +25 -13
  187. package/dist/components/noise-background/index.d.vue.ts +0 -16
  188. package/dist/components/noise-background/index.vue +70 -9
  189. package/dist/components/noise-background/types.d.ts +5 -1
  190. package/dist/components/note/index.d.vue.ts +1 -1
  191. package/dist/components/note/index.vue +114 -100
  192. package/dist/components/note/types.d.ts +3 -1
  193. package/dist/components/number-input/index.d.vue.ts +12 -9
  194. package/dist/components/number-input/index.vue +241 -165
  195. package/dist/components/number-input/types.d.ts +3 -3
  196. package/dist/components/overlay/index.d.vue.ts +3 -4
  197. package/dist/components/overlay/index.vue +85 -95
  198. package/dist/components/overlay/types.d.ts +0 -2
  199. package/dist/components/page-number/index.d.vue.ts +18 -0
  200. package/dist/components/page-number/index.vue +233 -0
  201. package/dist/components/page-number/types.d.ts +18 -0
  202. package/dist/components/pagination/index.vue +14 -7
  203. package/dist/components/pin-input/index.d.vue.ts +2 -2
  204. package/dist/components/pin-input/index.vue +197 -179
  205. package/dist/components/pin-input/types.d.ts +1 -1
  206. package/dist/components/placeholder/index.vue +22 -32
  207. package/dist/components/popover/index.d.vue.ts +0 -47
  208. package/dist/components/popover/index.vue +558 -347
  209. package/dist/components/popover/types.d.ts +10 -1
  210. package/dist/components/progress/index.d.vue.ts +3 -9
  211. package/dist/components/progress/index.vue +85 -63
  212. package/dist/components/progress/types.d.ts +1 -6
  213. package/dist/components/project-banner/index.d.vue.ts +3 -1
  214. package/dist/components/project-banner/index.vue +36 -34
  215. package/dist/components/project-banner/types.d.ts +2 -2
  216. package/dist/components/questionnaire/index.d.vue.ts +10 -0
  217. package/dist/components/questionnaire/index.vue +353 -0
  218. package/dist/components/questionnaire/types.d.ts +30 -0
  219. package/dist/components/radial-burst/index.d.vue.ts +14 -0
  220. package/dist/components/radial-burst/index.vue +53 -0
  221. package/dist/components/radial-burst/types.d.ts +5 -0
  222. package/dist/components/radio/index.d.vue.ts +4 -4
  223. package/dist/components/radio/index.vue +56 -74
  224. package/dist/components/radio/types.d.ts +1 -1
  225. package/dist/components/radio-group/index.d.vue.ts +6 -6
  226. package/dist/components/radio-group/index.vue +26 -12
  227. package/dist/components/radio-group/types.d.ts +1 -1
  228. package/dist/components/rating/index.d.vue.ts +17 -0
  229. package/dist/components/rating/index.vue +253 -0
  230. package/dist/components/rating/types.d.ts +18 -0
  231. package/dist/components/reasoning/index.d.vue.ts +16 -0
  232. package/dist/components/reasoning/index.vue +68 -0
  233. package/dist/components/reasoning/types.d.ts +3 -0
  234. package/dist/components/resizable/index.d.vue.ts +28 -4
  235. package/dist/components/resizable/index.vue +339 -158
  236. package/dist/components/resizable/types.d.ts +13 -14
  237. package/dist/components/reveal/index.d.vue.ts +22 -0
  238. package/dist/components/reveal/index.vue +100 -0
  239. package/dist/components/reveal/types.d.ts +15 -0
  240. package/dist/components/rolling-number/index.d.vue.ts +17 -0
  241. package/dist/components/rolling-number/index.vue +252 -0
  242. package/dist/components/rolling-number/types.d.ts +11 -0
  243. package/dist/components/scalable-text/index.vue +116 -113
  244. package/dist/components/scroll-progress/index.d.vue.ts +22 -0
  245. package/dist/components/scroll-progress/index.vue +75 -0
  246. package/dist/components/scroll-progress/types.d.ts +9 -0
  247. package/dist/components/scroll-text/index.d.vue.ts +18 -0
  248. package/dist/components/scroll-text/index.vue +123 -0
  249. package/dist/components/scroll-text/types.d.ts +7 -0
  250. package/dist/components/scrollable/index.d.vue.ts +3 -3
  251. package/dist/components/scrollable/index.vue +281 -222
  252. package/dist/components/scrollable/types.d.ts +2 -1
  253. package/dist/components/search-input/index.d.vue.ts +152 -0
  254. package/dist/components/search-input/index.vue +56 -0
  255. package/dist/components/search-input/types.d.ts +7 -0
  256. package/dist/components/select/index.d.vue.ts +36 -0
  257. package/dist/components/select/index.vue +257 -0
  258. package/dist/components/select/types.d.ts +25 -0
  259. package/dist/components/separator/index.d.vue.ts +1 -1
  260. package/dist/components/separator/index.vue +9 -6
  261. package/dist/components/separator/types.d.ts +1 -1
  262. package/dist/components/shimmer-text/index.d.vue.ts +18 -0
  263. package/dist/components/shimmer-text/index.vue +216 -0
  264. package/dist/components/shimmer-text/types.d.ts +14 -0
  265. package/dist/components/skeleton/index.d.vue.ts +1 -1
  266. package/dist/components/skeleton/index.vue +59 -51
  267. package/dist/components/skeleton/types.d.ts +1 -1
  268. package/dist/components/slider/index.d.vue.ts +2 -2
  269. package/dist/components/slider/index.vue +391 -261
  270. package/dist/components/slider/types.d.ts +4 -2
  271. package/dist/components/snippet/index.d.vue.ts +3 -2
  272. package/dist/components/snippet/index.vue +83 -70
  273. package/dist/components/snippet/types.d.ts +4 -4
  274. package/dist/components/spinner/index.vue +13 -8
  275. package/dist/components/spinner-dots/index.d.vue.ts +7 -0
  276. package/dist/components/spinner-dots/index.vue +232 -0
  277. package/dist/components/spinner-dots/types.d.ts +9 -0
  278. package/dist/components/split-button/index.d.vue.ts +31 -0
  279. package/dist/components/split-button/index.vue +93 -0
  280. package/dist/components/split-button/types.d.ts +18 -0
  281. package/dist/components/stack/index.d.vue.ts +4 -4
  282. package/dist/components/stack/index.vue +98 -85
  283. package/dist/components/stack/types.d.ts +1 -1
  284. package/dist/components/status-dot/index.d.vue.ts +1 -1
  285. package/dist/components/status-dot/index.vue +34 -20
  286. package/dist/components/status-dot/types.d.ts +1 -1
  287. package/dist/components/steps/index.d.vue.ts +28 -0
  288. package/dist/components/steps/index.vue +143 -0
  289. package/dist/components/steps/types.d.ts +25 -0
  290. package/dist/components/stick-to-bottom/index.d.vue.ts +35 -0
  291. package/dist/components/stick-to-bottom/index.vue +78 -0
  292. package/dist/components/stick-to-bottom/types.d.ts +13 -0
  293. package/dist/components/swipe-cell/index.d.vue.ts +53 -0
  294. package/dist/components/swipe-cell/index.vue +412 -0
  295. package/dist/components/swipe-cell/types.d.ts +53 -0
  296. package/dist/components/switch/index.d.vue.ts +1 -1
  297. package/dist/components/switch/index.vue +43 -22
  298. package/dist/components/switch/types.d.ts +1 -1
  299. package/dist/components/switch-item/index.vue +36 -37
  300. package/dist/components/switch-item/types.d.ts +1 -1
  301. package/dist/components/tabs/index.d.vue.ts +8 -6
  302. package/dist/components/tabs/index.vue +241 -198
  303. package/dist/components/tabs/tab-slot.d.ts +24 -0
  304. package/dist/components/tabs/tab-slot.js +13 -0
  305. package/dist/components/tabs/types.d.ts +11 -5
  306. package/dist/components/teleport/index.vue +69 -60
  307. package/dist/components/text/index.d.vue.ts +4 -4
  308. package/dist/components/text/index.vue +68 -57
  309. package/dist/components/text/types.d.ts +1 -1
  310. package/dist/components/textarea/index.d.vue.ts +7 -5
  311. package/dist/components/textarea/index.vue +148 -71
  312. package/dist/components/textarea/types.d.ts +6 -3
  313. package/dist/components/theme-switcher/index.d.vue.ts +3 -2
  314. package/dist/components/theme-switcher/index.vue +19 -15
  315. package/dist/components/theme-switcher/types.d.ts +2 -2
  316. package/dist/components/time-ago/index.d.vue.ts +6 -0
  317. package/dist/components/time-ago/index.vue +143 -0
  318. package/dist/components/time-ago/types.d.ts +4 -0
  319. package/dist/components/time-picker/index.d.vue.ts +8 -9
  320. package/dist/components/time-picker/index.vue +249 -186
  321. package/dist/components/time-picker/types.d.ts +7 -7
  322. package/dist/components/timeline/index.d.vue.ts +6 -0
  323. package/dist/components/timeline/index.vue +52 -0
  324. package/dist/components/timeline/types.d.ts +6 -0
  325. package/dist/components/timeline-item/index.d.vue.ts +22 -0
  326. package/dist/components/timeline-item/index.vue +110 -0
  327. package/dist/components/timeline-item/types.d.ts +16 -0
  328. package/dist/components/toc/index.d.vue.ts +37 -0
  329. package/dist/components/toc/index.vue +199 -0
  330. package/dist/components/toc/types.d.ts +28 -0
  331. package/dist/components/todo-list/index.d.vue.ts +64 -0
  332. package/dist/components/todo-list/index.vue +357 -0
  333. package/dist/components/todo-list/types.d.ts +53 -0
  334. package/dist/components/toggle/index.d.vue.ts +6 -6
  335. package/dist/components/toggle/index.vue +95 -44
  336. package/dist/components/toggle/types.d.ts +2 -2
  337. package/dist/components/toggle-button/index.d.vue.ts +5 -5
  338. package/dist/components/toggle-button/index.vue +125 -86
  339. package/dist/components/toggle-button/types.d.ts +8 -6
  340. package/dist/components/toggle-button-group/index.d.vue.ts +9 -8
  341. package/dist/components/toggle-button-group/index.vue +63 -43
  342. package/dist/components/toggle-button-group/types.d.ts +2 -2
  343. package/dist/components/tool-call/index.d.vue.ts +6 -0
  344. package/dist/components/tool-call/index.vue +209 -0
  345. package/dist/components/tool-call/types.d.ts +8 -0
  346. package/dist/components/tooltip/index.d.vue.ts +8 -6
  347. package/dist/components/tooltip/index.vue +65 -55
  348. package/dist/components/tooltip/types.d.ts +3 -6
  349. package/dist/components/tour/index.d.vue.ts +33 -0
  350. package/dist/components/tour/index.vue +302 -0
  351. package/dist/components/tour/types.d.ts +29 -0
  352. package/dist/components/tree/index.d.vue.ts +104 -0
  353. package/dist/components/tree/index.vue +751 -0
  354. package/dist/components/tree/types.d.ts +151 -0
  355. package/dist/components/virtual-list/index.d.vue.ts +11 -13
  356. package/dist/components/virtual-list/index.vue +120 -54
  357. package/dist/components/virtual-list/types.d.ts +0 -1
  358. package/dist/composables/_internal/use-collapse-motion.d.ts +6 -0
  359. package/dist/composables/_internal/use-collapse-motion.js +85 -0
  360. package/dist/composables/{use-focus-trap.d.ts → _internal/use-focus-trap.d.ts} +2 -2
  361. package/dist/composables/_internal/use-focus-trap.js +64 -0
  362. package/dist/composables/{use-forward-ref-expose.js → _internal/use-forward-ref-expose.js} +1 -1
  363. package/dist/composables/_internal/use-list-filter.d.ts +15 -0
  364. package/dist/composables/_internal/use-list-filter.js +48 -0
  365. package/dist/composables/_internal/use-list-keyboard-controller.d.ts +21 -0
  366. package/dist/composables/_internal/use-list-keyboard-controller.js +26 -0
  367. package/dist/composables/_internal/use-list-navigation.d.ts +25 -0
  368. package/dist/composables/_internal/use-list-navigation.js +141 -0
  369. package/dist/composables/_internal/use-list-rows.d.ts +33 -0
  370. package/dist/composables/_internal/use-list-rows.js +66 -0
  371. package/dist/composables/_internal/use-list-selection.d.ts +23 -0
  372. package/dist/composables/_internal/use-list-selection.js +41 -0
  373. package/dist/composables/_internal/use-lock-scroll.d.ts +12 -0
  374. package/dist/composables/_internal/use-lock-scroll.js +78 -0
  375. package/dist/composables/_internal/use-mention-editor.d.ts +35 -0
  376. package/dist/composables/_internal/use-mention-editor.js +508 -0
  377. package/dist/composables/_internal/use-mention-suggest.d.ts +23 -0
  378. package/dist/composables/_internal/use-mention-suggest.js +113 -0
  379. package/dist/composables/_internal/use-message-group.d.ts +22 -0
  380. package/dist/composables/_internal/use-message-group.js +143 -0
  381. package/dist/composables/{use-model-value.d.ts → _internal/use-model-value.d.ts} +1 -1
  382. package/dist/composables/_internal/use-model-value.js +13 -0
  383. package/dist/composables/_internal/use-overlay-dialog.d.ts +25 -0
  384. package/dist/composables/_internal/use-overlay-dialog.js +23 -0
  385. package/dist/composables/{use-overlay-manager.d.ts → _internal/use-overlay-manager.d.ts} +4 -1
  386. package/dist/composables/_internal/use-overlay-manager.js +139 -0
  387. package/dist/composables/{use-popover-responsive.js → _internal/use-popover-responsive.js} +1 -1
  388. package/dist/composables/_internal/use-selected-list-item.d.ts +6 -0
  389. package/dist/composables/_internal/use-selected-list-item.js +36 -0
  390. package/dist/composables/_internal/use-swipe-gesture.d.ts +88 -0
  391. package/dist/composables/_internal/use-swipe-gesture.js +345 -0
  392. package/dist/composables/_internal/use-tailwind-variant.d.ts +31 -0
  393. package/dist/composables/_internal/use-tailwind-variant.js +62 -0
  394. package/dist/composables/_internal/use-tour-target.d.ts +29 -0
  395. package/dist/composables/_internal/use-tour-target.js +201 -0
  396. package/dist/composables/_internal/use-tree.d.ts +103 -0
  397. package/dist/composables/_internal/use-tree.js +676 -0
  398. package/dist/composables/_internal/use-word-limit.d.ts +24 -0
  399. package/dist/composables/_internal/use-word-limit.js +36 -0
  400. package/dist/composables/index.d.ts +8 -10
  401. package/dist/composables/index.js +8 -10
  402. package/dist/composables/use-backoff-retry.d.ts +51 -0
  403. package/dist/composables/use-backoff-retry.js +116 -0
  404. package/dist/composables/use-color-scheme.d.ts +1 -1
  405. package/dist/composables/use-color-scheme.js +35 -31
  406. package/dist/composables/use-copy-click.d.ts +2 -1
  407. package/dist/composables/use-copy-click.js +21 -18
  408. package/dist/composables/use-countdown.d.ts +0 -9
  409. package/dist/composables/use-countdown.js +12 -4
  410. package/dist/composables/use-deferred-value.js +1 -1
  411. package/dist/composables/use-delay-change.js +6 -2
  412. package/dist/composables/use-delay-destroy.d.ts +2 -2
  413. package/dist/composables/use-delay-destroy.js +16 -9
  414. package/dist/composables/use-document-hidden.d.ts +1 -1
  415. package/dist/composables/use-intersection-observer.d.ts +6 -0
  416. package/dist/composables/use-intersection-observer.js +38 -0
  417. package/dist/composables/use-media-query.d.ts +0 -3
  418. package/dist/composables/use-media-query.js +19 -19
  419. package/dist/composables/use-motion-reduce.d.ts +6 -0
  420. package/dist/composables/use-motion-reduce.js +40 -0
  421. package/dist/composables/use-mutation-observer.d.ts +6 -0
  422. package/dist/composables/use-mutation-observer.js +42 -0
  423. package/dist/composables/use-outside-click.d.ts +6 -4
  424. package/dist/composables/use-outside-click.js +18 -10
  425. package/dist/composables/use-repeat-action.js +31 -20
  426. package/dist/composables/use-resize-observer.d.ts +6 -0
  427. package/dist/composables/use-resize-observer.js +22 -0
  428. package/dist/composables/use-scrollspy.d.ts +15 -0
  429. package/dist/composables/use-scrollspy.js +98 -0
  430. package/dist/composables/use-stick-to-bottom.d.ts +32 -0
  431. package/dist/composables/use-stick-to-bottom.js +106 -0
  432. package/dist/composables/use-view-transition.d.ts +20 -0
  433. package/dist/composables/use-view-transition.js +80 -0
  434. package/dist/composables/use-virtual-list.d.ts +9 -6
  435. package/dist/composables/use-virtual-list.js +86 -19
  436. package/dist/constants/tooltip-variants.d.ts +28 -0
  437. package/dist/constants/tooltip-variants.js +27 -0
  438. package/dist/contexts/avatar.js +1 -1
  439. package/dist/contexts/breadcrumb.d.ts +2 -0
  440. package/dist/contexts/breadcrumb.js +2 -0
  441. package/dist/contexts/button.js +1 -1
  442. package/dist/contexts/checkbox.js +1 -1
  443. package/dist/contexts/choicebox.d.ts +1 -0
  444. package/dist/contexts/choicebox.js +1 -1
  445. package/dist/contexts/collapse.js +1 -1
  446. package/dist/contexts/config-provider.d.ts +3 -2
  447. package/dist/contexts/config-provider.js +5 -4
  448. package/dist/contexts/list.d.ts +4 -25
  449. package/dist/contexts/list.js +1 -9
  450. package/dist/contexts/radio.js +1 -1
  451. package/dist/contexts/switch.js +1 -1
  452. package/dist/contexts/toggle-button.js +1 -1
  453. package/dist/index.d.ts +2 -1
  454. package/dist/locales/en-us.d.ts +90 -27
  455. package/dist/locales/en-us.js +75 -27
  456. package/dist/locales/index.d.ts +1 -0
  457. package/dist/locales/zh-cn.d.ts +89 -27
  458. package/dist/locales/zh-cn.js +88 -27
  459. package/dist/plugins/dayjs-millisecond-token.d.ts +2 -4
  460. package/dist/plugins/dayjs-millisecond-token.js +1 -2
  461. package/dist/styles/styles.css +2 -2
  462. package/dist/styles/tw.css +97 -50
  463. package/dist/types/shared/props.d.ts +5 -3
  464. package/dist/types/shared/utils.d.ts +7 -0
  465. package/dist/utils/{context.js → _internal/context.js} +2 -1
  466. package/dist/utils/_internal/mention-html.d.ts +33 -0
  467. package/dist/utils/_internal/mention-html.js +146 -0
  468. package/dist/utils/_internal/observer.d.ts +42 -0
  469. package/dist/utils/_internal/observer.js +173 -0
  470. package/dist/utils/_internal/swipe-cell-instances.d.ts +7 -0
  471. package/dist/utils/_internal/swipe-cell-instances.js +17 -0
  472. package/dist/utils/date.d.ts +1 -15
  473. package/dist/utils/date.js +2 -11
  474. package/dist/utils/dom.d.ts +19 -21
  475. package/dist/utils/dom.js +57 -28
  476. package/dist/utils/event.d.ts +15 -2
  477. package/dist/utils/event.js +68 -27
  478. package/dist/utils/format.d.ts +5 -4
  479. package/dist/utils/format.js +33 -13
  480. package/dist/utils/fuzzy-match.d.ts +2 -0
  481. package/dist/utils/fuzzy-match.js +182 -0
  482. package/dist/utils/helper.d.ts +17 -0
  483. package/dist/utils/helper.js +57 -0
  484. package/dist/utils/is.d.ts +5 -1
  485. package/dist/utils/is.js +10 -2
  486. package/dist/utils/merge.d.ts +1 -0
  487. package/dist/utils/merge.js +19 -0
  488. package/dist/utils/timing.d.ts +19 -6
  489. package/dist/utils/timing.js +74 -16
  490. package/package.json +49 -62
  491. package/volar.d.ts +44 -5
  492. package/dist/components/carousel-item/index.d.vue.ts +0 -13
  493. package/dist/components/carousel-item/index.vue +0 -54
  494. package/dist/components/command-menu-group/index.d.vue.ts +0 -14
  495. package/dist/components/command-menu-group/index.vue +0 -31
  496. package/dist/components/command-menu-group/types.d.ts +0 -5
  497. package/dist/components/message/composables/use-group-expand.d.ts +0 -13
  498. package/dist/components/message/composables/use-group-expand.js +0 -50
  499. package/dist/components/message/composables/use-message-timer.d.ts +0 -9
  500. package/dist/components/message/composables/use-message-timer.js +0 -61
  501. package/dist/components/message/composables/use-promise-message.d.ts +0 -4
  502. package/dist/components/message/composables/use-promise-message.js +0 -49
  503. package/dist/components/resizable-handle/index.d.vue.ts +0 -6
  504. package/dist/components/resizable-handle/index.vue +0 -116
  505. package/dist/components/resizable-panel/index.vue +0 -57
  506. package/dist/components/resizable-panel/types.d.ts +0 -4
  507. package/dist/components/tabs-item/index.d.vue.ts +0 -4
  508. package/dist/components/tabs-item/index.vue +0 -16
  509. package/dist/components/tabs-item/types.d.ts +0 -10
  510. package/dist/composables/use-browser-observer.d.ts +0 -12
  511. package/dist/composables/use-browser-observer.js +0 -74
  512. package/dist/composables/use-focus-trap.js +0 -54
  513. package/dist/composables/use-list-filter.d.ts +0 -11
  514. package/dist/composables/use-list-filter.js +0 -56
  515. package/dist/composables/use-list-navigation.d.ts +0 -27
  516. package/dist/composables/use-list-navigation.js +0 -159
  517. package/dist/composables/use-lock-scroll.d.ts +0 -5
  518. package/dist/composables/use-lock-scroll.js +0 -37
  519. package/dist/composables/use-model-value.js +0 -13
  520. package/dist/composables/use-overlay-manager.js +0 -80
  521. package/dist/composables/use-swipe-gesture.d.ts +0 -65
  522. package/dist/composables/use-swipe-gesture.js +0 -98
  523. package/dist/contexts/carousel.d.ts +0 -14
  524. package/dist/contexts/carousel.js +0 -2
  525. package/dist/contexts/resizable.d.ts +0 -27
  526. package/dist/contexts/resizable.js +0 -2
  527. package/dist/contexts/tabs.d.ts +0 -15
  528. package/dist/contexts/tabs.js +0 -2
  529. package/dist/plugins/any-touch.d.ts +0 -213
  530. package/dist/plugins/any-touch.js +0 -592
  531. package/dist/styles/source.css +0 -640
  532. package/dist/types/shared/index.d.ts +0 -2
  533. package/dist/utils/fuzzy-search.d.ts +0 -7
  534. package/dist/utils/fuzzy-search.js +0 -61
  535. package/dist/utils/get.d.ts +0 -9
  536. package/dist/utils/get.js +0 -55
  537. package/dist/utils/index.d.ts +0 -10
  538. package/dist/utils/index.js +0 -10
  539. package/dist/utils/ref.d.ts +0 -5
  540. package/dist/utils/ref.js +0 -8
  541. package/dist/utils/uid.d.ts +0 -1
  542. package/dist/utils/uid.js +0 -4
  543. /package/dist/composables/{use-forward-ref-expose.d.ts → _internal/use-forward-ref-expose.d.ts} +0 -0
  544. /package/dist/composables/{use-popover-responsive.d.ts → _internal/use-popover-responsive.d.ts} +0 -0
  545. /package/dist/utils/{context.d.ts → _internal/context.d.ts} +0 -0
@@ -1,4 +1,10 @@
1
1
  @custom-variant dark (&:is(.dark *));
2
+ @custom-variant sibling (& + &);
3
+ @custom-variant within-group (&:is([data-group] *));
4
+
5
+ @source '../constants';
6
+ @source '../components';
7
+ @source '../composables';
2
8
 
3
9
  :root {
4
10
  --background-100-value: 0, 0%, 100%;
@@ -104,6 +110,7 @@
104
110
  --color-pink-1000-value: 333, 74%, 15%;
105
111
 
106
112
  --primary: var(--color-gray-1000-value);
113
+ --primary-foreground: var(--color-gray-100-value);
107
114
  --primary-hover: hsla(var(--primary), 70%);
108
115
  --primary-active: hsla(var(--primary), 90%);
109
116
 
@@ -113,7 +120,7 @@
113
120
  --ring: var(--primary);
114
121
 
115
122
  --shadow-background-border: 0 0 0 1px hsl(var(--background-200-value));
116
- --shadow-border-value: 0 0 0 1px #00000014;
123
+ --shadow-border-value: 0 0 0 1px hsl(var(--color-gray-300-value));
117
124
  --shadow-small-value: 0px 2px 2px #0000000a;
118
125
  --shadow-medium-value: 0px 2px 2px #0000000a, 0px 8px 8px -8px #0000000a;
119
126
  --shadow-large-value: 0px 2px 2px #0000000a, 0px 8px 16px -4px #0000000a;
@@ -262,7 +269,6 @@
262
269
  --color-pink-900-value: 341, 90%, 67%;
263
270
  --color-pink-1000-value: 333, 90%, 96%;
264
271
 
265
- --shadow-border-value: 0 0 0 1px #ffffff25;
266
272
  --shadow-small-value: 0px 1px 2px #00000029;
267
273
  --shadow-medium-value: 0px 2px 2px #00000052, 0px 8px 8px -8px #00000029;
268
274
  --shadow-large-value: 0px 2px 2px #0000000a, 0px 8px 16px -4px #0000000a;
@@ -287,12 +293,16 @@
287
293
 
288
294
  @theme inline {
289
295
  --font-sans:
290
- 'Inter', 'Inter Fallback', 'Geist', Arial, ui-sans-serif, system-ui, sans-serif,
291
- 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
296
+ 'Inter Variable', 'Inter', 'Inter Fallback', 'Geist', Arial, ui-sans-serif, system-ui,
297
+ sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
298
+ --font-mono:
299
+ 'MonoLisa', 'Geist Mono', 'JetBrains Mono', 'Input Mono', ui-monospace, SFMono-Regular, Menlo,
300
+ Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
292
301
 
293
302
  --color-primary: hsl(var(--primary));
294
303
  --color-primary-hover: var(--primary-hover);
295
304
  --color-primary-active: var(--primary-active);
305
+ --color-primary-foreground: hsl(var(--primary-foreground));
296
306
 
297
307
  --color-border: var(--color-gray-alpha-300-value);
298
308
  --color-border-hover: hsl(var(--color-gray-500-value));
@@ -426,7 +436,7 @@
426
436
  --shadow-modal: var(--shadow-modal-value);
427
437
  --shadow-fullscreen: var(--shadow-fullscreen-value);
428
438
 
429
- --shadow-border-base: var(--shadow-border-value);
439
+ --shadow-border-base: inset var(--shadow-border-value);
430
440
  --shadow-border-small:
431
441
  var(--shadow-border-value), var(--shadow-small-value), var(--shadow-background-border);
432
442
  --shadow-border-medium:
@@ -442,6 +452,7 @@
442
452
  --shadow-border-fullscreen:
443
453
  var(--shadow-border-value), var(--shadow-fullscreen-value), var(--shadow-background-border);
444
454
 
455
+ --text-11: 11px;
445
456
  --text-13: 13px;
446
457
  --text-15: 15px;
447
458
  }
@@ -462,6 +473,20 @@
462
473
  transition-timing-function: var(--default-transition-timing-function);
463
474
  }
464
475
 
476
+ @utility underline {
477
+ text-underline-position: from-font;
478
+ text-decoration-skip-ink: auto;
479
+ }
480
+
481
+ @utility truncate-* {
482
+ display: -webkit-box;
483
+ overflow: hidden;
484
+ text-overflow: ellipsis;
485
+ line-clamp: --value(integer);
486
+ -webkit-line-clamp: --value(integer);
487
+ -webkit-box-orient: vertical;
488
+ }
489
+
465
490
  @utility scrollbar-none {
466
491
  & {
467
492
  scrollbar-width: none;
@@ -495,7 +520,13 @@
495
520
 
496
521
  @utility transition-appearance {
497
522
  transition-property:
498
- opacity, transform, translate, background-color, box-shadow, font-size, border, color;
523
+ opacity, transform, scale, translate, background-color, box-shadow, border-color, color;
524
+ transition-duration: var(--default-transition-duration);
525
+ transition-timing-function: var(--default-transition-timing-function);
526
+ }
527
+
528
+ @utility transition-transform-opacity {
529
+ transition-property: opacity, transform, scale, rotate, translate;
499
530
  transition-duration: var(--default-transition-duration);
500
531
  transition-timing-function: var(--default-transition-timing-function);
501
532
  }
@@ -525,45 +556,69 @@
525
556
  font-family: inherit;
526
557
  }
527
558
 
559
+ @utility text-trim-both {
560
+ text-box-trim: trim-both;
561
+ text-box-edge: cap alphabetic;
562
+ }
563
+
564
+ .pxd-countdown-progress {
565
+ animation: pxd-countdown-shrink linear forwards;
566
+ transform-origin: left;
567
+ }
568
+
569
+ @keyframes pxd-countdown-shrink {
570
+ from {
571
+ transform: scaleX(1);
572
+ }
573
+
574
+ to {
575
+ transform: scaleX(0);
576
+ }
577
+ }
578
+
528
579
  @layer base {
529
- * {
580
+ *,
581
+ &::before,
582
+ &::after {
530
583
  border-color: var(--color-gray-300);
531
584
  }
585
+
586
+ .dark :is(*, *::before, *::after) {
587
+ border-color: var(--color-gray-400);
588
+ }
532
589
  }
533
590
 
534
- @layer components {
535
- .pxd-input--border {
536
- border-width: 1px;
537
- border-style: solid;
591
+ .pxd-input--border {
592
+ border-width: 1px;
593
+ border-style: solid;
538
594
 
539
- &:not(.is-disabled, .is-readonly):hover {
540
- border-color: hsla(var(--primary), 0.5);
595
+ &:not(.is-disabled, .is-readonly):hover {
596
+ border-color: hsla(var(--primary), 0.5);
597
+ }
598
+
599
+ &:not(.is-disabled, .is-readonly)[data-focusing='true'],
600
+ &:not(.is-disabled, .is-readonly):focus-within {
601
+ border-color: var(--color-primary);
602
+ box-shadow: 0 0 0 3px hsla(var(--primary), 0.2);
603
+ }
604
+
605
+ &.is-error {
606
+ &:not(:focus)::placeholder {
607
+ color: var(--color-red-900) !important;
541
608
  }
542
609
 
543
- &:not(.is-disabled, .is-readonly)[data-focusing='true'],
544
- &:not(.is-disabled, .is-readonly):focus-within {
545
- border-color: var(--color-primary);
546
- box-shadow: 0 0 0 3px hsla(var(--primary), 0.2);
610
+ &,
611
+ &:focus-within,
612
+ &[data-focusing='true'] {
613
+ border-color: hsl(var(--color-red-900-value));
614
+ box-shadow: 0 0 0 3px hsl(var(--color-red-300-value));
547
615
  }
548
616
 
549
- &.is-error {
550
- &:not(:focus)::placeholder {
551
- color: var(--color-red-900) !important;
552
- }
553
-
554
- &,
555
- &:focus-within,
556
- &[data-focusing='true'] {
557
- border-color: hsl(var(--color-red-900-value));
558
- box-shadow: 0 0 0 3px hsl(var(--color-red-300-value));
559
- }
560
-
561
- &:focus-within,
562
- &[data-focusing='true'],
563
- &:not(.is-disabled, .is-readonly):hover {
564
- border-color: hsl(var(--color-red-900-value));
565
- box-shadow: 0 0 0 3px hsl(var(--color-red-500-value));
566
- }
617
+ &:focus-within,
618
+ &[data-focusing='true'],
619
+ &:not(.is-disabled, .is-readonly):hover {
620
+ border-color: hsl(var(--color-red-900-value));
621
+ box-shadow: 0 0 0 3px hsl(var(--color-red-500-value));
567
622
  }
568
623
  }
569
624
  }
@@ -593,8 +648,8 @@
593
648
  .pxd-transition--fade-scale-enter-from,
594
649
  .pxd-transition--fade-scale-leave-to {
595
650
  opacity: 0;
596
- filter: blur(5px);
597
- transform: scale(0.75);
651
+ filter: blur(4px);
652
+ transform: scale(0.8);
598
653
  }
599
654
 
600
655
  /* Make exit faster than enter */
@@ -602,19 +657,11 @@
602
657
  transition-duration: var(--faster-transition-duration) !important;
603
658
  }
604
659
 
605
- /*
606
- .line-clamp {
607
- display: -webkit-box;
608
- overflow: hidden;
609
- text-overflow: ellipsis;
610
- line-clamp: var(--line-clamp, 1);
611
- -webkit-line-clamp: var(--line-clamp, 1);
612
- -webkit-box-orient: vertical;
613
- }
614
- */
615
-
616
- .scrollbar-stable {
617
- scrollbar-gutter: stable !important;
660
+ [data-enter-motion='false'][class*='-enter-active'],
661
+ [data-leave-motion='false'][class*='-leave-active'],
662
+ [data-visible='true'] [data-enter-motion='false'],
663
+ [data-visible='false'] [data-leave-motion='false'] {
664
+ transition-duration: 0s !important;
618
665
  }
619
666
 
620
667
  .scrollbar-disabled,
@@ -11,8 +11,8 @@ export type ComponentBreakpointKeys = 'xs' | 'sm' | 'md' | 'lg' | 'xl'
11
11
  export type ComponentBreakpoint<T = string> = Record<ComponentBreakpointKeys, T>
12
12
 
13
13
  export type ComponentAs = string | object
14
- export type ComponentLabel = string | number | readonly string[] | null
15
- export type ComponentValue = string | number | boolean
14
+ export type ComponentLabel = string | number | undefined | null
15
+ export type ComponentValue = string | number
16
16
 
17
17
  export type ComponentClass = string | any[] | Record<string, any>
18
18
 
@@ -29,8 +29,10 @@ export type ResponsiveValue<T> = T | Partial<ComponentBreakpoint<T>>
29
29
 
30
30
  export interface ComponentOption {
31
31
  label: ComponentLabel
32
- value: string | number
32
+ value: ComponentValue
33
33
  disabled?: boolean
34
34
  }
35
35
 
36
36
  export type ComponentBeforeChange<T> = (value: T) => Awaitable<T>
37
+
38
+ export type ComponentDateTimeValue = number | string | Date | null
@@ -7,3 +7,10 @@ export type Nullable<T> = T | null | undefined
7
7
 
8
8
  export type MaybeElement = Nullable<HTMLElement | SVGElement | ComponentPublicInstance>
9
9
  export type MaybeElementRef<T extends MaybeElement = MaybeElement> = MaybeRefOrGetter<Nullable<T>>
10
+ export type DeepPartial<T> = {
11
+ [K in keyof T]?: T[K] extends readonly unknown[]
12
+ ? T[K]
13
+ : T[K] extends object
14
+ ? DeepPartial<T[K]>
15
+ : T[K]
16
+ }
@@ -1,4 +1,5 @@
1
1
  import { inject, provide } from "vue";
2
+ import { isUndefined } from "../is.js";
2
3
  export function createContext(providerComponentName, fallbackValue) {
3
4
  const symbolDescription = `${providerComponentName}Context`;
4
5
  const injectionKey = Symbol(symbolDescription);
@@ -8,7 +9,7 @@ export function createContext(providerComponentName, fallbackValue) {
8
9
  };
9
10
  const injectContext = (fallback) => {
10
11
  const context = inject(injectionKey, fallback ?? fallbackValue);
11
- if (context === void 0) {
12
+ if (isUndefined(context)) {
12
13
  throw new Error(
13
14
  `Injection \`${injectionKey.toString()}\` not found. Component must be used within \`${providerComponentName}\``
14
15
  );
@@ -0,0 +1,33 @@
1
+ export declare const MENTION_TAG = "MENTION";
2
+ export declare const MENTION_TAG_LOWER: string;
3
+ /** The trigger a chip falls back to when its markup carries no `trigger` attribute. */
4
+ export declare const DEFAULT_TRIGGER = "@";
5
+ /**
6
+ * A collapsed selection sitting right after a `contenteditable=false` element is
7
+ * not representable; Android resolves it *into* the element, the IME then finds
8
+ * no editable context and hides the keyboard. A zero-width space after every chip
9
+ * gives the caret a real text node to live in. It is stripped on serialize, so it
10
+ * never reaches the public HTML, the v-model or the server.
11
+ */
12
+ export declare const CARET_ANCHOR = "\u200B";
13
+ export declare function createCaretAnchor(): Text;
14
+ export declare function isMentionElement(node: Node | null | undefined): boolean;
15
+ /**
16
+ * Every chip in `root`. Pressing Enter nests content in block elements, so the
17
+ * editor's direct children are not enough.
18
+ */
19
+ export declare function queryMentionElements(root: ParentNode): HTMLElement[];
20
+ export declare function getMentionLabel(el: HTMLElement): string;
21
+ export declare function createMentionElement(key: string, label: string, trigger?: string): HTMLElement;
22
+ /** Escape plain text for paste fallback (newlines → `<br>`). */
23
+ export declare function escapePlainTextAsHtml(text: string): string;
24
+ /**
25
+ * Serialize an editor DOM tree into the public HTML contract:
26
+ * plain text + `<mention key="...">label</mention>` only.
27
+ */
28
+ export declare function serializeMentionHtml(root: HTMLElement): string;
29
+ /**
30
+ * Paste sanitizer: keep legal `<mention key>` nodes; everything else becomes text.
31
+ */
32
+ export declare function sanitizeMentionClipboardHtml(html: string): DocumentFragment;
33
+ export declare function setMentionEditorContent(root: HTMLElement, html: string): void;
@@ -0,0 +1,146 @@
1
+ export const MENTION_TAG = "MENTION";
2
+ export const MENTION_TAG_LOWER = MENTION_TAG.toLowerCase();
3
+ const BLOCK_TAGS = /* @__PURE__ */ new Set(["DIV", "P", "LI", "PRE"]);
4
+ export const DEFAULT_TRIGGER = "@";
5
+ export const CARET_ANCHOR = "\u200B";
6
+ export function createCaretAnchor() {
7
+ return document.createTextNode(CARET_ANCHOR);
8
+ }
9
+ export function isMentionElement(node) {
10
+ return !!node && node.nodeType === Node.ELEMENT_NODE && node.tagName === MENTION_TAG;
11
+ }
12
+ export function queryMentionElements(root) {
13
+ return Array.from(root.querySelectorAll(MENTION_TAG_LOWER));
14
+ }
15
+ export function getMentionLabel(el) {
16
+ const trigger = el.getAttribute("trigger") || DEFAULT_TRIGGER;
17
+ const text = el.textContent ?? "";
18
+ return text.startsWith(trigger) ? text.slice(trigger.length) : text;
19
+ }
20
+ export function createMentionElement(key, label, trigger = DEFAULT_TRIGGER) {
21
+ const el = document.createElement(MENTION_TAG_LOWER);
22
+ el.setAttribute("key", key);
23
+ if (trigger !== DEFAULT_TRIGGER) {
24
+ el.setAttribute("trigger", trigger);
25
+ }
26
+ el.setAttribute("contenteditable", "false");
27
+ el.className = "pxd-mention--chip";
28
+ el.textContent = `${trigger}${label}`;
29
+ return el;
30
+ }
31
+ function escapeMentionText(text) {
32
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
33
+ }
34
+ function escapeMentionAttr(text) {
35
+ return escapeMentionText(text).replace(/"/g, "&quot;");
36
+ }
37
+ export function escapePlainTextAsHtml(text) {
38
+ return escapeMentionText(text).replace(/\n/g, "<br>");
39
+ }
40
+ export function serializeMentionHtml(root) {
41
+ let result = "";
42
+ function startLine() {
43
+ if (result && !result.endsWith("\n")) {
44
+ result += "\n";
45
+ }
46
+ }
47
+ function walk(node) {
48
+ if (node.nodeType === Node.TEXT_NODE) {
49
+ result += (node.textContent ?? "").replace(/\u00A0/g, " ").replace(/\u200B/g, "");
50
+ return;
51
+ }
52
+ if (node.nodeType !== Node.ELEMENT_NODE) {
53
+ return;
54
+ }
55
+ const el = node;
56
+ if (isMentionElement(el)) {
57
+ const key = el.getAttribute("key") ?? "";
58
+ const label = getMentionLabel(el);
59
+ const trigger = el.getAttribute("trigger");
60
+ const triggerAttr = trigger ? ` trigger="${escapeMentionAttr(trigger)}"` : "";
61
+ result += `<${MENTION_TAG_LOWER} key="${escapeMentionAttr(key)}"${triggerAttr}>${escapeMentionText(label)}</${MENTION_TAG_LOWER}>`;
62
+ return;
63
+ }
64
+ if (el.tagName === "BR") {
65
+ result += "\n";
66
+ return;
67
+ }
68
+ if (BLOCK_TAGS.has(el.tagName) && (el.textContent || el.querySelector(MENTION_TAG_LOWER))) {
69
+ startLine();
70
+ }
71
+ for (const child of Array.from(el.childNodes)) {
72
+ walk(child);
73
+ }
74
+ }
75
+ for (const child of Array.from(root.childNodes)) {
76
+ walk(child);
77
+ }
78
+ return result === "\n" ? "" : result;
79
+ }
80
+ function parseMentionHtml(html) {
81
+ const fragment = document.createDocumentFragment();
82
+ if (!html) {
83
+ return fragment;
84
+ }
85
+ const doc = new DOMParser().parseFromString(`<body>${html}</body>`, "text/html");
86
+ appendSanitizedChildren(doc.body, fragment);
87
+ return fragment;
88
+ }
89
+ export function sanitizeMentionClipboardHtml(html) {
90
+ const fragment = document.createDocumentFragment();
91
+ const doc = new DOMParser().parseFromString(html, "text/html");
92
+ appendSanitizedChildren(doc.body, fragment);
93
+ return fragment;
94
+ }
95
+ function appendSanitizedChildren(source, target) {
96
+ for (const child of Array.from(source.childNodes)) {
97
+ if (child.nodeType === Node.TEXT_NODE) {
98
+ const text = child.textContent ?? "";
99
+ if (text) {
100
+ appendPlainText(target, text);
101
+ }
102
+ continue;
103
+ }
104
+ if (child.nodeType !== Node.ELEMENT_NODE) {
105
+ continue;
106
+ }
107
+ const el = child;
108
+ if (isMentionElement(el)) {
109
+ const key = el.getAttribute("key");
110
+ if (key != null && key !== "") {
111
+ const trigger = el.getAttribute("trigger") || DEFAULT_TRIGGER;
112
+ target.appendChild(createMentionElement(key, getMentionLabel(el), trigger));
113
+ target.appendChild(createCaretAnchor());
114
+ continue;
115
+ }
116
+ }
117
+ if (el.tagName === "BR") {
118
+ target.appendChild(document.createElement("br"));
119
+ continue;
120
+ }
121
+ appendSanitizedChildren(el, target);
122
+ }
123
+ }
124
+ function appendPlainText(target, text) {
125
+ const parts = text.split("\n");
126
+ for (let i = 0; i < parts.length; i++) {
127
+ if (parts[i]) {
128
+ const last = target.lastChild;
129
+ if (last?.nodeType === Node.TEXT_NODE) {
130
+ last.textContent = (last.textContent ?? "") + parts[i];
131
+ } else {
132
+ target.appendChild(document.createTextNode(parts[i]));
133
+ }
134
+ }
135
+ if (i < parts.length - 1) {
136
+ target.appendChild(document.createElement("br"));
137
+ }
138
+ }
139
+ }
140
+ export function setMentionEditorContent(root, html) {
141
+ root.replaceChildren();
142
+ root.appendChild(parseMentionHtml(html));
143
+ if (!root.childNodes.length) {
144
+ root.appendChild(document.createElement("br"));
145
+ }
146
+ }
@@ -0,0 +1,42 @@
1
+ import type { Nullable } from '../../types/shared/utils.js';
2
+ import type { MaybeRefOrGetter, Ref } from 'vue';
3
+ export type TargetRef = MaybeRefOrGetter<Nullable<HTMLElement>> | MaybeRefOrGetter<Nullable<HTMLElement>>[] | MaybeRefOrGetter<Nullable<HTMLElement>[]>;
4
+ /**
5
+ * The only native method this factory calls itself. Target bookkeeping goes through
6
+ * `ObserverSpec.sync`, because `MutationObserver` has no `unobserve`.
7
+ */
8
+ export interface AnyObserver {
9
+ disconnect(): void;
10
+ }
11
+ /** Every native entry reports the node it was produced for. */
12
+ export interface AnyObserverEntry {
13
+ target: Node;
14
+ }
15
+ export interface ObservedItem<TItem> {
16
+ /** The native entry. A `MutationRecord` for mutation observers. */
17
+ entry: TItem;
18
+ /** The registered element this entry belongs to. */
19
+ target: HTMLElement;
20
+ }
21
+ export interface ObserverResults<TObserver> {
22
+ observer: Ref<TObserver | undefined>;
23
+ stop: () => void;
24
+ }
25
+ export interface ObserverSpec<TObserver extends AnyObserver, TOptions, TItem extends AnyObserverEntry> {
26
+ /** Options reduced to a stable string, so an equal setup shares one observer. */
27
+ normalize: (options: TOptions | undefined) => string;
28
+ create: (callback: (items: TItem[], observer: TObserver) => void, options: TOptions | undefined) => TObserver | undefined;
29
+ /**
30
+ * Applies the move from `prev` to `next` on an existing observer. Pooled specs are
31
+ * driven one element at a time (`[]` to `[el]` adds, `[el]` to `[]` removes).
32
+ */
33
+ sync: (observer: TObserver, prev: HTMLElement[], next: HTMLElement[], options: TOptions | undefined) => void;
34
+ /** Attributes a native item to the registered element it was reported for. */
35
+ resolveTarget: (item: TItem, observed: readonly HTMLElement[]) => HTMLElement | undefined;
36
+ /**
37
+ * Share one native instance across every caller using equal options. Only valid when
38
+ * items carry their own target, which rules out mutation observers.
39
+ */
40
+ pooled?: boolean;
41
+ }
42
+ export declare function createObserver<TObserver extends AnyObserver, TOptions, TItem extends AnyObserverEntry>(spec: ObserverSpec<TObserver, TOptions, TItem>): (target: TargetRef, callback: (items: ObservedItem<TItem>[]) => void, options?: MaybeRefOrGetter<TOptions>) => ObserverResults<TObserver>;
@@ -0,0 +1,173 @@
1
+ import { onScopeDispose, shallowRef, watch } from "vue";
2
+ import { getElement } from "../dom.js";
3
+ import { toArray } from "../format.js";
4
+ import { toValue } from "../helper.js";
5
+ import { isNotNil, isServer } from "../is.js";
6
+ function resolveTargets(source) {
7
+ return [
8
+ ...new Set(
9
+ toArray(toValue(source)).map((i) => getElement(i)).filter(isNotNil)
10
+ )
11
+ ];
12
+ }
13
+ function isSameElements(a, b) {
14
+ return a.length === b.length && a.every((el, i) => el === b[i]);
15
+ }
16
+ export function createObserver(spec) {
17
+ const pools = /* @__PURE__ */ new Map();
18
+ return function observerWrapper(target, callback, options) {
19
+ const observer = shallowRef();
20
+ const subscription = { callback };
21
+ let pool;
22
+ let observed = [];
23
+ let activeKey;
24
+ function attach(el) {
25
+ let subs = pool.targets.get(el);
26
+ if (!subs) {
27
+ pool.targets.set(el, subs = /* @__PURE__ */ new Set());
28
+ spec.sync(pool.observer, [], [el], pool.options);
29
+ }
30
+ subs.add(subscription);
31
+ }
32
+ function detach(el) {
33
+ const subs = pool.targets.get(el);
34
+ subs?.delete(subscription);
35
+ if (subs && !subs.size) {
36
+ pool.targets.delete(el);
37
+ spec.sync(pool.observer, [el], [], pool.options);
38
+ }
39
+ }
40
+ function dispatch(items) {
41
+ const batches = /* @__PURE__ */ new Map();
42
+ for (const entry of items) {
43
+ const subs = pool?.targets.get(entry.target);
44
+ if (!subs) {
45
+ continue;
46
+ }
47
+ for (const sub of subs) {
48
+ const batch = batches.get(sub);
49
+ if (batch) {
50
+ batch.push(entry);
51
+ } else {
52
+ batches.set(sub, [entry]);
53
+ }
54
+ }
55
+ }
56
+ for (const [sub, batch] of batches) {
57
+ sub.callback(batch.map((entry) => ({ entry, target: entry.target })));
58
+ }
59
+ }
60
+ function acquire(key, value) {
61
+ let entry = pools.get(key);
62
+ if (!entry) {
63
+ const created = spec.create(dispatch, value);
64
+ if (!created) {
65
+ return void 0;
66
+ }
67
+ entry = { observer: created, options: value, count: 0, targets: /* @__PURE__ */ new Map() };
68
+ pools.set(key, entry);
69
+ }
70
+ entry.count++;
71
+ return entry;
72
+ }
73
+ function cleanup() {
74
+ if (pool) {
75
+ observed.forEach(detach);
76
+ pool.count--;
77
+ if (pool.count <= 0) {
78
+ pool.observer.disconnect();
79
+ pools.delete(activeKey);
80
+ }
81
+ } else {
82
+ observer.value?.disconnect();
83
+ }
84
+ pool = void 0;
85
+ observer.value = void 0;
86
+ observed = [];
87
+ }
88
+ function emitDirectly(items) {
89
+ const payload = items.map((entry) => {
90
+ const target2 = spec.resolveTarget(entry, observed);
91
+ return target2 ? { entry, target: target2 } : void 0;
92
+ }).filter(isNotNil);
93
+ if (payload.length) {
94
+ subscription.callback(payload);
95
+ }
96
+ }
97
+ const unwatch = watch(
98
+ [() => resolveTargets(target), () => spec.normalize(toValue(options))],
99
+ ([newTargets, optionKey]) => {
100
+ if (isServer()) {
101
+ return;
102
+ }
103
+ let targetsChanged = !isSameElements(observed, newTargets);
104
+ if (optionKey !== activeKey) {
105
+ activeKey = optionKey;
106
+ cleanup();
107
+ targetsChanged = true;
108
+ }
109
+ if (!targetsChanged) {
110
+ return;
111
+ }
112
+ if (spec.pooled) {
113
+ if (!newTargets.length) {
114
+ observed.forEach(detach);
115
+ observed = [];
116
+ return;
117
+ }
118
+ if (!pool) {
119
+ pool = acquire(optionKey, toValue(options));
120
+ if (!pool) {
121
+ return;
122
+ }
123
+ observer.value = pool.observer;
124
+ observed = [];
125
+ }
126
+ observed.forEach((el) => {
127
+ if (!newTargets.includes(el)) {
128
+ detach(el);
129
+ }
130
+ });
131
+ newTargets.forEach((el) => {
132
+ if (!observed.includes(el)) {
133
+ attach(el);
134
+ }
135
+ });
136
+ observed = newTargets;
137
+ return;
138
+ }
139
+ if (!newTargets.length) {
140
+ if (observer.value) {
141
+ spec.sync(observer.value, observed, newTargets, toValue(options));
142
+ observed = [];
143
+ }
144
+ return;
145
+ }
146
+ if (!observer.value) {
147
+ observer.value = spec.create(emitDirectly, toValue(options));
148
+ if (!observer.value) {
149
+ return;
150
+ }
151
+ observed = [];
152
+ }
153
+ spec.sync(observer.value, observed, newTargets, toValue(options));
154
+ observed = newTargets;
155
+ },
156
+ {
157
+ immediate: true,
158
+ flush: "post"
159
+ }
160
+ );
161
+ function stop() {
162
+ cleanup();
163
+ unwatch();
164
+ }
165
+ onScopeDispose(() => {
166
+ stop();
167
+ });
168
+ return {
169
+ observer,
170
+ stop
171
+ };
172
+ };
173
+ }
@@ -0,0 +1,7 @@
1
+ import type { SwipeCellCloseTrigger } from '../../components/swipe-cell/types';
2
+ export type SwipeCellEntry = {
3
+ getGroup: () => string;
4
+ close: (trigger: SwipeCellCloseTrigger) => void;
5
+ };
6
+ export declare function registerSwipeCell(entry: SwipeCellEntry): () => void;
7
+ export declare function exclusiveOpen(self: SwipeCellEntry): void;