vectis-ui 0.1.0

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 (676) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +27 -0
  3. package/README.md +354 -0
  4. package/dist/_virtual/_plugin-vue_export-helper.js +8 -0
  5. package/dist/components/VAccordion/VAccordion.css +2 -0
  6. package/dist/components/VAccordion/VAccordion.d.ts +59 -0
  7. package/dist/components/VAccordion/VAccordion.js +9 -0
  8. package/dist/components/VAccordion/VAccordion.js.map +1 -0
  9. package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js +42 -0
  10. package/dist/components/VAccordion/VAccordion.vue_vue_type_script_setup_true_lang.js.map +1 -0
  11. package/dist/components/VAccordion/VAccordionItem.css +2 -0
  12. package/dist/components/VAccordion/VAccordionItem.d.ts +64 -0
  13. package/dist/components/VAccordion/VAccordionItem.js +9 -0
  14. package/dist/components/VAccordion/VAccordionItem.js.map +1 -0
  15. package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js +70 -0
  16. package/dist/components/VAccordion/VAccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  17. package/dist/components/VAccordion/context.d.ts +18 -0
  18. package/dist/components/VAccordion/context.js +6 -0
  19. package/dist/components/VAccordion/context.js.map +1 -0
  20. package/dist/components/VAvatar/VAvatar.css +2 -0
  21. package/dist/components/VAvatar/VAvatar.d.ts +68 -0
  22. package/dist/components/VAvatar/VAvatar.js +9 -0
  23. package/dist/components/VAvatar/VAvatar.js.map +1 -0
  24. package/dist/components/VAvatar/VAvatar.vue_vue_type_script_setup_true_lang.js +87 -0
  25. package/dist/components/VAvatar/VAvatar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  26. package/dist/components/VAvatar/VAvatarGroup.css +2 -0
  27. package/dist/components/VAvatar/VAvatarGroup.d.ts +59 -0
  28. package/dist/components/VAvatar/VAvatarGroup.js +9 -0
  29. package/dist/components/VAvatar/VAvatarGroup.js.map +1 -0
  30. package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js +43 -0
  31. package/dist/components/VAvatar/VAvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  32. package/dist/components/VAvatar/context.d.ts +17 -0
  33. package/dist/components/VAvatar/context.js +6 -0
  34. package/dist/components/VAvatar/context.js.map +1 -0
  35. package/dist/components/VBadge/VBadge.css +2 -0
  36. package/dist/components/VBadge/VBadge.d.ts +74 -0
  37. package/dist/components/VBadge/VBadge.js +9 -0
  38. package/dist/components/VBadge/VBadge.js.map +1 -0
  39. package/dist/components/VBadge/VBadge.vue_vue_type_script_setup_true_lang.js +40 -0
  40. package/dist/components/VBadge/VBadge.vue_vue_type_script_setup_true_lang.js.map +1 -0
  41. package/dist/components/VBreadcrumb/VBreadcrumb.css +2 -0
  42. package/dist/components/VBreadcrumb/VBreadcrumb.d.ts +68 -0
  43. package/dist/components/VBreadcrumb/VBreadcrumb.js +9 -0
  44. package/dist/components/VBreadcrumb/VBreadcrumb.js.map +1 -0
  45. package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js +70 -0
  46. package/dist/components/VBreadcrumb/VBreadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -0
  47. package/dist/components/VButton/VButton.css +2 -0
  48. package/dist/components/VButton/VButton.d.ts +88 -0
  49. package/dist/components/VButton/VButton.js +9 -0
  50. package/dist/components/VButton/VButton.js.map +1 -0
  51. package/dist/components/VButton/VButton.vue_vue_type_script_setup_true_lang.js +86 -0
  52. package/dist/components/VButton/VButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  53. package/dist/components/VButton/VButtonGroup.css +2 -0
  54. package/dist/components/VButton/VButtonGroup.d.ts +32 -0
  55. package/dist/components/VButton/VButtonGroup.js +9 -0
  56. package/dist/components/VButton/VButtonGroup.js.map +1 -0
  57. package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js +17 -0
  58. package/dist/components/VButton/VButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  59. package/dist/components/VCalendar/VCalendar.css +2 -0
  60. package/dist/components/VCalendar/VCalendar.d.ts +129 -0
  61. package/dist/components/VCalendar/VCalendar.js +9 -0
  62. package/dist/components/VCalendar/VCalendar.js.map +1 -0
  63. package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js +374 -0
  64. package/dist/components/VCalendar/VCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  65. package/dist/components/VCalendar/VCalendarEvent.css +2 -0
  66. package/dist/components/VCalendar/VCalendarEvent.d.ts +71 -0
  67. package/dist/components/VCalendar/VCalendarEvent.js +9 -0
  68. package/dist/components/VCalendar/VCalendarEvent.js.map +1 -0
  69. package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js +106 -0
  70. package/dist/components/VCalendar/VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map +1 -0
  71. package/dist/components/VCalendar/VCalendarMonth.css +2 -0
  72. package/dist/components/VCalendar/VCalendarMonth.d.ts +60 -0
  73. package/dist/components/VCalendar/VCalendarMonth.js +9 -0
  74. package/dist/components/VCalendar/VCalendarMonth.js.map +1 -0
  75. package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js +342 -0
  76. package/dist/components/VCalendar/VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map +1 -0
  77. package/dist/components/VCalendar/VCalendarTimeGrid.css +2 -0
  78. package/dist/components/VCalendar/VCalendarTimeGrid.d.ts +85 -0
  79. package/dist/components/VCalendar/VCalendarTimeGrid.js +9 -0
  80. package/dist/components/VCalendar/VCalendarTimeGrid.js.map +1 -0
  81. package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js +621 -0
  82. package/dist/components/VCalendar/VCalendarTimeGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
  83. package/dist/components/VCalendar/VCalendarYear.css +2 -0
  84. package/dist/components/VCalendar/VCalendarYear.d.ts +31 -0
  85. package/dist/components/VCalendar/VCalendarYear.js +9 -0
  86. package/dist/components/VCalendar/VCalendarYear.js.map +1 -0
  87. package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js +76 -0
  88. package/dist/components/VCalendar/VCalendarYear.vue_vue_type_script_setup_true_lang.js.map +1 -0
  89. package/dist/components/VCalendar/color.d.ts +9 -0
  90. package/dist/components/VCalendar/color.js +9 -0
  91. package/dist/components/VCalendar/color.js.map +1 -0
  92. package/dist/components/VCalendar/edgeStep.d.ts +38 -0
  93. package/dist/components/VCalendar/edgeStep.js +28 -0
  94. package/dist/components/VCalendar/edgeStep.js.map +1 -0
  95. package/dist/components/VCalendar/keyboard.d.ts +78 -0
  96. package/dist/components/VCalendar/keyboard.js +86 -0
  97. package/dist/components/VCalendar/keyboard.js.map +1 -0
  98. package/dist/components/VCalendar/layout.d.ts +355 -0
  99. package/dist/components/VCalendar/layout.js +292 -0
  100. package/dist/components/VCalendar/layout.js.map +1 -0
  101. package/dist/components/VCalendar/types.d.ts +78 -0
  102. package/dist/components/VCarousel/VCarousel.css +2 -0
  103. package/dist/components/VCarousel/VCarousel.d.ts +241 -0
  104. package/dist/components/VCarousel/VCarousel.js +9 -0
  105. package/dist/components/VCarousel/VCarousel.js.map +1 -0
  106. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js +262 -0
  107. package/dist/components/VCarousel/VCarousel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  108. package/dist/components/VCarousel/VCarouselItem.d.ts +41 -0
  109. package/dist/components/VCarousel/VCarouselItem.js +7 -0
  110. package/dist/components/VCarousel/VCarouselItem.js.map +1 -0
  111. package/dist/components/VCarousel/VCarouselItem.vue_vue_type_script_setup_true_lang.js +25 -0
  112. package/dist/components/VCarousel/VCarouselItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  113. package/dist/components/VCarousel/context.d.ts +23 -0
  114. package/dist/components/VCarousel/context.js +6 -0
  115. package/dist/components/VCarousel/context.js.map +1 -0
  116. package/dist/components/VCheckbox/VCheckbox.css +2 -0
  117. package/dist/components/VCheckbox/VCheckbox.d.ts +63 -0
  118. package/dist/components/VCheckbox/VCheckbox.js +9 -0
  119. package/dist/components/VCheckbox/VCheckbox.js.map +1 -0
  120. package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js +83 -0
  121. package/dist/components/VCheckbox/VCheckbox.vue_vue_type_script_setup_true_lang.js.map +1 -0
  122. package/dist/components/VChip/VChip.css +2 -0
  123. package/dist/components/VChip/VChip.d.ts +120 -0
  124. package/dist/components/VChip/VChip.js +9 -0
  125. package/dist/components/VChip/VChip.js.map +1 -0
  126. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js +118 -0
  127. package/dist/components/VChip/VChip.vue_vue_type_script_setup_true_lang.js.map +1 -0
  128. package/dist/components/VCombobox/VCombobox.css +2 -0
  129. package/dist/components/VCombobox/VCombobox.d.ts +183 -0
  130. package/dist/components/VCombobox/VCombobox.js +9 -0
  131. package/dist/components/VCombobox/VCombobox.js.map +1 -0
  132. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js +428 -0
  133. package/dist/components/VCombobox/VCombobox.vue_vue_type_script_setup_true_lang.js.map +1 -0
  134. package/dist/components/VCombobox/VComboboxGroup.css +2 -0
  135. package/dist/components/VCombobox/VComboboxGroup.d.ts +26 -0
  136. package/dist/components/VCombobox/VComboboxGroup.js +9 -0
  137. package/dist/components/VCombobox/VComboboxGroup.js.map +1 -0
  138. package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js +21 -0
  139. package/dist/components/VCombobox/VComboboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  140. package/dist/components/VCombobox/VComboboxOption.css +2 -0
  141. package/dist/components/VCombobox/VComboboxOption.d.ts +48 -0
  142. package/dist/components/VCombobox/VComboboxOption.js +9 -0
  143. package/dist/components/VCombobox/VComboboxOption.js.map +1 -0
  144. package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js +56 -0
  145. package/dist/components/VCombobox/VComboboxOption.vue_vue_type_script_setup_true_lang.js.map +1 -0
  146. package/dist/components/VCombobox/VComboboxSeparator.css +2 -0
  147. package/dist/components/VCombobox/VComboboxSeparator.d.ts +3 -0
  148. package/dist/components/VCombobox/VComboboxSeparator.js +9 -0
  149. package/dist/components/VCombobox/VComboboxSeparator.js.map +1 -0
  150. package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js +16 -0
  151. package/dist/components/VCombobox/VComboboxSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  152. package/dist/components/VCombobox/infiniteScroll.d.ts +22 -0
  153. package/dist/components/VCombobox/infiniteScroll.js +28 -0
  154. package/dist/components/VCombobox/infiniteScroll.js.map +1 -0
  155. package/dist/components/VDataTable/VDataTable.css +2 -0
  156. package/dist/components/VDataTable/VDataTable.d.ts +214 -0
  157. package/dist/components/VDataTable/VDataTable.js +9 -0
  158. package/dist/components/VDataTable/VDataTable.js.map +1 -0
  159. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js +396 -0
  160. package/dist/components/VDataTable/VDataTable.vue_vue_type_script_setup_true_lang.js.map +1 -0
  161. package/dist/components/VDateInput/VDateInput.css +2 -0
  162. package/dist/components/VDateInput/VDateInput.d.ts +152 -0
  163. package/dist/components/VDateInput/VDateInput.js +9 -0
  164. package/dist/components/VDateInput/VDateInput.js.map +1 -0
  165. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js +324 -0
  166. package/dist/components/VDateInput/VDateInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  167. package/dist/components/VDatePicker/VDatePicker.css +2 -0
  168. package/dist/components/VDatePicker/VDatePicker.d.ts +143 -0
  169. package/dist/components/VDatePicker/VDatePicker.js +9 -0
  170. package/dist/components/VDatePicker/VDatePicker.js.map +1 -0
  171. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js +454 -0
  172. package/dist/components/VDatePicker/VDatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  173. package/dist/components/VDatePicker/keyboard.d.ts +56 -0
  174. package/dist/components/VDatePicker/keyboard.js +26 -0
  175. package/dist/components/VDatePicker/keyboard.js.map +1 -0
  176. package/dist/components/VDialog/VDialog.css +2 -0
  177. package/dist/components/VDialog/VDialog.d.ts +96 -0
  178. package/dist/components/VDialog/VDialog.js +9 -0
  179. package/dist/components/VDialog/VDialog.js.map +1 -0
  180. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js +134 -0
  181. package/dist/components/VDialog/VDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
  182. package/dist/components/VDialog/VDialogAlert.d.ts +67 -0
  183. package/dist/components/VDialog/VDialogAlert.js +7 -0
  184. package/dist/components/VDialog/VDialogAlert.js.map +1 -0
  185. package/dist/components/VDialog/VDialogAlert.vue_vue_type_script_setup_true_lang.js +60 -0
  186. package/dist/components/VDialog/VDialogAlert.vue_vue_type_script_setup_true_lang.js.map +1 -0
  187. package/dist/components/VFileInput/VFileInput.css +2 -0
  188. package/dist/components/VFileInput/VFileInput.d.ts +156 -0
  189. package/dist/components/VFileInput/VFileInput.js +9 -0
  190. package/dist/components/VFileInput/VFileInput.js.map +1 -0
  191. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js +244 -0
  192. package/dist/components/VFileInput/VFileInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  193. package/dist/components/VFileInput/truncate.d.ts +29 -0
  194. package/dist/components/VFileInput/truncate.js +10 -0
  195. package/dist/components/VFileInput/truncate.js.map +1 -0
  196. package/dist/components/VFilePicker/VFilePicker.css +2 -0
  197. package/dist/components/VFilePicker/VFilePicker.d.ts +203 -0
  198. package/dist/components/VFilePicker/VFilePicker.js +9 -0
  199. package/dist/components/VFilePicker/VFilePicker.js.map +1 -0
  200. package/dist/components/VFilePicker/VFilePicker.vue_vue_type_script_setup_true_lang.js +266 -0
  201. package/dist/components/VFilePicker/VFilePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  202. package/dist/components/VFilePicker/fileKind.d.ts +29 -0
  203. package/dist/components/VFilePicker/fileKind.js +91 -0
  204. package/dist/components/VFilePicker/fileKind.js.map +1 -0
  205. package/dist/components/VHotkeys/VHotkeys.css +2 -0
  206. package/dist/components/VHotkeys/VHotkeys.d.ts +100 -0
  207. package/dist/components/VHotkeys/VHotkeys.js +9 -0
  208. package/dist/components/VHotkeys/VHotkeys.js.map +1 -0
  209. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js +76 -0
  210. package/dist/components/VHotkeys/VHotkeys.vue_vue_type_script_setup_true_lang.js.map +1 -0
  211. package/dist/components/VHotkeys/platform.d.ts +82 -0
  212. package/dist/components/VHotkeys/platform.js +115 -0
  213. package/dist/components/VHotkeys/platform.js.map +1 -0
  214. package/dist/components/VIcon/VIcon.css +2 -0
  215. package/dist/components/VIcon/VIcon.d.ts +57 -0
  216. package/dist/components/VIcon/VIcon.js +9 -0
  217. package/dist/components/VIcon/VIcon.js.map +1 -0
  218. package/dist/components/VIcon/VIcon.vue_vue_type_script_setup_true_lang.js +99 -0
  219. package/dist/components/VIcon/VIcon.vue_vue_type_script_setup_true_lang.js.map +1 -0
  220. package/dist/components/VIcon/iconProps.d.ts +30 -0
  221. package/dist/components/VIcon/iconProps.js +6 -0
  222. package/dist/components/VIcon/iconProps.js.map +1 -0
  223. package/dist/components/VIcon/icons/arrow_downward.d.ts +5 -0
  224. package/dist/components/VIcon/icons/arrow_downward.js +9 -0
  225. package/dist/components/VIcon/icons/arrow_downward.js.map +1 -0
  226. package/dist/components/VIcon/icons/arrow_downward_alt.d.ts +5 -0
  227. package/dist/components/VIcon/icons/arrow_downward_alt.js +9 -0
  228. package/dist/components/VIcon/icons/arrow_downward_alt.js.map +1 -0
  229. package/dist/components/VIcon/icons/arrow_drop_down.d.ts +5 -0
  230. package/dist/components/VIcon/icons/arrow_drop_down.js +9 -0
  231. package/dist/components/VIcon/icons/arrow_drop_down.js.map +1 -0
  232. package/dist/components/VIcon/icons/arrow_drop_up.d.ts +5 -0
  233. package/dist/components/VIcon/icons/arrow_drop_up.js +9 -0
  234. package/dist/components/VIcon/icons/arrow_drop_up.js.map +1 -0
  235. package/dist/components/VIcon/icons/arrow_left_alt.d.ts +5 -0
  236. package/dist/components/VIcon/icons/arrow_left_alt.js +9 -0
  237. package/dist/components/VIcon/icons/arrow_left_alt.js.map +1 -0
  238. package/dist/components/VIcon/icons/arrow_right_alt.d.ts +5 -0
  239. package/dist/components/VIcon/icons/arrow_right_alt.js +9 -0
  240. package/dist/components/VIcon/icons/arrow_right_alt.js.map +1 -0
  241. package/dist/components/VIcon/icons/arrow_upward.d.ts +5 -0
  242. package/dist/components/VIcon/icons/arrow_upward.js +9 -0
  243. package/dist/components/VIcon/icons/arrow_upward.js.map +1 -0
  244. package/dist/components/VIcon/icons/arrow_upward_alt.d.ts +5 -0
  245. package/dist/components/VIcon/icons/arrow_upward_alt.js +9 -0
  246. package/dist/components/VIcon/icons/arrow_upward_alt.js.map +1 -0
  247. package/dist/components/VIcon/icons/attach_file.d.ts +5 -0
  248. package/dist/components/VIcon/icons/attach_file.js +9 -0
  249. package/dist/components/VIcon/icons/attach_file.js.map +1 -0
  250. package/dist/components/VIcon/icons/audio_file.d.ts +5 -0
  251. package/dist/components/VIcon/icons/audio_file.js +9 -0
  252. package/dist/components/VIcon/icons/audio_file.js.map +1 -0
  253. package/dist/components/VIcon/icons/calendar_today.d.ts +5 -0
  254. package/dist/components/VIcon/icons/calendar_today.js +9 -0
  255. package/dist/components/VIcon/icons/calendar_today.js.map +1 -0
  256. package/dist/components/VIcon/icons/check.d.ts +5 -0
  257. package/dist/components/VIcon/icons/check.js +9 -0
  258. package/dist/components/VIcon/icons/check.js.map +1 -0
  259. package/dist/components/VIcon/icons/check_circle.d.ts +5 -0
  260. package/dist/components/VIcon/icons/check_circle.js +9 -0
  261. package/dist/components/VIcon/icons/check_circle.js.map +1 -0
  262. package/dist/components/VIcon/icons/chevron_left.d.ts +5 -0
  263. package/dist/components/VIcon/icons/chevron_left.js +9 -0
  264. package/dist/components/VIcon/icons/chevron_left.js.map +1 -0
  265. package/dist/components/VIcon/icons/chevron_right.d.ts +5 -0
  266. package/dist/components/VIcon/icons/chevron_right.js +9 -0
  267. package/dist/components/VIcon/icons/chevron_right.js.map +1 -0
  268. package/dist/components/VIcon/icons/close.d.ts +5 -0
  269. package/dist/components/VIcon/icons/close.js +9 -0
  270. package/dist/components/VIcon/icons/close.js.map +1 -0
  271. package/dist/components/VIcon/icons/cloud_upload.d.ts +5 -0
  272. package/dist/components/VIcon/icons/cloud_upload.js +9 -0
  273. package/dist/components/VIcon/icons/cloud_upload.js.map +1 -0
  274. package/dist/components/VIcon/icons/code.d.ts +5 -0
  275. package/dist/components/VIcon/icons/code.js +9 -0
  276. package/dist/components/VIcon/icons/code.js.map +1 -0
  277. package/dist/components/VIcon/icons/description.d.ts +5 -0
  278. package/dist/components/VIcon/icons/description.js +9 -0
  279. package/dist/components/VIcon/icons/description.js.map +1 -0
  280. package/dist/components/VIcon/icons/error.d.ts +5 -0
  281. package/dist/components/VIcon/icons/error.js +9 -0
  282. package/dist/components/VIcon/icons/error.js.map +1 -0
  283. package/dist/components/VIcon/icons/expand_less.d.ts +5 -0
  284. package/dist/components/VIcon/icons/expand_less.js +9 -0
  285. package/dist/components/VIcon/icons/expand_less.js.map +1 -0
  286. package/dist/components/VIcon/icons/expand_more.d.ts +5 -0
  287. package/dist/components/VIcon/icons/expand_more.js +9 -0
  288. package/dist/components/VIcon/icons/expand_more.js.map +1 -0
  289. package/dist/components/VIcon/icons/folder_zip.d.ts +5 -0
  290. package/dist/components/VIcon/icons/folder_zip.js +9 -0
  291. package/dist/components/VIcon/icons/folder_zip.js.map +1 -0
  292. package/dist/components/VIcon/icons/image.d.ts +5 -0
  293. package/dist/components/VIcon/icons/image.js +9 -0
  294. package/dist/components/VIcon/icons/image.js.map +1 -0
  295. package/dist/components/VIcon/icons/index.d.ts +183 -0
  296. package/dist/components/VIcon/icons/index.js +77 -0
  297. package/dist/components/VIcon/icons/index.js.map +1 -0
  298. package/dist/components/VIcon/icons/info.d.ts +5 -0
  299. package/dist/components/VIcon/icons/info.js +9 -0
  300. package/dist/components/VIcon/icons/info.js.map +1 -0
  301. package/dist/components/VIcon/icons/more_horiz.d.ts +5 -0
  302. package/dist/components/VIcon/icons/more_horiz.js +9 -0
  303. package/dist/components/VIcon/icons/more_horiz.js.map +1 -0
  304. package/dist/components/VIcon/icons/names.d.ts +11 -0
  305. package/dist/components/VIcon/icons/names.js +5 -0
  306. package/dist/components/VIcon/icons/names.js.map +1 -0
  307. package/dist/components/VIcon/icons/notifications.d.ts +5 -0
  308. package/dist/components/VIcon/icons/notifications.js +9 -0
  309. package/dist/components/VIcon/icons/notifications.js.map +1 -0
  310. package/dist/components/VIcon/icons/picture_as_pdf.d.ts +5 -0
  311. package/dist/components/VIcon/icons/picture_as_pdf.js +9 -0
  312. package/dist/components/VIcon/icons/picture_as_pdf.js.map +1 -0
  313. package/dist/components/VIcon/icons/schedule.d.ts +5 -0
  314. package/dist/components/VIcon/icons/schedule.js +9 -0
  315. package/dist/components/VIcon/icons/schedule.js.map +1 -0
  316. package/dist/components/VIcon/icons/search.d.ts +5 -0
  317. package/dist/components/VIcon/icons/search.js +9 -0
  318. package/dist/components/VIcon/icons/search.js.map +1 -0
  319. package/dist/components/VIcon/icons/swap_vert.d.ts +5 -0
  320. package/dist/components/VIcon/icons/swap_vert.js +9 -0
  321. package/dist/components/VIcon/icons/swap_vert.js.map +1 -0
  322. package/dist/components/VIcon/icons/table_chart.d.ts +5 -0
  323. package/dist/components/VIcon/icons/table_chart.js +9 -0
  324. package/dist/components/VIcon/icons/table_chart.js.map +1 -0
  325. package/dist/components/VIcon/icons/video_file.d.ts +5 -0
  326. package/dist/components/VIcon/icons/video_file.js +9 -0
  327. package/dist/components/VIcon/icons/video_file.js.map +1 -0
  328. package/dist/components/VIcon/icons/viewBox.d.ts +6 -0
  329. package/dist/components/VIcon/icons/viewBox.js +6 -0
  330. package/dist/components/VIcon/icons/viewBox.js.map +1 -0
  331. package/dist/components/VIcon/icons/warning.d.ts +5 -0
  332. package/dist/components/VIcon/icons/warning.js +9 -0
  333. package/dist/components/VIcon/icons/warning.js.map +1 -0
  334. package/dist/components/VIcon/resolver.d.ts +76 -0
  335. package/dist/components/VIcon/resolver.js +35 -0
  336. package/dist/components/VIcon/resolver.js.map +1 -0
  337. package/dist/components/VIcon/types.d.ts +77 -0
  338. package/dist/components/VIconButton/VIconButton.css +2 -0
  339. package/dist/components/VIconButton/VIconButton.d.ts +66 -0
  340. package/dist/components/VIconButton/VIconButton.js +9 -0
  341. package/dist/components/VIconButton/VIconButton.js.map +1 -0
  342. package/dist/components/VIconButton/VIconButton.vue_vue_type_script_setup_true_lang.js +70 -0
  343. package/dist/components/VIconButton/VIconButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  344. package/dist/components/VInput/VInput.css +2 -0
  345. package/dist/components/VInput/VInput.d.ts +152 -0
  346. package/dist/components/VInput/VInput.js +9 -0
  347. package/dist/components/VInput/VInput.js.map +1 -0
  348. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js +185 -0
  349. package/dist/components/VInput/VInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  350. package/dist/components/VInputOTP/VInputOTP.css +2 -0
  351. package/dist/components/VInputOTP/VInputOTP.d.ts +76 -0
  352. package/dist/components/VInputOTP/VInputOTP.js +9 -0
  353. package/dist/components/VInputOTP/VInputOTP.js.map +1 -0
  354. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js +149 -0
  355. package/dist/components/VInputOTP/VInputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -0
  356. package/dist/components/VMenu/VMenu.d.ts +91 -0
  357. package/dist/components/VMenu/VMenu.js +7 -0
  358. package/dist/components/VMenu/VMenu.js.map +1 -0
  359. package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js +73 -0
  360. package/dist/components/VMenu/VMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  361. package/dist/components/VMenu/VMenuGroup.css +2 -0
  362. package/dist/components/VMenu/VMenuGroup.d.ts +22 -0
  363. package/dist/components/VMenu/VMenuGroup.js +9 -0
  364. package/dist/components/VMenu/VMenuGroup.js.map +1 -0
  365. package/dist/components/VMenu/VMenuGroup.vue_vue_type_script_setup_true_lang.js +21 -0
  366. package/dist/components/VMenu/VMenuGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  367. package/dist/components/VMenu/VMenuItem.css +2 -0
  368. package/dist/components/VMenu/VMenuItem.d.ts +85 -0
  369. package/dist/components/VMenu/VMenuItem.js +9 -0
  370. package/dist/components/VMenu/VMenuItem.js.map +1 -0
  371. package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js +121 -0
  372. package/dist/components/VMenu/VMenuItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  373. package/dist/components/VMenu/VMenuPanel.css +2 -0
  374. package/dist/components/VMenu/VMenuPanel.d.ts +91 -0
  375. package/dist/components/VMenu/VMenuPanel.js +9 -0
  376. package/dist/components/VMenu/VMenuPanel.js.map +1 -0
  377. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js +103 -0
  378. package/dist/components/VMenu/VMenuPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  379. package/dist/components/VMenu/VMenuSeparator.css +2 -0
  380. package/dist/components/VMenu/VMenuSeparator.d.ts +3 -0
  381. package/dist/components/VMenu/VMenuSeparator.js +9 -0
  382. package/dist/components/VMenu/VMenuSeparator.js.map +1 -0
  383. package/dist/components/VMenu/VMenuSeparator.vue_vue_type_script_setup_true_lang.js +13 -0
  384. package/dist/components/VMenu/VMenuSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  385. package/dist/components/VMenu/context.d.ts +33 -0
  386. package/dist/components/VMenu/context.js +9 -0
  387. package/dist/components/VMenu/context.js.map +1 -0
  388. package/dist/components/VPagination/VPagination.css +2 -0
  389. package/dist/components/VPagination/VPagination.d.ts +103 -0
  390. package/dist/components/VPagination/VPagination.js +9 -0
  391. package/dist/components/VPagination/VPagination.js.map +1 -0
  392. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js +270 -0
  393. package/dist/components/VPagination/VPagination.vue_vue_type_script_setup_true_lang.js.map +1 -0
  394. package/dist/components/VPopover/VPopover.css +2 -0
  395. package/dist/components/VPopover/VPopover.d.ts +82 -0
  396. package/dist/components/VPopover/VPopover.js +9 -0
  397. package/dist/components/VPopover/VPopover.js.map +1 -0
  398. package/dist/components/VPopover/VPopover.vue_vue_type_script_setup_true_lang.js +65 -0
  399. package/dist/components/VPopover/VPopover.vue_vue_type_script_setup_true_lang.js.map +1 -0
  400. package/dist/components/VProgressCircular/VProgressCircular.css +2 -0
  401. package/dist/components/VProgressCircular/VProgressCircular.d.ts +60 -0
  402. package/dist/components/VProgressCircular/VProgressCircular.js +9 -0
  403. package/dist/components/VProgressCircular/VProgressCircular.js.map +1 -0
  404. package/dist/components/VProgressCircular/VProgressCircular.vue_vue_type_script_setup_true_lang.js +74 -0
  405. package/dist/components/VProgressCircular/VProgressCircular.vue_vue_type_script_setup_true_lang.js.map +1 -0
  406. package/dist/components/VProgressLinear/VProgressLinear.css +2 -0
  407. package/dist/components/VProgressLinear/VProgressLinear.d.ts +74 -0
  408. package/dist/components/VProgressLinear/VProgressLinear.js +9 -0
  409. package/dist/components/VProgressLinear/VProgressLinear.js.map +1 -0
  410. package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js +74 -0
  411. package/dist/components/VProgressLinear/VProgressLinear.vue_vue_type_script_setup_true_lang.js.map +1 -0
  412. package/dist/components/VRadio/VRadio.css +2 -0
  413. package/dist/components/VRadio/VRadio.d.ts +58 -0
  414. package/dist/components/VRadio/VRadio.js +9 -0
  415. package/dist/components/VRadio/VRadio.js.map +1 -0
  416. package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js +60 -0
  417. package/dist/components/VRadio/VRadio.vue_vue_type_script_setup_true_lang.js.map +1 -0
  418. package/dist/components/VSeparator/VSeparator.css +2 -0
  419. package/dist/components/VSeparator/VSeparator.d.ts +23 -0
  420. package/dist/components/VSeparator/VSeparator.js +9 -0
  421. package/dist/components/VSeparator/VSeparator.js.map +1 -0
  422. package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js +17 -0
  423. package/dist/components/VSeparator/VSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  424. package/dist/components/VSideNavigation/VSideNavigation.css +2 -0
  425. package/dist/components/VSideNavigation/VSideNavigation.d.ts +64 -0
  426. package/dist/components/VSideNavigation/VSideNavigation.js +9 -0
  427. package/dist/components/VSideNavigation/VSideNavigation.js.map +1 -0
  428. package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js +67 -0
  429. package/dist/components/VSideNavigation/VSideNavigation.vue_vue_type_script_setup_true_lang.js.map +1 -0
  430. package/dist/components/VSideNavigation/VSideNavigationGroup.css +2 -0
  431. package/dist/components/VSideNavigation/VSideNavigationGroup.d.ts +33 -0
  432. package/dist/components/VSideNavigation/VSideNavigationGroup.js +9 -0
  433. package/dist/components/VSideNavigation/VSideNavigationGroup.js.map +1 -0
  434. package/dist/components/VSideNavigation/VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js +20 -0
  435. package/dist/components/VSideNavigation/VSideNavigationGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  436. package/dist/components/VSideNavigation/VSideNavigationItem.css +2 -0
  437. package/dist/components/VSideNavigation/VSideNavigationItem.d.ts +103 -0
  438. package/dist/components/VSideNavigation/VSideNavigationItem.js +9 -0
  439. package/dist/components/VSideNavigation/VSideNavigationItem.js.map +1 -0
  440. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js +154 -0
  441. package/dist/components/VSideNavigation/VSideNavigationItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  442. package/dist/components/VSideNavigation/VSideNavigationSeparator.css +2 -0
  443. package/dist/components/VSideNavigation/VSideNavigationSeparator.d.ts +3 -0
  444. package/dist/components/VSideNavigation/VSideNavigationSeparator.js +17 -0
  445. package/dist/components/VSideNavigation/VSideNavigationSeparator.js.map +1 -0
  446. package/dist/components/VSideNavigation/context.d.ts +37 -0
  447. package/dist/components/VSideNavigation/context.js +6 -0
  448. package/dist/components/VSideNavigation/context.js.map +1 -0
  449. package/dist/components/VSkeletonLoader/VSkeletonLoader.css +2 -0
  450. package/dist/components/VSkeletonLoader/VSkeletonLoader.d.ts +75 -0
  451. package/dist/components/VSkeletonLoader/VSkeletonLoader.js +9 -0
  452. package/dist/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -0
  453. package/dist/components/VSkeletonLoader/VSkeletonLoader.vue_vue_type_script_setup_true_lang.js +61 -0
  454. package/dist/components/VSkeletonLoader/VSkeletonLoader.vue_vue_type_script_setup_true_lang.js.map +1 -0
  455. package/dist/components/VSlider/VSlider.css +2 -0
  456. package/dist/components/VSlider/VSlider.d.ts +82 -0
  457. package/dist/components/VSlider/VSlider.js +9 -0
  458. package/dist/components/VSlider/VSlider.js.map +1 -0
  459. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js +220 -0
  460. package/dist/components/VSlider/VSlider.vue_vue_type_script_setup_true_lang.js.map +1 -0
  461. package/dist/components/VSnackbar/VSnackbar.css +2 -0
  462. package/dist/components/VSnackbar/VSnackbar.d.ts +51 -0
  463. package/dist/components/VSnackbar/VSnackbar.js +9 -0
  464. package/dist/components/VSnackbar/VSnackbar.js.map +1 -0
  465. package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js +83 -0
  466. package/dist/components/VSnackbar/VSnackbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  467. package/dist/components/VSnackbar/state.d.ts +92 -0
  468. package/dist/components/VSnackbar/state.js +18 -0
  469. package/dist/components/VSnackbar/state.js.map +1 -0
  470. package/dist/components/VSpinner/VSpinner.css +2 -0
  471. package/dist/components/VSpinner/VSpinner.d.ts +21 -0
  472. package/dist/components/VSpinner/VSpinner.js +9 -0
  473. package/dist/components/VSpinner/VSpinner.js.map +1 -0
  474. package/dist/components/VSpinner/VSpinner.vue_vue_type_script_setup_true_lang.js +25 -0
  475. package/dist/components/VSpinner/VSpinner.vue_vue_type_script_setup_true_lang.js.map +1 -0
  476. package/dist/components/VSwitch/VSwitch.css +2 -0
  477. package/dist/components/VSwitch/VSwitch.d.ts +46 -0
  478. package/dist/components/VSwitch/VSwitch.js +9 -0
  479. package/dist/components/VSwitch/VSwitch.js.map +1 -0
  480. package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js +51 -0
  481. package/dist/components/VSwitch/VSwitch.vue_vue_type_script_setup_true_lang.js.map +1 -0
  482. package/dist/components/VTabs/VTab.css +2 -0
  483. package/dist/components/VTabs/VTab.d.ts +42 -0
  484. package/dist/components/VTabs/VTab.js +9 -0
  485. package/dist/components/VTabs/VTab.js.map +1 -0
  486. package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js +66 -0
  487. package/dist/components/VTabs/VTab.vue_vue_type_script_setup_true_lang.js.map +1 -0
  488. package/dist/components/VTabs/VTabPanel.css +2 -0
  489. package/dist/components/VTabs/VTabPanel.d.ts +34 -0
  490. package/dist/components/VTabs/VTabPanel.js +9 -0
  491. package/dist/components/VTabs/VTabPanel.js.map +1 -0
  492. package/dist/components/VTabs/VTabPanel.vue_vue_type_script_setup_true_lang.js +34 -0
  493. package/dist/components/VTabs/VTabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  494. package/dist/components/VTabs/VTabs.css +2 -0
  495. package/dist/components/VTabs/VTabs.d.ts +107 -0
  496. package/dist/components/VTabs/VTabs.js +9 -0
  497. package/dist/components/VTabs/VTabs.js.map +1 -0
  498. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js +199 -0
  499. package/dist/components/VTabs/VTabs.vue_vue_type_script_setup_true_lang.js.map +1 -0
  500. package/dist/components/VTabs/context.d.ts +43 -0
  501. package/dist/components/VTabs/context.js +6 -0
  502. package/dist/components/VTabs/context.js.map +1 -0
  503. package/dist/components/VTextarea/VTextarea.css +2 -0
  504. package/dist/components/VTextarea/VTextarea.d.ts +140 -0
  505. package/dist/components/VTextarea/VTextarea.js +9 -0
  506. package/dist/components/VTextarea/VTextarea.js.map +1 -0
  507. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js +187 -0
  508. package/dist/components/VTextarea/VTextarea.vue_vue_type_script_setup_true_lang.js.map +1 -0
  509. package/dist/components/VTimeInput/VTimeInput.css +2 -0
  510. package/dist/components/VTimeInput/VTimeInput.d.ts +112 -0
  511. package/dist/components/VTimeInput/VTimeInput.js +9 -0
  512. package/dist/components/VTimeInput/VTimeInput.js.map +1 -0
  513. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js +385 -0
  514. package/dist/components/VTimeInput/VTimeInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  515. package/dist/components/VTimePicker/VTimePicker.css +2 -0
  516. package/dist/components/VTimePicker/VTimePicker.d.ts +89 -0
  517. package/dist/components/VTimePicker/VTimePicker.js +9 -0
  518. package/dist/components/VTimePicker/VTimePicker.js.map +1 -0
  519. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js +257 -0
  520. package/dist/components/VTimePicker/VTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  521. package/dist/components/VToast/VToast.css +2 -0
  522. package/dist/components/VToast/VToast.d.ts +24 -0
  523. package/dist/components/VToast/VToast.js +9 -0
  524. package/dist/components/VToast/VToast.js.map +1 -0
  525. package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js +62 -0
  526. package/dist/components/VToast/VToast.vue_vue_type_script_setup_true_lang.js.map +1 -0
  527. package/dist/components/VToast/VToaster.css +2 -0
  528. package/dist/components/VToast/VToaster.d.ts +42 -0
  529. package/dist/components/VToast/VToaster.js +9 -0
  530. package/dist/components/VToast/VToaster.js.map +1 -0
  531. package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js +112 -0
  532. package/dist/components/VToast/VToaster.vue_vue_type_script_setup_true_lang.js.map +1 -0
  533. package/dist/components/VToast/state.d.ts +74 -0
  534. package/dist/components/VToast/state.js +25 -0
  535. package/dist/components/VToast/state.js.map +1 -0
  536. package/dist/components/VToggle/VToggle.css +2 -0
  537. package/dist/components/VToggle/VToggle.d.ts +84 -0
  538. package/dist/components/VToggle/VToggle.js +9 -0
  539. package/dist/components/VToggle/VToggle.js.map +1 -0
  540. package/dist/components/VToggle/VToggle.vue_vue_type_script_setup_true_lang.js +103 -0
  541. package/dist/components/VToggle/VToggle.vue_vue_type_script_setup_true_lang.js.map +1 -0
  542. package/dist/components/VToggle/VToggleItem.css +2 -0
  543. package/dist/components/VToggle/VToggleItem.d.ts +35 -0
  544. package/dist/components/VToggle/VToggleItem.js +9 -0
  545. package/dist/components/VToggle/VToggleItem.js.map +1 -0
  546. package/dist/components/VToggle/VToggleItem.vue_vue_type_script_setup_true_lang.js +51 -0
  547. package/dist/components/VToggle/VToggleItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  548. package/dist/components/VToggle/context.d.ts +37 -0
  549. package/dist/components/VToggle/context.js +6 -0
  550. package/dist/components/VToggle/context.js.map +1 -0
  551. package/dist/components/VTooltip/VTooltip.css +2 -0
  552. package/dist/components/VTooltip/VTooltip.d.ts +76 -0
  553. package/dist/components/VTooltip/VTooltip.js +9 -0
  554. package/dist/components/VTooltip/VTooltip.js.map +1 -0
  555. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js +50 -0
  556. package/dist/components/VTooltip/VTooltip.vue_vue_type_script_setup_true_lang.js.map +1 -0
  557. package/dist/components/VTypography/VTypography.css +2 -0
  558. package/dist/components/VTypography/VTypography.d.ts +46 -0
  559. package/dist/components/VTypography/VTypography.js +9 -0
  560. package/dist/components/VTypography/VTypography.js.map +1 -0
  561. package/dist/components/VTypography/VTypography.vue_vue_type_script_setup_true_lang.js +49 -0
  562. package/dist/components/VTypography/VTypography.vue_vue_type_script_setup_true_lang.js.map +1 -0
  563. package/dist/composables/useAriaLabel.d.ts +19 -0
  564. package/dist/composables/useAriaLabel.js +10 -0
  565. package/dist/composables/useAriaLabel.js.map +1 -0
  566. package/dist/composables/useFieldIds.d.ts +21 -0
  567. package/dist/composables/useFieldIds.js +14 -0
  568. package/dist/composables/useFieldIds.js.map +1 -0
  569. package/dist/composables/useFieldPanel.d.ts +61 -0
  570. package/dist/composables/useFieldPanel.js +39 -0
  571. package/dist/composables/useFieldPanel.js.map +1 -0
  572. package/dist/composables/useFileDrop.d.ts +30 -0
  573. package/dist/composables/useFileDrop.js +28 -0
  574. package/dist/composables/useFileDrop.js.map +1 -0
  575. package/dist/composables/useFileField.d.ts +36 -0
  576. package/dist/composables/useFileField.js +45 -0
  577. package/dist/composables/useFileField.js.map +1 -0
  578. package/dist/composables/useFocusoutDismiss.d.ts +17 -0
  579. package/dist/composables/useFocusoutDismiss.js +11 -0
  580. package/dist/composables/useFocusoutDismiss.js.map +1 -0
  581. package/dist/composables/useIconClickHandlers.d.ts +27 -0
  582. package/dist/composables/useIconClickHandlers.js +13 -0
  583. package/dist/composables/useIconClickHandlers.js.map +1 -0
  584. package/dist/composables/useMaskedField.d.ts +65 -0
  585. package/dist/composables/useMaskedField.js +54 -0
  586. package/dist/composables/useMaskedField.js.map +1 -0
  587. package/dist/composables/usePopover.d.ts +7 -0
  588. package/dist/composables/usePopover.js +24 -0
  589. package/dist/composables/usePopover.js.map +1 -0
  590. package/dist/composables/useProgressValue.d.ts +13 -0
  591. package/dist/composables/useProgressValue.js +14 -0
  592. package/dist/composables/useProgressValue.js.map +1 -0
  593. package/dist/composables/useRootAttrs.d.ts +34 -0
  594. package/dist/composables/useRootAttrs.js +15 -0
  595. package/dist/composables/useRootAttrs.js.map +1 -0
  596. package/dist/composables/useTextLimit.d.ts +31 -0
  597. package/dist/composables/useTextLimit.js +19 -0
  598. package/dist/composables/useTextLimit.js.map +1 -0
  599. package/dist/composables/useTimer.d.ts +18 -0
  600. package/dist/composables/useTimer.js +19 -0
  601. package/dist/composables/useTimer.js.map +1 -0
  602. package/dist/i18n/en.d.ts +10 -0
  603. package/dist/i18n/en.js +179 -0
  604. package/dist/i18n/en.js.map +1 -0
  605. package/dist/i18n/fr.d.ts +18 -0
  606. package/dist/i18n/fr.js +179 -0
  607. package/dist/i18n/fr.js.map +1 -0
  608. package/dist/i18n/state.d.ts +64 -0
  609. package/dist/i18n/state.js +40 -0
  610. package/dist/i18n/state.js.map +1 -0
  611. package/dist/i18n/types.d.ts +345 -0
  612. package/dist/icons.d.ts +16 -0
  613. package/dist/icons.js +38 -0
  614. package/dist/index.d.ts +90 -0
  615. package/dist/index.js +64 -0
  616. package/dist/styles.css +1 -0
  617. package/dist/tokens/css.d.ts +25 -0
  618. package/dist/tokens/css.js +29 -0
  619. package/dist/tokens/css.js.map +1 -0
  620. package/dist/tokens/index.d.ts +370 -0
  621. package/dist/tokens/index.js +15 -0
  622. package/dist/tokens/index.js.map +1 -0
  623. package/dist/tokens/primitives.d.ts +101 -0
  624. package/dist/tokens/primitives.js +166 -0
  625. package/dist/tokens/primitives.js.map +1 -0
  626. package/dist/tokens/semantic.d.ts +236 -0
  627. package/dist/tokens/semantic.js +219 -0
  628. package/dist/tokens/semantic.js.map +1 -0
  629. package/dist/tokens/themes/dark.d.ts +49 -0
  630. package/dist/tokens/themes/dark.js +53 -0
  631. package/dist/tokens/themes/dark.js.map +1 -0
  632. package/dist/tokens/types.d.ts +38 -0
  633. package/dist/tokens/types.js +16 -0
  634. package/dist/tokens/types.js.map +1 -0
  635. package/dist/tokens.json +1516 -0
  636. package/dist/utils/array.d.ts +10 -0
  637. package/dist/utils/array.js +8 -0
  638. package/dist/utils/array.js.map +1 -0
  639. package/dist/utils/arrowNav.d.ts +27 -0
  640. package/dist/utils/arrowNav.js +26 -0
  641. package/dist/utils/arrowNav.js.map +1 -0
  642. package/dist/utils/chip.d.ts +26 -0
  643. package/dist/utils/chip.js +13 -0
  644. package/dist/utils/chip.js.map +1 -0
  645. package/dist/utils/css.d.ts +19 -0
  646. package/dist/utils/css.js +13 -0
  647. package/dist/utils/css.js.map +1 -0
  648. package/dist/utils/date.d.ts +199 -0
  649. package/dist/utils/date.js +225 -0
  650. package/dist/utils/date.js.map +1 -0
  651. package/dist/utils/direction.d.ts +18 -0
  652. package/dist/utils/direction.js +8 -0
  653. package/dist/utils/direction.js.map +1 -0
  654. package/dist/utils/env.d.ts +10 -0
  655. package/dist/utils/file.d.ts +95 -0
  656. package/dist/utils/file.js +70 -0
  657. package/dist/utils/file.js.map +1 -0
  658. package/dist/utils/focus.d.ts +24 -0
  659. package/dist/utils/focus.js +13 -0
  660. package/dist/utils/focus.js.map +1 -0
  661. package/dist/utils/matcher.d.ts +13 -0
  662. package/dist/utils/matcher.js +11 -0
  663. package/dist/utils/matcher.js.map +1 -0
  664. package/dist/utils/number.d.ts +9 -0
  665. package/dist/utils/number.js +8 -0
  666. package/dist/utils/number.js.map +1 -0
  667. package/dist/utils/text.d.ts +19 -0
  668. package/dist/utils/text.js +12 -0
  669. package/dist/utils/text.js.map +1 -0
  670. package/dist/utils/time.d.ts +138 -0
  671. package/dist/utils/time.js +123 -0
  672. package/dist/utils/time.js.map +1 -0
  673. package/dist/utils/vnode.d.ts +21 -0
  674. package/dist/utils/vnode.js +14 -0
  675. package/dist/utils/vnode.js.map +1 -0
  676. package/package.json +114 -0
