@hina-ui/vue 1.7.5 → 1.7.6

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 (528) hide show
  1. package/README.md +37 -0
  2. package/dist/index.js +2222 -987
  3. package/dist/index.js.map +1 -1
  4. package/dist/shared/behavior/anchor-follow.ts +95 -0
  5. package/dist/shared/behavior/form.ts +187 -0
  6. package/dist/shared/behavior/ripple.ts +222 -0
  7. package/dist/shared/behavior/spoiler/painter.ts +197 -0
  8. package/dist/shared/behavior/spoiler/worklet.ts +199 -0
  9. package/dist/shared/behavior/toast.ts +243 -0
  10. package/dist/shared/lib/anchor.ts +83 -0
  11. package/dist/shared/lib/banner.ts +10 -0
  12. package/dist/shared/lib/calendar/format.ts +23 -0
  13. package/dist/shared/lib/caret.ts +48 -0
  14. package/dist/shared/lib/collapse.ts +29 -0
  15. package/dist/shared/lib/command-palette/hotkey.ts +27 -0
  16. package/dist/shared/lib/command-palette/match.ts +92 -0
  17. package/dist/shared/lib/data-list.ts +40 -0
  18. package/dist/shared/lib/data-table/column-sizing-styles.ts +41 -0
  19. package/dist/shared/lib/data-table/column-sizing.ts +101 -0
  20. package/dist/shared/lib/data-table/csv.ts +51 -0
  21. package/dist/shared/lib/data-table/layout.ts +199 -0
  22. package/dist/shared/lib/data-table/resize.ts +66 -0
  23. package/dist/shared/lib/data-table/state.ts +226 -0
  24. package/dist/shared/lib/data-table/utils.ts +80 -0
  25. package/dist/shared/lib/date-range-field/validity.ts +21 -0
  26. package/dist/shared/lib/date.ts +111 -0
  27. package/dist/shared/lib/field-focus.ts +36 -0
  28. package/dist/shared/lib/file-upload/select.ts +58 -0
  29. package/dist/shared/lib/file-upload/size.ts +16 -0
  30. package/dist/shared/lib/form/errors.ts +48 -0
  31. package/dist/shared/lib/form/focus.ts +10 -0
  32. package/dist/shared/lib/form/standard-schema.ts +26 -0
  33. package/dist/shared/lib/form/values.ts +23 -0
  34. package/dist/shared/lib/highlighter.ts +98 -0
  35. package/dist/shared/lib/iris-origin.ts +40 -0
  36. package/dist/shared/lib/lightbox/clip.ts +117 -0
  37. package/dist/shared/lib/lightbox/download.ts +29 -0
  38. package/dist/shared/lib/lightbox/gesture.ts +54 -0
  39. package/dist/shared/lib/lightbox/paging.ts +33 -0
  40. package/dist/shared/lib/lightbox/pose.ts +142 -0
  41. package/dist/shared/lib/lightbox/source.ts +17 -0
  42. package/dist/shared/lib/lightbox/types.ts +14 -0
  43. package/dist/shared/lib/lightbox/zoom.ts +127 -0
  44. package/dist/shared/lib/meter-group.ts +16 -0
  45. package/dist/shared/lib/overlay-anchor.ts +42 -0
  46. package/dist/shared/lib/pagination.ts +16 -0
  47. package/dist/shared/lib/pointer-corridor.ts +26 -0
  48. package/dist/shared/lib/qr-code-export.ts +68 -0
  49. package/dist/shared/lib/range-calendar/limit.ts +11 -0
  50. package/dist/shared/lib/rating.ts +4 -0
  51. package/dist/shared/lib/relative-time.ts +20 -0
  52. package/dist/shared/lib/scroll-area.ts +77 -0
  53. package/dist/shared/lib/scroll-restore.ts +148 -0
  54. package/dist/shared/lib/toast-layout.ts +42 -0
  55. package/dist/shared/lib/tree/selection.ts +131 -0
  56. package/dist/shared/lib/tree-select/filter.ts +19 -0
  57. package/dist/shared/lib/virtual/choices.ts +193 -0
  58. package/dist/shared/lib/virtual/collection.ts +71 -0
  59. package/dist/shared/lib/virtual/filter.ts +26 -0
  60. package/dist/shared/lib/virtual/flow.ts +32 -0
  61. package/dist/shared/lib/virtual/list.ts +63 -0
  62. package/dist/shared/lib/virtual/navigation.ts +26 -0
  63. package/dist/shared/lib/virtual/tree.ts +98 -0
  64. package/dist/shared/locale/en-US.ts +220 -0
  65. package/dist/shared/locale/index.ts +52 -0
  66. package/dist/shared/locale/types.ts +225 -0
  67. package/dist/shared/locale/zh-CN.ts +215 -0
  68. package/dist/shared/primitives/number-field/LICENSE +21 -0
  69. package/dist/shared/primitives/number-field/index.ts +407 -0
  70. package/dist/shared/styles/semantic.css +10 -2
  71. package/dist/shared/types/autocomplete.ts +16 -0
  72. package/dist/shared/types/data-table.ts +170 -0
  73. package/dist/shared/types/pagination.ts +19 -0
  74. package/dist/shared/types/select.ts +23 -0
  75. package/dist/shared/types/tree-select.ts +34 -0
  76. package/dist/shared/types/tree.ts +20 -0
  77. package/dist/types/shared/src/behavior/anchor-follow.d.ts +13 -0
  78. package/dist/types/shared/src/behavior/anchor-follow.d.ts.map +1 -0
  79. package/dist/types/shared/src/behavior/form.d.ts +24 -0
  80. package/dist/types/shared/src/behavior/form.d.ts.map +1 -0
  81. package/dist/types/shared/src/behavior/ripple.d.ts +11 -0
  82. package/dist/types/shared/src/behavior/ripple.d.ts.map +1 -0
  83. package/dist/types/shared/src/behavior/spoiler/painter.d.ts +35 -0
  84. package/dist/types/shared/src/behavior/spoiler/painter.d.ts.map +1 -0
  85. package/dist/types/shared/src/behavior/spoiler/worklet.d.ts +2 -0
  86. package/dist/types/shared/src/behavior/spoiler/worklet.d.ts.map +1 -0
  87. package/dist/types/shared/src/behavior/toast.d.ts +72 -0
  88. package/dist/types/shared/src/behavior/toast.d.ts.map +1 -0
  89. package/dist/types/shared/src/lib/anchor.d.ts +31 -0
  90. package/dist/types/shared/src/lib/anchor.d.ts.map +1 -0
  91. package/dist/types/shared/src/lib/banner.d.ts +3 -0
  92. package/dist/types/shared/src/lib/banner.d.ts.map +1 -0
  93. package/dist/types/shared/src/lib/calendar/format.d.ts +7 -0
  94. package/dist/types/shared/src/lib/calendar/format.d.ts.map +1 -0
  95. package/dist/types/shared/src/lib/caret.d.ts +2 -0
  96. package/dist/types/shared/src/lib/caret.d.ts.map +1 -0
  97. package/dist/types/shared/src/lib/collapse.d.ts +9 -0
  98. package/dist/types/shared/src/lib/collapse.d.ts.map +1 -0
  99. package/dist/types/shared/src/lib/command-palette/hotkey.d.ts +9 -0
  100. package/dist/types/shared/src/lib/command-palette/hotkey.d.ts.map +1 -0
  101. package/dist/types/shared/src/lib/command-palette/match.d.ts +21 -0
  102. package/dist/types/shared/src/lib/command-palette/match.d.ts.map +1 -0
  103. package/dist/types/shared/src/lib/data-list.d.ts +7 -0
  104. package/dist/types/shared/src/lib/data-list.d.ts.map +1 -0
  105. package/dist/types/shared/src/lib/data-table/column-sizing-styles.d.ts +8 -0
  106. package/dist/types/shared/src/lib/data-table/column-sizing-styles.d.ts.map +1 -0
  107. package/dist/types/shared/src/lib/data-table/column-sizing.d.ts +22 -0
  108. package/dist/types/shared/src/lib/data-table/column-sizing.d.ts.map +1 -0
  109. package/dist/types/shared/src/lib/data-table/csv.d.ts +5 -0
  110. package/dist/types/shared/src/lib/data-table/csv.d.ts.map +1 -0
  111. package/dist/types/shared/src/lib/data-table/layout.d.ts +28 -0
  112. package/dist/types/shared/src/lib/data-table/layout.d.ts.map +1 -0
  113. package/dist/types/shared/src/lib/data-table/resize.d.ts +15 -0
  114. package/dist/types/shared/src/lib/data-table/resize.d.ts.map +1 -0
  115. package/dist/types/shared/src/lib/data-table/state.d.ts +103 -0
  116. package/dist/types/shared/src/lib/data-table/state.d.ts.map +1 -0
  117. package/dist/types/shared/src/lib/data-table/utils.d.ts +11 -0
  118. package/dist/types/shared/src/lib/data-table/utils.d.ts.map +1 -0
  119. package/dist/types/shared/src/lib/date-range-field/validity.d.ts +12 -0
  120. package/dist/types/shared/src/lib/date-range-field/validity.d.ts.map +1 -0
  121. package/dist/types/shared/src/lib/date.d.ts +28 -0
  122. package/dist/types/shared/src/lib/date.d.ts.map +1 -0
  123. package/dist/types/shared/src/lib/field-focus.d.ts +2 -0
  124. package/dist/types/shared/src/lib/field-focus.d.ts.map +1 -0
  125. package/dist/types/shared/src/lib/file-upload/select.d.ts +17 -0
  126. package/dist/types/shared/src/lib/file-upload/select.d.ts.map +1 -0
  127. package/dist/types/shared/src/lib/file-upload/size.d.ts +2 -0
  128. package/dist/types/shared/src/lib/file-upload/size.d.ts.map +1 -0
  129. package/dist/types/shared/src/lib/form/errors.d.ts +7 -0
  130. package/dist/types/shared/src/lib/form/errors.d.ts.map +1 -0
  131. package/dist/types/shared/src/lib/form/focus.d.ts +2 -0
  132. package/dist/types/shared/src/lib/form/focus.d.ts.map +1 -0
  133. package/dist/types/shared/src/lib/form/standard-schema.d.ts +23 -0
  134. package/dist/types/shared/src/lib/form/standard-schema.d.ts.map +1 -0
  135. package/dist/types/shared/src/lib/form/values.d.ts +3 -0
  136. package/dist/types/shared/src/lib/form/values.d.ts.map +1 -0
  137. package/dist/types/shared/src/lib/highlighter.d.ts +4 -0
  138. package/dist/types/shared/src/lib/highlighter.d.ts.map +1 -0
  139. package/dist/types/shared/src/lib/iris-origin.d.ts +6 -0
  140. package/dist/types/shared/src/lib/iris-origin.d.ts.map +1 -0
  141. package/dist/types/shared/src/lib/lightbox/clip.d.ts +16 -0
  142. package/dist/types/shared/src/lib/lightbox/clip.d.ts.map +1 -0
  143. package/dist/types/shared/src/lib/lightbox/download.d.ts +3 -0
  144. package/dist/types/shared/src/lib/lightbox/download.d.ts.map +1 -0
  145. package/dist/types/shared/src/lib/lightbox/gesture.d.ts +26 -0
  146. package/dist/types/shared/src/lib/lightbox/gesture.d.ts.map +1 -0
  147. package/dist/types/shared/src/lib/lightbox/paging.d.ts +9 -0
  148. package/dist/types/shared/src/lib/lightbox/paging.d.ts.map +1 -0
  149. package/dist/types/shared/src/lib/lightbox/pose.d.ts +38 -0
  150. package/dist/types/shared/src/lib/lightbox/pose.d.ts.map +1 -0
  151. package/dist/types/shared/src/lib/lightbox/source.d.ts +4 -0
  152. package/dist/types/shared/src/lib/lightbox/source.d.ts.map +1 -0
  153. package/dist/types/shared/src/lib/lightbox/types.d.ts +16 -0
  154. package/dist/types/shared/src/lib/lightbox/types.d.ts.map +1 -0
  155. package/dist/types/shared/src/lib/lightbox/zoom.d.ts +40 -0
  156. package/dist/types/shared/src/lib/lightbox/zoom.d.ts.map +1 -0
  157. package/dist/types/shared/src/lib/meter-group.d.ts +5 -0
  158. package/dist/types/shared/src/lib/meter-group.d.ts.map +1 -0
  159. package/dist/types/shared/src/lib/overlay-anchor.d.ts +10 -0
  160. package/dist/types/shared/src/lib/overlay-anchor.d.ts.map +1 -0
  161. package/dist/types/shared/src/lib/pagination.d.ts +4 -0
  162. package/dist/types/shared/src/lib/pagination.d.ts.map +1 -0
  163. package/dist/types/shared/src/lib/pointer-corridor.d.ts +7 -0
  164. package/dist/types/shared/src/lib/pointer-corridor.d.ts.map +1 -0
  165. package/dist/types/shared/src/lib/qr-code-export.d.ts +6 -0
  166. package/dist/types/shared/src/lib/qr-code-export.d.ts.map +1 -0
  167. package/dist/types/shared/src/lib/range-calendar/limit.d.ts +3 -0
  168. package/dist/types/shared/src/lib/range-calendar/limit.d.ts.map +1 -0
  169. package/dist/types/shared/src/lib/rating.d.ts +2 -0
  170. package/dist/types/shared/src/lib/rating.d.ts.map +1 -0
  171. package/dist/types/shared/src/lib/relative-time.d.ts +2 -0
  172. package/dist/types/shared/src/lib/relative-time.d.ts.map +1 -0
  173. package/dist/types/shared/src/lib/scroll-area.d.ts +50 -0
  174. package/dist/types/shared/src/lib/scroll-area.d.ts.map +1 -0
  175. package/dist/types/shared/src/lib/scroll-restore.d.ts +34 -0
  176. package/dist/types/shared/src/lib/scroll-restore.d.ts.map +1 -0
  177. package/dist/types/shared/src/lib/toast-layout.d.ts +13 -0
  178. package/dist/types/shared/src/lib/toast-layout.d.ts.map +1 -0
  179. package/dist/types/shared/src/lib/tree/selection.d.ts +23 -0
  180. package/dist/types/shared/src/lib/tree/selection.d.ts.map +1 -0
  181. package/dist/types/shared/src/lib/tree-select/filter.d.ts +7 -0
  182. package/dist/types/shared/src/lib/tree-select/filter.d.ts.map +1 -0
  183. package/dist/types/shared/src/lib/virtual/choices.d.ts +59 -0
  184. package/dist/types/shared/src/lib/virtual/choices.d.ts.map +1 -0
  185. package/dist/types/shared/src/lib/virtual/collection.d.ts +25 -0
  186. package/dist/types/shared/src/lib/virtual/collection.d.ts.map +1 -0
  187. package/dist/types/shared/src/lib/virtual/flow.d.ts +18 -0
  188. package/dist/types/shared/src/lib/virtual/flow.d.ts.map +1 -0
  189. package/dist/types/shared/src/lib/virtual/list.d.ts +46 -0
  190. package/dist/types/shared/src/lib/virtual/list.d.ts.map +1 -0
  191. package/dist/types/shared/src/lib/virtual/navigation.d.ts +3 -0
  192. package/dist/types/shared/src/lib/virtual/navigation.d.ts.map +1 -0
  193. package/dist/types/shared/src/lib/virtual/tree.d.ts +31 -0
  194. package/dist/types/shared/src/lib/virtual/tree.d.ts.map +1 -0
  195. package/dist/types/shared/src/locale/en-US.d.ts +3 -0
  196. package/dist/types/shared/src/locale/en-US.d.ts.map +1 -0
  197. package/dist/types/shared/src/locale/index.d.ts +6 -0
  198. package/dist/types/shared/src/locale/index.d.ts.map +1 -0
  199. package/dist/types/shared/src/locale/types.d.ts +235 -0
  200. package/dist/types/shared/src/locale/types.d.ts.map +1 -0
  201. package/dist/types/shared/src/locale/zh-CN.d.ts +3 -0
  202. package/dist/types/shared/src/locale/zh-CN.d.ts.map +1 -0
  203. package/dist/types/shared/src/primitives/number-field/index.d.ts +155 -0
  204. package/dist/types/shared/src/primitives/number-field/index.d.ts.map +1 -0
  205. package/dist/types/shared/src/types/autocomplete.d.ts +14 -0
  206. package/dist/types/shared/src/types/autocomplete.d.ts.map +1 -0
  207. package/dist/types/shared/src/types/data-table.d.ts +169 -0
  208. package/dist/types/shared/src/types/data-table.d.ts.map +1 -0
  209. package/dist/types/shared/src/types/pagination.d.ts +23 -0
  210. package/dist/types/shared/src/types/pagination.d.ts.map +1 -0
  211. package/dist/types/shared/src/types/select.d.ts +14 -0
  212. package/dist/types/shared/src/types/select.d.ts.map +1 -0
  213. package/dist/types/shared/src/types/tree-select.d.ts +10 -0
  214. package/dist/types/shared/src/types/tree-select.d.ts.map +1 -0
  215. package/dist/types/shared/src/types/tree.d.ts +18 -0
  216. package/dist/types/shared/src/types/tree.d.ts.map +1 -0
  217. package/dist/types/shared/src/variants/autocomplete.d.ts +3 -0
  218. package/dist/types/shared/src/variants/autocomplete.d.ts.map +1 -0
  219. package/dist/types/shared/src/variants/editable.d.ts +52 -0
  220. package/dist/types/shared/src/variants/editable.d.ts.map +1 -0
  221. package/dist/types/shared/src/variants/float-button.d.ts +74 -0
  222. package/dist/types/shared/src/variants/float-button.d.ts.map +1 -0
  223. package/dist/types/shared/src/variants/split-button.d.ts +18 -0
  224. package/dist/types/shared/src/variants/split-button.d.ts.map +1 -0
  225. package/dist/types/vue/src/components/accordion/AccordionTrigger.vue.d.ts.map +1 -1
  226. package/dist/types/vue/src/components/anchor/composables/useAnchor.d.ts +2 -7
  227. package/dist/types/vue/src/components/anchor/composables/useAnchor.d.ts.map +1 -1
  228. package/dist/types/vue/src/components/anchor/composables/useAnchorFollow.d.ts.map +1 -1
  229. package/dist/types/vue/src/components/anchor/composables/useScrollSpy.d.ts +2 -5
  230. package/dist/types/vue/src/components/anchor/composables/useScrollSpy.d.ts.map +1 -1
  231. package/dist/types/vue/src/components/anchor/types.d.ts +1 -8
  232. package/dist/types/vue/src/components/anchor/types.d.ts.map +1 -1
  233. package/dist/types/vue/src/components/autocomplete/autocomplete.variants.d.ts +1 -1
  234. package/dist/types/vue/src/components/autocomplete/autocomplete.variants.d.ts.map +1 -1
  235. package/dist/types/vue/src/components/autocomplete/types.d.ts +1 -13
  236. package/dist/types/vue/src/components/autocomplete/types.d.ts.map +1 -1
  237. package/dist/types/vue/src/components/banner/utils/direction.d.ts +1 -2
  238. package/dist/types/vue/src/components/banner/utils/direction.d.ts.map +1 -1
  239. package/dist/types/vue/src/components/calendar/utils/format.d.ts +1 -6
  240. package/dist/types/vue/src/components/calendar/utils/format.d.ts.map +1 -1
  241. package/dist/types/vue/src/components/code-block/highlighter.d.ts +1 -3
  242. package/dist/types/vue/src/components/code-block/highlighter.d.ts.map +1 -1
  243. package/dist/types/vue/src/components/collapsible/CollapsibleTrigger.vue.d.ts.map +1 -1
  244. package/dist/types/vue/src/components/command-palette/composables/useCommandItems.d.ts +1 -1
  245. package/dist/types/vue/src/components/command-palette/utils/hotkey.d.ts +1 -8
  246. package/dist/types/vue/src/components/command-palette/utils/hotkey.d.ts.map +1 -1
  247. package/dist/types/vue/src/components/command-palette/utils/match.d.ts +5 -12
  248. package/dist/types/vue/src/components/command-palette/utils/match.d.ts.map +1 -1
  249. package/dist/types/vue/src/components/data-list/composables/useDataList.d.ts.map +1 -1
  250. package/dist/types/vue/src/components/data-list/utils/scroll.d.ts +1 -2
  251. package/dist/types/vue/src/components/data-list/utils/scroll.d.ts.map +1 -1
  252. package/dist/types/vue/src/components/data-table/column-sizing-styles.d.ts +1 -3
  253. package/dist/types/vue/src/components/data-table/column-sizing-styles.d.ts.map +1 -1
  254. package/dist/types/vue/src/components/data-table/column-sizing.d.ts +1 -21
  255. package/dist/types/vue/src/components/data-table/column-sizing.d.ts.map +1 -1
  256. package/dist/types/vue/src/components/data-table/composables/useDataTable.d.ts.map +1 -1
  257. package/dist/types/vue/src/components/data-table/composables/useTableColumns.d.ts.map +1 -1
  258. package/dist/types/vue/src/components/data-table/composables/useTableDrag.d.ts.map +1 -1
  259. package/dist/types/vue/src/components/data-table/composables/useTableExport.d.ts.map +1 -1
  260. package/dist/types/vue/src/components/data-table/composables/useTableResize.d.ts.map +1 -1
  261. package/dist/types/vue/src/components/data-table/composables/useTableResizeHandles.d.ts.map +1 -1
  262. package/dist/types/vue/src/components/data-table/composables/useTableVirtual.d.ts.map +1 -1
  263. package/dist/types/vue/src/components/data-table/types.d.ts +3 -153
  264. package/dist/types/vue/src/components/data-table/types.d.ts.map +1 -1
  265. package/dist/types/vue/src/components/data-table/utils.d.ts +1 -9
  266. package/dist/types/vue/src/components/data-table/utils.d.ts.map +1 -1
  267. package/dist/types/vue/src/components/date-range-field/utils/validity.d.ts +1 -11
  268. package/dist/types/vue/src/components/date-range-field/utils/validity.d.ts.map +1 -1
  269. package/dist/types/vue/src/components/editable/editable.variants.d.ts +1 -1
  270. package/dist/types/vue/src/components/editable/editable.variants.d.ts.map +1 -1
  271. package/dist/types/vue/src/components/file-upload/utils/select.d.ts +1 -16
  272. package/dist/types/vue/src/components/file-upload/utils/select.d.ts.map +1 -1
  273. package/dist/types/vue/src/components/file-upload/utils/size.d.ts +1 -1
  274. package/dist/types/vue/src/components/file-upload/utils/size.d.ts.map +1 -1
  275. package/dist/types/vue/src/components/float-button/float-button.variants.d.ts +1 -1
  276. package/dist/types/vue/src/components/float-button/float-button.variants.d.ts.map +1 -1
  277. package/dist/types/vue/src/components/form/Form.vue.d.ts +1 -1
  278. package/dist/types/vue/src/components/form/composables/useForm.d.ts +9 -15
  279. package/dist/types/vue/src/components/form/composables/useForm.d.ts.map +1 -1
  280. package/dist/types/vue/src/components/form/standard-schema.d.ts +1 -22
  281. package/dist/types/vue/src/components/form/standard-schema.d.ts.map +1 -1
  282. package/dist/types/vue/src/components/form/utils/errors.d.ts +1 -6
  283. package/dist/types/vue/src/components/form/utils/errors.d.ts.map +1 -1
  284. package/dist/types/vue/src/components/form/utils/focus.d.ts +1 -1
  285. package/dist/types/vue/src/components/form/utils/focus.d.ts.map +1 -1
  286. package/dist/types/vue/src/components/form/utils/values.d.ts +1 -2
  287. package/dist/types/vue/src/components/form/utils/values.d.ts.map +1 -1
  288. package/dist/types/vue/src/components/form-field/FormField.vue.d.ts.map +1 -1
  289. package/dist/types/vue/src/components/lightbox/types.d.ts +1 -15
  290. package/dist/types/vue/src/components/lightbox/types.d.ts.map +1 -1
  291. package/dist/types/vue/src/components/lightbox/utils/clip.d.ts +1 -15
  292. package/dist/types/vue/src/components/lightbox/utils/clip.d.ts.map +1 -1
  293. package/dist/types/vue/src/components/lightbox/utils/download.d.ts +1 -2
  294. package/dist/types/vue/src/components/lightbox/utils/download.d.ts.map +1 -1
  295. package/dist/types/vue/src/components/lightbox/utils/gesture.d.ts +1 -25
  296. package/dist/types/vue/src/components/lightbox/utils/gesture.d.ts.map +1 -1
  297. package/dist/types/vue/src/components/lightbox/utils/paging.d.ts +1 -8
  298. package/dist/types/vue/src/components/lightbox/utils/paging.d.ts.map +1 -1
  299. package/dist/types/vue/src/components/lightbox/utils/pose.d.ts +1 -37
  300. package/dist/types/vue/src/components/lightbox/utils/pose.d.ts.map +1 -1
  301. package/dist/types/vue/src/components/lightbox/utils/source.d.ts +1 -3
  302. package/dist/types/vue/src/components/lightbox/utils/source.d.ts.map +1 -1
  303. package/dist/types/vue/src/components/lightbox/utils/zoom.d.ts +1 -39
  304. package/dist/types/vue/src/components/lightbox/utils/zoom.d.ts.map +1 -1
  305. package/dist/types/vue/src/components/meter-group/utils/tones.d.ts +1 -3
  306. package/dist/types/vue/src/components/meter-group/utils/tones.d.ts.map +1 -1
  307. package/dist/types/vue/src/components/month-grid/MonthGrid.vue.d.ts +1 -1
  308. package/dist/types/vue/src/components/multi-select/MultiSelect.vue.d.ts.map +1 -1
  309. package/dist/types/vue/src/components/pagination/composables/usePagination.d.ts +2 -2
  310. package/dist/types/vue/src/components/pagination/composables/usePagination.d.ts.map +1 -1
  311. package/dist/types/vue/src/components/pagination/types.d.ts +1 -22
  312. package/dist/types/vue/src/components/pagination/types.d.ts.map +1 -1
  313. package/dist/types/vue/src/components/pagination/utils/ranges.d.ts +1 -2
  314. package/dist/types/vue/src/components/pagination/utils/ranges.d.ts.map +1 -1
  315. package/dist/types/vue/src/components/password-input/PasswordInput.vue.d.ts +4 -1
  316. package/dist/types/vue/src/components/password-input/PasswordInput.vue.d.ts.map +1 -1
  317. package/dist/types/vue/src/components/qr-code/export.d.ts +1 -2
  318. package/dist/types/vue/src/components/qr-code/export.d.ts.map +1 -1
  319. package/dist/types/vue/src/components/range-calendar/utils/limit.d.ts +1 -2
  320. package/dist/types/vue/src/components/range-calendar/utils/limit.d.ts.map +1 -1
  321. package/dist/types/vue/src/components/range-slider/RangeSlider.vue.d.ts +2 -2
  322. package/dist/types/vue/src/components/rating/utils/fill.d.ts +1 -1
  323. package/dist/types/vue/src/components/rating/utils/fill.d.ts.map +1 -1
  324. package/dist/types/vue/src/components/ripple/useRipple.d.ts.map +1 -1
  325. package/dist/types/vue/src/components/scroll-area/ScrollArea.vue.d.ts.map +1 -1
  326. package/dist/types/vue/src/components/scroll-area/composables/useEdgeShadow.d.ts +2 -1
  327. package/dist/types/vue/src/components/scroll-area/composables/useEdgeShadow.d.ts.map +1 -1
  328. package/dist/types/vue/src/components/scroll-area/composables/useLayerLock.d.ts.map +1 -1
  329. package/dist/types/vue/src/components/scroll-area/composables/useWheelRedirect.d.ts.map +1 -1
  330. package/dist/types/vue/src/components/scroll-area/scroll-restore.d.ts +1 -33
  331. package/dist/types/vue/src/components/scroll-area/scroll-restore.d.ts.map +1 -1
  332. package/dist/types/vue/src/components/search-input/SearchInput.vue.d.ts +4 -1
  333. package/dist/types/vue/src/components/search-input/SearchInput.vue.d.ts.map +1 -1
  334. package/dist/types/vue/src/components/select/types.d.ts +1 -13
  335. package/dist/types/vue/src/components/select/types.d.ts.map +1 -1
  336. package/dist/types/vue/src/components/slider/Slider.vue.d.ts +2 -2
  337. package/dist/types/vue/src/components/split-button/split-button.variants.d.ts +1 -1
  338. package/dist/types/vue/src/components/split-button/split-button.variants.d.ts.map +1 -1
  339. package/dist/types/vue/src/components/spoiler/SpoilerPainter.d.ts +1 -34
  340. package/dist/types/vue/src/components/spoiler/SpoilerPainter.d.ts.map +1 -1
  341. package/dist/types/vue/src/components/spoiler/utils/irisOrigin.d.ts +1 -5
  342. package/dist/types/vue/src/components/spoiler/utils/irisOrigin.d.ts.map +1 -1
  343. package/dist/types/vue/src/components/spoiler/worklet.d.ts +1 -1
  344. package/dist/types/vue/src/components/spoiler/worklet.d.ts.map +1 -1
  345. package/dist/types/vue/src/components/table/Table.vue.d.ts +6 -3
  346. package/dist/types/vue/src/components/table/Table.vue.d.ts.map +1 -1
  347. package/dist/types/vue/src/components/tabs/TabsList.vue.d.ts +6 -3
  348. package/dist/types/vue/src/components/tabs/TabsList.vue.d.ts.map +1 -1
  349. package/dist/types/vue/src/components/time/utils/relativeTime.d.ts +1 -1
  350. package/dist/types/vue/src/components/time/utils/relativeTime.d.ts.map +1 -1
  351. package/dist/types/vue/src/components/toast/composables/useToastLayout.d.ts +4 -11
  352. package/dist/types/vue/src/components/toast/composables/useToastLayout.d.ts.map +1 -1
  353. package/dist/types/vue/src/components/toast/store.d.ts +14 -62
  354. package/dist/types/vue/src/components/toast/store.d.ts.map +1 -1
  355. package/dist/types/vue/src/components/tree/composables/useTree.d.ts.map +1 -1
  356. package/dist/types/vue/src/components/tree/types.d.ts +1 -17
  357. package/dist/types/vue/src/components/tree/types.d.ts.map +1 -1
  358. package/dist/types/vue/src/components/tree/utils/selection.d.ts +1 -15
  359. package/dist/types/vue/src/components/tree/utils/selection.d.ts.map +1 -1
  360. package/dist/types/vue/src/components/tree-select/types.d.ts +1 -9
  361. package/dist/types/vue/src/components/tree-select/types.d.ts.map +1 -1
  362. package/dist/types/vue/src/components/tree-select/utils/filterTree.d.ts +1 -6
  363. package/dist/types/vue/src/components/tree-select/utils/filterTree.d.ts.map +1 -1
  364. package/dist/types/vue/src/components/virtual-list/composables/useVirtualList.d.ts +1 -1
  365. package/dist/types/vue/src/components/virtual-list/composables/useVirtualList.d.ts.map +1 -1
  366. package/dist/types/vue/src/components/visually-hidden/VisuallyHidden.vue.d.ts +4 -1
  367. package/dist/types/vue/src/components/visually-hidden/VisuallyHidden.vue.d.ts.map +1 -1
  368. package/dist/types/vue/src/lib/caret.d.ts +1 -1
  369. package/dist/types/vue/src/lib/caret.d.ts.map +1 -1
  370. package/dist/types/vue/src/lib/collapse.d.ts +2 -8
  371. package/dist/types/vue/src/lib/collapse.d.ts.map +1 -1
  372. package/dist/types/vue/src/lib/date.d.ts +1 -27
  373. package/dist/types/vue/src/lib/date.d.ts.map +1 -1
  374. package/dist/types/vue/src/lib/field-focus.d.ts +1 -1
  375. package/dist/types/vue/src/lib/field-focus.d.ts.map +1 -1
  376. package/dist/types/vue/src/lib/overlay-anchor.d.ts +2 -7
  377. package/dist/types/vue/src/lib/overlay-anchor.d.ts.map +1 -1
  378. package/dist/types/vue/src/lib/pointer-corridor.d.ts +1 -6
  379. package/dist/types/vue/src/lib/pointer-corridor.d.ts.map +1 -1
  380. package/dist/types/vue/src/lib/reka/useVirtualChoices.d.ts +3 -11
  381. package/dist/types/vue/src/lib/reka/useVirtualChoices.d.ts.map +1 -1
  382. package/dist/types/vue/src/lib/reka/useVirtualTree.d.ts +1 -1
  383. package/dist/types/vue/src/lib/reka/useVirtualTree.d.ts.map +1 -1
  384. package/dist/types/vue/src/lib/virtual/navigation.d.ts +1 -2
  385. package/dist/types/vue/src/lib/virtual/navigation.d.ts.map +1 -1
  386. package/dist/types/vue/src/lib/virtual/useVirtualCollection.d.ts +1 -1
  387. package/dist/types/vue/src/lib/virtual/useVirtualCollection.d.ts.map +1 -1
  388. package/dist/types/vue/src/lib/virtual/useVirtualWindow.d.ts +2 -15
  389. package/dist/types/vue/src/lib/virtual/useVirtualWindow.d.ts.map +1 -1
  390. package/dist/types/vue/src/locale/en-US.d.ts +1 -2
  391. package/dist/types/vue/src/locale/en-US.d.ts.map +1 -1
  392. package/dist/types/vue/src/locale/index.d.ts +3 -4
  393. package/dist/types/vue/src/locale/index.d.ts.map +1 -1
  394. package/dist/types/vue/src/locale/types.d.ts +1 -234
  395. package/dist/types/vue/src/locale/types.d.ts.map +1 -1
  396. package/dist/types/vue/src/locale/zh-CN.d.ts +1 -2
  397. package/dist/types/vue/src/locale/zh-CN.d.ts.map +1 -1
  398. package/dist/types/vue/src/primitives/number-field/NumberFieldDecrement.vue.d.ts +17 -0
  399. package/dist/types/vue/src/primitives/number-field/NumberFieldDecrement.vue.d.ts.map +1 -0
  400. package/dist/types/vue/src/primitives/number-field/NumberFieldIncrement.vue.d.ts +17 -0
  401. package/dist/types/vue/src/primitives/number-field/NumberFieldIncrement.vue.d.ts.map +1 -0
  402. package/dist/types/vue/src/primitives/number-field/NumberFieldInput.vue.d.ts +16 -0
  403. package/dist/types/vue/src/primitives/number-field/NumberFieldInput.vue.d.ts.map +1 -0
  404. package/dist/types/vue/src/primitives/number-field/NumberFieldRoot.vue.d.ts +47 -0
  405. package/dist/types/vue/src/primitives/number-field/NumberFieldRoot.vue.d.ts.map +1 -0
  406. package/dist/types/vue/src/primitives/number-field/context.d.ts +41 -0
  407. package/dist/types/vue/src/primitives/number-field/context.d.ts.map +1 -0
  408. package/dist/types/vue/src/primitives/number-field/index.d.ts +5 -0
  409. package/dist/types/vue/src/primitives/number-field/index.d.ts.map +1 -0
  410. package/dist/types/vue/src/primitives/utils/timers.d.ts +6 -0
  411. package/dist/types/vue/src/primitives/utils/timers.d.ts.map +1 -0
  412. package/dist/types/vue/src/primitives/utils/usePrimitiveElement.d.ts +6 -0
  413. package/dist/types/vue/src/primitives/utils/usePrimitiveElement.d.ts.map +1 -0
  414. package/dist/types/vue/src/primitives/utils/useVModel.d.ts +7 -0
  415. package/dist/types/vue/src/primitives/utils/useVModel.d.ts.map +1 -0
  416. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInput.d.ts +66 -0
  417. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInput.d.ts.map +1 -0
  418. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue.d.ts +28 -0
  419. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue.d.ts.map +1 -0
  420. package/package.json +3 -2
  421. package/src/components/accordion/AccordionTrigger.vue +9 -1
  422. package/src/components/anchor/composables/useAnchor.ts +3 -12
  423. package/src/components/anchor/composables/useAnchorFollow.ts +8 -76
  424. package/src/components/anchor/composables/useScrollSpy.ts +22 -38
  425. package/src/components/anchor/types.ts +1 -8
  426. package/src/components/autocomplete/autocomplete.variants.ts +1 -1
  427. package/src/components/autocomplete/composables/useAutocomplete.ts +1 -1
  428. package/src/components/autocomplete/types.ts +1 -16
  429. package/src/components/banner/utils/direction.ts +1 -10
  430. package/src/components/calendar/utils/format.ts +1 -23
  431. package/src/components/code-block/highlighter.ts +1 -98
  432. package/src/components/collapsible/CollapsibleTrigger.vue +8 -1
  433. package/src/components/command-palette/utils/hotkey.ts +1 -27
  434. package/src/components/command-palette/utils/match.ts +5 -75
  435. package/src/components/data-list/composables/useDataList.ts +2 -4
  436. package/src/components/data-list/utils/scroll.ts +1 -26
  437. package/src/components/data-table/column-sizing-styles.ts +1 -40
  438. package/src/components/data-table/column-sizing.ts +1 -101
  439. package/src/components/data-table/composables/useDataTable.ts +103 -123
  440. package/src/components/data-table/composables/useTableColumns.ts +38 -113
  441. package/src/components/data-table/composables/useTableDrag.ts +21 -11
  442. package/src/components/data-table/composables/useTableExport.ts +8 -32
  443. package/src/components/data-table/composables/useTableResize.ts +13 -17
  444. package/src/components/data-table/composables/useTableResizeHandles.ts +6 -21
  445. package/src/components/data-table/types.ts +15 -155
  446. package/src/components/data-table/utils.ts +1 -75
  447. package/src/components/date-range-field/utils/validity.ts +1 -21
  448. package/src/components/editable/editable.variants.ts +1 -1
  449. package/src/components/file-upload/utils/select.ts +1 -58
  450. package/src/components/file-upload/utils/size.ts +1 -16
  451. package/src/components/float-button/float-button.variants.ts +1 -1
  452. package/src/components/form/composables/useForm.ts +24 -135
  453. package/src/components/form/standard-schema.ts +1 -26
  454. package/src/components/form/utils/errors.ts +1 -48
  455. package/src/components/form/utils/focus.ts +1 -10
  456. package/src/components/form/utils/values.ts +1 -23
  457. package/src/components/form-field/FormField.vue +3 -2
  458. package/src/components/lightbox/types.ts +1 -14
  459. package/src/components/lightbox/utils/clip.ts +1 -117
  460. package/src/components/lightbox/utils/download.ts +1 -29
  461. package/src/components/lightbox/utils/gesture.ts +1 -54
  462. package/src/components/lightbox/utils/paging.ts +1 -33
  463. package/src/components/lightbox/utils/pose.ts +1 -142
  464. package/src/components/lightbox/utils/source.ts +1 -17
  465. package/src/components/lightbox/utils/zoom.ts +1 -127
  466. package/src/components/meter-group/utils/tones.ts +1 -14
  467. package/src/components/multi-select/MultiSelect.vue +1 -2
  468. package/src/components/number-input/NumberInput.vue +2 -2
  469. package/src/components/pagination/composables/usePagination.ts +2 -3
  470. package/src/components/pagination/types.ts +1 -19
  471. package/src/components/pagination/utils/ranges.ts +1 -12
  472. package/src/components/password-input/PasswordInput.vue +6 -0
  473. package/src/components/qr-code/export.ts +1 -65
  474. package/src/components/range-calendar/utils/limit.ts +1 -11
  475. package/src/components/rating/utils/fill.ts +1 -4
  476. package/src/components/ripple/useRipple.ts +10 -198
  477. package/src/components/scroll-area/ScrollArea.vue +6 -18
  478. package/src/components/scroll-area/composables/useEdgeShadow.ts +7 -16
  479. package/src/components/scroll-area/composables/useLayerLock.ts +2 -9
  480. package/src/components/scroll-area/composables/useWheelRedirect.ts +2 -10
  481. package/src/components/scroll-area/scroll-restore.ts +1 -148
  482. package/src/components/search-input/SearchInput.vue +6 -0
  483. package/src/components/select/types.ts +1 -23
  484. package/src/components/split-button/split-button.variants.ts +1 -1
  485. package/src/components/spoiler/SpoilerPainter.ts +1 -197
  486. package/src/components/spoiler/utils/irisOrigin.ts +1 -40
  487. package/src/components/spoiler/worklet.ts +1 -199
  488. package/src/components/table/Table.vue +9 -0
  489. package/src/components/tabs/TabsList.vue +9 -0
  490. package/src/components/time/utils/relativeTime.ts +1 -20
  491. package/src/components/toast/composables/useToastLayout.ts +12 -24
  492. package/src/components/toast/store.ts +16 -228
  493. package/src/components/tree/composables/useTree.ts +17 -33
  494. package/src/components/tree/types.ts +1 -20
  495. package/src/components/tree/utils/selection.ts +1 -78
  496. package/src/components/tree-select/types.ts +1 -34
  497. package/src/components/tree-select/utils/filterTree.ts +1 -19
  498. package/src/components/virtual-list/composables/useVirtualList.ts +16 -42
  499. package/src/components/visually-hidden/VisuallyHidden.vue +21 -3
  500. package/src/lib/caret.ts +1 -48
  501. package/src/lib/collapse.ts +6 -29
  502. package/src/lib/date.ts +1 -111
  503. package/src/lib/field-focus.ts +1 -36
  504. package/src/lib/overlay-anchor.ts +11 -37
  505. package/src/lib/pointer-corridor.ts +1 -26
  506. package/src/lib/reka/useVirtualChoices.ts +55 -133
  507. package/src/lib/reka/useVirtualTree.ts +22 -65
  508. package/src/lib/virtual/navigation.ts +1 -26
  509. package/src/lib/virtual/useVirtualCollection.ts +28 -47
  510. package/src/lib/virtual/useVirtualWindow.ts +15 -25
  511. package/src/locale/en-US.ts +1 -220
  512. package/src/locale/index.ts +9 -53
  513. package/src/locale/types.ts +1 -225
  514. package/src/locale/zh-CN.ts +1 -215
  515. package/src/primitives/number-field/LICENSE +21 -0
  516. package/src/primitives/number-field/NumberFieldDecrement.vue +21 -0
  517. package/src/primitives/number-field/NumberFieldIncrement.vue +21 -0
  518. package/src/primitives/number-field/NumberFieldInput.vue +114 -0
  519. package/src/primitives/number-field/NumberFieldRoot.vue +169 -0
  520. package/src/primitives/number-field/context.ts +111 -0
  521. package/src/primitives/number-field/index.ts +14 -0
  522. package/src/primitives/utils/LICENSE +44 -0
  523. package/src/primitives/utils/timers.ts +6 -0
  524. package/src/primitives/utils/usePrimitiveElement.ts +12 -0
  525. package/src/primitives/utils/useVModel.ts +37 -0
  526. package/src/primitives/visually-hidden/LICENSE +21 -0
  527. package/src/primitives/visually-hidden/VisuallyHiddenInput.ts +97 -0
  528. package/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue +49 -0
