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,42 @@
1
+ import { IconSource } from '../VIcon/types.js';
2
+ /**
3
+ * One tab. It IS a VButton — the colour, the size, the focus ring and the disabled
4
+ * state all come from there — and what this component adds is the handful of
5
+ * attributes that make a button part of a tab row for assistive technology.
6
+ *
7
+ * Used outside a VTabs it still renders perfectly well, simply never selected, the
8
+ * same way an accordion item does outside its accordion.
9
+ */
10
+ interface TabProps {
11
+ /**
12
+ * What this tab is called in code. The panel carrying the same value is the one it
13
+ * shows, and it is also what the v-model holds when this tab is selected.
14
+ */
15
+ value: string | number;
16
+ /** The visible label. The default slot replaces it. */
17
+ label?: string;
18
+ /** An icon before the label: an icon name, or an explicit render. */
19
+ icon?: IconSource;
20
+ /**
21
+ * Makes the tab unusable: it no longer responds, the arrow keys skip over it, and it
22
+ * greys out through the colour tokens.
23
+ */
24
+ disabled?: boolean;
25
+ }
26
+ type __VLS_Slots = {
27
+ /** The content of the tab, replacing the `label` prop. */
28
+ default?(): unknown;
29
+ };
30
+ declare const __VLS_base: import('vue').DefineComponent<TabProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<TabProps> & Readonly<{}>, {
31
+ label: string;
32
+ disabled: boolean;
33
+ icon: IconSource;
34
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
35
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
36
+ declare const _default: typeof __VLS_export;
37
+ export default _default;
38
+ type __VLS_WithSlots<T, S> = T & {
39
+ new (): {
40
+ $slots: S;
41
+ };
42
+ };
@@ -0,0 +1,9 @@
1
+ import './VTab.css';
2
+ import e from "./VTab.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VTabs/VTab.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VTab.js","names":[],"sources":["../../../src/components/VTabs/VTab.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, useSlots } from 'vue'\n\nimport VButton from '../VButton/VButton.vue'\nimport VIcon from '../VIcon/VIcon.vue'\nimport { iconProps } from '../VIcon/iconProps'\nimport type { IconSource } from '../VIcon/types'\nimport { tabsKey } from './context'\n\n/**\n * One tab. It IS a VButton — the colour, the size, the focus ring and the disabled\n * state all come from there — and what this component adds is the handful of\n * attributes that make a button part of a tab row for assistive technology.\n *\n * Used outside a VTabs it still renders perfectly well, simply never selected, the\n * same way an accordion item does outside its accordion.\n */\ninterface TabProps {\n /**\n * What this tab is called in code. The panel carrying the same value is the one it\n * shows, and it is also what the v-model holds when this tab is selected.\n */\n value: string | number\n /** The visible label. The default slot replaces it. */\n label?: string\n /** An icon before the label: an icon name, or an explicit render. */\n icon?: IconSource\n /**\n * Makes the tab unusable: it no longer responds, the arrow keys skip over it, and it\n * greys out through the colour tokens.\n */\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<TabProps>(), {\n label: undefined,\n icon: undefined,\n disabled: false,\n})\n\ndefineSlots<{\n /** The content of the tab, replacing the `label` prop. */\n default?(): unknown\n}>()\n\nconst slots = useSlots()\nconst tabs = inject(tabsKey, null)\n\nconst selected = computed(() => tabs != null && tabs.value === props.value)\nconst tabId = computed(() => tabs?.tabId(props.value))\nconst panelId = computed(() => (tabs?.hasPanels ? tabs.panelId(props.value) : undefined))\n\n/** An icon and no label at all: the tab becomes a square, like a VIconButton. */\nconst iconOnly = computed(() => Boolean(props.icon) && !props.label && !slots.default)\n\n// @keyboard @a11y\n/*\n * Selecting a tab the moment it takes focus, which is what `automatic` activation\n * means. It lives here rather than in the row's keyboard handler, because this\n * component knows its own value: the handler would have to read it back from a DOM\n * attribute, and would lose the distinction between the number 1 and the string \"1\"\n * doing so.\n */\nfunction onFocus() {\n if (tabs?.activation === 'automatic' && !props.disabled) tabs.select(props.value)\n}\n</script>\n\n<template>\n <VButton\n :id=\"tabId\"\n class=\"v-tab\"\n role=\"tab\"\n :aria-selected=\"selected ? 'true' : 'false'\"\n :aria-controls=\"panelId\"\n :tabindex=\"selected ? 0 : -1\"\n variant=\"ghost\"\n :elevated=\"selected && tabs?.variant === 'inset'\"\n :tone=\"selected ? (tabs?.tone ?? 'accent') : 'neutral'\"\n :size=\"tabs?.size ?? 'md'\"\n :compact=\"tabs?.compact ?? false\"\n :disabled=\"disabled\"\n :data-icon-only=\"iconOnly ? '' : undefined\"\n @click=\"tabs?.select(value)\"\n @focus=\"onFocus\"\n >\n <template v-if=\"icon\" #start>\n <VIcon v-bind=\"iconProps(icon)\" />\n </template>\n <!-- The label is wrapped in an element of its own so that it can be truncated:\n an ellipsis cannot be applied to the bare text of a flex container, and tabs\n sharing the bar equally have to be able to cut their labels short -->\n <span v-if=\"!iconOnly\" class=\"v-tab-label\"\n ><slot>{{ label }}</slot></span\n >\n </VButton>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * These rules override a VButton, so they are qualified by an attribute that button\n * always renders. That is what makes them win whatever order the two sheets end up\n * in — the same device VIconButton uses.\n */\n .v-tab[data-size] {\n /* The indicator below is positioned against this box, and a button declares no\n position of its own. */\n position: relative;\n /*\n * The tabs are never compressed, and that is precisely WHAT makes the row\n * overflow. Allowed to shrink, they would squeeze down to their smallest possible\n * width and scrolling would never come into play at all.\n */\n flex: none;\n white-space: nowrap;\n }\n\n .v-tab[data-size][data-icon-only] {\n padding-inline: 0;\n min-inline-size: var(--control-height);\n }\n\n /*\n * The focus ring is drawn INSIDE the tab. The row scrolls, and a ring sitting\n * outside the tab would be cropped by that scrolling box on the first and last\n * tabs.\n */\n .v-tab[data-size]:focus-visible {\n outline-offset: calc(var(--vectis-focus-ring-offset) * -1);\n }\n\n .v-tab-label {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .v-tabs[data-grow] .v-tab[data-size] {\n flex: 1 1 0;\n min-inline-size: 0;\n }\n\n /* A box nested inside a rounded one needs a smaller radius to look concentric: the\n track's own, less the padding between them. */\n .v-tabs[data-variant='inset'] .v-tab[data-size] {\n border-radius: calc(var(--vectis-radius-surface) - var(--vectis-space-1));\n }\n\n /*\n * On a track the tabs are contiguous SEGMENTS with square corners: what carves the\n * bar up is the rule and the indicator, not the silhouette of each button. Rounded\n * corners would leave pale notches above the rule, and a gap would break the row of\n * hover highlights into islands.\n *\n * The gap is removed on the row rather than here, the row being what declares it;\n * the bar's own gap stays, since that one separates the scroll buttons and not the\n * tabs.\n */\n .v-tabs:is([data-variant='flat'], [data-variant='outlined']) .v-tab[data-size] {\n border-radius: 0;\n }\n\n /*\n * Inside a card the row takes its rounded corners back at the ENDS only, the seams\n * between tabs staying square — the VButtonGroup idiom, applied to the one edge the\n * track does not occupy.\n *\n * The radius used is the button's own and not the card's: the row is set back from\n * the frame by the gutter, so it follows no clip and has no reason to match it.\n *\n * TRAP — the selectors ask for the first and last of their TYPE rather than the\n * first and last child, because the scroll markers are the row's real first and last\n * children. They are spans, the tabs being the only buttons, which is what makes the\n * distinction work.\n */\n .v-tabs[data-variant='outlined'] .v-tab[data-size]:first-of-type {\n border-start-start-radius: var(--vectis-radius-interactive);\n }\n\n .v-tabs[data-variant='outlined'][data-orientation='horizontal'] .v-tab[data-size]:last-of-type {\n border-start-end-radius: var(--vectis-radius-interactive);\n }\n\n /* Turned vertical, the track has migrated to the end edge, so the free edge is the\n start one: that is where the ends of the column round their corners. */\n .v-tabs[data-variant='outlined'][data-orientation='vertical'] .v-tab[data-size]:last-of-type {\n border-end-start-radius: var(--vectis-radius-interactive);\n }\n\n /*\n * The bar marking the selected tab, in the two framed variants. It is painted in the\n * tab's own text colour rather than by reading one of VButton's private variables:\n * that way it follows the selected tone AND the grey of a disabled tab on its own,\n * without this file having to know anything about either.\n */\n .v-tabs:is([data-variant='flat'], [data-variant='outlined']) .v-tab[data-size]::after {\n content: '';\n position: absolute;\n inset-inline: 0;\n inset-block-end: 0;\n block-size: var(--vectis-control-size-tab-indicator);\n background: currentColor;\n opacity: 0;\n transition: opacity var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n .v-tabs:is([data-variant='flat'], [data-variant='outlined'])[data-orientation='vertical']\n .v-tab[data-size]::after {\n inset-block: 0;\n inset-inline: auto;\n inset-inline-start: 0;\n block-size: auto;\n inline-size: var(--vectis-control-size-tab-indicator);\n }\n\n .v-tabs:is([data-variant='flat'], [data-variant='outlined'])\n .v-tab[data-size][aria-selected='true']::after {\n opacity: 1;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-tabs:is([data-variant='flat'], [data-variant='outlined']) .v-tab[data-size]::after {\n transition: none;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import e from "../VIcon/VIcon.js";
2
+ import { iconProps as t } from "../VIcon/iconProps.js";
3
+ import n from "../VButton/VButton.js";
4
+ import { tabsKey as r } from "./context.js";
5
+ import { computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createSlots as c, createTextVNode as l, createVNode as u, defineComponent as d, guardReactiveProps as f, inject as p, normalizeProps as m, openBlock as h, renderSlot as g, toDisplayString as _, unref as v, useSlots as y, withCtx as b } from "vue";
6
+ //#region src/components/VTabs/VTab.vue?vue&type=script&setup=true&lang.ts
7
+ var x = {
8
+ key: 0,
9
+ class: "v-tab-label"
10
+ }, S = /*@__PURE__*/ d({
11
+ __name: "VTab",
12
+ props: {
13
+ value: {},
14
+ label: { default: void 0 },
15
+ icon: { default: void 0 },
16
+ disabled: {
17
+ type: Boolean,
18
+ default: !1
19
+ }
20
+ },
21
+ setup(d) {
22
+ let S = d, C = y(), w = p(r, null), T = i(() => w != null && w.value === S.value), E = i(() => w?.tabId(S.value)), D = i(() => w?.hasPanels ? w.panelId(S.value) : void 0), O = i(() => !!S.icon && !S.label && !C.default);
23
+ function k() {
24
+ w?.activation === "automatic" && !S.disabled && w.select(S.value);
25
+ }
26
+ return (r, i) => (h(), a(n, {
27
+ id: E.value,
28
+ class: "v-tab",
29
+ role: "tab",
30
+ "aria-selected": T.value ? "true" : "false",
31
+ "aria-controls": D.value,
32
+ tabindex: T.value ? 0 : -1,
33
+ variant: "ghost",
34
+ elevated: T.value && v(w)?.variant === "inset",
35
+ tone: T.value ? v(w)?.tone ?? "accent" : "neutral",
36
+ size: v(w)?.size ?? "md",
37
+ compact: v(w)?.compact ?? !1,
38
+ disabled: d.disabled,
39
+ "data-icon-only": O.value ? "" : void 0,
40
+ onClick: i[0] ||= (e) => v(w)?.select(d.value),
41
+ onFocus: k
42
+ }, c({
43
+ default: b(() => [O.value ? o("", !0) : (h(), s("span", x, [g(r.$slots, "default", {}, () => [l(_(d.label), 1)])]))]),
44
+ _: 2
45
+ }, [d.icon ? {
46
+ name: "start",
47
+ fn: b(() => [u(e, m(f(v(t)(d.icon))), null, 16)]),
48
+ key: "0"
49
+ } : void 0]), 1032, [
50
+ "id",
51
+ "aria-selected",
52
+ "aria-controls",
53
+ "tabindex",
54
+ "elevated",
55
+ "tone",
56
+ "size",
57
+ "compact",
58
+ "disabled",
59
+ "data-icon-only"
60
+ ]));
61
+ }
62
+ });
63
+ //#endregion
64
+ export { S as default };
65
+
66
+ //# sourceMappingURL=VTab.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VTab.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VTabs/VTab.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, useSlots } from 'vue'\n\nimport VButton from '../VButton/VButton.vue'\nimport VIcon from '../VIcon/VIcon.vue'\nimport { iconProps } from '../VIcon/iconProps'\nimport type { IconSource } from '../VIcon/types'\nimport { tabsKey } from './context'\n\n/**\n * One tab. It IS a VButton — the colour, the size, the focus ring and the disabled\n * state all come from there — and what this component adds is the handful of\n * attributes that make a button part of a tab row for assistive technology.\n *\n * Used outside a VTabs it still renders perfectly well, simply never selected, the\n * same way an accordion item does outside its accordion.\n */\ninterface TabProps {\n /**\n * What this tab is called in code. The panel carrying the same value is the one it\n * shows, and it is also what the v-model holds when this tab is selected.\n */\n value: string | number\n /** The visible label. The default slot replaces it. */\n label?: string\n /** An icon before the label: an icon name, or an explicit render. */\n icon?: IconSource\n /**\n * Makes the tab unusable: it no longer responds, the arrow keys skip over it, and it\n * greys out through the colour tokens.\n */\n disabled?: boolean\n}\n\nconst props = withDefaults(defineProps<TabProps>(), {\n label: undefined,\n icon: undefined,\n disabled: false,\n})\n\ndefineSlots<{\n /** The content of the tab, replacing the `label` prop. */\n default?(): unknown\n}>()\n\nconst slots = useSlots()\nconst tabs = inject(tabsKey, null)\n\nconst selected = computed(() => tabs != null && tabs.value === props.value)\nconst tabId = computed(() => tabs?.tabId(props.value))\nconst panelId = computed(() => (tabs?.hasPanels ? tabs.panelId(props.value) : undefined))\n\n/** An icon and no label at all: the tab becomes a square, like a VIconButton. */\nconst iconOnly = computed(() => Boolean(props.icon) && !props.label && !slots.default)\n\n// @keyboard @a11y\n/*\n * Selecting a tab the moment it takes focus, which is what `automatic` activation\n * means. It lives here rather than in the row's keyboard handler, because this\n * component knows its own value: the handler would have to read it back from a DOM\n * attribute, and would lose the distinction between the number 1 and the string \"1\"\n * doing so.\n */\nfunction onFocus() {\n if (tabs?.activation === 'automatic' && !props.disabled) tabs.select(props.value)\n}\n</script>\n\n<template>\n <VButton\n :id=\"tabId\"\n class=\"v-tab\"\n role=\"tab\"\n :aria-selected=\"selected ? 'true' : 'false'\"\n :aria-controls=\"panelId\"\n :tabindex=\"selected ? 0 : -1\"\n variant=\"ghost\"\n :elevated=\"selected && tabs?.variant === 'inset'\"\n :tone=\"selected ? (tabs?.tone ?? 'accent') : 'neutral'\"\n :size=\"tabs?.size ?? 'md'\"\n :compact=\"tabs?.compact ?? false\"\n :disabled=\"disabled\"\n :data-icon-only=\"iconOnly ? '' : undefined\"\n @click=\"tabs?.select(value)\"\n @focus=\"onFocus\"\n >\n <template v-if=\"icon\" #start>\n <VIcon v-bind=\"iconProps(icon)\" />\n </template>\n <!-- The label is wrapped in an element of its own so that it can be truncated:\n an ellipsis cannot be applied to the bare text of a flex container, and tabs\n sharing the bar equally have to be able to cut their labels short -->\n <span v-if=\"!iconOnly\" class=\"v-tab-label\"\n ><slot>{{ label }}</slot></span\n >\n </VButton>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * These rules override a VButton, so they are qualified by an attribute that button\n * always renders. That is what makes them win whatever order the two sheets end up\n * in — the same device VIconButton uses.\n */\n .v-tab[data-size] {\n /* The indicator below is positioned against this box, and a button declares no\n position of its own. */\n position: relative;\n /*\n * The tabs are never compressed, and that is precisely WHAT makes the row\n * overflow. Allowed to shrink, they would squeeze down to their smallest possible\n * width and scrolling would never come into play at all.\n */\n flex: none;\n white-space: nowrap;\n }\n\n .v-tab[data-size][data-icon-only] {\n padding-inline: 0;\n min-inline-size: var(--control-height);\n }\n\n /*\n * The focus ring is drawn INSIDE the tab. The row scrolls, and a ring sitting\n * outside the tab would be cropped by that scrolling box on the first and last\n * tabs.\n */\n .v-tab[data-size]:focus-visible {\n outline-offset: calc(var(--vectis-focus-ring-offset) * -1);\n }\n\n .v-tab-label {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .v-tabs[data-grow] .v-tab[data-size] {\n flex: 1 1 0;\n min-inline-size: 0;\n }\n\n /* A box nested inside a rounded one needs a smaller radius to look concentric: the\n track's own, less the padding between them. */\n .v-tabs[data-variant='inset'] .v-tab[data-size] {\n border-radius: calc(var(--vectis-radius-surface) - var(--vectis-space-1));\n }\n\n /*\n * On a track the tabs are contiguous SEGMENTS with square corners: what carves the\n * bar up is the rule and the indicator, not the silhouette of each button. Rounded\n * corners would leave pale notches above the rule, and a gap would break the row of\n * hover highlights into islands.\n *\n * The gap is removed on the row rather than here, the row being what declares it;\n * the bar's own gap stays, since that one separates the scroll buttons and not the\n * tabs.\n */\n .v-tabs:is([data-variant='flat'], [data-variant='outlined']) .v-tab[data-size] {\n border-radius: 0;\n }\n\n /*\n * Inside a card the row takes its rounded corners back at the ENDS only, the seams\n * between tabs staying square — the VButtonGroup idiom, applied to the one edge the\n * track does not occupy.\n *\n * The radius used is the button's own and not the card's: the row is set back from\n * the frame by the gutter, so it follows no clip and has no reason to match it.\n *\n * TRAP — the selectors ask for the first and last of their TYPE rather than the\n * first and last child, because the scroll markers are the row's real first and last\n * children. They are spans, the tabs being the only buttons, which is what makes the\n * distinction work.\n */\n .v-tabs[data-variant='outlined'] .v-tab[data-size]:first-of-type {\n border-start-start-radius: var(--vectis-radius-interactive);\n }\n\n .v-tabs[data-variant='outlined'][data-orientation='horizontal'] .v-tab[data-size]:last-of-type {\n border-start-end-radius: var(--vectis-radius-interactive);\n }\n\n /* Turned vertical, the track has migrated to the end edge, so the free edge is the\n start one: that is where the ends of the column round their corners. */\n .v-tabs[data-variant='outlined'][data-orientation='vertical'] .v-tab[data-size]:last-of-type {\n border-end-start-radius: var(--vectis-radius-interactive);\n }\n\n /*\n * The bar marking the selected tab, in the two framed variants. It is painted in the\n * tab's own text colour rather than by reading one of VButton's private variables:\n * that way it follows the selected tone AND the grey of a disabled tab on its own,\n * without this file having to know anything about either.\n */\n .v-tabs:is([data-variant='flat'], [data-variant='outlined']) .v-tab[data-size]::after {\n content: '';\n position: absolute;\n inset-inline: 0;\n inset-block-end: 0;\n block-size: var(--vectis-control-size-tab-indicator);\n background: currentColor;\n opacity: 0;\n transition: opacity var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n .v-tabs:is([data-variant='flat'], [data-variant='outlined'])[data-orientation='vertical']\n .v-tab[data-size]::after {\n inset-block: 0;\n inset-inline: auto;\n inset-inline-start: 0;\n block-size: auto;\n inline-size: var(--vectis-control-size-tab-indicator);\n }\n\n .v-tabs:is([data-variant='flat'], [data-variant='outlined'])\n .v-tab[data-size][aria-selected='true']::after {\n opacity: 1;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-tabs:is([data-variant='flat'], [data-variant='outlined']) .v-tab[data-size]::after {\n transition: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAkCA,IAAM,IAAQ,GAWR,IAAQ,EAAS,GACjB,IAAO,EAAO,GAAS,IAAI,GAE3B,IAAW,QAAe,KAAQ,QAAQ,EAAK,UAAU,EAAM,KAAK,GACpE,IAAQ,QAAe,GAAM,MAAM,EAAM,KAAK,CAAC,GAC/C,IAAU,QAAgB,GAAM,YAAY,EAAK,QAAQ,EAAM,KAAK,IAAI,KAAA,CAAU,GAGlF,IAAW,QAAe,EAAQ,EAAM,QAAS,CAAC,EAAM,SAAS,CAAC,EAAM,OAAO;EAUrF,SAAS,IAAU;GACjB,AAAI,GAAM,eAAe,eAAe,CAAC,EAAM,YAAU,EAAK,OAAO,EAAM,KAAK;EAClF;yBAIE,EA0BU,GAAA;GAzBP,IAAI,EAAA;GACL,OAAM;GACN,MAAK;GACJ,iBAAe,EAAA,QAAQ,SAAA;GACvB,iBAAe,EAAA;GACf,UAAU,EAAA,QAAQ,IAAA;GACnB,SAAQ;GACP,UAAU,EAAA,SAAY,EAAA,CAAA,CAAI,EAAE,YAAO;GACnC,MAAM,EAAA,QAAY,EAAA,CAAA,CAAI,EAAE,QAAI,WAAA;GAC5B,MAAM,EAAA,CAAA,CAAI,EAAE,QAAI;GAChB,SAAS,EAAA,CAAA,CAAI,EAAE,WAAO;GACtB,UAAU,EAAA;GACV,kBAAgB,EAAA,QAAQ,KAAQ,KAAA;GAChC,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,CAAA,CAAI,EAAE,OAAO,EAAA,KAAK;GAClB;;oBAUP,CAFY,EAAA,QACI,EAAA,IAAA,EAAA,KADJ,EAAA,GAAb,EAEC,QAFD,GAEC,CADE,EAAwB,EAAA,QAAA,WAAA,CAAA,SAAA,CAAA,EAAA,EAAf,EAAA,KAAK,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;;MAPD,EAAA,OAAA;SAAO;eACa,CAAlC,EAAkC,GAAA,EAAA,EAAnB,EAAA,CAAA,CAAS,CAAC,EAAA,IAAI,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-tabs-panel[hidden]{display:none}.v-tabs-panel:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset)}}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * The panel a tab shows, matched to it by the same `value`.
3
+ *
4
+ * Every panel is rendered at all times, and the inactive ones are hidden with the
5
+ * native `hidden` attribute rather than removed. That costs no JavaScript, and it
6
+ * means the state of what they contain survives a change of tab: a half-typed field
7
+ * keeps its text, a scrolled list its position, and a form's fields are still
8
+ * submitted.
9
+ */
10
+ interface TabPanelProps {
11
+ /** Which tab shows this panel: it must be the `value` of one of them. */
12
+ value: string | number;
13
+ /**
14
+ * Holds the content back until the panel is first shown, and keeps it from then on.
15
+ * It is for a panel expensive to build; the state it holds is still preserved
16
+ * afterwards.
17
+ */
18
+ lazy?: boolean;
19
+ }
20
+ type __VLS_Slots = {
21
+ /** What the panel contains. */
22
+ default(): unknown;
23
+ };
24
+ declare const __VLS_base: import('vue').DefineComponent<TabPanelProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<TabPanelProps> & Readonly<{}>, {
25
+ lazy: boolean;
26
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
27
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
30
+ type __VLS_WithSlots<T, S> = T & {
31
+ new (): {
32
+ $slots: S;
33
+ };
34
+ };
@@ -0,0 +1,9 @@
1
+ import './VTabPanel.css';
2
+ import e from "./VTabPanel.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VTabs/VTabPanel.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VTabPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VTabPanel.js","names":[],"sources":["../../../src/components/VTabs/VTabPanel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, ref, watchEffect } from 'vue'\n\nimport { tabsKey } from './context'\n\n/**\n * The panel a tab shows, matched to it by the same `value`.\n *\n * Every panel is rendered at all times, and the inactive ones are hidden with the\n * native `hidden` attribute rather than removed. That costs no JavaScript, and it\n * means the state of what they contain survives a change of tab: a half-typed field\n * keeps its text, a scrolled list its position, and a form's fields are still\n * submitted.\n */\ninterface TabPanelProps {\n /** Which tab shows this panel: it must be the `value` of one of them. */\n value: string | number\n /**\n * Holds the content back until the panel is first shown, and keeps it from then on.\n * It is for a panel expensive to build; the state it holds is still preserved\n * afterwards.\n */\n lazy?: boolean\n}\n\nconst props = withDefaults(defineProps<TabPanelProps>(), { lazy: false })\n\ndefineSlots<{\n /** What the panel contains. */\n default(): unknown\n}>()\n\nconst tabs = inject(tabsKey, null)\n\nconst selected = computed(() => tabs != null && tabs.value === props.value)\nconst tabId = computed(() => tabs?.tabId(props.value))\nconst panelId = computed(() => tabs?.panelId(props.value))\n\n/** Once a deferred panel has been shown it stays built, so nothing it holds is lost. */\nconst revealed = ref(false)\nwatchEffect(() => {\n if (selected.value) revealed.value = true\n})\n</script>\n\n<template>\n <div\n :id=\"panelId\"\n class=\"v-tabs-panel\"\n role=\"tabpanel\"\n :aria-labelledby=\"tabId\"\n tabindex=\"0\"\n :hidden=\"!selected\"\n >\n <slot v-if=\"!lazy || revealed\" />\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * A guard. The `hidden` attribute only hides an element through the browser's own\n * stylesheet, which ANY author declaration of a display overrides — a consumer's\n * `.v-tabs-panel { display: flex }` included, and it would then reveal every panel\n * at once.\n *\n * It is deliberately left overridable, with no `!important`: that would make this\n * the one component of the design system a consumer could not restyle. To give the\n * panel a display of your own, exclude the hidden ones —\n * `.v-tabs-panel:not([hidden])`.\n */\n .v-tabs-panel[hidden] {\n display: none;\n }\n\n .v-tabs-panel:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { tabsKey as e } from "./context.js";
2
+ import { computed as t, createCommentVNode as n, createElementBlock as r, defineComponent as i, inject as a, openBlock as o, ref as s, renderSlot as c, watchEffect as l } from "vue";
3
+ //#region src/components/VTabs/VTabPanel.vue?vue&type=script&setup=true&lang.ts
4
+ var u = [
5
+ "id",
6
+ "aria-labelledby",
7
+ "hidden"
8
+ ], d = /*@__PURE__*/ i({
9
+ __name: "VTabPanel",
10
+ props: {
11
+ value: {},
12
+ lazy: {
13
+ type: Boolean,
14
+ default: !1
15
+ }
16
+ },
17
+ setup(i) {
18
+ let d = i, f = a(e, null), p = t(() => f != null && f.value === d.value), m = t(() => f?.tabId(d.value)), h = t(() => f?.panelId(d.value)), g = s(!1);
19
+ return l(() => {
20
+ p.value && (g.value = !0);
21
+ }), (e, t) => (o(), r("div", {
22
+ id: h.value,
23
+ class: "v-tabs-panel",
24
+ role: "tabpanel",
25
+ "aria-labelledby": m.value,
26
+ tabindex: "0",
27
+ hidden: !p.value
28
+ }, [!i.lazy || g.value ? c(e.$slots, "default", {}, void 0, void 0, 0) : n("", !0)], 8, u));
29
+ }
30
+ });
31
+ //#endregion
32
+ export { d as default };
33
+
34
+ //# sourceMappingURL=VTabPanel.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VTabPanel.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VTabs/VTabPanel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject, ref, watchEffect } from 'vue'\n\nimport { tabsKey } from './context'\n\n/**\n * The panel a tab shows, matched to it by the same `value`.\n *\n * Every panel is rendered at all times, and the inactive ones are hidden with the\n * native `hidden` attribute rather than removed. That costs no JavaScript, and it\n * means the state of what they contain survives a change of tab: a half-typed field\n * keeps its text, a scrolled list its position, and a form's fields are still\n * submitted.\n */\ninterface TabPanelProps {\n /** Which tab shows this panel: it must be the `value` of one of them. */\n value: string | number\n /**\n * Holds the content back until the panel is first shown, and keeps it from then on.\n * It is for a panel expensive to build; the state it holds is still preserved\n * afterwards.\n */\n lazy?: boolean\n}\n\nconst props = withDefaults(defineProps<TabPanelProps>(), { lazy: false })\n\ndefineSlots<{\n /** What the panel contains. */\n default(): unknown\n}>()\n\nconst tabs = inject(tabsKey, null)\n\nconst selected = computed(() => tabs != null && tabs.value === props.value)\nconst tabId = computed(() => tabs?.tabId(props.value))\nconst panelId = computed(() => tabs?.panelId(props.value))\n\n/** Once a deferred panel has been shown it stays built, so nothing it holds is lost. */\nconst revealed = ref(false)\nwatchEffect(() => {\n if (selected.value) revealed.value = true\n})\n</script>\n\n<template>\n <div\n :id=\"panelId\"\n class=\"v-tabs-panel\"\n role=\"tabpanel\"\n :aria-labelledby=\"tabId\"\n tabindex=\"0\"\n :hidden=\"!selected\"\n >\n <slot v-if=\"!lazy || revealed\" />\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * A guard. The `hidden` attribute only hides an element through the browser's own\n * stylesheet, which ANY author declaration of a display overrides — a consumer's\n * `.v-tabs-panel { display: flex }` included, and it would then reveal every panel\n * at once.\n *\n * It is deliberately left overridable, with no `!important`: that would make this\n * the one component of the design system a consumer could not restyle. To give the\n * panel a display of your own, exclude the hidden ones —\n * `.v-tabs-panel:not([hidden])`.\n */\n .v-tabs-panel[hidden] {\n display: none;\n }\n\n .v-tabs-panel:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;EAyBA,IAAM,IAAQ,GAOR,IAAO,EAAO,GAAS,IAAI,GAE3B,IAAW,QAAe,KAAQ,QAAQ,EAAK,UAAU,EAAM,KAAK,GACpE,IAAQ,QAAe,GAAM,MAAM,EAAM,KAAK,CAAC,GAC/C,IAAU,QAAe,GAAM,QAAQ,EAAM,KAAK,CAAC,GAGnD,IAAW,EAAI,EAAK;SAC1B,QAAkB;GAChB,AAAI,EAAS,UAAO,EAAS,QAAQ;EACvC,CAAC,mBAIC,EASM,OAAA;GARH,IAAI,EAAA;GACL,OAAM;GACN,MAAK;GACJ,mBAAiB,EAAA;GAClB,UAAS;GACR,QAAM,CAAG,EAAA;OAEG,EAAA,QAAQ,EAAA,QAArB,EAAiC,EAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA,IAAA,EAAA,IAAA,EAAA,CAAA,GAAA,GAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
+ @layer vectis.components{.v-tabs{--tabs-frame-pad:0px;font-family:var(--vectis-text-family);flex-direction:column;display:flex}.v-tabs[data-orientation=vertical]{flex-direction:row}.v-tabs[data-variant=outlined]{--tabs-frame-pad:var(--vectis-space-3);background:var(--vectis-color-surface-raised);border:1px solid var(--vectis-color-border);border-radius:var(--vectis-radius-surface)}.v-tabs-bar{justify-content:flex-start;align-items:stretch;gap:var(--vectis-space-1);padding-block-start:var(--tabs-frame-pad);padding-inline:var(--tabs-frame-pad);display:flex}.v-tabs[data-orientation=vertical] .v-tabs-bar{padding-block:var(--tabs-frame-pad);flex-direction:column;align-items:stretch;padding-inline-end:0}.v-tabs[data-align=center] .v-tabs-bar{justify-content:center}.v-tabs[data-align=end] .v-tabs-bar{justify-content:flex-end}.v-tabs:is([data-variant=flat],[data-variant=outlined]) .v-tabs-bar{border-block-end:1px solid var(--vectis-color-border)}.v-tabs:is([data-variant=flat],[data-variant=outlined])[data-orientation=vertical] .v-tabs-bar{border-block-end:none;border-inline-start:1px solid var(--vectis-color-border)}.v-tabs[data-variant=outlined][data-orientation=vertical] .v-tabs-bar{border-inline-start:none;border-inline-end:1px solid var(--vectis-color-border)}.v-tabs-list{align-items:center;gap:var(--vectis-space-1);scrollbar-width:none;scroll-behavior:smooth;min-block-size:0;min-inline-size:0;display:flex;overflow:auto}.v-tabs[data-orientation=vertical] .v-tabs-list{flex-direction:column;align-items:stretch}.v-tabs:is([data-variant=flat],[data-variant=outlined]) .v-tabs-list{gap:0;margin-block-end:-1px}.v-tabs:is([data-variant=flat],[data-variant=outlined])[data-orientation=horizontal] .v-tabs-list{align-items:flex-end}.v-tabs:is([data-variant=flat],[data-variant=outlined])[data-orientation=vertical] .v-tabs-list{margin-block-end:0;margin-inline-start:-1px}.v-tabs[data-variant=outlined][data-orientation=vertical] .v-tabs-list{margin-inline-start:0}.v-tabs[data-variant=outlined]:not(:has(>.v-tabs-panels)) .v-tabs-bar{border-block-end:none;border-inline-end:none;padding-block-end:var(--tabs-frame-pad);padding-inline-end:var(--tabs-frame-pad)}.v-tabs[data-variant=outlined]:not(:has(>.v-tabs-panels)) .v-tabs-list{margin-block-end:0}.v-tabs[data-variant=inset] .v-tabs-list{background:var(--vectis-color-surface-sunken);padding:var(--vectis-space-1);border-radius:var(--vectis-radius-surface)}.v-tabs[data-grow] .v-tabs-list{flex:1}.v-tabs-sentinel{flex:0 0 1px;align-self:stretch}.v-tabs-scroll{flex:none;align-self:center}[dir=rtl] .v-tabs[data-orientation=horizontal] .v-tabs-scroll .v-icon{scale:-1 1}.v-tabs-panels{min-inline-size:0;padding:var(--tabs-frame-pad)}.v-tabs[data-orientation=vertical] .v-tabs-panels{flex:1}@media (prefers-reduced-motion:reduce){.v-tabs-list{scroll-behavior:auto}}}
@@ -0,0 +1,107 @@
1
+ import { IconSource } from '../VIcon/types.js';
2
+ export type TabsVariant = 'flat' | 'outlined' | 'inset';
3
+ export type TabsTone = 'accent' | 'neutral' | 'danger';
4
+ export type TabsSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
+ export type TabsOrientation = 'horizontal' | 'vertical';
6
+ export type TabsAlign = 'start' | 'center' | 'end';
7
+ export type TabsActivation = 'manual' | 'automatic';
8
+ /**
9
+ * A row of tabs, and optionally the panels they show. Only one panel is visible at a
10
+ * time, and the tabs follow the pattern assistive technology expects of them: the row
11
+ * is a single stop in the tab order, and the arrow keys move between the tabs inside
12
+ * it.
13
+ *
14
+ * No button is invented here. Every tab is a VButton and the scroll controls are
15
+ * VIconButtons, so hovering, focusing, disabling and the respect of a reader's
16
+ * reduced-motion setting all come from there, without a single state rule being
17
+ * written again in this file.
18
+ *
19
+ * Nothing touches the DOM outside event handlers and effects that run after the page
20
+ * has been updated, which is what lets the component render on a server.
21
+ */
22
+ interface TabsProps {
23
+ /**
24
+ * How the bar is framed. `flat` draws nothing but a rule under the tabs, with the
25
+ * selected one underlined; `outlined` puts that same bar and its panels inside a
26
+ * card; `inset` turns the row into a segmented control sitting in a hollow track.
27
+ */
28
+ variant?: TabsVariant;
29
+ /** The colour the selected tab takes. The others stay neutral whatever this says. */
30
+ tone?: TabsTone;
31
+ /** The height of the tabs, from the scale shared by every control. */
32
+ size?: TabsSize;
33
+ /** Takes 4px off the height of every tab. */
34
+ compact?: boolean;
35
+ /** Whether the tabs run across the page or down its side. */
36
+ orientation?: TabsOrientation;
37
+ /** Where the tabs sit along the bar when they do not fill it. */
38
+ align?: TabsAlign;
39
+ /** Makes the tabs share the whole bar between them, in equal parts. */
40
+ grow?: boolean;
41
+ /**
42
+ * Adds a button at each end of the bar to scroll it, each disabled once that end is
43
+ * reached. It only makes sense when the tabs can overflow, so it excludes `grow`.
44
+ */
45
+ scrollButtons?: boolean;
46
+ /** The icon of the button scrolling backwards. It follows the orientation by default. */
47
+ prevIcon?: IconSource;
48
+ /** The icon of the button scrolling forwards. It follows the orientation by default. */
49
+ nextIcon?: IconSource;
50
+ /** What the backward scroll button does, in words. It falls back to the dictionary. */
51
+ prevLabel?: string;
52
+ /** What the forward scroll button does, in words. It falls back to the dictionary. */
53
+ nextLabel?: string;
54
+ /**
55
+ * Whether moving to a tab also selects it. Selecting on arrival is what the ARIA
56
+ * authoring practices recommend when a panel appears instantly; leave it manual when
57
+ * showing a panel costs a request, or every tab passed over would fire one.
58
+ */
59
+ activation?: TabsActivation;
60
+ /**
61
+ * What screen readers announce for the row of tabs. It falls back to the design
62
+ * system dictionary.
63
+ */
64
+ label?: string;
65
+ }
66
+ type __VLS_Props = TabsProps;
67
+ type __VLS_Slots = {
68
+ /** The tabs themselves. */
69
+ default(): unknown;
70
+ /**
71
+ * The panels the tabs show. Leaving it out renders no panel area at all, which is
72
+ * how the same component serves as a plain bar or a segmented control.
73
+ */
74
+ panels?(): unknown;
75
+ };
76
+ type __VLS_ModelProps = {
77
+ modelValue?: string | number;
78
+ };
79
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
80
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
81
+ "update:modelValue": (value: string | number | undefined) => any;
82
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
83
+ "onUpdate:modelValue"?: ((value: string | number | undefined) => any) | undefined;
84
+ }>, {
85
+ label: string;
86
+ size: TabsSize;
87
+ variant: TabsVariant;
88
+ tone: TabsTone;
89
+ orientation: TabsOrientation;
90
+ compact: boolean;
91
+ align: TabsAlign;
92
+ prevIcon: IconSource;
93
+ nextIcon: IconSource;
94
+ prevLabel: string;
95
+ nextLabel: string;
96
+ grow: boolean;
97
+ scrollButtons: boolean;
98
+ activation: TabsActivation;
99
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
100
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
101
+ declare const _default: typeof __VLS_export;
102
+ export default _default;
103
+ type __VLS_WithSlots<T, S> = T & {
104
+ new (): {
105
+ $slots: S;
106
+ };
107
+ };
@@ -0,0 +1,9 @@
1
+ import './VTabs.css';
2
+ import e from "./VTabs.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VTabs/VTabs.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VTabs.js","names":[],"sources":["../../../src/components/VTabs/VTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, provide, ref, useId, useSlots, watch } from 'vue'\n\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 { expand_less as expandLessIcon } from '../VIcon/icons/expand_less'\nimport { expand_more as expandMoreIcon } from '../VIcon/icons/expand_more'\nimport type { IconSource } from '../VIcon/types'\nimport VIconButton from '../VIconButton/VIconButton.vue'\nimport { panelIdFor, tabIdFor, tabsKey } from './context'\n\nimport { arrowNavigate, navigableItems } from '../../utils/arrowNav'\nimport { isRtl } from '../../utils/direction'\n\nimport { useRootAttrs } from '../../composables/useRootAttrs'\nimport { useAriaLabel } from '../../composables/useAriaLabel'\nimport { useMessages } from '../../i18n/state'\n\nexport type TabsVariant = 'flat' | 'outlined' | 'inset'\nexport type TabsTone = 'accent' | 'neutral' | 'danger'\nexport type TabsSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type TabsOrientation = 'horizontal' | 'vertical'\nexport type TabsAlign = 'start' | 'center' | 'end'\nexport type TabsActivation = 'manual' | 'automatic'\n\n// @a11y @keyboard @core\n/**\n * A row of tabs, and optionally the panels they show. Only one panel is visible at a\n * time, and the tabs follow the pattern assistive technology expects of them: the row\n * is a single stop in the tab order, and the arrow keys move between the tabs inside\n * it.\n *\n * No button is invented here. Every tab is a VButton and the scroll controls are\n * VIconButtons, so hovering, focusing, disabling and the respect of a reader's\n * reduced-motion setting all come from there, without a single state rule being\n * written again in this file.\n *\n * Nothing touches the DOM outside event handlers and effects that run after the page\n * has been updated, which is what lets the component render on a server.\n */\ninterface TabsProps {\n /**\n * How the bar is framed. `flat` draws nothing but a rule under the tabs, with the\n * selected one underlined; `outlined` puts that same bar and its panels inside a\n * card; `inset` turns the row into a segmented control sitting in a hollow track.\n */\n variant?: TabsVariant\n /** The colour the selected tab takes. The others stay neutral whatever this says. */\n tone?: TabsTone\n /** The height of the tabs, from the scale shared by every control. */\n size?: TabsSize\n /** Takes 4px off the height of every tab. */\n compact?: boolean\n /** Whether the tabs run across the page or down its side. */\n orientation?: TabsOrientation\n /** Where the tabs sit along the bar when they do not fill it. */\n align?: TabsAlign\n /** Makes the tabs share the whole bar between them, in equal parts. */\n grow?: boolean\n /**\n * Adds a button at each end of the bar to scroll it, each disabled once that end is\n * reached. It only makes sense when the tabs can overflow, so it excludes `grow`.\n */\n scrollButtons?: boolean\n /** The icon of the button scrolling backwards. It follows the orientation by default. */\n prevIcon?: IconSource\n /** The icon of the button scrolling forwards. It follows the orientation by default. */\n nextIcon?: IconSource\n /** What the backward scroll button does, in words. It falls back to the dictionary. */\n prevLabel?: string\n /** What the forward scroll button does, in words. It falls back to the dictionary. */\n nextLabel?: string\n /**\n * Whether moving to a tab also selects it. Selecting on arrival is what the ARIA\n * authoring practices recommend when a panel appears instantly; leave it manual when\n * showing a panel costs a request, or every tab passed over would fire one.\n */\n activation?: TabsActivation\n /**\n * What screen readers announce for the row of tabs. It falls back to the design\n * system dictionary.\n */\n label?: string\n}\n\nconst props = withDefaults(defineProps<TabsProps>(), {\n variant: 'flat',\n tone: 'accent',\n size: 'md',\n compact: false,\n orientation: 'horizontal',\n align: 'start',\n grow: false,\n scrollButtons: false,\n prevIcon: undefined,\n nextIcon: undefined,\n prevLabel: undefined,\n nextLabel: undefined,\n activation: 'manual',\n label: undefined,\n})\n\ndefineSlots<{\n /** The tabs themselves. */\n default(): unknown\n /**\n * The panels the tabs show. Leaving it out renders no panel area at all, which is\n * how the same component serves as a plain bar or a segmented control.\n */\n panels?(): unknown\n}>()\n\nconst model = defineModel<string | number>()\n\n// The root element is only a container; the one that matters is the row of tabs. So\n// `class` and `style` stay outside, where a consumer expects to place the component,\n// and everything else — the id, the aria-* naming it, the data-* — goes down onto the\n// row itself.\ndefineOptions({ inheritAttrs: false })\nconst { rootClass, rootStyle, forwardedAttrs: listAttrs } = useRootAttrs()\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.tabs.label)\nconst resolvedPrevLabel = computed(() => props.prevLabel ?? m.value.tabs.previous)\nconst resolvedNextLabel = computed(() => props.nextLabel ?? m.value.tabs.next)\n\nconst slots = useSlots()\nconst baseId = useId()\n\n// Everything is exposed through getters rather than as values: that is what keeps the\n// root's props reactive on the other side of the injection, so a tab re-renders when\n// the size or the tone changes.\nprovide(tabsKey, {\n get value() {\n return model.value\n },\n select(value: string | number) {\n model.value = value\n },\n tabId: (value: string | number) => tabIdFor(baseId, value),\n panelId: (value: string | number) => panelIdFor(baseId, value),\n // @ssr\n /*\n * Whether a slot was given is decided by the parent as it renders, so the answer is\n * the same on the server and in the browser. A registry the panels filled in as they\n * mounted would instead read as empty on the server and full on the client, which is\n * a hydration mismatch.\n *\n * The trade-off is that this is not reactive: the panels slot must be there or not\n * there, and cannot appear halfway through the life of the component.\n */\n get hasPanels() {\n return slots.panels !== undefined\n },\n get variant() {\n return props.variant\n },\n get tone() {\n return props.tone\n },\n get size() {\n return props.size\n },\n get compact() {\n return props.compact\n },\n get activation() {\n return props.activation\n },\n})\n\nconst isVertical = computed(() => props.orientation === 'vertical')\nconst resolvedPrevIcon = computed(\n () => props.prevIcon ?? (isVertical.value ? expandLessIcon : chevronLeftIcon),\n)\nconst resolvedNextIcon = computed(\n () => props.nextIcon ?? (isVertical.value ? expandMoreIcon : chevronRightIcon),\n)\n\nconst listEl = ref<HTMLElement | null>(null)\n\n// @keyboard @a11y\n/*\n * The arrow keys, through the shared implementation in `utils/arrowNav`. This handler\n * ONLY moves the focus. Selecting the tab that receives it — what `automatic`\n * activation means — is done by the tab itself, which knows its own typed value and\n * therefore never has to send it back through a DOM attribute.\n *\n * A tab the consumer has hidden is left out by the helper, which skips anything not\n * displayed.\n */\nfunction onKeydown(event: KeyboardEvent) {\n const list = listEl.value\n if (!list) return\n arrowNavigate(event, list, navigableItems(list, '[role=\"tab\"]:not(:disabled)'), {\n vertical: isVertical.value,\n })\n}\n\n/*\n * Whether each end of the bar has been reached, which is what disables the scroll\n * buttons.\n *\n * CSS CAN now ask this question — `@container scroll-state(scrollable: inline-start)`,\n * which VDialog already uses for its scroll shadows — and it still cannot answer this\n * one, for two independent reasons. The query is Chrome/Edge 133 and later, with\n * neither Safari nor Firefox shipping it, and unlike VDialog's hairlines (which merely\n * stay invisible where it is missing) these buttons are functional: relying on it would\n * break them on two of the three engines this library targets. Guarding it with\n * `@supports` would mean keeping everything below anyway, so nothing would be saved.\n * And a stylesheet cannot set `disabled` on a button — CSS could only hide or grey the\n * arrows, which is a different affordance and a different thing for a screen reader to\n * announce, not the same behaviour written another way.\n *\n * Rather than measuring the scroll, two hairline markers are placed at the ends of the\n * row and watched. One watcher then covers all three things that can change the\n * answer: scrolling, the bar being resized, and tabs being added or removed — where\n * measuring would need a second mechanism for the resize alone.\n *\n * Both start as reached, so the buttons are disabled on the first render and on the\n * server, never wrongly enabled. It also gives the \"nothing overflows\" case for free:\n * both markers are visible at once, so both buttons stay disabled with no test of\n * their own.\n */\nconst startSentinelEl = ref<HTMLElement | null>(null)\nconst endSentinelEl = ref<HTMLElement | null>(null)\nconst atStart = ref(true)\nconst atEnd = ref(true)\n\nwatch(\n [listEl, startSentinelEl, endSentinelEl],\n ([root, start, end], _previous, onCleanup) => {\n // @fallback\n // The observer exists neither on the server nor in the unit-test environment, so\n // its absence has to be tolerated rather than assumed away. The behaviour of the\n // ends is checked in a real browser instead, by the play functions.\n if (!root || !start || !end || typeof IntersectionObserver === 'undefined') return\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n if (entry.target === start) atStart.value = entry.isIntersecting\n else atEnd.value = entry.isIntersecting\n }\n },\n { root },\n )\n observer.observe(start)\n observer.observe(end)\n onCleanup(() => observer.disconnect())\n },\n { flush: 'post' },\n)\n\n/**\n * Scrolls the bar by most of its own length. No scrolling behaviour is requested,\n * deliberately: leaving it out lets the stylesheet decide, which is what makes the\n * movement respect a reader who has asked for less motion.\n */\nfunction scrollStep(direction: -1 | 1) {\n const list = listEl.value\n if (!list) return\n // Called optionally because the unit-test environment implements no scrolling at\n // all; this behaviour is covered in a real browser.\n if (isVertical.value) {\n list.scrollBy?.({ top: direction * list.clientHeight * 0.8 })\n return\n }\n // The horizontal offset is physical, not logical: in a right-to-left page, moving\n // forward means moving left, so the direction has to be flipped by hand.\n const rtl = isRtl(list)\n list.scrollBy?.({ left: direction * list.clientWidth * 0.8 * (rtl ? -1 : 1) })\n}\n\n// @a11y @core\n/*\n * Brings the selected tab back into view when the selection was changed from code.\n * The keyboard needs nothing here: it moves the focus, and the browser scrolls a\n * focused element into view by itself.\n *\n * The scrolling is confined to the row rather than asking the element to reveal\n * itself, which would scroll every scrollable ancestor up to the page. The distances\n * are read from the two boxes, so they are already physical: the same code serves\n * left-to-right, right-to-left and vertical without a single test of direction.\n */\nwatch(model, () => {\n nextTick(() => {\n const list = listEl.value\n const tab = list?.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]')\n if (!list || !tab) return\n const t = tab.getBoundingClientRect()\n const c = list.getBoundingClientRect()\n list.scrollBy?.({\n left: t.left < c.left ? t.left - c.left : t.right > c.right ? t.right - c.right : 0,\n top: t.top < c.top ? t.top - c.top : t.bottom > c.bottom ? t.bottom - c.bottom : 0,\n })\n })\n})\n</script>\n\n<template>\n <div\n :class=\"['v-tabs', rootClass]\"\n :style=\"rootStyle\"\n :data-variant=\"variant\"\n :data-orientation=\"orientation\"\n :data-align=\"align\"\n :data-grow=\"grow ? '' : undefined\"\n >\n <div class=\"v-tabs-bar\">\n <VIconButton\n v-if=\"scrollButtons\"\n class=\"v-tabs-scroll\"\n :label=\"resolvedPrevLabel\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"atStart\"\n @click=\"scrollStep(-1)\"\n >\n <VIcon v-bind=\"iconProps(resolvedPrevIcon)\" />\n </VIconButton>\n\n <div\n ref=\"listEl\"\n v-bind=\"listAttrs\"\n class=\"v-tabs-list\"\n role=\"tablist\"\n :aria-label=\"ariaLabel\"\n :aria-orientation=\"isVertical ? 'vertical' : undefined\"\n @keydown=\"onKeydown\"\n >\n <!-- The two markers watched to know whether an end of the bar is reached.\n They are hidden from assistive technology: a row of tabs may contain\n nothing but tabs. -->\n <span\n v-if=\"scrollButtons\"\n ref=\"startSentinelEl\"\n class=\"v-tabs-sentinel\"\n aria-hidden=\"true\"\n />\n <slot />\n <span v-if=\"scrollButtons\" ref=\"endSentinelEl\" class=\"v-tabs-sentinel\" aria-hidden=\"true\" />\n </div>\n\n <VIconButton\n v-if=\"scrollButtons\"\n class=\"v-tabs-scroll\"\n :label=\"resolvedNextLabel\"\n tone=\"neutral\"\n :size=\"size\"\n :compact=\"compact\"\n :disabled=\"atEnd\"\n @click=\"scrollStep(1)\"\n >\n <VIcon v-bind=\"iconProps(resolvedNextIcon)\" />\n </VIconButton>\n </div>\n\n <div v-if=\"$slots.panels\" class=\"v-tabs-panels\">\n <slot name=\"panels\" />\n </div>\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n .v-tabs {\n /*\n * The gutter between the card's border and what it holds. It is zero when the\n * component is flat, so the bar and the panels sit flush with whatever contains\n * them, and only `outlined` gives it a value — the same idiom VDataTable uses.\n *\n * It is a FIXED measurement and deliberately not indexed on the size or the\n * density: it is a property of the card, and in any case the size variables live\n * on the descendant buttons, each tab declaring its own, so the root could not\n * read them.\n */\n --tabs-frame-pad: 0px;\n\n display: flex;\n flex-direction: column;\n font-family: var(--vectis-text-family);\n }\n\n /* Turned vertical, the bar and the panels sit side by side rather than stacked. */\n .v-tabs[data-orientation='vertical'] {\n flex-direction: row;\n }\n\n /*\n * The card, taken from the decoration scale shared with VAccordion and VDataTable.\n * The flat default has nothing to undo, since it declares no decoration at all.\n *\n * The frame goes on the ROOT, so it encloses the bar AND the panels, and the rule\n * under the tabs then becomes the boundary between the two inside it.\n *\n * Unlike VDataTable, nothing is clipped here. The gutter always leaves a band at\n * least as wide as the inner radius, so no box ever reaches a corner and no nested\n * radius has to be computed; the row already crops its own overflow; and clipping\n * would cut the panel's focus ring — the only one that leaves the component — as\n * well as forbidding a consumer any content running edge to edge.\n */\n .v-tabs[data-variant='outlined'] {\n --tabs-frame-pad: var(--vectis-space-3);\n\n background: var(--vectis-color-surface-raised);\n border: 1px solid var(--vectis-color-border);\n border-radius: var(--vectis-radius-surface);\n }\n\n .v-tabs-bar {\n display: flex;\n /* Stretched rather than centred: the row deliberately overlaps the track by one\n pixel through a negative margin, and centring would displace it by half of\n that. */\n align-items: stretch;\n /*\n * The alignment belongs to the BAR and not to the row of tabs. The row is allowed\n * to shrink below its content as soon as the tabs overflow, so there would be\n * nothing left to distribute; and setting an alignment on a scrolling container\n * makes whatever overflows past its start edge permanently unreachable, since a\n * scroll position cannot go negative.\n */\n justify-content: flex-start;\n gap: var(--vectis-space-1);\n /* The card's gutter, which is zero when flat. Nothing is added on the edge the\n track occupies: the tabs have to stay sitting on that line. */\n padding-block-start: var(--tabs-frame-pad);\n padding-inline: var(--tabs-frame-pad);\n }\n\n .v-tabs[data-orientation='vertical'] .v-tabs-bar {\n flex-direction: column;\n align-items: stretch;\n /* Turned vertical, the track changes axis, so it is now the inline end edge that\n must be left without a gutter. */\n padding-block: var(--tabs-frame-pad);\n padding-inline-end: 0;\n }\n\n .v-tabs[data-align='center'] .v-tabs-bar {\n justify-content: center;\n }\n\n .v-tabs[data-align='end'] .v-tabs-bar {\n justify-content: flex-end;\n }\n\n /* The rule the tabs sit on, in the flat and outlined frames. It is drawn on the BAR\n rather than on the row, so that it also runs under the scroll buttons, which are\n siblings of the row and not part of it. Inside a card it is what separates the\n tabs from the panels — which is why that edge is left without a gutter, since\n otherwise the rule would separate nothing from nothing.\n\n Both frames are named explicitly rather than excluding the third: a fourth frame\n will have to opt in by hand instead of inheriting this silently. */\n .v-tabs:is([data-variant='flat'], [data-variant='outlined']) .v-tabs-bar {\n border-block-end: 1px solid var(--vectis-color-border);\n }\n\n .v-tabs:is([data-variant='flat'], [data-variant='outlined'])[data-orientation='vertical']\n .v-tabs-bar {\n border-block-end: none;\n border-inline-start: 1px solid var(--vectis-color-border);\n }\n\n /*\n * Framed AND vertical, the rule MIGRATES to the other edge. Flat, it marks the edge\n * of the tab column, hence the start; inside a card that edge is already drawn by\n * the frame's own border — two parallel lines a pixel apart — and what is missing is\n * the boundary between the tabs and the panels.\n *\n * TRAP — this block has exactly the same specificity as the one above, so it is the\n * ORDER that decides. Moving it up would leave the vertical framed case with two\n * rules on one side and none between the two areas.\n */\n .v-tabs[data-variant='outlined'][data-orientation='vertical'] .v-tabs-bar {\n border-inline-start: none;\n border-inline-end: 1px solid var(--vectis-color-border);\n }\n\n .v-tabs-list {\n display: flex;\n align-items: center;\n gap: var(--vectis-space-1);\n overflow: auto;\n /* Without these the row refuses to shrink below the width of its tabs, and it\n would widen the whole bar instead of scrolling. */\n min-inline-size: 0;\n min-block-size: 0;\n scrollbar-width: none;\n scroll-behavior: smooth;\n }\n\n .v-tabs[data-orientation='vertical'] .v-tabs-list {\n flex-direction: column;\n align-items: stretch;\n }\n\n /* Pulling the row one pixel into the track is what lets the selected tab's indicator\n COVER that line rather than sit on top of it, which would read as a thicker rule.\n */\n .v-tabs:is([data-variant='flat'], [data-variant='outlined']) .v-tabs-list {\n margin-block-end: -1px;\n /* On a track the tabs are contiguous segments and not a queue of buttons: no gap\n here, and no rounded corners on the tabs themselves. */\n gap: 0;\n }\n\n /* The row is now a pixel taller than the tabs it holds, so they are pushed against\n its end edge; the indicator each tab draws there then falls exactly on the\n track. */\n .v-tabs:is([data-variant='flat'], [data-variant='outlined'])[data-orientation='horizontal']\n .v-tabs-list {\n align-items: flex-end;\n }\n\n .v-tabs:is([data-variant='flat'], [data-variant='outlined'])[data-orientation='vertical']\n .v-tabs-list {\n margin-block-end: 0;\n margin-inline-start: -1px;\n }\n\n /* Framed AND vertical, there is no longer a track on that edge to cover, since the\n rule has migrated to the other side: the one-pixel overlap would simply slide the\n row under the frame's own border.\n\n TRAP — same specificity as the rule above, so again it is the order that decides. */\n .v-tabs[data-variant='outlined'][data-orientation='vertical'] .v-tabs-list {\n margin-inline-start: 0;\n }\n\n /*\n * A framed bar with no panels: the card is reduced to the tabs alone. There is no\n * longer a boundary to mark, and the track would run right alongside the frame's own\n * border, doubling it. So the frame takes its place, the gutter closes on that edge,\n * and the row stops overlapping.\n */\n .v-tabs[data-variant='outlined']:not(:has(> .v-tabs-panels)) .v-tabs-bar {\n border-block-end: none;\n border-inline-end: none;\n padding-block-end: var(--tabs-frame-pad);\n padding-inline-end: var(--tabs-frame-pad);\n }\n\n .v-tabs[data-variant='outlined']:not(:has(> .v-tabs-panels)) .v-tabs-list {\n margin-block-end: 0;\n }\n\n /* The hollow track of the segmented variant is drawn on the scrolling row itself,\n and not on the bar around it: its padding is what keeps the raised tab's shadow\n from being clipped as the row scrolls. */\n .v-tabs[data-variant='inset'] .v-tabs-list {\n background: var(--vectis-color-surface-sunken);\n padding: var(--vectis-space-1);\n border-radius: var(--vectis-radius-surface);\n }\n\n .v-tabs[data-grow] .v-tabs-list {\n flex: 1;\n }\n\n .v-tabs-sentinel {\n flex: 0 0 1px;\n align-self: stretch;\n }\n\n .v-tabs-scroll {\n flex: none;\n /* The bar stretches its children for the track's sake, so the scroll buttons have\n to re-centre themselves on the row — which in the segmented variant is taller\n than they are. */\n align-self: center;\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-tabs[data-orientation='horizontal'] .v-tabs-scroll .v-icon {\n scale: -1 1;\n }\n\n .v-tabs-panels {\n min-inline-size: 0;\n /* The panels are the content area of the card, so they take the gutter on all four\n sides — where the bar takes it on three, the fourth being the track's. */\n padding: var(--tabs-frame-pad);\n }\n\n .v-tabs[data-orientation='vertical'] .v-tabs-panels {\n flex: 1;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-tabs-list {\n scroll-behavior: auto;\n }\n }\n}\n</style>\n"],"mappings":""}