@@ -0,0 +1,13 @@
1
+ import e from "../VSeparator/VSeparator.js";
2
+ import { createBlock as t, defineComponent as n, openBlock as r } from "vue";
3
+ //#region src/components/VMenu/VMenuSeparator.vue?vue&type=script&setup=true&lang.ts
4
+ var i = /*@__PURE__*/ n({
5
+ __name: "VMenuSeparator",
6
+ setup(n) {
7
+ return (n, i) => (r(), t(e, { class: "v-menu-separator" }));
8
+ }
9
+ });
10
+ //#endregion
11
+ export { i as default };
12
+
13
+ //# sourceMappingURL=VMenuSeparator.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VMenuSeparator.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VMenu/VMenuSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * The rule drawn between two blocks of commands in a menu. It is a VSeparator, whose\n * `<hr>` already means \"separator\" to assistive technology — which is allowed inside\n * a menu — and which nothing can focus, so the arrow keys skip it without a single\n * exclusion having to be written for it.\n */\nimport VSeparator from '../VSeparator/VSeparator.vue'\n</script>\n\n<template>\n <VSeparator class=\"v-menu-separator\" />\n</template>\n\n<style>\n@layer vectis.components {\n /* The rule is bled out to the panel's edges by cancelling its padding. The selector\n compounds both classes because `.v-separator` sets `margin: 0` from a sheet of its\n own: at equal specificity the winner would be whichever of the two the consumer's\n bundler happens to put last. The space above and below comes from the panel's own\n gap, so no margin is added here. */\n .v-separator.v-menu-separator {\n margin-inline: calc(-1 * var(--vectis-space-1));\n }\n}\n</style>\n"],"mappings":";;;;;;yBAWE,EAAuC,GAAA,EAA3B,OAAM,mBAAkB,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { InjectionKey } from 'vue';
2
+ /**
3
+ * What the menu passes down to everything inside it. Choosing a command closes the
4
+ * WHOLE menu, however deep in a submenu it was, and closing the outermost panel is
5
+ * all it takes: the submenus are rendered inside it, and the browser closes a stack
6
+ * of popovers from the outside in.
7
+ */
8
+ export interface MenuContext {
9
+ closeAll: () => void;
10
+ }
11
+ export declare const menuKey: InjectionKey<MenuContext>;
12
+ /**
13
+ * How long the pointer must rest on an item before its submenu opens, and how long it
14
+ * must stay away before it closes, in milliseconds. The wait is what stops every
15
+ * panel crossed on the way elsewhere from flashing open.
16
+ */
17
+ export declare const SUBMENU_HOVER_DELAY = 150;
18
+ /**
19
+ * Finds the element that opens a given panel — which is both what the panel positions
20
+ * itself against and where the focus must return when it closes.
21
+ *
22
+ * It is found by searching the document rather than kept as a reference, because the
23
+ * outermost panel's trigger is rendered by the consumer, in a slot the panel has no
24
+ * access to.
25
+ */
26
+ export declare function menuInvoker(id: string): HTMLElement | null;
27
+ /** Where the menu itself may open, relative to its trigger. This is public API. */
28
+ export type MenuPlacement = 'bottom-start' | 'bottom-end' | 'bottom' | 'top-start' | 'top-end' | 'top';
29
+ /**
30
+ * The same list plus the sideways placement submenus use. It is internal: a submenu's
31
+ * position is not the consumer's to choose.
32
+ */
33
+ export type MenuPanelPlacement = MenuPlacement | 'right-start';
@@ -0,0 +1,9 @@
1
+ //#region src/components/VMenu/context.ts
2
+ var e = Symbol("v-menu");
3
+ function t(e) {
4
+ return document.querySelector(`[popovertarget="${e.replace(/["\\]/g, "\\$&")}"]`);
5
+ }
6
+ //#endregion
7
+ export { t as menuInvoker, e as menuKey };
8
+
9
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/VMenu/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\n\n/**\n * What the menu passes down to everything inside it. Choosing a command closes the\n * WHOLE menu, however deep in a submenu it was, and closing the outermost panel is\n * all it takes: the submenus are rendered inside it, and the browser closes a stack\n * of popovers from the outside in.\n */\nexport interface MenuContext {\n closeAll: () => void\n}\n\nexport const menuKey: InjectionKey<MenuContext> = Symbol('v-menu')\n\n/**\n * How long the pointer must rest on an item before its submenu opens, and how long it\n * must stay away before it closes, in milliseconds. The wait is what stops every\n * panel crossed on the way elsewhere from flashing open.\n */\nexport const SUBMENU_HOVER_DELAY = 150\n\n// @a11y\n/**\n * Finds the element that opens a given panel — which is both what the panel positions\n * itself against and where the focus must return when it closes.\n *\n * It is found by searching the document rather than kept as a reference, because the\n * outermost panel's trigger is rendered by the consumer, in a slot the panel has no\n * access to.\n */\nexport function menuInvoker(id: string): HTMLElement | null {\n // @fallback\n /*\n * The id is ESCAPED rather than cleaned up the way VTabs does it. There the id is\n * one we BUILD, so awkward characters can simply be dropped; here it is the panel's\n * real `id` attribute — a generated one, whose prefix the consumer can set through\n * `app.config.idPrefix` — and rewriting it would leave the selector looking for an\n * element that does not exist.\n *\n * Escaping the two characters able to close the quoted string is enough, and it is\n * deliberately NOT done with `CSS.escape`: jsdom provides no `CSS` object at all, so\n * that call would throw in every unit test.\n */\n return document.querySelector(`[popovertarget=\"${id.replace(/[\"\\\\]/g, '\\\\$&')}\"]`)\n}\n\n/** Where the menu itself may open, relative to its trigger. This is public API. */\nexport type MenuPlacement =\n 'bottom-start' | 'bottom-end' | 'bottom' | 'top-start' | 'top-end' | 'top'\n\n/**\n * The same list plus the sideways placement submenus use. It is internal: a submenu's\n * position is not the consumer's to choose.\n */\nexport type MenuPanelPlacement = MenuPlacement | 'right-start'\n"],"mappings":";AAYA,IAAa,IAAqC,OAAO,QAAQ;AAkBjE,SAAgB,EAAY,GAAgC;CAa1D,OAAO,SAAS,cAAc,mBAAmB,EAAG,QAAQ,UAAU,MAAM,EAAE,GAAG;AACnF"}
@@ -0,0 +1,2 @@
1
+ @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
+ @layer vectis.components{.v-pagination{display:flex}.v-pagination[data-responsive]{container:v-pagination/inline-size}.v-pagination[data-align=center]{justify-content:center}.v-pagination[data-align=end]{justify-content:flex-end}.v-pagination-items{align-items:center;gap:var(--vectis-space-1);display:inline-flex}.v-button-group.v-pagination-items{gap:0}.v-pagination-page[data-size]{min-inline-size:var(--control-height);padding-inline:var(--vectis-space-2);transition:none}.v-pagination-ellipsis{cursor:default}[dir=rtl] .v-pagination-control .v-icon{scale:-1 1}@container v-pagination (width<=36rem){.v-pagination[data-responsive] .v-pagination-page[data-distance="3"]{display:none}}@container v-pagination (width<=31rem){.v-pagination[data-responsive] .v-pagination-page[data-distance="2"],.v-pagination[data-responsive][data-controls-display=both] .v-pagination-control-label{display:none}}@container v-pagination (width<=25rem){.v-pagination[data-responsive] .v-pagination-page[data-distance="1"]{display:none}}}
@@ -0,0 +1,103 @@
1
+ import { IconSource } from '../VIcon/types.js';
2
+ interface PaginationProps {
3
+ /** How many pages there are in all. */
4
+ length?: number;
5
+ /**
6
+ * How many slots to render, ellipses counted among them — so the row keeps exactly
7
+ * the same width whichever page is current. Below five there would be nothing left
8
+ * to show around the current page, so five is the effective minimum. Left out, every
9
+ * page is rendered.
10
+ */
11
+ totalVisible?: number;
12
+ /** Joins every button into one segmented control. */
13
+ attached?: boolean;
14
+ /**
15
+ * How the pages OTHER than the current one, and the controls, are drawn. The current
16
+ * page is always filled, whatever this says.
17
+ */
18
+ variant?: 'ghost' | 'outline';
19
+ /** The colour the current page takes. The other pages and the controls stay neutral. */
20
+ tone?: 'accent' | 'neutral' | 'danger';
21
+ /** The height of the buttons, from the scale shared by every control. */
22
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
23
+ /** Takes 4px off the height of every button. */
24
+ compact?: boolean;
25
+ /**
26
+ * Where the row sits in the space it is given. It only matters in responsive mode,
27
+ * where the row takes the whole width available.
28
+ */
29
+ align?: 'start' | 'center' | 'end';
30
+ /** Shows the previous and next buttons on either side of the pages. */
31
+ showControls?: boolean;
32
+ /** Whether those controls show an icon, their label, or both. */
33
+ controlsDisplay?: 'icon' | 'text' | 'both';
34
+ /** The icon of the previous control: an icon name, or an explicit render. */
35
+ prevIcon?: IconSource;
36
+ /** The icon of the next control: an icon name, or an explicit render. */
37
+ nextIcon?: IconSource;
38
+ /**
39
+ * The wording of the previous control, used both as its visible text and as what
40
+ * screen readers announce. It falls back to the design system dictionary.
41
+ */
42
+ prevLabel?: string;
43
+ /**
44
+ * The wording of the next control, used both as its visible text and as what screen
45
+ * readers announce. It falls back to the design system dictionary.
46
+ */
47
+ nextLabel?: string;
48
+ /** Makes the whole component unusable. */
49
+ disabled?: boolean;
50
+ /**
51
+ * Which pages cannot be reached, as a list or as a function. The previous and next
52
+ * controls step OVER them rather than stopping at one.
53
+ */
54
+ disabledPages?: number[] | ((page: number) => boolean);
55
+ /**
56
+ * Lets the row shed pages as the space narrows, by asking about its own width. It is
57
+ * off by default, because it makes the row take the full width available.
58
+ */
59
+ responsive?: boolean;
60
+ /**
61
+ * What screen readers announce for the navigation itself. It falls back to the
62
+ * design system dictionary.
63
+ */
64
+ label?: string;
65
+ /**
66
+ * How a page is announced. A pill shows a bare number, which alone means nothing to
67
+ * a screen reader — this is what turns it into "Page 3". It falls back to the design
68
+ * system dictionary.
69
+ */
70
+ pageLabel?: (page: number) => string;
71
+ }
72
+ type __VLS_Props = PaginationProps;
73
+ type __VLS_ModelProps = {
74
+ modelValue?: number;
75
+ };
76
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
77
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
78
+ "update:modelValue": (value: number) => any;
79
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
80
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
81
+ }>, {
82
+ label: string;
83
+ size: "xs" | "sm" | "md" | "lg" | "xl";
84
+ length: number;
85
+ variant: "ghost" | "outline";
86
+ tone: "accent" | "neutral" | "danger";
87
+ compact: boolean;
88
+ disabled: boolean;
89
+ totalVisible: number;
90
+ attached: boolean;
91
+ align: "start" | "center" | "end";
92
+ showControls: boolean;
93
+ controlsDisplay: "icon" | "text" | "both";
94
+ prevIcon: IconSource;
95
+ nextIcon: IconSource;
96
+ prevLabel: string;
97
+ nextLabel: string;
98
+ disabledPages: number[] | ((page: number) => boolean);
99
+ responsive: boolean;
100
+ pageLabel: (page: number) => string;
101
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
102
+ declare const _default: typeof __VLS_export;
103
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import './VPagination.css';
2
+ import e from "./VPagination.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VPagination/VPagination.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VPagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VPagination.js","names":[],"sources":["../../../src/components/VPagination/VPagination.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @core\n/**\n * The row of page numbers under a long list. Every pill is a VButton and the previous\n * and next controls are buttons too, so nothing about hovering, focusing or disabling\n * is written again here.\n *\n * A long list has more pages than fit on a line, and the row deals with that TWICE,\n * for two different reasons. First logically: `totalVisible` fixes how many slots are\n * rendered at all, and the pages that do not fit are replaced by an ellipsis — pure\n * arithmetic, identical on the server and in the browser. Then visually: as the space\n * actually available narrows, the neighbours of the current page are hidden one step\n * at a time, and that half is entirely CSS, the row asking about its own width rather\n * than being measured from code.\n *\n * The only behavioural JavaScript is the keyboard, explained where it is written.\n */\nimport { computed, ref } from 'vue'\n\nimport VButton from '../VButton/VButton.vue'\nimport VButtonGroup from '../VButton/VButtonGroup.vue'\nimport VIcon from '../VIcon/VIcon.vue'\nimport { iconProps } from '../VIcon/iconProps'\nimport { chevron_left as chevronLeftIcon } from '../VIcon/icons/chevron_left'\nimport { chevron_right as chevronRightIcon } from '../VIcon/icons/chevron_right'\nimport { more_horiz as moreHorizIcon } from '../VIcon/icons/more_horiz'\nimport type { IconSource } from '../VIcon/types'\nimport VIconButton from '../VIconButton/VIconButton.vue'\n\nimport { arrowNavigate, navigableItems } from '../../utils/arrowNav'\nimport { clamp } from '../../utils/number'\nimport { resolveMatcher } from '../../utils/matcher'\n\nimport { useAriaLabel } from '../../composables/useAriaLabel'\nimport { useMessages } from '../../i18n/state'\n\ninterface PaginationProps {\n /** How many pages there are in all. */\n length?: number\n /**\n * How many slots to render, ellipses counted among them — so the row keeps exactly\n * the same width whichever page is current. Below five there would be nothing left\n * to show around the current page, so five is the effective minimum. Left out, every\n * page is rendered.\n */\n totalVisible?: number\n\n /** Joins every button into one segmented control. */\n attached?: boolean\n /**\n * How the pages OTHER than the current one, and the controls, are drawn. The current\n * page is always filled, whatever this says.\n */\n variant?: 'ghost' | 'outline'\n /** The colour the current page takes. The other pages and the controls stay neutral. */\n tone?: 'accent' | 'neutral' | 'danger'\n /** The height of the buttons, from the scale shared by every control. */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Takes 4px off the height of every button. */\n compact?: boolean\n /**\n * Where the row sits in the space it is given. It only matters in responsive mode,\n * where the row takes the whole width available.\n */\n align?: 'start' | 'center' | 'end'\n\n /** Shows the previous and next buttons on either side of the pages. */\n showControls?: boolean\n /** Whether those controls show an icon, their label, or both. */\n controlsDisplay?: 'icon' | 'text' | 'both'\n /** The icon of the previous control: an icon name, or an explicit render. */\n prevIcon?: IconSource\n /** The icon of the next control: an icon name, or an explicit render. */\n nextIcon?: IconSource\n /**\n * The wording of the previous control, used both as its visible text and as what\n * screen readers announce. It falls back to the design system dictionary.\n */\n prevLabel?: string\n /**\n * The wording of the next control, used both as its visible text and as what screen\n * readers announce. It falls back to the design system dictionary.\n */\n nextLabel?: string\n\n /** Makes the whole component unusable. */\n disabled?: boolean\n /**\n * Which pages cannot be reached, as a list or as a function. The previous and next\n * controls step OVER them rather than stopping at one.\n */\n disabledPages?: number[] | ((page: number) => boolean)\n\n /**\n * Lets the row shed pages as the space narrows, by asking about its own width. It is\n * off by default, because it makes the row take the full width available.\n */\n responsive?: boolean\n\n /**\n * What screen readers announce for the navigation itself. It falls back to the\n * design system dictionary.\n */\n label?: string\n /**\n * How a page is announced. A pill shows a bare number, which alone means nothing to\n * a screen reader — this is what turns it into \"Page 3\". It falls back to the design\n * system dictionary.\n */\n pageLabel?: (page: number) => string\n}\n\nconst props = withDefaults(defineProps<PaginationProps>(), {\n length: 1,\n totalVisible: undefined,\n attached: false,\n variant: 'ghost',\n tone: 'accent',\n size: 'md',\n compact: false,\n align: 'start',\n showControls: true,\n controlsDisplay: 'icon',\n prevIcon: () => chevronLeftIcon,\n nextIcon: () => chevronRightIcon,\n prevLabel: undefined,\n nextLabel: undefined,\n disabled: false,\n disabledPages: undefined,\n responsive: false,\n label: undefined,\n pageLabel: undefined,\n})\n\n// The prop wins over the dictionary, and above both, a consumer's own aria-label or\n// aria-labelledby still wins — that arbitration is what `useAriaLabel` is for.\nconst m = useMessages()\nconst ariaLabel = useAriaLabel(() => props.label ?? m.value.pagination.label)\nconst resolvedPrevLabel = computed(() => props.prevLabel ?? m.value.pagination.previous)\nconst resolvedNextLabel = computed(() => props.nextLabel ?? m.value.pagination.next)\n\nconst page = defineModel<number>({ default: 1 })\n\n/** One slot in the row: either a page, or the ellipsis standing for those left out. */\ntype PaginationItem =\n | { kind: 'page'; key: string; page: number; edge: boolean; distance: number }\n | { kind: 'gap'; key: string }\n\nconst total = computed(() => Math.max(Math.trunc(props.length), 1))\nconst currentPage = computed(() => clamp(page.value, 1, total.value))\n\nconst isPageDisabled = computed(() => resolveMatcher(props.disabledPages))\n\n// @a11y — a pill shows nothing but a number, which on its own tells a screen reader\n// nothing at all; this is what has it announced as \"Page 3\".\nfunction pageLabelFor(n: number): string {\n return props.pageLabel ? props.pageLabel(n) : m.value.pagination.page(n)\n}\n\n/**\n * Works out which slots the row holds.\n *\n * The count is CONSTANT: `totalVisible` counts everything rendered, the ellipses\n * included, so the row never changes width as one moves through the pages. The window\n * of pages around the current one is centred on it, and near either end it SHIFTS\n * rather than shrinking — which is what keeps that count constant there too.\n *\n * Each page also carries how far it is from the current one. That distance is what the\n * responsive hiding sorts by, and it is capped at three: past that, the most distant\n * neighbours all disappear together at the first step.\n */\nconst items = computed<PaginationItem[]>(() => {\n const count = total.value\n const current = currentPage.value\n\n const pageItem = (n: number): PaginationItem => ({\n kind: 'page',\n key: `page-${n}`,\n page: n,\n edge: n === 1 || n === count,\n distance: Math.min(Math.abs(n - current), 3),\n })\n const pages = (from: number, to: number): PaginationItem[] => {\n const out: PaginationItem[] = []\n for (let n = from; n <= to; n++) out.push(pageItem(n))\n return out\n }\n // Keyed by the side it stands on, never by the page it follows: there is at most one\n // ellipsis per side, and the left one always comes after the first page while the right\n // one always comes before the last. A key derived from the window would change on every\n // navigation, so the right-hand ellipsis would be destroyed and rebuilt each time the\n // window slid, for a node that never changes.\n const gap = (side: 'start' | 'end'): PaginationItem => ({ kind: 'gap', key: `gap-${side}` })\n\n // With no limit given, nothing is left out. Below five slots there would be no room\n // for the first page, an ellipsis, the current page, another ellipsis and the last,\n // so that is the floor.\n const visible =\n props.totalVisible === undefined ? count : Math.max(Math.trunc(props.totalVisible), 5)\n if (visible >= count) return pages(1, count)\n\n const start = current - Math.floor((visible - 5) / 2)\n const end = start + (visible - 5)\n\n // Close to either end, an ellipsis on that side would stand for no missing page at\n // all. The window is stretched to the bound instead, which both avoids that and\n // keeps the number of slots exactly the same.\n if (start <= 3) return [...pages(1, visible - 2), gap('end'), pageItem(count)]\n if (end >= count - 2) return [pageItem(1), gap('start'), ...pages(count - visible + 3, count)]\n return [pageItem(1), gap('start'), ...pages(start, end), gap('end'), pageItem(count)]\n})\n\n/**\n * Where a control leads: the nearest page in that direction that can actually be\n * reached, disabled ones being stepped over rather than stopped at.\n *\n * Answering `undefined` means there is none left, which disables the control — and\n * that single answer also covers being on the first or the last page, with no separate\n * test for the ends.\n */\nfunction step(direction: -1 | 1): number | undefined {\n for (let n = currentPage.value + direction; n >= 1 && n <= total.value; n += direction) {\n if (!isPageDisabled.value(n)) return n\n }\n return undefined\n}\n\nconst prevTarget = computed(() => step(-1))\nconst nextTarget = computed(() => step(1))\nconst prevDisabled = computed(() => props.disabled || prevTarget.value === undefined)\nconst nextDisabled = computed(() => props.disabled || nextTarget.value === undefined)\n\nfunction goTo(n: number | undefined) {\n if (n === undefined) return\n page.value = clamp(n, 1, total.value)\n}\n\nconst navEl = ref<HTMLElement | null>(null)\n\n// @keyboard @a11y\n/**\n * The arrow keys, through the shared implementation in `utils/arrowNav`. Tab is left\n * alone: every visible pill remains a stop in the tab order, as in any list of links.\n *\n * The pills the responsive rules have hidden are left out by the helper, which skips\n * anything not displayed — so they cannot be focused into.\n */\nfunction onKeydown(event: KeyboardEvent) {\n const nav = navEl.value\n if (!nav) return\n arrowNavigate(event, nav, navigableItems(nav, '.v-pagination-page:not(:disabled)'))\n}\n</script>\n\n<template>\n <nav\n ref=\"navEl\"\n class=\"v-pagination\"\n :aria-label=\"ariaLabel\"\n :data-align=\"align\"\n :data-controls-display=\"controlsDisplay\"\n :data-responsive=\"responsive ? '' : undefined\"\n @keydown=\"onKeydown\"\n >\n <!-- Joined, the row is a VButtonGroup, which merges the borders of its DIRECT\n button children. That is why there is no list markup wrapping the pills, and\n why the ellipsis is itself an inert button rather than a plain span: anything\n else between two pills would break the seam. -->\n <component :is=\"attached ? VButtonGroup : 'div'\" class=\"v-pagination-items\">\n <template v-if=\"showControls\">\n <VIconButton\n v-if=\"controlsDisplay === 'icon'\"\n class=\"v-pagination-control\"\n :label=\"resolvedPrevLabel\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"prevDisabled\"\n @click=\"goTo(prevTarget)\"\n >\n <VIcon v-bind=\"iconProps(prevIcon)\" />\n </VIconButton>\n <!-- The control is named explicitly even though its label is visible: at\n narrow widths that label is hidden and only the icon remains, and the name\n a screen reader announces has to survive that. -->\n <VButton\n v-else\n class=\"v-pagination-control\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"prevDisabled\"\n :aria-label=\"resolvedPrevLabel\"\n @click=\"goTo(prevTarget)\"\n >\n <template v-if=\"controlsDisplay === 'both'\" #start>\n <VIcon v-bind=\"iconProps(prevIcon)\" />\n </template>\n <span class=\"v-pagination-control-label\">{{ resolvedPrevLabel }}</span>\n </VButton>\n </template>\n\n <template v-for=\"item in items\" :key=\"item.key\">\n <VButton\n v-if=\"item.kind === 'page'\"\n class=\"v-pagination-page\"\n :variant=\"item.page === currentPage ? 'solid' : variant\"\n :tone=\"item.page === currentPage ? tone : 'neutral'\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"disabled || isPageDisabled(item.page)\"\n :aria-label=\"pageLabelFor(item.page)\"\n :aria-current=\"item.page === currentPage ? 'page' : undefined\"\n :data-edge=\"item.edge ? '' : undefined\"\n :data-distance=\"!item.edge && item.distance > 0 ? item.distance : undefined\"\n @click=\"goTo(item.page)\"\n >\n {{ item.page }}\n </VButton>\n <!-- The ellipsis is a disabled button rather than a span: being a button, it\n keeps the joined row's seam continuous and follows the size and density\n like everything else. Disabling it takes it out of the tab order, and it\n is hidden from screen readers, which have the page numbers themselves. -->\n <VIconButton\n v-else\n class=\"v-pagination-ellipsis\"\n :label=\"m.pagination.hiddenPages\"\n aria-hidden=\"true\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n disabled\n >\n <VIcon :name=\"moreHorizIcon\" />\n </VIconButton>\n </template>\n\n <template v-if=\"showControls\">\n <VIconButton\n v-if=\"controlsDisplay === 'icon'\"\n class=\"v-pagination-control\"\n :label=\"resolvedNextLabel\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"nextDisabled\"\n @click=\"goTo(nextTarget)\"\n >\n <VIcon v-bind=\"iconProps(nextIcon)\" />\n </VIconButton>\n <VButton\n v-else\n class=\"v-pagination-control\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"nextDisabled\"\n :aria-label=\"resolvedNextLabel\"\n @click=\"goTo(nextTarget)\"\n >\n <template v-if=\"controlsDisplay === 'both'\" #end>\n <VIcon v-bind=\"iconProps(nextIcon)\" />\n </template>\n <span class=\"v-pagination-control-label\">{{ resolvedNextLabel }}</span>\n </VButton>\n </template>\n </component>\n </nav>\n</template>\n\n<style>\n@layer vectis.components {\n .v-pagination {\n display: flex;\n }\n\n /*\n * Making the row a query container is reserved for responsive mode, since every\n * query below depends on it — and it is not free.\n *\n * A container of this kind computes its width WITHOUT looking at its content, so the\n * row has to be block-level: as an inline box it would measure zero and hide\n * everything at once. It therefore takes its parent's whole width, which is exactly\n * what makes the hiding follow the space the component was actually given, and what\n * obliges a flex parent to grant it one.\n *\n * Outside responsive mode the row keeps a width of its own and sits like any other\n * content. Either way the alignment is asked for explicitly and never inferred.\n */\n .v-pagination[data-responsive] {\n container-type: inline-size;\n container-name: v-pagination;\n }\n\n .v-pagination[data-align='center'] {\n justify-content: center;\n }\n\n .v-pagination[data-align='end'] {\n justify-content: flex-end;\n }\n\n .v-pagination-items {\n display: inline-flex;\n align-items: center;\n gap: var(--vectis-space-1);\n }\n\n /* Joined, the gap goes: VButtonGroup pulls the buttons onto one another itself. */\n .v-button-group.v-pagination-items {\n gap: 0;\n }\n\n /* Qualified by an attribute VButton always renders, which is what makes both of these\n beat that button's own padding and its own transition whatever order the two sheets\n end up in — the VIconButton idiom. */\n .v-pagination-page[data-size] {\n /* A one-digit pill is square, and widens by itself past that. The height variable\n is set by the shared size class on this very element, so this single rule covers\n all five sizes and their compact forms. */\n min-inline-size: var(--control-height);\n padding-inline: var(--vectis-space-2);\n\n /*\n * The current page changes appearance instantly, and that is deliberate: VButton\n * fades `background-color` and `color` over `--vectis-duration-fast`, which is right\n * for a button that stays put, and wrong here. Truncation SHIFTS its window, so from\n * one page to the next the highlight keeps its slot but changes ELEMENT — the pill\n * that was current fades out while its neighbour fades in, over the very same\n * 120 ms. Delete this line and two adjacent pills are half-tinted for a few frames,\n * which reads as a flicker; nothing in the console says a word about it.\n *\n * No duration avoids that: a symmetric fade overlaps, and an asymmetric one either\n * leaves the row with no highlight at all or lets the outgoing pill trail at full\n * strength behind the new one. Keeping the fade for hover alone is not expressible\n * either — a transition is resolved from the state being entered, and the pill\n * losing the highlight enters \"neither current nor hovered\", the exact state of a\n * pill the pointer has just left. So the hover fade goes with it, on the pills only:\n * the previous and next controls never change active state and keep theirs.\n */\n transition: none;\n }\n\n /* The ellipsis is a disabled button only as a technical device; to the reader it is\n not a control that has been turned off, so it does not take the forbidden\n cursor. */\n .v-pagination-ellipsis {\n cursor: default;\n }\n\n /* A chevron points at a physical direction, which the logical properties do not\n mirror: in a right-to-left page it has to be flipped by hand. */\n [dir='rtl'] .v-pagination-control .v-icon {\n scale: -1 1;\n }\n\n /*\n * The responsive half of the truncation. The row asks about ITS OWN width, so the\n * steps follow the space the component was given rather than the size of the window\n * — a sidebar and a full-width page behave differently, as they should, and nothing\n * has to be measured from code.\n *\n * The thresholds are written as literal lengths because a container query accepts no\n * variables. They are calibrated on the default size: there, a pill and a control are\n * each one control height wide, 2.5rem, plus a 0.25rem gutter, so 2.75rem apiece — a\n * thirteen-slot row needs about 35.5rem, eleven about 30, nine about 24.5, hence the\n * three thresholds with a little margin. For the extreme cases, the biggest size or\n * five-digit page numbers, the way out is `totalVisible` or turning this off.\n *\n * Each threshold is the width NEEDED to show that level, and not what remains once\n * something is hidden: written the other way round, the row would overflow for the\n * whole interval before the next step took effect.\n *\n * The most distant neighbours go first. The first and last pages, and the current\n * one, carry no distance at all, so no rule here can ever reach them. Hiding them\n * outright also takes them out of the tab order and out of the accessibility tree,\n * which is intended: a control nobody can see should not be reachable.\n *\n * No ellipsis is added in place of a hidden neighbour — it is exactly as wide as the\n * pill it would replace, so it would free nothing.\n */\n @container v-pagination (max-width: 36rem) {\n .v-pagination[data-responsive] .v-pagination-page[data-distance='3'] {\n display: none;\n }\n }\n\n @container v-pagination (max-width: 31rem) {\n .v-pagination[data-responsive] .v-pagination-page[data-distance='2'] {\n display: none;\n }\n\n /* A control showing both its icon and its label is about four times as wide as a\n pill, so dropping its label frees more room than sacrificing another page —\n which is why it happens before the last step. It is never done when the control\n shows text alone: there would be nothing left to click. */\n .v-pagination[data-responsive][data-controls-display='both'] .v-pagination-control-label {\n display: none;\n }\n }\n\n @container v-pagination (max-width: 25rem) {\n .v-pagination[data-responsive] .v-pagination-page[data-distance='1'] {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,270 @@
1
+ import { useMessages as e } from "../../i18n/state.js";
2
+ import t from "../VIcon/VIcon.js";
3
+ import { iconProps as n } from "../VIcon/iconProps.js";
4
+ import r from "../VButton/VButton.js";
5
+ import i from "../VIconButton/VIconButton.js";
6
+ import a from "../VButton/VButtonGroup.js";
7
+ import { chevron_left as o } from "../VIcon/icons/chevron_left.js";
8
+ import { chevron_right as s } from "../VIcon/icons/chevron_right.js";
9
+ import { more_horiz as c } from "../VIcon/icons/more_horiz.js";
10
+ import { arrowNavigate as l, navigableItems as u } from "../../utils/arrowNav.js";
11
+ import { clamp as d } from "../../utils/number.js";
12
+ import { resolveMatcher as f } from "../../utils/matcher.js";
13
+ import { useAriaLabel as p } from "../../composables/useAriaLabel.js";
14
+ import { Fragment as m, computed as h, createBlock as g, createCommentVNode as _, createElementBlock as v, createElementVNode as y, createSlots as b, createTextVNode as x, createVNode as S, defineComponent as C, guardReactiveProps as w, mergeModels as T, normalizeProps as E, openBlock as D, ref as O, renderList as k, resolveDynamicComponent as A, toDisplayString as j, unref as M, useModel as N, withCtx as P } from "vue";
15
+ //#region src/components/VPagination/VPagination.vue?vue&type=script&setup=true&lang.ts
16
+ var F = [
17
+ "aria-label",
18
+ "data-align",
19
+ "data-controls-display",
20
+ "data-responsive"
21
+ ], I = { class: "v-pagination-control-label" }, L = { class: "v-pagination-control-label" }, R = /*@__PURE__*/ C({
22
+ __name: "VPagination",
23
+ props: /*@__PURE__*/ T({
24
+ length: { default: 1 },
25
+ totalVisible: { default: void 0 },
26
+ attached: {
27
+ type: Boolean,
28
+ default: !1
29
+ },
30
+ variant: { default: "ghost" },
31
+ tone: { default: "accent" },
32
+ size: { default: "md" },
33
+ compact: {
34
+ type: Boolean,
35
+ default: !1
36
+ },
37
+ align: { default: "start" },
38
+ showControls: {
39
+ type: Boolean,
40
+ default: !0
41
+ },
42
+ controlsDisplay: { default: "icon" },
43
+ prevIcon: { default: () => o },
44
+ nextIcon: { default: () => s },
45
+ prevLabel: { default: void 0 },
46
+ nextLabel: { default: void 0 },
47
+ disabled: {
48
+ type: Boolean,
49
+ default: !1
50
+ },
51
+ disabledPages: {
52
+ type: [Array, Function],
53
+ default: void 0
54
+ },
55
+ responsive: {
56
+ type: Boolean,
57
+ default: !1
58
+ },
59
+ label: { default: void 0 },
60
+ pageLabel: {
61
+ type: Function,
62
+ default: void 0
63
+ }
64
+ }, {
65
+ modelValue: { default: 1 },
66
+ modelModifiers: {}
67
+ }),
68
+ emits: ["update:modelValue"],
69
+ setup(o) {
70
+ let s = o, C = e(), T = p(() => s.label ?? C.value.pagination.label), R = h(() => s.prevLabel ?? C.value.pagination.previous), z = h(() => s.nextLabel ?? C.value.pagination.next), B = N(o, "modelValue"), V = h(() => Math.max(Math.trunc(s.length), 1)), H = h(() => d(B.value, 1, V.value)), U = h(() => f(s.disabledPages));
71
+ function W(e) {
72
+ return s.pageLabel ? s.pageLabel(e) : C.value.pagination.page(e);
73
+ }
74
+ let G = h(() => {
75
+ let e = V.value, t = H.value, n = (n) => ({
76
+ kind: "page",
77
+ key: `page-${n}`,
78
+ page: n,
79
+ edge: n === 1 || n === e,
80
+ distance: Math.min(Math.abs(n - t), 3)
81
+ }), r = (e, t) => {
82
+ let r = [];
83
+ for (let i = e; i <= t; i++) r.push(n(i));
84
+ return r;
85
+ }, i = (e) => ({
86
+ kind: "gap",
87
+ key: `gap-${e}`
88
+ }), a = s.totalVisible === void 0 ? e : Math.max(Math.trunc(s.totalVisible), 5);
89
+ if (a >= e) return r(1, e);
90
+ let o = t - Math.floor((a - 5) / 2), c = o + (a - 5);
91
+ return o <= 3 ? [
92
+ ...r(1, a - 2),
93
+ i("end"),
94
+ n(e)
95
+ ] : c >= e - 2 ? [
96
+ n(1),
97
+ i("start"),
98
+ ...r(e - a + 3, e)
99
+ ] : [
100
+ n(1),
101
+ i("start"),
102
+ ...r(o, c),
103
+ i("end"),
104
+ n(e)
105
+ ];
106
+ });
107
+ function K(e) {
108
+ for (let t = H.value + e; t >= 1 && t <= V.value; t += e) if (!U.value(t)) return t;
109
+ }
110
+ let q = h(() => K(-1)), J = h(() => K(1)), Y = h(() => s.disabled || q.value === void 0), X = h(() => s.disabled || J.value === void 0);
111
+ function Z(e) {
112
+ e !== void 0 && (B.value = d(e, 1, V.value));
113
+ }
114
+ let Q = O(null);
115
+ function $(e) {
116
+ let t = Q.value;
117
+ t && l(e, t, u(t, ".v-pagination-page:not(:disabled)"));
118
+ }
119
+ return (e, s) => (D(), v("nav", {
120
+ ref_key: "navEl",
121
+ ref: Q,
122
+ class: "v-pagination",
123
+ "aria-label": M(T),
124
+ "data-align": o.align,
125
+ "data-controls-display": o.controlsDisplay,
126
+ "data-responsive": o.responsive ? "" : void 0,
127
+ onKeydown: $
128
+ }, [(D(), g(A(o.attached ? a : "div"), { class: "v-pagination-items" }, {
129
+ default: P(() => [
130
+ o.showControls ? (D(), v(m, { key: 0 }, [o.controlsDisplay === "icon" ? (D(), g(i, {
131
+ key: 0,
132
+ class: "v-pagination-control",
133
+ label: R.value,
134
+ variant: o.variant,
135
+ tone: "neutral",
136
+ size: o.size,
137
+ compact: o.compact,
138
+ disabled: Y.value,
139
+ onClick: s[0] ||= (e) => Z(q.value)
140
+ }, {
141
+ default: P(() => [S(t, E(w(M(n)(o.prevIcon))), null, 16)]),
142
+ _: 1
143
+ }, 8, [
144
+ "label",
145
+ "variant",
146
+ "size",
147
+ "compact",
148
+ "disabled"
149
+ ])) : (D(), g(r, {
150
+ key: 1,
151
+ class: "v-pagination-control",
152
+ variant: o.variant,
153
+ tone: "neutral",
154
+ size: o.size,
155
+ compact: o.compact,
156
+ disabled: Y.value,
157
+ "aria-label": R.value,
158
+ onClick: s[1] ||= (e) => Z(q.value)
159
+ }, b({
160
+ default: P(() => [y("span", I, j(R.value), 1)]),
161
+ _: 2
162
+ }, [o.controlsDisplay === "both" ? {
163
+ name: "start",
164
+ fn: P(() => [S(t, E(w(M(n)(o.prevIcon))), null, 16)]),
165
+ key: "0"
166
+ } : void 0]), 1032, [
167
+ "variant",
168
+ "size",
169
+ "compact",
170
+ "disabled",
171
+ "aria-label"
172
+ ]))], 64)) : _("", !0),
173
+ (D(!0), v(m, null, k(G.value, (e) => (D(), v(m, { key: e.key }, [e.kind === "page" ? (D(), g(r, {
174
+ key: 0,
175
+ class: "v-pagination-page",
176
+ variant: e.page === H.value ? "solid" : o.variant,
177
+ tone: e.page === H.value ? o.tone : "neutral",
178
+ size: o.size,
179
+ compact: o.compact,
180
+ disabled: o.disabled || U.value(e.page),
181
+ "aria-label": W(e.page),
182
+ "aria-current": e.page === H.value ? "page" : void 0,
183
+ "data-edge": e.edge ? "" : void 0,
184
+ "data-distance": !e.edge && e.distance > 0 ? e.distance : void 0,
185
+ onClick: (t) => Z(e.page)
186
+ }, {
187
+ default: P(() => [x(j(e.page), 1)]),
188
+ _: 2
189
+ }, 1032, [
190
+ "variant",
191
+ "tone",
192
+ "size",
193
+ "compact",
194
+ "disabled",
195
+ "aria-label",
196
+ "aria-current",
197
+ "data-edge",
198
+ "data-distance",
199
+ "onClick"
200
+ ])) : (D(), g(i, {
201
+ key: 1,
202
+ class: "v-pagination-ellipsis",
203
+ label: M(C).pagination.hiddenPages,
204
+ "aria-hidden": "true",
205
+ variant: o.variant,
206
+ tone: "neutral",
207
+ size: o.size,
208
+ compact: o.compact,
209
+ disabled: ""
210
+ }, {
211
+ default: P(() => [S(t, { name: M(c) }, null, 8, ["name"])]),
212
+ _: 1
213
+ }, 8, [
214
+ "label",
215
+ "variant",
216
+ "size",
217
+ "compact"
218
+ ]))], 64))), 128)),
219
+ o.showControls ? (D(), v(m, { key: 1 }, [o.controlsDisplay === "icon" ? (D(), g(i, {
220
+ key: 0,
221
+ class: "v-pagination-control",
222
+ label: z.value,
223
+ variant: o.variant,
224
+ tone: "neutral",
225
+ size: o.size,
226
+ compact: o.compact,
227
+ disabled: X.value,
228
+ onClick: s[2] ||= (e) => Z(J.value)
229
+ }, {
230
+ default: P(() => [S(t, E(w(M(n)(o.nextIcon))), null, 16)]),
231
+ _: 1
232
+ }, 8, [
233
+ "label",
234
+ "variant",
235
+ "size",
236
+ "compact",
237
+ "disabled"
238
+ ])) : (D(), g(r, {
239
+ key: 1,
240
+ class: "v-pagination-control",
241
+ variant: o.variant,
242
+ tone: "neutral",
243
+ size: o.size,
244
+ compact: o.compact,
245
+ disabled: X.value,
246
+ "aria-label": z.value,
247
+ onClick: s[3] ||= (e) => Z(J.value)
248
+ }, b({
249
+ default: P(() => [y("span", L, j(z.value), 1)]),
250
+ _: 2
251
+ }, [o.controlsDisplay === "both" ? {
252
+ name: "end",
253
+ fn: P(() => [S(t, E(w(M(n)(o.nextIcon))), null, 16)]),
254
+ key: "0"
255
+ } : void 0]), 1032, [
256
+ "variant",
257
+ "size",
258
+ "compact",
259
+ "disabled",
260
+ "aria-label"
261
+ ]))], 64)) : _("", !0)
262
+ ]),
263
+ _: 1
264
+ }))], 40, F));
265
+ }
266
+ });
267
+ //#endregion
268
+ export { R as default };
269
+
270
+ //# sourceMappingURL=VPagination.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VPagination.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VPagination/VPagination.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @keyboard @core\n/**\n * The row of page numbers under a long list. Every pill is a VButton and the previous\n * and next controls are buttons too, so nothing about hovering, focusing or disabling\n * is written again here.\n *\n * A long list has more pages than fit on a line, and the row deals with that TWICE,\n * for two different reasons. First logically: `totalVisible` fixes how many slots are\n * rendered at all, and the pages that do not fit are replaced by an ellipsis — pure\n * arithmetic, identical on the server and in the browser. Then visually: as the space\n * actually available narrows, the neighbours of the current page are hidden one step\n * at a time, and that half is entirely CSS, the row asking about its own width rather\n * than being measured from code.\n *\n * The only behavioural JavaScript is the keyboard, explained where it is written.\n */\nimport { computed, ref } from 'vue'\n\nimport VButton from '../VButton/VButton.vue'\nimport VButtonGroup from '../VButton/VButtonGroup.vue'\nimport VIcon from '../VIcon/VIcon.vue'\nimport { iconProps } from '../VIcon/iconProps'\nimport { chevron_left as chevronLeftIcon } from '../VIcon/icons/chevron_left'\nimport { chevron_right as chevronRightIcon } from '../VIcon/icons/chevron_right'\nimport { more_horiz as moreHorizIcon } from '../VIcon/icons/more_horiz'\nimport type { IconSource } from '../VIcon/types'\nimport VIconButton from '../VIconButton/VIconButton.vue'\n\nimport { arrowNavigate, navigableItems } from '../../utils/arrowNav'\nimport { clamp } from '../../utils/number'\nimport { resolveMatcher } from '../../utils/matcher'\n\nimport { useAriaLabel } from '../../composables/useAriaLabel'\nimport { useMessages } from '../../i18n/state'\n\ninterface PaginationProps {\n /** How many pages there are in all. */\n length?: number\n /**\n * How many slots to render, ellipses counted among them — so the row keeps exactly\n * the same width whichever page is current. Below five there would be nothing left\n * to show around the current page, so five is the effective minimum. Left out, every\n * page is rendered.\n */\n totalVisible?: number\n\n /** Joins every button into one segmented control. */\n attached?: boolean\n /**\n * How the pages OTHER than the current one, and the controls, are drawn. The current\n * page is always filled, whatever this says.\n */\n variant?: 'ghost' | 'outline'\n /** The colour the current page takes. The other pages and the controls stay neutral. */\n tone?: 'accent' | 'neutral' | 'danger'\n /** The height of the buttons, from the scale shared by every control. */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Takes 4px off the height of every button. */\n compact?: boolean\n /**\n * Where the row sits in the space it is given. It only matters in responsive mode,\n * where the row takes the whole width available.\n */\n align?: 'start' | 'center' | 'end'\n\n /** Shows the previous and next buttons on either side of the pages. */\n showControls?: boolean\n /** Whether those controls show an icon, their label, or both. */\n controlsDisplay?: 'icon' | 'text' | 'both'\n /** The icon of the previous control: an icon name, or an explicit render. */\n prevIcon?: IconSource\n /** The icon of the next control: an icon name, or an explicit render. */\n nextIcon?: IconSource\n /**\n * The wording of the previous control, used both as its visible text and as what\n * screen readers announce. It falls back to the design system dictionary.\n */\n prevLabel?: string\n /**\n * The wording of the next control, used both as its visible text and as what screen\n * readers announce. It falls back to the design system dictionary.\n */\n nextLabel?: string\n\n /** Makes the whole component unusable. */\n disabled?: boolean\n /**\n * Which pages cannot be reached, as a list or as a function. The previous and next\n * controls step OVER them rather than stopping at one.\n */\n disabledPages?: number[] | ((page: number) => boolean)\n\n /**\n * Lets the row shed pages as the space narrows, by asking about its own width. It is\n * off by default, because it makes the row take the full width available.\n */\n responsive?: boolean\n\n /**\n * What screen readers announce for the navigation itself. It falls back to the\n * design system dictionary.\n */\n label?: string\n /**\n * How a page is announced. A pill shows a bare number, which alone means nothing to\n * a screen reader — this is what turns it into \"Page 3\". It falls back to the design\n * system dictionary.\n */\n pageLabel?: (page: number) => string\n}\n\nconst props = withDefaults(defineProps<PaginationProps>(), {\n length: 1,\n totalVisible: undefined,\n attached: false,\n variant: 'ghost',\n tone: 'accent',\n size: 'md',\n compact: false,\n align: 'start',\n showControls: true,\n controlsDisplay: 'icon',\n prevIcon: () => chevronLeftIcon,\n nextIcon: () => chevronRightIcon,\n prevLabel: undefined,\n nextLabel: undefined,\n disabled: false,\n disabledPages: undefined,\n responsive: false,\n label: undefined,\n pageLabel: undefined,\n})\n\n// The prop wins over the dictionary, and above both, a consumer's own aria-label or\n// aria-labelledby still wins — that arbitration is what `useAriaLabel` is for.\nconst m = useMessages()\nconst ariaLabel = useAriaLabel(() => props.label ?? m.value.pagination.label)\nconst resolvedPrevLabel = computed(() => props.prevLabel ?? m.value.pagination.previous)\nconst resolvedNextLabel = computed(() => props.nextLabel ?? m.value.pagination.next)\n\nconst page = defineModel<number>({ default: 1 })\n\n/** One slot in the row: either a page, or the ellipsis standing for those left out. */\ntype PaginationItem =\n | { kind: 'page'; key: string; page: number; edge: boolean; distance: number }\n | { kind: 'gap'; key: string }\n\nconst total = computed(() => Math.max(Math.trunc(props.length), 1))\nconst currentPage = computed(() => clamp(page.value, 1, total.value))\n\nconst isPageDisabled = computed(() => resolveMatcher(props.disabledPages))\n\n// @a11y — a pill shows nothing but a number, which on its own tells a screen reader\n// nothing at all; this is what has it announced as \"Page 3\".\nfunction pageLabelFor(n: number): string {\n return props.pageLabel ? props.pageLabel(n) : m.value.pagination.page(n)\n}\n\n/**\n * Works out which slots the row holds.\n *\n * The count is CONSTANT: `totalVisible` counts everything rendered, the ellipses\n * included, so the row never changes width as one moves through the pages. The window\n * of pages around the current one is centred on it, and near either end it SHIFTS\n * rather than shrinking — which is what keeps that count constant there too.\n *\n * Each page also carries how far it is from the current one. That distance is what the\n * responsive hiding sorts by, and it is capped at three: past that, the most distant\n * neighbours all disappear together at the first step.\n */\nconst items = computed<PaginationItem[]>(() => {\n const count = total.value\n const current = currentPage.value\n\n const pageItem = (n: number): PaginationItem => ({\n kind: 'page',\n key: `page-${n}`,\n page: n,\n edge: n === 1 || n === count,\n distance: Math.min(Math.abs(n - current), 3),\n })\n const pages = (from: number, to: number): PaginationItem[] => {\n const out: PaginationItem[] = []\n for (let n = from; n <= to; n++) out.push(pageItem(n))\n return out\n }\n // Keyed by the side it stands on, never by the page it follows: there is at most one\n // ellipsis per side, and the left one always comes after the first page while the right\n // one always comes before the last. A key derived from the window would change on every\n // navigation, so the right-hand ellipsis would be destroyed and rebuilt each time the\n // window slid, for a node that never changes.\n const gap = (side: 'start' | 'end'): PaginationItem => ({ kind: 'gap', key: `gap-${side}` })\n\n // With no limit given, nothing is left out. Below five slots there would be no room\n // for the first page, an ellipsis, the current page, another ellipsis and the last,\n // so that is the floor.\n const visible =\n props.totalVisible === undefined ? count : Math.max(Math.trunc(props.totalVisible), 5)\n if (visible >= count) return pages(1, count)\n\n const start = current - Math.floor((visible - 5) / 2)\n const end = start + (visible - 5)\n\n // Close to either end, an ellipsis on that side would stand for no missing page at\n // all. The window is stretched to the bound instead, which both avoids that and\n // keeps the number of slots exactly the same.\n if (start <= 3) return [...pages(1, visible - 2), gap('end'), pageItem(count)]\n if (end >= count - 2) return [pageItem(1), gap('start'), ...pages(count - visible + 3, count)]\n return [pageItem(1), gap('start'), ...pages(start, end), gap('end'), pageItem(count)]\n})\n\n/**\n * Where a control leads: the nearest page in that direction that can actually be\n * reached, disabled ones being stepped over rather than stopped at.\n *\n * Answering `undefined` means there is none left, which disables the control — and\n * that single answer also covers being on the first or the last page, with no separate\n * test for the ends.\n */\nfunction step(direction: -1 | 1): number | undefined {\n for (let n = currentPage.value + direction; n >= 1 && n <= total.value; n += direction) {\n if (!isPageDisabled.value(n)) return n\n }\n return undefined\n}\n\nconst prevTarget = computed(() => step(-1))\nconst nextTarget = computed(() => step(1))\nconst prevDisabled = computed(() => props.disabled || prevTarget.value === undefined)\nconst nextDisabled = computed(() => props.disabled || nextTarget.value === undefined)\n\nfunction goTo(n: number | undefined) {\n if (n === undefined) return\n page.value = clamp(n, 1, total.value)\n}\n\nconst navEl = ref<HTMLElement | null>(null)\n\n// @keyboard @a11y\n/**\n * The arrow keys, through the shared implementation in `utils/arrowNav`. Tab is left\n * alone: every visible pill remains a stop in the tab order, as in any list of links.\n *\n * The pills the responsive rules have hidden are left out by the helper, which skips\n * anything not displayed — so they cannot be focused into.\n */\nfunction onKeydown(event: KeyboardEvent) {\n const nav = navEl.value\n if (!nav) return\n arrowNavigate(event, nav, navigableItems(nav, '.v-pagination-page:not(:disabled)'))\n}\n</script>\n\n<template>\n <nav\n ref=\"navEl\"\n class=\"v-pagination\"\n :aria-label=\"ariaLabel\"\n :data-align=\"align\"\n :data-controls-display=\"controlsDisplay\"\n :data-responsive=\"responsive ? '' : undefined\"\n @keydown=\"onKeydown\"\n >\n <!-- Joined, the row is a VButtonGroup, which merges the borders of its DIRECT\n button children. That is why there is no list markup wrapping the pills, and\n why the ellipsis is itself an inert button rather than a plain span: anything\n else between two pills would break the seam. -->\n <component :is=\"attached ? VButtonGroup : 'div'\" class=\"v-pagination-items\">\n <template v-if=\"showControls\">\n <VIconButton\n v-if=\"controlsDisplay === 'icon'\"\n class=\"v-pagination-control\"\n :label=\"resolvedPrevLabel\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"prevDisabled\"\n @click=\"goTo(prevTarget)\"\n >\n <VIcon v-bind=\"iconProps(prevIcon)\" />\n </VIconButton>\n <!-- The control is named explicitly even though its label is visible: at\n narrow widths that label is hidden and only the icon remains, and the name\n a screen reader announces has to survive that. -->\n <VButton\n v-else\n class=\"v-pagination-control\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"prevDisabled\"\n :aria-label=\"resolvedPrevLabel\"\n @click=\"goTo(prevTarget)\"\n >\n <template v-if=\"controlsDisplay === 'both'\" #start>\n <VIcon v-bind=\"iconProps(prevIcon)\" />\n </template>\n <span class=\"v-pagination-control-label\">{{ resolvedPrevLabel }}</span>\n </VButton>\n </template>\n\n <template v-for=\"item in items\" :key=\"item.key\">\n <VButton\n v-if=\"item.kind === 'page'\"\n class=\"v-pagination-page\"\n :variant=\"item.page === currentPage ? 'solid' : variant\"\n :tone=\"item.page === currentPage ? tone : 'neutral'\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"disabled || isPageDisabled(item.page)\"\n :aria-label=\"pageLabelFor(item.page)\"\n :aria-current=\"item.page === currentPage ? 'page' : undefined\"\n :data-edge=\"item.edge ? '' : undefined\"\n :data-distance=\"!item.edge && item.distance > 0 ? item.distance : undefined\"\n @click=\"goTo(item.page)\"\n >\n {{ item.page }}\n </VButton>\n <!-- The ellipsis is a disabled button rather than a span: being a button, it\n keeps the joined row's seam continuous and follows the size and density\n like everything else. Disabling it takes it out of the tab order, and it\n is hidden from screen readers, which have the page numbers themselves. -->\n <VIconButton\n v-else\n class=\"v-pagination-ellipsis\"\n :label=\"m.pagination.hiddenPages\"\n aria-hidden=\"true\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n disabled\n >\n <VIcon :name=\"moreHorizIcon\" />\n </VIconButton>\n </template>\n\n <template v-if=\"showControls\">\n <VIconButton\n v-if=\"controlsDisplay === 'icon'\"\n class=\"v-pagination-control\"\n :label=\"resolvedNextLabel\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"nextDisabled\"\n @click=\"goTo(nextTarget)\"\n >\n <VIcon v-bind=\"iconProps(nextIcon)\" />\n </VIconButton>\n <VButton\n v-else\n class=\"v-pagination-control\"\n :variant=\"variant\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"nextDisabled\"\n :aria-label=\"resolvedNextLabel\"\n @click=\"goTo(nextTarget)\"\n >\n <template v-if=\"controlsDisplay === 'both'\" #end>\n <VIcon v-bind=\"iconProps(nextIcon)\" />\n </template>\n <span class=\"v-pagination-control-label\">{{ resolvedNextLabel }}</span>\n </VButton>\n </template>\n </component>\n </nav>\n</template>\n\n<style>\n@layer vectis.components {\n .v-pagination {\n display: flex;\n }\n\n /*\n * Making the row a query container is reserved for responsive mode, since every\n * query below depends on it — and it is not free.\n *\n * A container of this kind computes its width WITHOUT looking at its content, so the\n * row has to be block-level: as an inline box it would measure zero and hide\n * everything at once. It therefore takes its parent's whole width, which is exactly\n * what makes the hiding follow the space the component was actually given, and what\n * obliges a flex parent to grant it one.\n *\n * Outside responsive mode the row keeps a width of its own and sits like any other\n * content. Either way the alignment is asked for explicitly and never inferred.\n */\n .v-pagination[data-responsive] {\n container-type: inline-size;\n container-name: v-pagination;\n }\n\n .v-pagination[data-align='center'] {\n justify-content: center;\n }\n\n .v-pagination[data-align='end'] {\n justify-content: flex-end;\n }\n\n .v-pagination-items {\n display: inline-flex;\n align-items: center;\n gap: var(--vectis-space-1);\n }\n\n /* Joined, the gap goes: VButtonGroup pulls the buttons onto one another itself. */\n .v-button-group.v-pagination-items {\n gap: 0;\n }\n\n /* Qualified by an attribute VButton always renders, which is what makes both of these\n beat that button's own padding and its own transition whatever order the two sheets\n end up in — the VIconButton idiom. */\n .v-pagination-page[data-size] {\n /* A one-digit pill is square, and widens by itself past that. The height variable\n is set by the shared size class on this very element, so this single rule covers\n all five sizes and their compact forms. */\n min-inline-size: var(--control-height);\n padding-inline: var(--vectis-space-2);\n\n /*\n * The current page changes appearance instantly, and that is deliberate: VButton\n * fades `background-color` and `color` over `--vectis-duration-fast`, which is right\n * for a button that stays put, and wrong here. Truncation SHIFTS its window, so from\n * one page to the next the highlight keeps its slot but changes ELEMENT — the pill\n * that was current fades out while its neighbour fades in, over the very same\n * 120 ms. Delete this line and two adjacent pills are half-tinted for a few frames,\n * which reads as a flicker; nothing in the console says a word about it.\n *\n * No duration avoids that: a symmetric fade overlaps, and an asymmetric one either\n * leaves the row with no highlight at all or lets the outgoing pill trail at full\n * strength behind the new one. Keeping the fade for hover alone is not expressible\n * either — a transition is resolved from the state being entered, and the pill\n * losing the highlight enters \"neither current nor hovered\", the exact state of a\n * pill the pointer has just left. So the hover fade goes with it, on the pills only:\n * the previous and next controls never change active state and keep theirs.\n */\n transition: none;\n }\n\n /* The ellipsis is a disabled button only as a technical device; to the reader it is\n not a control that has been turned off, so it does not take the forbidden\n cursor. */\n .v-pagination-ellipsis {\n cursor: default;\n }\n\n /* A chevron points at a physical direction, which the logical properties do not\n mirror: in a right-to-left page it has to be flipped by hand. */\n [dir='rtl'] .v-pagination-control .v-icon {\n scale: -1 1;\n }\n\n /*\n * The responsive half of the truncation. The row asks about ITS OWN width, so the\n * steps follow the space the component was given rather than the size of the window\n * — a sidebar and a full-width page behave differently, as they should, and nothing\n * has to be measured from code.\n *\n * The thresholds are written as literal lengths because a container query accepts no\n * variables. They are calibrated on the default size: there, a pill and a control are\n * each one control height wide, 2.5rem, plus a 0.25rem gutter, so 2.75rem apiece — a\n * thirteen-slot row needs about 35.5rem, eleven about 30, nine about 24.5, hence the\n * three thresholds with a little margin. For the extreme cases, the biggest size or\n * five-digit page numbers, the way out is `totalVisible` or turning this off.\n *\n * Each threshold is the width NEEDED to show that level, and not what remains once\n * something is hidden: written the other way round, the row would overflow for the\n * whole interval before the next step took effect.\n *\n * The most distant neighbours go first. The first and last pages, and the current\n * one, carry no distance at all, so no rule here can ever reach them. Hiding them\n * outright also takes them out of the tab order and out of the accessibility tree,\n * which is intended: a control nobody can see should not be reachable.\n *\n * No ellipsis is added in place of a hidden neighbour — it is exactly as wide as the\n * pill it would replace, so it would free nothing.\n */\n @container v-pagination (max-width: 36rem) {\n .v-pagination[data-responsive] .v-pagination-page[data-distance='3'] {\n display: none;\n }\n }\n\n @container v-pagination (max-width: 31rem) {\n .v-pagination[data-responsive] .v-pagination-page[data-distance='2'] {\n display: none;\n }\n\n /* A control showing both its icon and its label is about four times as wide as a\n pill, so dropping its label frees more room than sacrificing another page —\n which is why it happens before the last step. It is never done when the control\n shows text alone: there would be nothing left to click. */\n .v-pagination[data-responsive][data-controls-display='both'] .v-pagination-control-label {\n display: none;\n }\n }\n\n @container v-pagination (max-width: 25rem) {\n .v-pagination[data-responsive] .v-pagination-page[data-distance='1'] {\n display: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgHA,IAAM,IAAQ,GAwBR,IAAI,EAAY,GAChB,IAAY,QAAmB,EAAM,SAAS,EAAE,MAAM,WAAW,KAAK,GACtE,IAAoB,QAAe,EAAM,aAAa,EAAE,MAAM,WAAW,QAAQ,GACjF,IAAoB,QAAe,EAAM,aAAa,EAAE,MAAM,WAAW,IAAI,GAE7E,IAAO,EAAmB,GAAA,YAAe,GAOzC,IAAQ,QAAe,KAAK,IAAI,KAAK,MAAM,EAAM,MAAM,GAAG,CAAC,CAAC,GAC5D,IAAc,QAAe,EAAM,EAAK,OAAO,GAAG,EAAM,KAAK,CAAC,GAE9D,IAAiB,QAAe,EAAe,EAAM,aAAa,CAAC;EAIzE,SAAS,EAAa,GAAmB;GACvC,OAAO,EAAM,YAAY,EAAM,UAAU,CAAC,IAAI,EAAE,MAAM,WAAW,KAAK,CAAC;EACzE;EAcA,IAAM,IAAQ,QAAiC;GAC7C,IAAM,IAAQ,EAAM,OACd,IAAU,EAAY,OAEtB,KAAY,OAA+B;IAC/C,MAAM;IACN,KAAK,QAAQ;IACb,MAAM;IACN,MAAM,MAAM,KAAK,MAAM;IACvB,UAAU,KAAK,IAAI,KAAK,IAAI,IAAI,CAAO,GAAG,CAAC;GAC7C,IACM,KAAS,GAAc,MAAiC;IAC5D,IAAM,IAAwB,CAAC;IAC/B,KAAK,IAAI,IAAI,GAAM,KAAK,GAAI,KAAK,EAAI,KAAK,EAAS,CAAC,CAAC;IACrD,OAAO;GACT,GAMM,KAAO,OAA2C;IAAE,MAAM;IAAO,KAAK,OAAO;GAAO,IAKpF,IACJ,EAAM,iBAAiB,KAAA,IAAY,IAAQ,KAAK,IAAI,KAAK,MAAM,EAAM,YAAY,GAAG,CAAC;GACvF,IAAI,KAAW,GAAO,OAAO,EAAM,GAAG,CAAK;GAE3C,IAAM,IAAQ,IAAU,KAAK,OAAO,IAAU,KAAK,CAAC,GAC9C,IAAM,KAAS,IAAU;GAO/B,OAFI,KAAS,IAAU;IAAC,GAAG,EAAM,GAAG,IAAU,CAAC;IAAG,EAAI,KAAK;IAAG,EAAS,CAAK;GAAC,IACzE,KAAO,IAAQ,IAAU;IAAC,EAAS,CAAC;IAAG,EAAI,OAAO;IAAG,GAAG,EAAM,IAAQ,IAAU,GAAG,CAAK;GAAC,IACtF;IAAC,EAAS,CAAC;IAAG,EAAI,OAAO;IAAG,GAAG,EAAM,GAAO,CAAG;IAAG,EAAI,KAAK;IAAG,EAAS,CAAK;GAAC;EACtF,CAAC;EAUD,SAAS,EAAK,GAAuC;GACnD,KAAK,IAAI,IAAI,EAAY,QAAQ,GAAW,KAAK,KAAK,KAAK,EAAM,OAAO,KAAK,GAC3E,IAAI,CAAC,EAAe,MAAM,CAAC,GAAG,OAAO;EAGzC;EAEA,IAAM,IAAa,QAAe,EAAK,EAAE,CAAC,GACpC,IAAa,QAAe,EAAK,CAAC,CAAC,GACnC,IAAe,QAAe,EAAM,YAAY,EAAW,UAAU,KAAA,CAAS,GAC9E,IAAe,QAAe,EAAM,YAAY,EAAW,UAAU,KAAA,CAAS;EAEpF,SAAS,EAAK,GAAuB;GAC/B,MAAM,KAAA,MACV,EAAK,QAAQ,EAAM,GAAG,GAAG,EAAM,KAAK;EACtC;EAEA,IAAM,IAAQ,EAAwB,IAAI;EAU1C,SAAS,EAAU,GAAsB;GACvC,IAAM,IAAM,EAAM;GACb,KACL,EAAc,GAAO,GAAK,EAAe,GAAK,mCAAmC,CAAC;EACpF;yBAIE,EAqHM,OAAA;YApHA;GAAJ,KAAI;GACJ,OAAM;GACL,cAAY,EAAA,CAAA;GACZ,cAAY,EAAA;GACZ,yBAAuB,EAAA;GACvB,mBAAiB,EAAA,aAAU,KAAQ,KAAA;GAC1B;YAMV,EAuGY,EAvGI,EAAA,WAAW,IAAY,KAAA,GAAA,EAAU,OAAM,qBAAoB,GAAA;oBAkC9D;IAjCK,EAAA,gBAAA,EAAA,GAAhB,EAiCW,GAAA,EAAA,KAAA,EAAA,GAAA,CA/BD,EAAA,oBAAe,UAAA,EAAA,GADvB,EAYc,GAAA;;KAVZ,OAAM;KACL,OAAO,EAAA;KACP,SAAS,EAAA;KACV,MAAK;KACJ,MAAM,EAAA;KACN,SAAS,EAAA;KACT,UAAU,EAAA;KACV,SAAK,AAAA,EAAA,QAAA,MAAE,EAAK,EAAA,KAAU;;sBAEe,CAAtC,EAAsC,GAAA,EAAA,EAAvB,EAAA,CAAA,CAAS,CAAC,EAAA,QAAQ,CAAA,CAAA,GAAA,MAAA,EAAA,CAAA,CAAA;;;;;;;;gBAKnC,EAeU,GAAA;;KAbR,OAAM;KACL,SAAS,EAAA;KACV,MAAK;KACJ,MAAM,EAAA;KACN,SAAS,EAAA;KACT,UAAU,EAAA;KACV,cAAY,EAAA;KACZ,SAAK,AAAA,EAAA,QAAA,MAAE,EAAK,EAAA,KAAU;;sBAKgD,CAAvE,EAAuE,QAAvE,GAAuE,EAA3B,EAAA,KAAiB,GAAA,CAAA,CAAA,CAAA;;QAH7C,EAAA,oBAAe,SAAA;WAAc;iBACL,CAAtC,EAAsC,GAAA,EAAA,EAAvB,EAAA,CAAA,CAAS,CAAC,EAAA,QAAQ,CAAA,CAAA,GAAA,MAAA,EAAA,CAAA,CAAA;;;;;;;;;YAMvC,EAkCW,GAAA,MAAA,EAlCc,EAAA,QAAR,wBAAqB,EAAK,IAAA,GAAA,CAEjC,EAAK,SAAI,UAAA,EAAA,GADjB,EAeU,GAAA;;KAbR,OAAM;KACL,SAAS,EAAK,SAAS,EAAA,QAAW,UAAa,EAAA;KAC/C,MAAM,EAAK,SAAS,EAAA,QAAc,EAAA,OAAI;KACtC,MAAM,EAAA;KACN,SAAS,EAAA;KACT,UAAU,EAAA,YAAY,EAAA,MAAe,EAAK,IAAI;KAC9C,cAAY,EAAa,EAAK,IAAI;KAClC,gBAAc,EAAK,SAAS,EAAA,QAAW,SAAY,KAAA;KACnD,aAAW,EAAK,OAAI,KAAQ,KAAA;KAC5B,iBAAa,CAAG,EAAK,QAAQ,EAAK,WAAQ,IAAO,EAAK,WAAW,KAAA;KACjE,UAAK,MAAE,EAAK,EAAK,IAAI;;sBAEP,CAAA,EAAA,EAAZ,EAAK,IAAI,GAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;gBAMd,EAYc,GAAA;;KAVZ,OAAM;KACL,OAAO,EAAA,CAAA,CAAC,CAAC,WAAW;KACrB,eAAY;KACX,SAAS,EAAA;KACV,MAAK;KACJ,MAAM,EAAA;KACN,SAAS,EAAA;KACV,UAAA;;sBAE+B,CAA/B,EAA+B,GAAA,EAAvB,MAAM,EAAA,CAAA,EAAa,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,CAAA;;;;;;;;IAIf,EAAA,gBAAA,EAAA,GAAhB,EA8BW,GAAA,EAAA,KAAA,EAAA,GAAA,CA5BD,EAAA,oBAAe,UAAA,EAAA,GADvB,EAYc,GAAA;;KAVZ,OAAM;KACL,OAAO,EAAA;KACP,SAAS,EAAA;KACV,MAAK;KACJ,MAAM,EAAA;KACN,SAAS,EAAA;KACT,UAAU,EAAA;KACV,SAAK,AAAA,EAAA,QAAA,MAAE,EAAK,EAAA,KAAU;;sBAEe,CAAtC,EAAsC,GAAA,EAAA,EAAvB,EAAA,CAAA,CAAS,CAAC,EAAA,QAAQ,CAAA,CAAA,GAAA,MAAA,EAAA,CAAA,CAAA;;;;;;;;gBAEnC,EAeU,GAAA;;KAbR,OAAM;KACL,SAAS,EAAA;KACV,MAAK;KACJ,MAAM,EAAA;KACN,SAAS,EAAA;KACT,UAAU,EAAA;KACV,cAAY,EAAA;KACZ,SAAK,AAAA,EAAA,QAAA,MAAE,EAAK,EAAA,KAAU;;sBAKgD,CAAvE,EAAuE,QAAvE,GAAuE,EAA3B,EAAA,KAAiB,GAAA,CAAA,CAAA,CAAA;;QAH7C,EAAA,oBAAe,SAAA;WAAc;iBACL,CAAtC,EAAsC,GAAA,EAAA,EAAvB,EAAA,CAAA,CAAS,CAAC,EAAA,QAAQ,CAAA,CAAA,GAAA,MAAA,EAAA,CAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
+ @layer vectis.components{.v-popover{display:contents}.v-popover[data-trigger]{anchor-name:--popover-anchor;anchor-scope:--popover-anchor;align-items:center;display:inline-flex}.v-popover-panel{position-anchor:var(--anchor-name,--popover-anchor)}}