@@ -1,22 +1,5 @@
1
1
  import { onBeforeUnmount, onMounted, ref, type Ref } from 'vue'
2
- import { prefersReducedMotion } from '../../motion'
3
-
4
- const INITIAL_ORIGIN_SCALE = 0.2
5
- const PADDING = 12
6
- const SOFT_EDGE_MINIMUM_SIZE = 75
7
- const SOFT_EDGE_CONTAINER_RATIO = 0.35
8
- const GROW_MS = 150
9
- const MINIMUM_PRESS_MS = 225
10
- const TOUCH_DELAY_MS = 150
11
-
12
- const STATE = {
13
- inactive: 0,
14
- touchDelay: 1,
15
- holding: 2,
16
- waitingForClick: 3,
17
- } as const
18
-
19
- type RippleState = (typeof STATE)[keyof typeof STATE]
2
+ import { createRipple } from '../../../../shared/src/behavior/ripple'
20
3
 
21
4
  export function useRipple(
22
5
  container: Ref<HTMLElement | null>,
@@ -24,188 +7,17 @@ export function useRipple(
24
7
  isDisabled: () => boolean,
25
8
  ) {
26
9
  const pressed = ref(false)
27
-
28
- let host: HTMLElement | null = null
29
- let state: RippleState = STATE.inactive
30
- let startEvent: PointerEvent | undefined
31
- let checkBoundsAfterContextMenu = false
32
- let growAnimation: Animation | undefined
33
- let initialSize = 0
34
- let rippleScale = ''
35
- let rippleSize = ''
36
-
37
- const isTouch = ({ pointerType }: PointerEvent) => pointerType === 'touch'
38
-
39
- function shouldReact(event: PointerEvent) {
40
- if (isDisabled() || !event.isPrimary) return false
41
- if (startEvent && startEvent.pointerId !== event.pointerId) return false
42
- if (event.type === 'pointerenter' || event.type === 'pointerleave') return !isTouch(event)
43
- return isTouch(event) || event.buttons === 1
44
- }
45
-
46
- function inBounds({ x, y }: PointerEvent) {
47
- const rect = container.value?.getBoundingClientRect()
48
- if (!rect) return false
49
- return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom
50
- }
51
-
52
- function determineRippleSize() {
53
- const rect = container.value?.getBoundingClientRect()
54
- if (!rect) return
55
- const maxDim = Math.max(rect.height, rect.width)
56
- const softEdgeSize = Math.max(SOFT_EDGE_CONTAINER_RATIO * maxDim, SOFT_EDGE_MINIMUM_SIZE)
57
- initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE)
58
- const maxRadius = Math.hypot(rect.width, rect.height) + PADDING
59
- rippleScale = `${(maxRadius + softEdgeSize) / initialSize}`
60
- rippleSize = `${initialSize}px`
61
- }
62
-
63
- function normalizedCoords(event: PointerEvent) {
64
- const rect = container.value?.getBoundingClientRect()
65
- if (!rect) return { x: 0, y: 0 }
66
- return {
67
- x: event.pageX - (window.scrollX + rect.left),
68
- y: event.pageY - (window.scrollY + rect.top),
69
- }
70
- }
71
-
72
- function translationCoords(positionEvent?: PointerEvent) {
73
- const rect = container.value?.getBoundingClientRect()
74
- if (!rect) return { startPoint: { x: 0, y: 0 }, endPoint: { x: 0, y: 0 } }
75
- const endPoint = {
76
- x: (rect.width - initialSize) / 2,
77
- y: (rect.height - initialSize) / 2,
78
- }
79
- return {
80
- startPoint: positionEvent ? normalizedCoords(positionEvent) : endPoint,
81
- endPoint,
82
- }
83
- }
84
-
85
- function startPress(positionEvent?: PointerEvent) {
86
- const el = surface.value
87
- if (!el) return
88
- pressed.value = true
89
- growAnimation?.cancel()
90
- growAnimation = undefined
91
- determineRippleSize()
92
- const { startPoint, endPoint } = translationCoords(positionEvent)
93
- if (typeof el.animate !== 'function') return
94
- if (prefersReducedMotion()) return
95
- growAnimation = el.animate(
96
- {
97
- height: [rippleSize, rippleSize],
98
- width: [rippleSize, rippleSize],
99
- transform: [
100
- `translate(${startPoint.x}px,${startPoint.y}px) scale(1)`,
101
- `translate(${endPoint.x}px,${endPoint.y}px) scale(${rippleScale})`,
102
- ],
103
- },
104
- {
105
- pseudoElement: '::after',
106
- duration: GROW_MS,
107
- easing: 'linear',
108
- fill: 'forwards',
109
- },
110
- )
111
- growAnimation.finished.catch(() => {})
112
- }
113
-
114
- function endPress() {
115
- startEvent = undefined
116
- state = STATE.inactive
117
- const animation = growAnimation
118
- let playedMs = Infinity
119
- if (typeof animation?.currentTime === 'number') playedMs = animation.currentTime
120
- else if (animation?.currentTime) playedMs = animation.currentTime.to('ms').value
121
- if (playedMs >= MINIMUM_PRESS_MS) {
122
- pressed.value = false
123
- return
124
- }
125
- window.setTimeout(() => {
126
- if (growAnimation !== animation) return
127
- pressed.value = false
128
- }, MINIMUM_PRESS_MS - playedMs)
129
- }
130
-
131
- function onPointerDown(event: PointerEvent) {
132
- if (!shouldReact(event)) return
133
- startEvent = event
134
- if (!isTouch(event)) {
135
- state = STATE.waitingForClick
136
- startPress(event)
137
- return
138
- }
139
- if (checkBoundsAfterContextMenu && !inBounds(event)) return
140
- checkBoundsAfterContextMenu = false
141
- state = STATE.touchDelay
142
- window.setTimeout(() => {
143
- if (state !== STATE.touchDelay) return
144
- state = STATE.holding
145
- startPress(event)
146
- }, TOUCH_DELAY_MS)
147
- }
148
-
149
- function onPointerUp(event: PointerEvent) {
150
- if (!shouldReact(event)) return
151
- if (state === STATE.holding) {
152
- state = STATE.waitingForClick
153
- return
154
- }
155
- if (state === STATE.touchDelay) {
156
- state = STATE.waitingForClick
157
- startPress(startEvent)
158
- }
159
- }
160
-
161
- function onPointerLeave(event: PointerEvent) {
162
- if (!shouldReact(event)) return
163
- if (state !== STATE.inactive) endPress()
164
- }
165
-
166
- function onPointerCancel(event: PointerEvent) {
167
- if (!shouldReact(event)) return
168
- endPress()
169
- }
170
-
171
- function onClick() {
172
- if (isDisabled()) return
173
- if (state === STATE.waitingForClick) {
174
- endPress()
175
- return
176
- }
177
- if (state === STATE.inactive) {
178
- startPress()
179
- endPress()
180
- }
181
- }
182
-
183
- function onContextMenu() {
184
- if (isDisabled()) return
185
- checkBoundsAfterContextMenu = true
186
- endPress()
187
- }
188
-
189
- const listeners: [string, EventListener][] = [
190
- ['click', onClick as EventListener],
191
- ['contextmenu', onContextMenu as EventListener],
192
- ['pointercancel', onPointerCancel as EventListener],
193
- ['pointerdown', onPointerDown as EventListener],
194
- ['pointerleave', onPointerLeave as EventListener],
195
- ['pointerup', onPointerUp as EventListener],
196
- ]
197
-
198
- onMounted(() => {
199
- host = container.value?.parentElement ?? null
200
- if (!host) return
201
- for (const [name, fn] of listeners) host.addEventListener(name, fn, true)
10
+ const ripple = createRipple({
11
+ container: () => container.value,
12
+ surface: () => surface.value,
13
+ disabled: isDisabled,
14
+ onPressedChange: value => {
15
+ pressed.value = value
16
+ },
202
17
  })
203
18
 
204
- onBeforeUnmount(() => {
205
- if (!host) return
206
- for (const [name, fn] of listeners) host.removeEventListener(name, fn, true)
207
- host = null
208
- })
19
+ onMounted(ripple.connect)
20
+ onBeforeUnmount(ripple.disconnect)
209
21
 
210
22
  return { pressed }
211
23
  }
@@ -7,6 +7,7 @@
7
7
  import { useWheelRedirect } from './composables/useWheelRedirect'
8
8
  import { useLayerLock } from './composables/useLayerLock'
9
9
  import { useScrollFocus } from './composables/useScrollFocus'
10
+ import { scrollAreaOptions } from '../../../../shared/src/lib/scroll-area'
10
11
 
11
12
  defineOptions({ name: 'HnScrollArea', inheritAttrs: false })
12
13
 
@@ -36,25 +37,12 @@
36
37
  const host = shallowRef<HTMLElement>()
37
38
  const content = shallowRef<HTMLElement>()
38
39
 
39
- const overflow = {
40
- vertical: { x: 'hidden', y: 'scroll' },
41
- horizontal: { x: 'scroll', y: 'hidden' },
42
- both: { x: 'scroll', y: 'scroll' },
43
- } as const
44
-
45
40
  function options() {
46
- return {
47
- scrollbars: {
48
- theme: 'os-theme-dark',
49
- visibility: props.scrollbar ? ('auto' as const) : ('hidden' as const),
50
- autoHide: props.autoHide,
51
- autoHideDelay: 800,
52
- },
53
- overflow: overflow[props.direction],
54
- update: {
55
- elementEvents: [['img', 'load']] as Array<[string, string]>,
56
- },
57
- }
41
+ return scrollAreaOptions({
42
+ direction: props.direction,
43
+ autoHide: props.autoHide,
44
+ scrollbar: props.scrollbar,
45
+ })
58
46
  }
59
47
 
60
48
  const { viewport, instance, onEvent } = useOverlayScrollbars(host, content, options)
@@ -1,8 +1,9 @@
1
1
  import { shallowRef, type ShallowRef } from 'vue'
2
+ import { scrollEdges, type ScrollDirection } from '../../../../../shared/src/lib/scroll-area'
2
3
 
3
4
  export function useEdgeShadow(
4
5
  viewport: ShallowRef<HTMLElement | undefined>,
5
- opts: () => { direction: 'vertical' | 'horizontal' | 'both'; shadow: boolean },
6
+ opts: () => { direction: ScrollDirection; shadow: boolean },
6
7
  ) {
7
8
  const showXStart = shallowRef(false)
8
9
  const showXEnd = shallowRef(false)
@@ -10,22 +11,12 @@ export function useEdgeShadow(
10
11
  const showYEnd = shallowRef(false)
11
12
 
12
13
  function updateEdges() {
13
- const el = viewport.value
14
14
  const { direction, shadow } = opts()
15
- if (!el || !shadow) {
16
- showXStart.value = false
17
- showXEnd.value = false
18
- showYStart.value = false
19
- showYEnd.value = false
20
- return
21
- }
22
- const room = 1
23
- const x = direction !== 'vertical'
24
- const y = direction !== 'horizontal'
25
- showXStart.value = x && Math.abs(el.scrollLeft) > room
26
- showXEnd.value = x && Math.abs(el.scrollLeft) + el.clientWidth < el.scrollWidth - room
27
- showYStart.value = y && el.scrollTop > room
28
- showYEnd.value = y && el.scrollTop + el.clientHeight < el.scrollHeight - room
15
+ const edges = scrollEdges(viewport.value, direction, shadow)
16
+ showXStart.value = edges.xStart
17
+ showXEnd.value = edges.xEnd
18
+ showYStart.value = edges.yStart
19
+ showYEnd.value = edges.yEnd
29
20
  }
30
21
 
31
22
  return { showXStart, showXEnd, showYStart, showYEnd, updateEdges }
@@ -1,5 +1,6 @@
1
1
  import { createSharedComposable, useMutationObserver } from '@vueuse/core'
2
2
  import { onBeforeUnmount, ref, watch, type ShallowRef } from 'vue'
3
+ import { blockWhenInert } from '../../../../../shared/src/lib/scroll-area'
3
4
 
4
5
  const useBodyPointerLock = createSharedComposable(() => {
5
6
  const locked = ref(false)
@@ -22,15 +23,7 @@ export function useLayerLock(viewport: ShallowRef<HTMLElement | undefined>) {
22
23
  release = undefined
23
24
  const el = viewport.value
24
25
  if (!el || !locked.value) return
25
- const block = (event: Event) => {
26
- if (getComputedStyle(el).pointerEvents === 'none') event.preventDefault()
27
- }
28
- el.addEventListener('wheel', block, { passive: false, capture: true })
29
- el.addEventListener('touchmove', block, { passive: false, capture: true })
30
- release = () => {
31
- el.removeEventListener('wheel', block, true)
32
- el.removeEventListener('touchmove', block, true)
33
- }
26
+ release = blockWhenInert(el)
34
27
  }
35
28
 
36
29
  watch([locked, viewport], apply, { flush: 'post' })
@@ -1,4 +1,5 @@
1
1
  import { watch, type ShallowRef } from 'vue'
2
+ import { redirectWheel } from '../../../../../shared/src/lib/scroll-area'
2
3
 
3
4
  export function useWheelRedirect(
4
5
  viewport: ShallowRef<HTMLElement | undefined>,
@@ -8,16 +9,7 @@ export function useWheelRedirect(
8
9
  if (event.defaultPrevented || !enabled()) return
9
10
  const el = viewport.value
10
11
  if (!el) return
11
- if (Math.abs(event.deltaY) <= Math.abs(event.deltaX)) return
12
- const max = el.scrollWidth - el.clientWidth
13
- if (max <= 0) return
14
- const sign = getComputedStyle(el).direction === 'rtl' ? -1 : 1
15
- const offset = Math.max(0, Math.min(max, el.scrollLeft * sign))
16
- const atStart = offset <= 1 && event.deltaY < 0
17
- const atEnd = offset >= max - 1 && event.deltaY > 0
18
- if (atStart || atEnd) return
19
- event.preventDefault()
20
- el.scrollLeft = (offset + event.deltaY) * sign
12
+ redirectWheel(el, event)
21
13
  }
22
14
 
23
15
  watch(
@@ -1,148 +1 @@
1
- export const SCROLL_STATE_FIELD = 'hnScroll'
2
- export const RESTORE_DEADLINE_MS = 3000
3
- export const SAVE_THROTTLE_MS = 500
4
- export const SCROLL_RESTORE_ATTR = 'data-scroll-restore'
5
- export const SCROLL_ATOP_ATTR = 'data-scroll-atop'
6
- export const SCROLL_AT_ATTR = 'data-scroll-at'
7
- export const SCROLL_ATOP_HIDE_PX = 8
8
-
9
- export function atopOff(top: number, off: boolean) {
10
- if (top > SCROLL_ATOP_HIDE_PX) return true
11
- if (top <= 0) return false
12
- return off
13
- }
14
-
15
- export function firstPaintRestoreScript() {
16
- return `(function(){try{if(document.readyState!=="loading")return;
17
- var r=(history.state&&history.state.${SCROLL_STATE_FIELD})||{};
18
- var coarse=!!(window.matchMedia&&matchMedia("(pointer: coarse)").matches);
19
- var cs=
20
- document.querySelectorAll('[${SCROLL_ATOP_ATTR}]');
21
- var mark=function(c,t){if(!coarse){c.style.marginTop=-Math.round(Math.max(0,t))+"px";return;}
22
- if(t>${SCROLL_ATOP_HIDE_PX})c.setAttribute("data-off","true");else if(t<=0)c.setAttribute("data-off","false");};
23
- for(var i=0;i<cs.length;i++){mark(cs[i],Math.max(0,r[cs[i].getAttribute("${SCROLL_ATOP_ATTR}")]||0));}
24
- for(var k in r){var t=Math.max(0,r[k]);var e=
25
- document.querySelector('[${SCROLL_RESTORE_ATTR}="'+k+'"]');if(e){e.scrollTop=t;e.setAttribute("${SCROLL_AT_ATTR}",String(e.scrollTop));}}
26
- for(var i=0;i<cs.length;i++){(function(c){
27
- var e=
28
- document.querySelector('[${SCROLL_RESTORE_ATTR}="'+c.getAttribute("${SCROLL_ATOP_ATTR}")+'"]');
29
- if(!e)return;
30
- var sync=function(){if(e.scrollHeight<=e.clientHeight){e.removeEventListener("scroll",sync);return;}mark(c,e.scrollTop);};
31
- e.addEventListener("scroll",sync,{passive:true});
32
- })(cs[i]);}
33
- }catch{}})()`.replace(/\n/g, '')
34
- }
35
-
36
- export type ScrollRecord = Record<string, number>
37
-
38
- export interface ScrollRestorerPorts {
39
- getViewport: () => HTMLElement | null
40
- takeFirstPaintTop: () => number | undefined
41
- readState: () => unknown
42
- writeState: (state: Record<string, unknown>) => void
43
- setTimer: (fn: () => void, ms: number) => () => void
44
- }
45
-
46
- export interface ScrollRestorer {
47
- restore: (initial?: boolean) => void
48
- settle: () => void
49
- abandon: () => void
50
- save: () => void
51
- saveSoon: () => void
52
- dispose: () => void
53
- isPending: () => boolean
54
- }
55
-
56
- export function readScrollRecord(state: unknown): ScrollRecord {
57
- if (!state || typeof state !== 'object') return {}
58
- const record = (state as Record<string, unknown>)[SCROLL_STATE_FIELD]
59
- if (!record || typeof record !== 'object') return {}
60
- return record as ScrollRecord
61
- }
62
-
63
- export function writeScrollRecord(state: unknown, key: string, top: number) {
64
- const base = state && typeof state === 'object' ? (state as Record<string, unknown>) : {}
65
- return {
66
- ...base,
67
- [SCROLL_STATE_FIELD]: { ...readScrollRecord(base), [key]: top },
68
- }
69
- }
70
-
71
- function readEntryId(state: unknown) {
72
- if (!state || typeof state !== 'object') return undefined
73
- return (state as Record<string, unknown>).position
74
- }
75
-
76
- export function createScrollRestorer(key: string, ports: ScrollRestorerPorts): ScrollRestorer {
77
- let pending: number | null = null
78
- let clearDeadline: (() => void) | null = null
79
- let clearThrottle: (() => void) | null = null
80
- let entry: unknown
81
-
82
- function stopWaiting() {
83
- pending = null
84
- clearDeadline?.()
85
- clearDeadline = null
86
- }
87
-
88
- function apply(top: number) {
89
- const el = ports.getViewport()
90
- if (!el) return false
91
- el.scrollTop = top
92
- return el.scrollHeight - el.clientHeight + 1 >= top
93
- }
94
-
95
- function save() {
96
- if (pending !== null) return
97
- if (readEntryId(ports.readState()) !== entry) return
98
- const el = ports.getViewport()
99
- if (!el) return
100
- ports.writeState(writeScrollRecord(ports.readState(), key, el.scrollTop))
101
- }
102
-
103
- return {
104
- restore(initial) {
105
- stopWaiting()
106
- entry = readEntryId(ports.readState())
107
-
108
- const saved = readScrollRecord(ports.readState())[key]
109
- const firstPaintTop = ports.takeFirstPaintTop()
110
-
111
- if (initial) {
112
- if (saved === undefined) return
113
- const el = ports.getViewport()
114
- if (firstPaintTop !== undefined && el && el.scrollTop !== firstPaintTop) return
115
- }
116
-
117
- const top = saved ?? 0
118
- if (apply(top)) return
119
- pending = top
120
- clearDeadline = ports.setTimer(stopWaiting, RESTORE_DEADLINE_MS)
121
- },
122
-
123
- settle() {
124
- if (pending === null) return
125
- if (apply(pending)) stopWaiting()
126
- },
127
-
128
- abandon: stopWaiting,
129
-
130
- isPending: () => pending !== null,
131
-
132
- save,
133
-
134
- saveSoon() {
135
- if (clearThrottle) return
136
- clearThrottle = ports.setTimer(() => {
137
- clearThrottle = null
138
- save()
139
- }, SAVE_THROTTLE_MS)
140
- },
141
-
142
- dispose() {
143
- stopWaiting()
144
- clearThrottle?.()
145
- clearThrottle = null
146
- },
147
- }
148
- }
1
+ export * from '../../../../shared/src/lib/scroll-restore'
@@ -1,4 +1,5 @@
1
1
  <script setup lang="ts">
2
+ import { shallowRef } from 'vue'
2
3
  import { Search } from '@lucide/vue'
3
4
  import { cn } from '../../lib/cn'
4
5
  import InputBase from '../input/InputBase.vue'
@@ -27,10 +28,15 @@
27
28
  model.value = ''
28
29
  emit('clear')
29
30
  }
31
+
32
+ const base = shallowRef<InstanceType<typeof InputBase> | null>(null)
33
+
34
+ defineExpose({ clear: () => base.value?.clear(), focus: () => base.value?.focus() })
30
35
  </script>
31
36
 
32
37
  <template>
33
38
  <InputBase
39
+ ref="base"
34
40
  type="search"
35
41
  enterkeyhint="search"
36
42
  v-bind="$attrs"
@@ -1,23 +1 @@
1
- export type SelectOption<T extends object = object> = {
2
- value: string | number
3
- label: string
4
- description?: string
5
- disabled?: boolean
6
- } & T
7
-
8
- export interface SelectOptionGroup<T extends SelectOption = SelectOption> {
9
- label: string
10
- options: T[]
11
- }
12
-
13
- export type SelectItems<T extends SelectOption = SelectOption> = Array<T | SelectOptionGroup<T>>
14
-
15
- export function isOptionGroup<T extends SelectOption>(
16
- item: T | SelectOptionGroup<T>,
17
- ): item is SelectOptionGroup<T> {
18
- return !('value' in item) && 'options' in item
19
- }
20
-
21
- export function flattenOptions<T extends SelectOption>(items: SelectItems<T>): T[] {
22
- return items.flatMap(item => (isOptionGroup(item) ? item.options : [item]))
23
- }
1
+ export * from '../../../../shared/src/types/select'
@@ -1 +1 @@
1
- export * from '@hina-ui/shared/variants/split-button'
1
+ export * from '../../../../shared/src/variants/split-button'