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,82 @@
1
+ export type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
2
+ /**
3
+ * What the trigger has to carry for the browser to open the panel and for assistive
4
+ * technology to know what it controls. It is the disclosure pattern and nothing more:
5
+ * no role and no `aria-haspopup` are imposed, since only the consumer knows what kind
6
+ * of panel it is opening.
7
+ */
8
+ export type PopoverTriggerProps = {
9
+ popovertarget: string;
10
+ 'aria-expanded': boolean;
11
+ 'aria-controls': string;
12
+ };
13
+ interface PopoverProps {
14
+ /**
15
+ * The id of the panel, which the trigger points at. One is generated when none is
16
+ * given, so this is only needed to tie the panel to something outside the
17
+ * component.
18
+ */
19
+ id?: string;
20
+ /**
21
+ * Where the panel is placed relative to its trigger. The browser flips it to the
22
+ * opposite side by itself when there is not enough room.
23
+ */
24
+ placement?: PopoverPlacement;
25
+ /**
26
+ * How the panel closes. `auto` lets the browser dismiss it on a click outside or on
27
+ * Escape, and stack it with other panels; `manual` leaves everything to the
28
+ * consumer, which is what a panel with its own focus and dismissal rules needs.
29
+ */
30
+ mode?: 'auto' | 'manual';
31
+ /**
32
+ * The name of an anchor the consumer has set on its own control, written as a CSS
33
+ * dashed identifier such as `--tooltip-anchor`. Supplying it replaces the internal
34
+ * wrapper, which is the required route as soon as the trigger is a text input,
35
+ * where the browser's own `popovertarget` attribute is not allowed.
36
+ */
37
+ anchor?: string;
38
+ /**
39
+ * Gives the panel the look of a surface: background, border, shadow and rounded
40
+ * corners. Turn it off for a panel that brings its own, as VDatePicker does.
41
+ */
42
+ surface?: boolean;
43
+ }
44
+ type __VLS_Props = PopoverProps;
45
+ type __VLS_Slots = {
46
+ /**
47
+ * The element that opens the panel. Bind the `triggerProps` it receives onto a
48
+ * button of your own: that is what wires the two together.
49
+ */
50
+ trigger?(props: {
51
+ triggerProps: PopoverTriggerProps;
52
+ }): unknown;
53
+ /** What the panel contains. */
54
+ default(): unknown;
55
+ };
56
+ type __VLS_ModelProps = {
57
+ 'open'?: boolean;
58
+ };
59
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
60
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_PublicProps, {
61
+ show: (source?: HTMLElement) => void;
62
+ hide: () => void;
63
+ el: import('vue').Ref<HTMLElement | null, HTMLElement | null>;
64
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
65
+ "update:open": (value: boolean) => any;
66
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
67
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
68
+ }>, {
69
+ anchor: string;
70
+ id: string;
71
+ placement: PopoverPlacement;
72
+ mode: "auto" | "manual";
73
+ surface: boolean;
74
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
75
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
76
+ declare const _default: typeof __VLS_export;
77
+ export default _default;
78
+ type __VLS_WithSlots<T, S> = T & {
79
+ new (): {
80
+ $slots: S;
81
+ };
82
+ };
@@ -0,0 +1,9 @@
1
+ import './VPopover.css';
2
+ import e from "./VPopover.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VPopover/VPopover.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VPopover.js","names":[],"sources":["../../../src/components/VPopover/VPopover.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @core\n/**\n * A panel that floats above the page, next to whatever opened it. It is built on the\n * browser's own popover support and positions itself entirely in CSS, so there is no\n * positioning library involved and no JavaScript measuring anything.\n *\n * What it carries is deliberately only the PLUMBING every panel of the design system\n * needs: the popover element and how it opens, the bridge between the browser's own\n * open state and `v-model:open`, the anchoring and the placement, and an optional\n * surface — the background, border and shadow of a panel.\n *\n * What it carries NOT is just as deliberate: no ARIA role, no keyboard, no focus\n * management and no rule about when to close. Those are exactly what makes a menu\n * different from a listbox or a tooltip, and they stay with the components building\n * on it — VTooltip, VCombobox, VDateInput, VTimeInput. Turning this into one panel\n * with a `role` prop would put all four sets of behaviour back into a single file.\n *\n * There are two ways of anchoring it, and they exclude one another:\n *\n * - the `#trigger` slot, where the component wraps the trigger and names that\n * wrapper as the anchor. The name is shared by every instance and confined to each\n * wrapper's own subtree, which is what makes a panel resolve ITS trigger rather\n * than the last one named on the page — a real risk, since an open panel moves to\n * the top layer and counts as coming after the whole document.\n * - the `anchor` prop, for a consumer that already owns its root and its control —\n * VCombobox and the pickers do. They name the anchor themselves and pass the name\n * in, and the wrapper then disappears from the layout entirely.\n *\n * The only JavaScript is the bridge between `v-model:open` and the browser's own\n * imperative popover methods.\n */\nimport { computed, onMounted, ref, useId, watch } from 'vue'\n\nimport { usePopover } from '../../composables/usePopover'\n\nexport type PopoverPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n\n/**\n * What the trigger has to carry for the browser to open the panel and for assistive\n * technology to know what it controls. It is the disclosure pattern and nothing more:\n * no role and no `aria-haspopup` are imposed, since only the consumer knows what kind\n * of panel it is opening.\n */\nexport type PopoverTriggerProps = {\n popovertarget: string\n 'aria-expanded': boolean\n 'aria-controls': string\n}\n\ninterface PopoverProps {\n /**\n * The id of the panel, which the trigger points at. One is generated when none is\n * given, so this is only needed to tie the panel to something outside the\n * component.\n */\n id?: string\n /**\n * Where the panel is placed relative to its trigger. The browser flips it to the\n * opposite side by itself when there is not enough room.\n */\n placement?: PopoverPlacement\n /**\n * How the panel closes. `auto` lets the browser dismiss it on a click outside or on\n * Escape, and stack it with other panels; `manual` leaves everything to the\n * consumer, which is what a panel with its own focus and dismissal rules needs.\n */\n mode?: 'auto' | 'manual'\n /**\n * The name of an anchor the consumer has set on its own control, written as a CSS\n * dashed identifier such as `--tooltip-anchor`. Supplying it replaces the internal\n * wrapper, which is the required route as soon as the trigger is a text input,\n * where the browser's own `popovertarget` attribute is not allowed.\n */\n anchor?: string\n /**\n * Gives the panel the look of a surface: background, border, shadow and rounded\n * corners. Turn it off for a panel that brings its own, as VDatePicker does.\n */\n surface?: boolean\n}\n\nconst props = withDefaults(defineProps<PopoverProps>(), {\n id: undefined,\n placement: 'bottom-start',\n mode: 'auto',\n anchor: undefined,\n surface: true,\n})\n\nconst open = defineModel<boolean>('open', { default: false })\n\nconst slots = defineSlots<{\n /**\n * The element that opens the panel. Bind the `triggerProps` it receives onto a\n * button of your own: that is what wires the two together.\n */\n trigger?(props: { triggerProps: PopoverTriggerProps }): unknown\n /** What the panel contains. */\n default(): unknown\n}>()\n\n/*\n * Everything the consumer passes — the ARIA role, the aria-*, the data-*, class,\n * style and the listeners — goes on the PANEL rather than on the anchoring wrapper,\n * because the panel is what the consumer is really describing and styling.\n *\n * This is a deliberate departure from the design system's usual wrapper pattern,\n * which keeps class and style on the root; `useRootAttrs` therefore does not apply\n * here.\n */\ndefineOptions({ inheritAttrs: false })\n\nconst panelEl = ref<HTMLElement | null>(null)\nconst generatedId = useId()\nconst panelId = computed(() => props.id ?? generatedId)\n\n// The open state and the guards that keep the calls idempotent live in usePopover.\n// The invariant to respect here: `shown` is fed by the panel's own events and never\n// assigned by hand, so the browser stays the source of truth — it can close the panel\n// without asking us.\nconst { shown, syncShown, show, hide } = usePopover(panelEl)\n\nconst hasTrigger = computed(() => slots.trigger !== undefined)\n\nconst triggerProps = computed<PopoverTriggerProps>(() => ({\n popovertarget: panelId.value,\n 'aria-expanded': open.value,\n 'aria-controls': panelId.value,\n}))\n\n// Both anchoring modes are served by one CSS declaration: the panel reads this\n// variable, and falls back to the wrapper's own anchor name when it is not set.\nconst panelStyle = computed(() => (props.anchor ? { '--anchor-name': props.anchor } : undefined))\n\nfunction onToggle(event: Event) {\n syncShown(event)\n open.value = shown.value\n}\n\n// Opening and closing from the model. The guard is what keeps the two directions\n// from chasing each other: a panel closed by the browser has already updated `shown`,\n// and calling hide() again would be pointless at best.\nwatch(open, (value) => {\n if (value === shown.value) return\n if (value) show()\n else hide()\n})\n\n// @ssr — a watcher does not run during the server render, so a panel asked to be\n// open from the start would never be told to open. Replaying the initial state on\n// mount is what covers that case.\nonMounted(() => {\n if (open.value) show()\n})\n\ndefineExpose({ show, hide, el: panelEl })\n</script>\n\n<template>\n <span class=\"v-popover\" :data-trigger=\"hasTrigger ? '' : undefined\">\n <slot name=\"trigger\" :trigger-props=\"triggerProps\" />\n <div\n :id=\"panelId\"\n ref=\"panelEl\"\n :popover=\"mode\"\n class=\"v-overlay v-popover-panel v-floating\"\n :class=\"{ 'v-panel': surface }\"\n :data-placement=\"placement\"\n :style=\"panelStyle\"\n v-bind=\"$attrs\"\n @beforetoggle=\"syncShown\"\n @toggle=\"onToggle\"\n >\n <slot />\n </div>\n </span>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * Without a trigger the wrapper has nothing to wrap, so `display: contents` takes\n * it out of the layout entirely — the panel is positioned against the viewport and\n * does not depend on it. Left as an empty inline-block it would still create a line\n * box, and therefore add height, inside every component using this route.\n */\n .v-popover {\n display: contents;\n }\n\n /*\n * With a trigger the wrapper must generate a box, since that box is the ANCHOR —\n * which is why `display: contents` stops at the rule above. It is FLEX rather than\n * inline-block, the `.v-badge-host` and `.v-tooltip` form: both are inline-level\n * atomic boxes, so text flows around them identically, but an inline-block opens an\n * inline formatting context for the trigger, which then lands on a line box and adds\n * the strut's descender to the wrapper. The wrapper being the anchor, that offsets\n * the panel as well as the row.\n *\n * `align-items: center` covers the rest: a wrapper stretched by a parent in\n * `align-items: stretch` would otherwise stretch the trigger with it, where the\n * inline-block form left it at its natural height.\n */\n .v-popover[data-trigger] {\n display: inline-flex;\n align-items: center;\n anchor-name: --popover-anchor;\n /* Confining the name to this subtree is indispensable, not tidy: an open panel\n moves to the top layer, where anchor resolution treats it as coming after the\n whole document. Without the confinement every panel on the page would attach\n itself to the LAST wrapper carrying this name. */\n anchor-scope: --popover-anchor;\n }\n\n /*\n * The panel gets this one declaration and no dimension whatsoever. Widths, heights\n * and overflow differ from one consumer to the next, and since each component ships\n * its own stylesheet, a declaration here would sit at equal specificity with theirs\n * — leaving the winner to whichever order the consumer's bundler happens to\n * produce.\n */\n .v-popover-panel {\n position-anchor: var(--anchor-name, --popover-anchor);\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import { usePopover as e } from "../../composables/usePopover.js";
2
+ import { computed as t, createElementBlock as n, createElementVNode as r, defineComponent as i, mergeModels as a, mergeProps as o, onMounted as s, openBlock as c, ref as l, renderSlot as u, unref as d, useId as f, useModel as p, useSlots as m, watch as h } from "vue";
3
+ //#region src/components/VPopover/VPopover.vue?vue&type=script&setup=true&lang.ts
4
+ var g = ["data-trigger"], _ = [
5
+ "id",
6
+ "popover",
7
+ "data-placement"
8
+ ], v = /*@__PURE__*/ i({
9
+ inheritAttrs: !1,
10
+ __name: "VPopover",
11
+ props: /*@__PURE__*/ a({
12
+ id: { default: void 0 },
13
+ placement: { default: "bottom-start" },
14
+ mode: { default: "auto" },
15
+ anchor: { default: void 0 },
16
+ surface: {
17
+ type: Boolean,
18
+ default: !0
19
+ }
20
+ }, {
21
+ open: {
22
+ type: Boolean,
23
+ default: !1
24
+ },
25
+ openModifiers: {}
26
+ }),
27
+ emits: ["update:open"],
28
+ setup(i, { expose: a }) {
29
+ let v = i, y = p(i, "open"), b = m(), x = l(null), S = f(), C = t(() => v.id ?? S), { shown: w, syncShown: T, show: E, hide: D } = e(x), O = t(() => b.trigger !== void 0), k = t(() => ({
30
+ popovertarget: C.value,
31
+ "aria-expanded": y.value,
32
+ "aria-controls": C.value
33
+ })), A = t(() => v.anchor ? { "--anchor-name": v.anchor } : void 0);
34
+ function j(e) {
35
+ T(e), y.value = w.value;
36
+ }
37
+ return h(y, (e) => {
38
+ e !== w.value && (e ? E() : D());
39
+ }), s(() => {
40
+ y.value && E();
41
+ }), a({
42
+ show: E,
43
+ hide: D,
44
+ el: x
45
+ }), (e, t) => (c(), n("span", {
46
+ class: "v-popover",
47
+ "data-trigger": O.value ? "" : void 0
48
+ }, [u(e.$slots, "trigger", { triggerProps: k.value }), r("div", o({
49
+ id: C.value,
50
+ ref_key: "panelEl",
51
+ ref: x,
52
+ popover: i.mode,
53
+ class: ["v-overlay v-popover-panel v-floating", { "v-panel": i.surface }],
54
+ "data-placement": i.placement,
55
+ style: A.value
56
+ }, e.$attrs, {
57
+ onBeforetoggle: t[0] ||= (...e) => d(T) && d(T)(...e),
58
+ onToggle: j
59
+ }), [u(e.$slots, "default")], 16, _)], 8, g));
60
+ }
61
+ });
62
+ //#endregion
63
+ export { v as default };
64
+
65
+ //# sourceMappingURL=VPopover.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VPopover.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../src/components/VPopover/VPopover.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @core\n/**\n * A panel that floats above the page, next to whatever opened it. It is built on the\n * browser's own popover support and positions itself entirely in CSS, so there is no\n * positioning library involved and no JavaScript measuring anything.\n *\n * What it carries is deliberately only the PLUMBING every panel of the design system\n * needs: the popover element and how it opens, the bridge between the browser's own\n * open state and `v-model:open`, the anchoring and the placement, and an optional\n * surface — the background, border and shadow of a panel.\n *\n * What it carries NOT is just as deliberate: no ARIA role, no keyboard, no focus\n * management and no rule about when to close. Those are exactly what makes a menu\n * different from a listbox or a tooltip, and they stay with the components building\n * on it — VTooltip, VCombobox, VDateInput, VTimeInput. Turning this into one panel\n * with a `role` prop would put all four sets of behaviour back into a single file.\n *\n * There are two ways of anchoring it, and they exclude one another:\n *\n * - the `#trigger` slot, where the component wraps the trigger and names that\n * wrapper as the anchor. The name is shared by every instance and confined to each\n * wrapper's own subtree, which is what makes a panel resolve ITS trigger rather\n * than the last one named on the page — a real risk, since an open panel moves to\n * the top layer and counts as coming after the whole document.\n * - the `anchor` prop, for a consumer that already owns its root and its control —\n * VCombobox and the pickers do. They name the anchor themselves and pass the name\n * in, and the wrapper then disappears from the layout entirely.\n *\n * The only JavaScript is the bridge between `v-model:open` and the browser's own\n * imperative popover methods.\n */\nimport { computed, onMounted, ref, useId, watch } from 'vue'\n\nimport { usePopover } from '../../composables/usePopover'\n\nexport type PopoverPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n\n/**\n * What the trigger has to carry for the browser to open the panel and for assistive\n * technology to know what it controls. It is the disclosure pattern and nothing more:\n * no role and no `aria-haspopup` are imposed, since only the consumer knows what kind\n * of panel it is opening.\n */\nexport type PopoverTriggerProps = {\n popovertarget: string\n 'aria-expanded': boolean\n 'aria-controls': string\n}\n\ninterface PopoverProps {\n /**\n * The id of the panel, which the trigger points at. One is generated when none is\n * given, so this is only needed to tie the panel to something outside the\n * component.\n */\n id?: string\n /**\n * Where the panel is placed relative to its trigger. The browser flips it to the\n * opposite side by itself when there is not enough room.\n */\n placement?: PopoverPlacement\n /**\n * How the panel closes. `auto` lets the browser dismiss it on a click outside or on\n * Escape, and stack it with other panels; `manual` leaves everything to the\n * consumer, which is what a panel with its own focus and dismissal rules needs.\n */\n mode?: 'auto' | 'manual'\n /**\n * The name of an anchor the consumer has set on its own control, written as a CSS\n * dashed identifier such as `--tooltip-anchor`. Supplying it replaces the internal\n * wrapper, which is the required route as soon as the trigger is a text input,\n * where the browser's own `popovertarget` attribute is not allowed.\n */\n anchor?: string\n /**\n * Gives the panel the look of a surface: background, border, shadow and rounded\n * corners. Turn it off for a panel that brings its own, as VDatePicker does.\n */\n surface?: boolean\n}\n\nconst props = withDefaults(defineProps<PopoverProps>(), {\n id: undefined,\n placement: 'bottom-start',\n mode: 'auto',\n anchor: undefined,\n surface: true,\n})\n\nconst open = defineModel<boolean>('open', { default: false })\n\nconst slots = defineSlots<{\n /**\n * The element that opens the panel. Bind the `triggerProps` it receives onto a\n * button of your own: that is what wires the two together.\n */\n trigger?(props: { triggerProps: PopoverTriggerProps }): unknown\n /** What the panel contains. */\n default(): unknown\n}>()\n\n/*\n * Everything the consumer passes — the ARIA role, the aria-*, the data-*, class,\n * style and the listeners — goes on the PANEL rather than on the anchoring wrapper,\n * because the panel is what the consumer is really describing and styling.\n *\n * This is a deliberate departure from the design system's usual wrapper pattern,\n * which keeps class and style on the root; `useRootAttrs` therefore does not apply\n * here.\n */\ndefineOptions({ inheritAttrs: false })\n\nconst panelEl = ref<HTMLElement | null>(null)\nconst generatedId = useId()\nconst panelId = computed(() => props.id ?? generatedId)\n\n// The open state and the guards that keep the calls idempotent live in usePopover.\n// The invariant to respect here: `shown` is fed by the panel's own events and never\n// assigned by hand, so the browser stays the source of truth — it can close the panel\n// without asking us.\nconst { shown, syncShown, show, hide } = usePopover(panelEl)\n\nconst hasTrigger = computed(() => slots.trigger !== undefined)\n\nconst triggerProps = computed<PopoverTriggerProps>(() => ({\n popovertarget: panelId.value,\n 'aria-expanded': open.value,\n 'aria-controls': panelId.value,\n}))\n\n// Both anchoring modes are served by one CSS declaration: the panel reads this\n// variable, and falls back to the wrapper's own anchor name when it is not set.\nconst panelStyle = computed(() => (props.anchor ? { '--anchor-name': props.anchor } : undefined))\n\nfunction onToggle(event: Event) {\n syncShown(event)\n open.value = shown.value\n}\n\n// Opening and closing from the model. The guard is what keeps the two directions\n// from chasing each other: a panel closed by the browser has already updated `shown`,\n// and calling hide() again would be pointless at best.\nwatch(open, (value) => {\n if (value === shown.value) return\n if (value) show()\n else hide()\n})\n\n// @ssr — a watcher does not run during the server render, so a panel asked to be\n// open from the start would never be told to open. Replaying the initial state on\n// mount is what covers that case.\nonMounted(() => {\n if (open.value) show()\n})\n\ndefineExpose({ show, hide, el: panelEl })\n</script>\n\n<template>\n <span class=\"v-popover\" :data-trigger=\"hasTrigger ? '' : undefined\">\n <slot name=\"trigger\" :trigger-props=\"triggerProps\" />\n <div\n :id=\"panelId\"\n ref=\"panelEl\"\n :popover=\"mode\"\n class=\"v-overlay v-popover-panel v-floating\"\n :class=\"{ 'v-panel': surface }\"\n :data-placement=\"placement\"\n :style=\"panelStyle\"\n v-bind=\"$attrs\"\n @beforetoggle=\"syncShown\"\n @toggle=\"onToggle\"\n >\n <slot />\n </div>\n </span>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * Without a trigger the wrapper has nothing to wrap, so `display: contents` takes\n * it out of the layout entirely — the panel is positioned against the viewport and\n * does not depend on it. Left as an empty inline-block it would still create a line\n * box, and therefore add height, inside every component using this route.\n */\n .v-popover {\n display: contents;\n }\n\n /*\n * With a trigger the wrapper must generate a box, since that box is the ANCHOR —\n * which is why `display: contents` stops at the rule above. It is FLEX rather than\n * inline-block, the `.v-badge-host` and `.v-tooltip` form: both are inline-level\n * atomic boxes, so text flows around them identically, but an inline-block opens an\n * inline formatting context for the trigger, which then lands on a line box and adds\n * the strut's descender to the wrapper. The wrapper being the anchor, that offsets\n * the panel as well as the row.\n *\n * `align-items: center` covers the rest: a wrapper stretched by a parent in\n * `align-items: stretch` would otherwise stretch the trigger with it, where the\n * inline-block form left it at its natural height.\n */\n .v-popover[data-trigger] {\n display: inline-flex;\n align-items: center;\n anchor-name: --popover-anchor;\n /* Confining the name to this subtree is indispensable, not tidy: an open panel\n moves to the top layer, where anchor resolution treats it as coming after the\n whole document. Without the confinement every panel on the page would attach\n itself to the LAST wrapper carrying this name. */\n anchor-scope: --popover-anchor;\n }\n\n /*\n * The panel gets this one declaration and no dimension whatsoever. Widths, heights\n * and overflow differ from one consumer to the next, and since each component ships\n * its own stylesheet, a declaration here would sit at equal specificity with theirs\n * — leaving the winner to whichever order the consumer's bundler happens to\n * produce.\n */\n .v-popover-panel {\n position-anchor: var(--anchor-name, --popover-anchor);\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8FA,IAAM,IAAQ,GAQR,IAAO,EAAoB,GAAC,MAA0B,GAEtD,IAAQ,EAAA,GAqBR,IAAU,EAAwB,IAAI,GACtC,IAAc,EAAM,GACpB,IAAU,QAAe,EAAM,MAAM,CAAW,GAMhD,EAAE,UAAO,cAAW,SAAM,YAAS,EAAW,CAAO,GAErD,IAAa,QAAe,EAAM,YAAY,KAAA,CAAS,GAEvD,IAAe,SAAqC;GACxD,eAAe,EAAQ;GACvB,iBAAiB,EAAK;GACtB,iBAAiB,EAAQ;EAC3B,EAAE,GAII,IAAa,QAAgB,EAAM,SAAS,EAAE,iBAAiB,EAAM,OAAO,IAAI,KAAA,CAAU;EAEhG,SAAS,EAAS,GAAc;GAE9B,AADA,EAAU,CAAK,GACf,EAAK,QAAQ,EAAM;EACrB;SAKA,EAAM,IAAO,MAAU;GACjB,MAAU,EAAM,UAChB,IAAO,EAAK,IACX,EAAK;EACZ,CAAC,GAKD,QAAgB;GACd,AAAI,EAAK,SAAO,EAAK;EACvB,CAAC,GAED,EAAa;GAAE;GAAM;GAAM,IAAI;EAAQ,CAAC,mBAItC,EAgBO,QAAA;GAhBD,OAAM;GAAa,gBAAc,EAAA,QAAU,KAAQ,KAAA;MACvD,EAAqD,EAAA,QAAA,WAAA,EAA/B,cAAe,EAAA,MAAY,CAAA,GACjD,EAaM,OAbN,EAaM;GAZH,IAAI,EAAA;YACD;GAAJ,KAAI;GACH,SAAS,EAAA;GACV,OAAK,CAAC,wCAAsC,EAAA,WACvB,EAAA,QAAO,CAAA;GAC3B,kBAAgB,EAAA;GAChB,OAAO,EAAA;KACAA,EAAAA,QAAM;GACb,gBAAY,AAAA,EAAA,QAAA,GAAA,MAAE,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA;GACN;OAET,EAAQ,EAAA,QAAA,SAAA,CAAA,GAAA,IAAA,CAAA,CAAA,GAAA,GAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
+ @layer vectis.components{.v-progress-circular{--progress-diameter:var(--vectis-control-size-progress-circular-diameter);--progress-thickness:var(--vectis-control-size-progress-circular-thickness);inline-size:var(--progress-diameter);block-size:var(--progress-diameter);vertical-align:middle;display:inline-grid}.v-progress-circular-svg,.v-progress-circular-label{grid-area:1/1}.v-progress-circular-svg{block-size:100%;inline-size:100%;rotate:-90deg}.v-progress-circular:dir(rtl) .v-progress-circular-svg{scale:1 -1}.v-progress-circular-track,.v-progress-circular-bar{cx:calc(var(--progress-diameter) / 2);cy:calc(var(--progress-diameter) / 2);r:max(0px, calc((var(--progress-diameter) - var(--progress-thickness)) / 2));fill:none;stroke-width:var(--progress-thickness)}.v-progress-circular-track{stroke:var(--progress-track)}.v-progress-circular-bar{stroke:var(--progress-fill);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:calc(100 - 100 * var(--fill-fraction));transition:stroke-dashoffset var(--vectis-duration-base) var(--vectis-ease-default)}.v-progress-circular[data-shape=square] .v-progress-circular-bar{stroke-linecap:butt}.v-progress-circular[data-tone=accent]{--progress-fill:var(--vectis-color-accent);--progress-track:var(--vectis-color-accent-surface)}.v-progress-circular[data-tone=success]{--progress-fill:var(--vectis-color-success);--progress-track:var(--vectis-color-success-surface)}.v-progress-circular[data-tone=danger]{--progress-fill:var(--vectis-color-danger);--progress-track:var(--vectis-color-danger-surface)}.v-progress-circular[data-tone=warning]{--progress-fill:var(--vectis-color-warning);--progress-track:var(--vectis-color-warning-surface)}.v-progress-circular[data-tone=neutral]{--progress-fill:var(--vectis-color-text);--progress-track:var(--vectis-color-surface-muted)}.v-progress-circular[data-custom]{--progress-fill:var(--custom-color);--progress-track:color-mix(in oklab, var(--custom-color), var(--vectis-color-surface) 85%)}.v-progress-circular-label{max-inline-size:calc(var(--progress-diameter) - var(--progress-thickness) * 2);color:var(--vectis-color-text);font-family:var(--vectis-text-family);font-size:max(var(--vectis-text-caption-size), calc(var(--progress-diameter) / 4));font-weight:var(--vectis-text-control-weight);line-height:var(--vectis-text-control-leading);text-align:center;justify-content:center;place-self:center;align-items:center;display:flex}.v-progress-circular[data-indeterminate] .v-progress-circular-svg{animation:v-spin var(--vectis-duration-1000) linear infinite}.v-progress-circular[data-indeterminate] .v-progress-circular-bar{animation:v-progress-circular-dash var(--vectis-duration-1500) var(--vectis-ease-default) infinite;transition:none}@keyframes v-progress-circular-dash{0%{stroke-dasharray:5 100;stroke-dashoffset:0}50%{stroke-dasharray:70 100;stroke-dashoffset:-20px}to{stroke-dasharray:5 100;stroke-dashoffset:-100px}}@media (prefers-reduced-motion:reduce){.v-progress-circular-bar{transition:none}.v-progress-circular[data-indeterminate] .v-progress-circular-svg{animation-duration:var(--vectis-duration-3000)}.v-progress-circular[data-indeterminate] .v-progress-circular-bar{animation-duration:var(--vectis-duration-5000)}}}
@@ -0,0 +1,60 @@
1
+ interface ProgressCircularProps {
2
+ /** How far along it is. Anything outside the range is brought back into it. */
3
+ value?: number;
4
+ /** What counts as finished. The other end is always zero. */
5
+ max?: number;
6
+ /**
7
+ * Says that the progress cannot be measured: the ring turns continuously and the
8
+ * value is ignored.
9
+ */
10
+ indeterminate?: boolean;
11
+ /** What the progress means, expressed as a colour. */
12
+ tone?: 'accent' | 'success' | 'warning' | 'danger' | 'neutral';
13
+ /**
14
+ * A colour of your own (hex, CSS name or `oklch()`), which replaces the tone. The
15
+ * unfilled ring's shade is derived from it against the theme, so it follows the light
16
+ * and the dark one.
17
+ */
18
+ color?: string;
19
+ /** The diameter, always IN PIXELS: `96` and `'96'` both give 96px. */
20
+ size?: number | string;
21
+ /** How thick the ring is, always IN PIXELS: `8` and `'8'` both give 8px. */
22
+ thickness?: number | string;
23
+ /** Whether the ends of the drawn arc are rounded or cut square. */
24
+ shape?: 'rounded' | 'square';
25
+ /**
26
+ * Writes the percentage in the middle of the ring. It is ignored while the progress is
27
+ * unmeasurable, there being no figure to write.
28
+ */
29
+ showValue?: boolean;
30
+ }
31
+ type __VLS_Slots = {
32
+ /**
33
+ * What to put in the middle of the ring instead of the percentage — a count of files,
34
+ * an icon, a shortened figure.
35
+ */
36
+ default?(props: {
37
+ value: number;
38
+ max: number;
39
+ percent: number;
40
+ }): unknown;
41
+ };
42
+ declare const __VLS_base: import('vue').DefineComponent<ProgressCircularProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProgressCircularProps> & Readonly<{}>, {
43
+ value: number;
44
+ size: number | string;
45
+ tone: "accent" | "success" | "warning" | "danger" | "neutral";
46
+ shape: "rounded" | "square";
47
+ color: string;
48
+ indeterminate: boolean;
49
+ max: number;
50
+ thickness: number | string;
51
+ showValue: boolean;
52
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
53
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
54
+ declare const _default: typeof __VLS_export;
55
+ export default _default;
56
+ type __VLS_WithSlots<T, S> = T & {
57
+ new (): {
58
+ $slots: S;
59
+ };
60
+ };
@@ -0,0 +1,9 @@
1
+ import './VProgressCircular.css';
2
+ import e from "./VProgressCircular.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VProgressCircular/VProgressCircular.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VProgressCircular.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VProgressCircular.js","names":[],"sources":["../../../src/components/VProgressCircular/VProgressCircular.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @core — no behavioural JS at all: value normalization and the display string.\n/**\n * Progress drawn as a ring filling up. It is an SVG whose geometry is entirely\n * described in CSS, with no JavaScript computing anything.\n *\n * Two things make that possible. The drawing declares no coordinate system of its own,\n * so one unit is one pixel and the circles can be placed with plain lengths: with a\n * fixed coordinate system the thickness would have to be converted into its units,\n * which means knowing the ratio in code and recomputing it at every change of size.\n * And the ring's outline is declared to be 100 units long whatever its real\n * circumference, so the portion drawn is simply a percentage — no π anywhere.\n *\n * On naming: pass an `aria-label` saying what is progressing. The figure shown in the\n * middle cannot serve as that name — the role a progress bar carries makes its content\n * presentational, so screen readers do not announce it.\n */\nimport { useProgressValue } from '../../composables/useProgressValue'\nimport { useMessages } from '../../i18n/state'\nimport { px } from '../../utils/css'\n\ninterface ProgressCircularProps {\n /** How far along it is. Anything outside the range is brought back into it. */\n value?: number\n /** What counts as finished. The other end is always zero. */\n max?: number\n /**\n * Says that the progress cannot be measured: the ring turns continuously and the\n * value is ignored.\n */\n indeterminate?: boolean\n /** What the progress means, expressed as a colour. */\n tone?: 'accent' | 'success' | 'warning' | 'danger' | 'neutral'\n /**\n * A colour of your own (hex, CSS name or `oklch()`), which replaces the tone. The\n * unfilled ring's shade is derived from it against the theme, so it follows the light\n * and the dark one.\n */\n color?: string\n /** The diameter, always IN PIXELS: `96` and `'96'` both give 96px. */\n size?: number | string\n /** How thick the ring is, always IN PIXELS: `8` and `'8'` both give 8px. */\n thickness?: number | string\n /** Whether the ends of the drawn arc are rounded or cut square. */\n shape?: 'rounded' | 'square'\n /**\n * Writes the percentage in the middle of the ring. It is ignored while the progress is\n * unmeasurable, there being no figure to write.\n */\n showValue?: boolean\n}\n\nconst props = withDefaults(defineProps<ProgressCircularProps>(), {\n value: 0,\n max: 100,\n indeterminate: false,\n tone: 'accent',\n color: undefined,\n size: undefined,\n thickness: undefined,\n shape: 'rounded',\n showValue: false,\n})\n\ndefineSlots<{\n /**\n * What to put in the middle of the ring instead of the percentage — a count of files,\n * an icon, a shortened figure.\n */\n default?(props: { value: number; max: number; percent: number }): unknown\n}>()\n\n/* The percent sign, and the non-breaking space French puts before it where English puts\n nothing, are a convention of the language: they belong in the dictionary rather than\n in this file. Any other format goes through the slot above. */\nconst m = useMessages()\n\nconst { clamped, fraction } = useProgressValue(\n () => props.value,\n () => props.max,\n)\n</script>\n\n<template>\n <span\n class=\"v-progress-circular\"\n role=\"progressbar\"\n :aria-label=\"m.progress.label\"\n :data-tone=\"tone\"\n :data-custom=\"color !== undefined ? '' : undefined\"\n :data-shape=\"shape\"\n :data-indeterminate=\"indeterminate ? '' : undefined\"\n :aria-valuenow=\"indeterminate ? undefined : clamped\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n :style=\"{\n '--fill-fraction': String(fraction),\n '--custom-color': color,\n '--progress-diameter': px(size),\n '--progress-thickness': px(thickness),\n }\"\n >\n <svg class=\"v-progress-circular-svg\" aria-hidden=\"true\">\n <circle class=\"v-progress-circular-track\" pathLength=\"100\" />\n <circle class=\"v-progress-circular-bar\" pathLength=\"100\" />\n </svg>\n <span v-if=\"!indeterminate && (showValue || $slots.default)\" class=\"v-progress-circular-label\">\n <slot :value=\"clamped\" :max=\"max\" :percent=\"fraction * 100\">\n {{ m.progress.percent(Math.round(fraction * 100)) }}\n </slot>\n </span>\n </span>\n</template>\n\n<style>\n@layer vectis.components {\n /* The two dimensions are declared here as defaults, on the very element the props\n write to inline — which is what makes an explicit size or thickness always win. */\n .v-progress-circular {\n --progress-diameter: var(--vectis-control-size-progress-circular-diameter);\n --progress-thickness: var(--vectis-control-size-progress-circular-thickness);\n display: inline-grid;\n inline-size: var(--progress-diameter);\n block-size: var(--progress-diameter);\n vertical-align: middle;\n }\n\n .v-progress-circular-svg,\n .v-progress-circular-label {\n grid-area: 1 / 1;\n }\n\n .v-progress-circular-svg {\n inline-size: 100%;\n block-size: 100%;\n /* Turns the ring so that it starts at twelve o'clock rather than at three. It is\n written as its own property and not as a transform, so that it COMPOSES with the\n spinning of the unmeasurable mode instead of being overwritten by it. */\n rotate: -90deg;\n }\n\n /* In a right-to-left page the ring fills the other way round, following the reading\n direction. These individual properties are applied in a fixed order — move, turn,\n then mirror — so the mirroring is taken into account before the quarter turn above. */\n .v-progress-circular:dir(rtl) .v-progress-circular-svg {\n scale: 1 -1;\n }\n\n /* The geometry, entirely in CSS and in plain lengths. Percentages are avoided\n deliberately: a radius given as a percentage is resolved against a normalized\n diagonal rather than against the width, and there is no reason to expose the\n component to that when the diameter is always a length to begin with. */\n .v-progress-circular-track,\n .v-progress-circular-bar {\n cx: calc(var(--progress-diameter) / 2);\n cy: calc(var(--progress-diameter) / 2);\n /* A thickness as large as the diameter would give a NEGATIVE radius, which is an\n error in SVG: the circle would simply not be drawn. The floor degrades that case\n to a radius of zero instead. */\n r: max(0px, calc((var(--progress-diameter) - var(--progress-thickness)) / 2));\n fill: none;\n stroke-width: var(--progress-thickness);\n }\n\n .v-progress-circular-track {\n stroke: var(--progress-track);\n }\n\n .v-progress-circular-bar {\n stroke: var(--progress-fill);\n stroke-linecap: round;\n stroke-dasharray: 100;\n stroke-dashoffset: calc(100 - 100 * var(--fill-fraction));\n transition: stroke-dashoffset var(--vectis-duration-base) var(--vectis-ease-default);\n }\n\n .v-progress-circular[data-shape='square'] .v-progress-circular-bar {\n stroke-linecap: butt;\n }\n\n /* Unlike the linear bar, no tone declares a text colour: the figure sits in the hole\n of the ring, against the page itself, so it simply takes the ordinary text colour. */\n .v-progress-circular[data-tone='accent'] {\n --progress-fill: var(--vectis-color-accent);\n --progress-track: var(--vectis-color-accent-surface);\n }\n\n .v-progress-circular[data-tone='success'] {\n --progress-fill: var(--vectis-color-success);\n --progress-track: var(--vectis-color-success-surface);\n }\n\n .v-progress-circular[data-tone='danger'] {\n --progress-fill: var(--vectis-color-danger);\n --progress-track: var(--vectis-color-danger-surface);\n }\n\n .v-progress-circular[data-tone='warning'] {\n --progress-fill: var(--vectis-color-warning);\n --progress-track: var(--vectis-color-warning-surface);\n }\n\n /* The neutral tone inverts text and surface rather than using a mid grey, which would\n be unreadable in one theme or the other. */\n .v-progress-circular[data-tone='neutral'] {\n --progress-fill: var(--vectis-color-text);\n --progress-track: var(--vectis-color-surface-muted);\n }\n\n /* Placed after the tones on purpose: the specificity is the same, so it is the order\n that lets a custom colour override the tone it replaces. */\n .v-progress-circular[data-custom] {\n --progress-fill: var(--custom-color);\n --progress-track: color-mix(in oklab, var(--custom-color), var(--vectis-color-surface) 85%);\n }\n\n .v-progress-circular-label {\n display: flex;\n align-items: center;\n justify-content: center;\n /* TRAP — this centres the BOX itself in its cell, and it is not redundant with the\n centring above. The maximum width below stops the box from being stretched to\n fill the cell, and a stretch that cannot apply falls back to the START edge: the\n figure would end up against the side of the ring. */\n place-self: center;\n max-inline-size: calc(var(--progress-diameter) - var(--progress-thickness) * 2);\n color: var(--vectis-color-text);\n font-family: var(--vectis-text-family);\n /* Sized as a fraction of the diameter so it stays in proportion at every size — the\n same tolerance already granted to VSpinner's stroke — with a floor at the smallest\n type token, below which it would be unreadable. */\n font-size: max(var(--vectis-text-caption-size), calc(var(--progress-diameter) / 4));\n font-weight: var(--vectis-text-control-weight);\n line-height: var(--vectis-text-control-leading);\n text-align: center;\n }\n\n /* When the progress cannot be measured, two animations run at once: the whole ring\n turns, and the arc drawn on it lengthens and shortens. Their periods are deliberately\n not multiples of one another — were the arc to restart on every rotation, the pair\n would repeat the same picture over and over and read as a mechanical beat. At 1s and\n 1.5s they only realign every third turn; the slowed-down pair below is 3s and 5s, so\n every fifth. Keep any change to those four values out of a whole-number ratio. */\n .v-progress-circular[data-indeterminate] .v-progress-circular-svg {\n animation: v-spin var(--vectis-duration-1000) linear infinite;\n }\n\n .v-progress-circular[data-indeterminate] .v-progress-circular-bar {\n animation: v-progress-circular-dash var(--vectis-duration-1500) var(--vectis-ease-default)\n infinite;\n transition: none;\n }\n\n /* Both ends of the arc move, so it lengthens, shortens and travels around the circle\n at once. The spin it rides on is the shared one from styles/utilities.css; only\n these keyframes, which belong to this component alone, stay here. */\n @keyframes v-progress-circular-dash {\n 0% {\n stroke-dasharray: 5 100;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 70 100;\n stroke-dashoffset: -20;\n }\n\n 100% {\n stroke-dasharray: 5 100;\n stroke-dashoffset: -100;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-progress-circular-bar {\n transition: none;\n }\n\n /* Slowed down and not stopped: a motionless loader no longer says that anything is\n happening, which is the one thing it exists to say. */\n .v-progress-circular[data-indeterminate] .v-progress-circular-svg {\n animation-duration: var(--vectis-duration-3000);\n }\n\n .v-progress-circular[data-indeterminate] .v-progress-circular-bar {\n animation-duration: var(--vectis-duration-5000);\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,74 @@
1
+ import { useMessages as e } from "../../i18n/state.js";
2
+ import { px as t } from "../../utils/css.js";
3
+ import { useProgressValue as n } from "../../composables/useProgressValue.js";
4
+ import { createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, defineComponent as s, normalizeStyle as c, openBlock as l, renderSlot as u, toDisplayString as d, unref as f } from "vue";
5
+ //#region src/components/VProgressCircular/VProgressCircular.vue?vue&type=script&setup=true&lang.ts
6
+ var p = [
7
+ "aria-label",
8
+ "data-tone",
9
+ "data-custom",
10
+ "data-shape",
11
+ "data-indeterminate",
12
+ "aria-valuenow",
13
+ "aria-valuemax"
14
+ ], m = {
15
+ key: 0,
16
+ class: "v-progress-circular-label"
17
+ }, h = /*@__PURE__*/ s({
18
+ __name: "VProgressCircular",
19
+ props: {
20
+ value: { default: 0 },
21
+ max: { default: 100 },
22
+ indeterminate: {
23
+ type: Boolean,
24
+ default: !1
25
+ },
26
+ tone: { default: "accent" },
27
+ color: { default: void 0 },
28
+ size: { default: void 0 },
29
+ thickness: { default: void 0 },
30
+ shape: { default: "rounded" },
31
+ showValue: {
32
+ type: Boolean,
33
+ default: !1
34
+ }
35
+ },
36
+ setup(s) {
37
+ let h = s, g = e(), { clamped: _, fraction: v } = n(() => h.value, () => h.max);
38
+ return (e, n) => (l(), i("span", {
39
+ class: "v-progress-circular",
40
+ role: "progressbar",
41
+ "aria-label": f(g).progress.label,
42
+ "data-tone": s.tone,
43
+ "data-custom": s.color === void 0 ? void 0 : "",
44
+ "data-shape": s.shape,
45
+ "data-indeterminate": s.indeterminate ? "" : void 0,
46
+ "aria-valuenow": s.indeterminate ? void 0 : f(_),
47
+ "aria-valuemin": "0",
48
+ "aria-valuemax": s.max,
49
+ style: c({
50
+ "--fill-fraction": String(f(v)),
51
+ "--custom-color": s.color,
52
+ "--progress-diameter": f(t)(s.size),
53
+ "--progress-thickness": f(t)(s.thickness)
54
+ })
55
+ }, [n[0] ||= a("svg", {
56
+ class: "v-progress-circular-svg",
57
+ "aria-hidden": "true"
58
+ }, [a("circle", {
59
+ class: "v-progress-circular-track",
60
+ pathLength: "100"
61
+ }), a("circle", {
62
+ class: "v-progress-circular-bar",
63
+ pathLength: "100"
64
+ })], -1), !s.indeterminate && (s.showValue || e.$slots.default) ? (l(), i("span", m, [u(e.$slots, "default", {
65
+ value: f(_),
66
+ max: s.max,
67
+ percent: f(v) * 100
68
+ }, () => [o(d(f(g).progress.percent(Math.round(f(v) * 100))), 1)])])) : r("", !0)], 12, p));
69
+ }
70
+ });
71
+ //#endregion
72
+ export { h as default };
73
+
74
+ //# sourceMappingURL=VProgressCircular.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VProgressCircular.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/VProgressCircular/VProgressCircular.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @core — no behavioural JS at all: value normalization and the display string.\n/**\n * Progress drawn as a ring filling up. It is an SVG whose geometry is entirely\n * described in CSS, with no JavaScript computing anything.\n *\n * Two things make that possible. The drawing declares no coordinate system of its own,\n * so one unit is one pixel and the circles can be placed with plain lengths: with a\n * fixed coordinate system the thickness would have to be converted into its units,\n * which means knowing the ratio in code and recomputing it at every change of size.\n * And the ring's outline is declared to be 100 units long whatever its real\n * circumference, so the portion drawn is simply a percentage — no π anywhere.\n *\n * On naming: pass an `aria-label` saying what is progressing. The figure shown in the\n * middle cannot serve as that name — the role a progress bar carries makes its content\n * presentational, so screen readers do not announce it.\n */\nimport { useProgressValue } from '../../composables/useProgressValue'\nimport { useMessages } from '../../i18n/state'\nimport { px } from '../../utils/css'\n\ninterface ProgressCircularProps {\n /** How far along it is. Anything outside the range is brought back into it. */\n value?: number\n /** What counts as finished. The other end is always zero. */\n max?: number\n /**\n * Says that the progress cannot be measured: the ring turns continuously and the\n * value is ignored.\n */\n indeterminate?: boolean\n /** What the progress means, expressed as a colour. */\n tone?: 'accent' | 'success' | 'warning' | 'danger' | 'neutral'\n /**\n * A colour of your own (hex, CSS name or `oklch()`), which replaces the tone. The\n * unfilled ring's shade is derived from it against the theme, so it follows the light\n * and the dark one.\n */\n color?: string\n /** The diameter, always IN PIXELS: `96` and `'96'` both give 96px. */\n size?: number | string\n /** How thick the ring is, always IN PIXELS: `8` and `'8'` both give 8px. */\n thickness?: number | string\n /** Whether the ends of the drawn arc are rounded or cut square. */\n shape?: 'rounded' | 'square'\n /**\n * Writes the percentage in the middle of the ring. It is ignored while the progress is\n * unmeasurable, there being no figure to write.\n */\n showValue?: boolean\n}\n\nconst props = withDefaults(defineProps<ProgressCircularProps>(), {\n value: 0,\n max: 100,\n indeterminate: false,\n tone: 'accent',\n color: undefined,\n size: undefined,\n thickness: undefined,\n shape: 'rounded',\n showValue: false,\n})\n\ndefineSlots<{\n /**\n * What to put in the middle of the ring instead of the percentage — a count of files,\n * an icon, a shortened figure.\n */\n default?(props: { value: number; max: number; percent: number }): unknown\n}>()\n\n/* The percent sign, and the non-breaking space French puts before it where English puts\n nothing, are a convention of the language: they belong in the dictionary rather than\n in this file. Any other format goes through the slot above. */\nconst m = useMessages()\n\nconst { clamped, fraction } = useProgressValue(\n () => props.value,\n () => props.max,\n)\n</script>\n\n<template>\n <span\n class=\"v-progress-circular\"\n role=\"progressbar\"\n :aria-label=\"m.progress.label\"\n :data-tone=\"tone\"\n :data-custom=\"color !== undefined ? '' : undefined\"\n :data-shape=\"shape\"\n :data-indeterminate=\"indeterminate ? '' : undefined\"\n :aria-valuenow=\"indeterminate ? undefined : clamped\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n :style=\"{\n '--fill-fraction': String(fraction),\n '--custom-color': color,\n '--progress-diameter': px(size),\n '--progress-thickness': px(thickness),\n }\"\n >\n <svg class=\"v-progress-circular-svg\" aria-hidden=\"true\">\n <circle class=\"v-progress-circular-track\" pathLength=\"100\" />\n <circle class=\"v-progress-circular-bar\" pathLength=\"100\" />\n </svg>\n <span v-if=\"!indeterminate && (showValue || $slots.default)\" class=\"v-progress-circular-label\">\n <slot :value=\"clamped\" :max=\"max\" :percent=\"fraction * 100\">\n {{ m.progress.percent(Math.round(fraction * 100)) }}\n </slot>\n </span>\n </span>\n</template>\n\n<style>\n@layer vectis.components {\n /* The two dimensions are declared here as defaults, on the very element the props\n write to inline — which is what makes an explicit size or thickness always win. */\n .v-progress-circular {\n --progress-diameter: var(--vectis-control-size-progress-circular-diameter);\n --progress-thickness: var(--vectis-control-size-progress-circular-thickness);\n display: inline-grid;\n inline-size: var(--progress-diameter);\n block-size: var(--progress-diameter);\n vertical-align: middle;\n }\n\n .v-progress-circular-svg,\n .v-progress-circular-label {\n grid-area: 1 / 1;\n }\n\n .v-progress-circular-svg {\n inline-size: 100%;\n block-size: 100%;\n /* Turns the ring so that it starts at twelve o'clock rather than at three. It is\n written as its own property and not as a transform, so that it COMPOSES with the\n spinning of the unmeasurable mode instead of being overwritten by it. */\n rotate: -90deg;\n }\n\n /* In a right-to-left page the ring fills the other way round, following the reading\n direction. These individual properties are applied in a fixed order — move, turn,\n then mirror — so the mirroring is taken into account before the quarter turn above. */\n .v-progress-circular:dir(rtl) .v-progress-circular-svg {\n scale: 1 -1;\n }\n\n /* The geometry, entirely in CSS and in plain lengths. Percentages are avoided\n deliberately: a radius given as a percentage is resolved against a normalized\n diagonal rather than against the width, and there is no reason to expose the\n component to that when the diameter is always a length to begin with. */\n .v-progress-circular-track,\n .v-progress-circular-bar {\n cx: calc(var(--progress-diameter) / 2);\n cy: calc(var(--progress-diameter) / 2);\n /* A thickness as large as the diameter would give a NEGATIVE radius, which is an\n error in SVG: the circle would simply not be drawn. The floor degrades that case\n to a radius of zero instead. */\n r: max(0px, calc((var(--progress-diameter) - var(--progress-thickness)) / 2));\n fill: none;\n stroke-width: var(--progress-thickness);\n }\n\n .v-progress-circular-track {\n stroke: var(--progress-track);\n }\n\n .v-progress-circular-bar {\n stroke: var(--progress-fill);\n stroke-linecap: round;\n stroke-dasharray: 100;\n stroke-dashoffset: calc(100 - 100 * var(--fill-fraction));\n transition: stroke-dashoffset var(--vectis-duration-base) var(--vectis-ease-default);\n }\n\n .v-progress-circular[data-shape='square'] .v-progress-circular-bar {\n stroke-linecap: butt;\n }\n\n /* Unlike the linear bar, no tone declares a text colour: the figure sits in the hole\n of the ring, against the page itself, so it simply takes the ordinary text colour. */\n .v-progress-circular[data-tone='accent'] {\n --progress-fill: var(--vectis-color-accent);\n --progress-track: var(--vectis-color-accent-surface);\n }\n\n .v-progress-circular[data-tone='success'] {\n --progress-fill: var(--vectis-color-success);\n --progress-track: var(--vectis-color-success-surface);\n }\n\n .v-progress-circular[data-tone='danger'] {\n --progress-fill: var(--vectis-color-danger);\n --progress-track: var(--vectis-color-danger-surface);\n }\n\n .v-progress-circular[data-tone='warning'] {\n --progress-fill: var(--vectis-color-warning);\n --progress-track: var(--vectis-color-warning-surface);\n }\n\n /* The neutral tone inverts text and surface rather than using a mid grey, which would\n be unreadable in one theme or the other. */\n .v-progress-circular[data-tone='neutral'] {\n --progress-fill: var(--vectis-color-text);\n --progress-track: var(--vectis-color-surface-muted);\n }\n\n /* Placed after the tones on purpose: the specificity is the same, so it is the order\n that lets a custom colour override the tone it replaces. */\n .v-progress-circular[data-custom] {\n --progress-fill: var(--custom-color);\n --progress-track: color-mix(in oklab, var(--custom-color), var(--vectis-color-surface) 85%);\n }\n\n .v-progress-circular-label {\n display: flex;\n align-items: center;\n justify-content: center;\n /* TRAP — this centres the BOX itself in its cell, and it is not redundant with the\n centring above. The maximum width below stops the box from being stretched to\n fill the cell, and a stretch that cannot apply falls back to the START edge: the\n figure would end up against the side of the ring. */\n place-self: center;\n max-inline-size: calc(var(--progress-diameter) - var(--progress-thickness) * 2);\n color: var(--vectis-color-text);\n font-family: var(--vectis-text-family);\n /* Sized as a fraction of the diameter so it stays in proportion at every size — the\n same tolerance already granted to VSpinner's stroke — with a floor at the smallest\n type token, below which it would be unreadable. */\n font-size: max(var(--vectis-text-caption-size), calc(var(--progress-diameter) / 4));\n font-weight: var(--vectis-text-control-weight);\n line-height: var(--vectis-text-control-leading);\n text-align: center;\n }\n\n /* When the progress cannot be measured, two animations run at once: the whole ring\n turns, and the arc drawn on it lengthens and shortens. Their periods are deliberately\n not multiples of one another — were the arc to restart on every rotation, the pair\n would repeat the same picture over and over and read as a mechanical beat. At 1s and\n 1.5s they only realign every third turn; the slowed-down pair below is 3s and 5s, so\n every fifth. Keep any change to those four values out of a whole-number ratio. */\n .v-progress-circular[data-indeterminate] .v-progress-circular-svg {\n animation: v-spin var(--vectis-duration-1000) linear infinite;\n }\n\n .v-progress-circular[data-indeterminate] .v-progress-circular-bar {\n animation: v-progress-circular-dash var(--vectis-duration-1500) var(--vectis-ease-default)\n infinite;\n transition: none;\n }\n\n /* Both ends of the arc move, so it lengthens, shortens and travels around the circle\n at once. The spin it rides on is the shared one from styles/utilities.css; only\n these keyframes, which belong to this component alone, stay here. */\n @keyframes v-progress-circular-dash {\n 0% {\n stroke-dasharray: 5 100;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 70 100;\n stroke-dashoffset: -20;\n }\n\n 100% {\n stroke-dasharray: 5 100;\n stroke-dashoffset: -100;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-progress-circular-bar {\n transition: none;\n }\n\n /* Slowed down and not stopped: a motionless loader no longer says that anything is\n happening, which is the one thing it exists to say. */\n .v-progress-circular[data-indeterminate] .v-progress-circular-svg {\n animation-duration: var(--vectis-duration-3000);\n }\n\n .v-progress-circular[data-indeterminate] .v-progress-circular-bar {\n animation-duration: var(--vectis-duration-5000);\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoDA,IAAM,IAAQ,GAuBR,IAAI,EAAY,GAEhB,EAAE,YAAS,gBAAa,QACtB,EAAM,aACN,EAAM,GACd;yBAIE,EA2BO,QAAA;GA1BL,OAAM;GACN,MAAK;GACJ,cAAY,EAAA,CAAA,CAAC,CAAC,SAAS;GACvB,aAAW,EAAA;GACX,eAAa,EAAA,UAAU,KAAA,IAAiB,KAAA,IAAR;GAChC,cAAY,EAAA;GACZ,sBAAoB,EAAA,gBAAa,KAAQ,KAAA;GACzC,iBAAe,EAAA,gBAAgB,KAAA,IAAY,EAAA,CAAA;GAC5C,iBAAc;GACb,iBAAe,EAAA;GACf,OAAK,EAAA;uBAA6B,OAAO,EAAA,CAAA,CAAQ;sBAA2B,EAAA;2BAAoC,EAAA,CAAA,CAAE,CAAC,EAAA,IAAI;4BAAiC,EAAA,CAAA,CAAE,CAAC,EAAA,SAAS;;eAOrK,EAGM,OAAA;GAHD,OAAM;GAA0B,eAAY;MAC/C,EAA6D,UAAA;GAArD,OAAM;GAA4B,YAAW;MACrD,EAA2D,UAAA;GAAnD,OAAM;GAA0B,YAAW;aAExC,EAAA,kBAAkB,EAAA,aAAaA,EAAAA,OAAO,YAAA,EAAA,GAAnD,EAIO,QAJP,GAIO,CAHL,EAEO,EAAA,QAAA,WAAA;GAFA,OAAO,EAAA,CAAA;GAAU,KAAK,EAAA;GAAM,SAAS,EAAA,CAAA,IAAQ;WAE7C,CAAA,EAAA,EADF,EAAA,CAAA,CAAC,CAAC,SAAS,QAAQ,KAAK,MAAM,EAAA,CAAA,IAAQ,GAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,IAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
+ @layer vectis.components{.v-progress-linear{--progress-thickness:var(--vectis-control-size-progress-linear-thickness);inline-size:100%;block-size:var(--progress-thickness);border-radius:var(--vectis-radius-pill);background:var(--progress-track);font-family:var(--vectis-text-family);font-size:var(--vectis-text-caption-size);font-weight:var(--vectis-text-control-weight);line-height:var(--vectis-text-control-leading);display:block;position:relative}.v-progress-linear[data-shape=square]{border-radius:0}.v-progress-linear-fill{inline-size:calc(100% * var(--fill-fraction));border-radius:inherit;background:var(--progress-fill);transition:inline-size var(--vectis-duration-base) var(--vectis-ease-default);position:absolute;inset-block:0;inset-inline-start:0}.v-progress-linear[data-tone=accent]{--progress-fill:var(--vectis-color-accent);--progress-track:var(--vectis-color-accent-surface);--tone-text-fallback:var(--vectis-color-text-on-accent)}.v-progress-linear[data-tone=success]{--progress-fill:var(--vectis-color-success);--progress-track:var(--vectis-color-success-surface);--tone-text-fallback:var(--vectis-color-text-on-accent)}.v-progress-linear[data-tone=danger]{--progress-fill:var(--vectis-color-danger);--progress-track:var(--vectis-color-danger-surface);--tone-text-fallback:var(--vectis-color-text-on-accent)}.v-progress-linear[data-tone=warning]{--progress-fill:var(--vectis-color-warning);--progress-track:var(--vectis-color-warning-surface);--tone-text-fallback:var(--vectis-color-text-on-warning)}.v-progress-linear[data-tone=neutral]{--progress-fill:var(--vectis-color-text);--progress-track:var(--vectis-color-surface-muted);--tone-text-fallback:var(--vectis-color-surface)}.v-progress-linear[data-custom]{--progress-fill:var(--custom-color);--progress-track:color-mix(in oklab, var(--custom-color), var(--vectis-color-surface) 85%);--tone-text-fallback:var(--vectis-color-text-on-accent)}.v-progress-linear-text{--progress-clip-start:calc(100% * var(--fill-fraction));--progress-clip-end:-100vmax;padding-inline:var(--vectis-space-2);color:var(--vectis-color-text);clip-path:inset(-100vmax var(--progress-clip-end) -100vmax var(--progress-clip-start));transition:clip-path var(--vectis-duration-base) var(--vectis-ease-default);writing-mode:horizontal-tb;white-space:nowrap;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.v-progress-linear[data-value-position=start] .v-progress-linear-text{justify-content:start}.v-progress-linear[data-value-position=end] .v-progress-linear-text{justify-content:end}.v-progress-linear-text[data-on-fill]{--progress-clip-start:-100vmax;--progress-clip-end:calc(100% * (1 - var(--fill-fraction)));color:var(--tone-text-fallback)}@supports (color:contrast-color(red)){.v-progress-linear-text[data-on-fill]{color:contrast-color(var(--progress-fill))}}.v-progress-linear:dir(rtl) .v-progress-linear-text{clip-path:inset(-100vmax var(--progress-clip-start) -100vmax var(--progress-clip-end))}.v-progress-linear[data-orientation=vertical]{writing-mode:vertical-lr;inline-size:var(--vectis-control-size-progress-linear-length)}.v-progress-linear[data-orientation=vertical] .v-progress-linear-fill{inset-inline:auto 0}.v-progress-linear[data-orientation=vertical] .v-progress-linear-text{padding-inline:0;padding-block:var(--vectis-space-2);flex-direction:column-reverse}.v-progress-linear[data-orientation=vertical] .v-progress-linear-text,.v-progress-linear[data-orientation=vertical]:dir(rtl) .v-progress-linear-text{clip-path:inset(var(--progress-clip-end) -100vmax var(--progress-clip-start) -100vmax)}.v-progress-linear[data-indeterminate]{overflow:hidden}.v-progress-linear[data-indeterminate] .v-progress-linear-fill{--progress-bar:40%;inline-size:var(--progress-bar);animation:v-progress-linear-indeterminate var(--vectis-duration-1500) var(--vectis-ease-in-out) infinite;transition:none;inset-inline:0 auto}@keyframes v-progress-linear-indeterminate{0%{inset-inline-start:calc(-1 * var(--progress-bar))}to{inset-inline-start:100%}}.v-progress-linear[data-orientation=vertical][data-indeterminate] .v-progress-linear-fill{animation-direction:reverse}@media (prefers-reduced-motion:reduce){.v-progress-linear-fill,.v-progress-linear-text{transition:none}.v-progress-linear[data-indeterminate] .v-progress-linear-fill{animation-duration:var(--vectis-duration-5000)}}}
@@ -0,0 +1,74 @@
1
+ interface ProgressLinearProps {
2
+ /** How far along it is. Anything outside the range is brought back into it. */
3
+ value?: number;
4
+ /** What counts as finished. The other end is always zero. */
5
+ max?: number;
6
+ /**
7
+ * Says that the progress cannot be measured: the bar animates continuously and the
8
+ * value is ignored. It is what to use while waiting for a server that reports no
9
+ * percentage.
10
+ */
11
+ indeterminate?: boolean;
12
+ /** What the progress means, expressed as a colour. */
13
+ tone?: 'accent' | 'success' | 'warning' | 'danger' | 'neutral';
14
+ /**
15
+ * A colour of your own (hex, CSS name or `oklch()`), which replaces the tone. The
16
+ * track's own shade is derived from it against the theme, so it follows the light and
17
+ * the dark one.
18
+ */
19
+ color?: string;
20
+ /**
21
+ * How thick the bar is, always IN PIXELS: `12` and `'12'` both give 12px. It is 4px
22
+ * by default — bear in mind that showing text inside a bar that thin needs an
23
+ * explicit thickness.
24
+ */
25
+ thickness?: number | string;
26
+ /** Whether the ends of the bar are rounded or square. */
27
+ shape?: 'rounded' | 'square';
28
+ /**
29
+ * Writes the percentage inside the bar. It is ignored while the progress is
30
+ * unmeasurable, there being no figure to write.
31
+ */
32
+ showValue?: boolean;
33
+ /**
34
+ * Where that text sits along the bar. On a vertical bar the start is the zero end,
35
+ * hence the bottom.
36
+ */
37
+ valuePosition?: 'start' | 'center' | 'end';
38
+ /** Turns the bar upright, filling from the bottom up. */
39
+ orientation?: 'horizontal' | 'vertical';
40
+ }
41
+ type __VLS_Slots = {
42
+ /**
43
+ * What to write inside the bar instead of the percentage.
44
+ *
45
+ * TRAP — it is rendered TWICE, once over the empty track and once over the filled
46
+ * part in a colour that contrasts with it, each copy cut at the fill's edge. So
47
+ * whatever it renders must be pure: anything with a side effect would happen twice.
48
+ */
49
+ default?(props: {
50
+ value: number;
51
+ max: number;
52
+ percent: number;
53
+ }): unknown;
54
+ };
55
+ declare const __VLS_base: import('vue').DefineComponent<ProgressLinearProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProgressLinearProps> & Readonly<{}>, {
56
+ value: number;
57
+ tone: "accent" | "success" | "warning" | "danger" | "neutral";
58
+ orientation: "horizontal" | "vertical";
59
+ shape: "rounded" | "square";
60
+ color: string;
61
+ indeterminate: boolean;
62
+ max: number;
63
+ thickness: number | string;
64
+ showValue: boolean;
65
+ valuePosition: "start" | "center" | "end";
66
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
67
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
68
+ declare const _default: typeof __VLS_export;
69
+ export default _default;
70
+ type __VLS_WithSlots<T, S> = T & {
71
+ new (): {
72
+ $slots: S;
73
+ };
74
+ };
@@ -0,0 +1,9 @@
1
+ import './VProgressLinear.css';
2
+ import e from "./VProgressLinear.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VProgressLinear/VProgressLinear.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VProgressLinear.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VProgressLinear.js","names":[],"sources":["../../../src/components/VProgressLinear/VProgressLinear.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// @core — no behavioural JS at all: value normalization and the display string.\n/**\n * A bar filling up as something progresses. The element rendered IS the track, and the\n * whole geometry follows from a single number set on it — the fraction filled, with no\n * unit. Everything is written in logical properties, so turning the bar vertical needs\n * nothing but a change of writing direction.\n *\n * There is no behavioural JavaScript: the value is clamped and a percentage is\n * formatted, and that is all.\n *\n * On naming: pass an `aria-label` saying what is progressing. The text shown inside the\n * bar cannot serve as that name — the role a progress bar carries makes its content\n * presentational, so screen readers do not announce it.\n */\nimport { useProgressValue } from '../../composables/useProgressValue'\nimport { useMessages } from '../../i18n/state'\nimport { px } from '../../utils/css'\n\ninterface ProgressLinearProps {\n /** How far along it is. Anything outside the range is brought back into it. */\n value?: number\n /** What counts as finished. The other end is always zero. */\n max?: number\n /**\n * Says that the progress cannot be measured: the bar animates continuously and the\n * value is ignored. It is what to use while waiting for a server that reports no\n * percentage.\n */\n indeterminate?: boolean\n /** What the progress means, expressed as a colour. */\n tone?: 'accent' | 'success' | 'warning' | 'danger' | 'neutral'\n /**\n * A colour of your own (hex, CSS name or `oklch()`), which replaces the tone. The\n * track's own shade is derived from it against the theme, so it follows the light and\n * the dark one.\n */\n color?: string\n /**\n * How thick the bar is, always IN PIXELS: `12` and `'12'` both give 12px. It is 4px\n * by default — bear in mind that showing text inside a bar that thin needs an\n * explicit thickness.\n */\n thickness?: number | string\n /** Whether the ends of the bar are rounded or square. */\n shape?: 'rounded' | 'square'\n /**\n * Writes the percentage inside the bar. It is ignored while the progress is\n * unmeasurable, there being no figure to write.\n */\n showValue?: boolean\n /**\n * Where that text sits along the bar. On a vertical bar the start is the zero end,\n * hence the bottom.\n */\n valuePosition?: 'start' | 'center' | 'end'\n /** Turns the bar upright, filling from the bottom up. */\n orientation?: 'horizontal' | 'vertical'\n}\n\nconst props = withDefaults(defineProps<ProgressLinearProps>(), {\n value: 0,\n max: 100,\n indeterminate: false,\n tone: 'accent',\n color: undefined,\n thickness: undefined,\n shape: 'rounded',\n showValue: false,\n valuePosition: 'center',\n orientation: 'horizontal',\n})\n\ndefineSlots<{\n /**\n * What to write inside the bar instead of the percentage.\n *\n * TRAP — it is rendered TWICE, once over the empty track and once over the filled\n * part in a colour that contrasts with it, each copy cut at the fill's edge. So\n * whatever it renders must be pure: anything with a side effect would happen twice.\n */\n default?(props: { value: number; max: number; percent: number }): unknown\n}>()\n\n/* The percent sign, and the non-breaking space French puts before it where English puts\n nothing, are a convention of the language: they belong in the dictionary rather than\n in this file. Any other format goes through the slot above. */\nconst m = useMessages()\n\nconst { clamped, fraction } = useProgressValue(\n () => props.value,\n () => props.max,\n)\n</script>\n\n<template>\n <div\n class=\"v-progress-linear\"\n role=\"progressbar\"\n :aria-label=\"m.progress.label\"\n :data-tone=\"tone\"\n :data-custom=\"color !== undefined ? '' : undefined\"\n :data-shape=\"shape\"\n :data-orientation=\"orientation === 'vertical' ? 'vertical' : undefined\"\n :data-value-position=\"valuePosition\"\n :data-indeterminate=\"indeterminate ? '' : undefined\"\n :aria-valuenow=\"indeterminate ? undefined : clamped\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n :style=\"{\n '--fill-fraction': String(fraction),\n '--custom-color': color,\n '--progress-thickness': px(thickness),\n }\"\n >\n <span class=\"v-progress-linear-fill\" />\n <!--\n The same text twice, each copy cut at the fill's edge so that the two complete\n each other exactly: the first in the ordinary text colour over the empty track,\n the second over the filled part, coloured to contrast with it. The second is\n hidden from screen readers, being a duplicate of text already there.\n -->\n <template v-if=\"!indeterminate && (showValue || $slots.default)\">\n <span class=\"v-progress-linear-text\">\n <slot :value=\"clamped\" :max=\"max\" :percent=\"fraction * 100\">\n {{ m.progress.percent(Math.round(fraction * 100)) }}\n </slot>\n </span>\n <span class=\"v-progress-linear-text\" data-on-fill aria-hidden=\"true\">\n <slot :value=\"clamped\" :max=\"max\" :percent=\"fraction * 100\">\n {{ m.progress.percent(Math.round(fraction * 100)) }}\n </slot>\n </span>\n </template>\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n /*\n * The element IS the track, and it takes the whole length available. Sizing it is the\n * consumer's business, through the parent or through a width of their own — a\n * consumer's style sits outside our layers and always wins.\n */\n .v-progress-linear {\n --progress-thickness: var(--vectis-control-size-progress-linear-thickness);\n position: relative;\n display: block;\n inline-size: 100%;\n block-size: var(--progress-thickness);\n border-radius: var(--vectis-radius-pill);\n background: var(--progress-track);\n font-family: var(--vectis-text-family);\n font-size: var(--vectis-text-caption-size);\n font-weight: var(--vectis-text-control-weight);\n line-height: var(--vectis-text-control-leading);\n }\n\n .v-progress-linear[data-shape='square'] {\n border-radius: 0;\n }\n\n .v-progress-linear-fill {\n position: absolute;\n inset-block: 0;\n inset-inline-start: 0;\n inline-size: calc(100% * var(--fill-fraction));\n border-radius: inherit;\n background: var(--progress-fill);\n /*\n * The fill is animated by changing its LENGTH, which the browser has to lay out\n * again on every frame. Scaling it would be cheaper, but a scale is physical: it\n * would have to be undone for the vertical orientation and again for a\n * right-to-left page, where a logical length simply works.\n *\n * The duration and easing are repeated by the clip of the text over the fill, or the\n * colour boundary would drift away from the fill's own edge for the length of the\n * transition.\n */\n transition: inline-size var(--vectis-duration-base) var(--vectis-ease-default);\n }\n\n .v-progress-linear[data-tone='accent'] {\n --progress-fill: var(--vectis-color-accent);\n --progress-track: var(--vectis-color-accent-surface);\n --tone-text-fallback: var(--vectis-color-text-on-accent);\n }\n\n .v-progress-linear[data-tone='success'] {\n --progress-fill: var(--vectis-color-success);\n --progress-track: var(--vectis-color-success-surface);\n --tone-text-fallback: var(--vectis-color-text-on-accent);\n }\n\n .v-progress-linear[data-tone='danger'] {\n --progress-fill: var(--vectis-color-danger);\n --progress-track: var(--vectis-color-danger-surface);\n --tone-text-fallback: var(--vectis-color-text-on-accent);\n }\n\n .v-progress-linear[data-tone='warning'] {\n --progress-fill: var(--vectis-color-warning);\n --progress-track: var(--vectis-color-warning-surface);\n /* White does not reach the required contrast on amber, so this tone has a text\n colour of its own. */\n --tone-text-fallback: var(--vectis-color-text-on-warning);\n }\n\n /* The neutral tone inverts text and surface rather than using a mid grey, which would\n be unreadable in one theme or the other. */\n .v-progress-linear[data-tone='neutral'] {\n --progress-fill: var(--vectis-color-text);\n --progress-track: var(--vectis-color-surface-muted);\n --tone-text-fallback: var(--vectis-color-surface);\n }\n\n /* Placed after the tones on purpose: the specificity is the same, so it is the order\n that lets a custom colour override the tone it replaces. */\n .v-progress-linear[data-custom] {\n --progress-fill: var(--custom-color);\n --progress-track: color-mix(in oklab, var(--custom-color), var(--vectis-color-surface) 85%);\n --tone-text-fallback: var(--vectis-color-text-on-accent);\n }\n\n /* The text inside the bar, in two copies laid over the same box — the track's own,\n which is why a cut expressed as a fraction of it lands exactly on the fill's edge.\n Bear in mind that the default 4px thickness cannot hold text at all: showing any\n implies asking for a thicker bar.\n\n TRAP — the two copies are COMPLEMENTARY and never superimposed: this one is cut OUT\n of the filled part, the other cut TO it, so every letter is painted exactly once.\n Removing either clip raises no error and stays invisible for as long as both copies\n resolve to the SAME colour, which is what happens wherever the adaptive colour\n function is unsupported. Where it IS supported and the two disagree — black over an\n accent fill against white text in the dark theme — the copy underneath shows its\n antialiased edges all around the letters of the one on top, and the label reads as\n a halo. */\n .v-progress-linear-text {\n /* The two insets of the cut: one on the edge the fill grows FROM, one on the edge it\n grows towards. They are named after those roles rather than after physical sides,\n so the three geometry rules further down — horizontal, right-to-left, vertical —\n all read the same pair. This copy cuts on the start side; the one over the fill\n swaps them. */\n --progress-clip-start: calc(100% * var(--fill-fraction));\n --progress-clip-end: -100vmax;\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n padding-inline: var(--vectis-space-2);\n color: var(--vectis-color-text);\n /* The large negative inset on the two sides that do NOT carry the cut is what stops\n text taller or wider than the bar from being cropped by its own clip. */\n clip-path: inset(-100vmax var(--progress-clip-end) -100vmax var(--progress-clip-start));\n /* The same duration and easing as the fill's own length, or the colour boundary\n would drift away from the fill's edge for the length of the transition. */\n transition: clip-path var(--vectis-duration-base) var(--vectis-ease-default);\n /* The bar itself is turned on its side in vertical mode; the text is put back\n upright here, since a label read sideways is not the point. */\n writing-mode: horizontal-tb;\n white-space: nowrap;\n pointer-events: none;\n }\n\n .v-progress-linear[data-value-position='start'] .v-progress-linear-text {\n justify-content: start;\n }\n\n .v-progress-linear[data-value-position='end'] .v-progress-linear-text {\n justify-content: end;\n }\n\n .v-progress-linear-text[data-on-fill] {\n /* The exact complement of the copy above: the cut moves to the other end of the\n axis, so the two together cover the whole bar and overlap nowhere. */\n --progress-clip-start: -100vmax;\n --progress-clip-end: calc(100% * (1 - var(--fill-fraction)));\n /* The per-tone fallback colour. The adaptive one cannot simply be written as a\n second declaration after it: because that declaration contains a var(), a browser\n with no support does not reject it at parse time — it would win the cascade and\n only then turn invalid, which resets the colour to inherited and leaves the\n fallback never applied. The block below is the way round it, being evaluated\n before any var() substitution. */\n color: var(--tone-text-fallback);\n }\n\n /* Where the adaptive colour function exists, the text picks black or white against\n whatever colour the fill ended up with. */\n @supports (color: contrast-color(red)) {\n .v-progress-linear-text[data-on-fill] {\n color: contrast-color(var(--progress-fill));\n }\n }\n\n /* In a right-to-left page the fill grows from the right, so the two insets change\n physical sides — the variables themselves keep their meaning. */\n .v-progress-linear:dir(rtl) .v-progress-linear-text {\n clip-path: inset(-100vmax var(--progress-clip-start) -100vmax var(--progress-clip-end));\n }\n\n /* Upright, the bar fills from the bottom.\n\n Changing the writing direction on the element is enough to turn everything: the\n axis the fill grows along becomes vertical, so the length and the thickness swap\n places, and both the fill and the animation follow with no rule written twice.\n\n TRAP — putting zero at the bottom is NOT done by reversing the direction, which\n would also apply to the text of the two copies: bidirectional reordering would then\n display \"50 %\" as \"% 50\". The fill is anchored to the far end of the axis instead.\n\n The length comes from a token because there is nothing to inherit it from: in a\n parent of automatic height the bar would collapse to nothing. A consumer's own\n height overrides it, sitting outside our layers. */\n .v-progress-linear[data-orientation='vertical'] {\n writing-mode: vertical-lr;\n inline-size: var(--vectis-control-size-progress-linear-length);\n }\n\n .v-progress-linear[data-orientation='vertical'] .v-progress-linear-fill {\n inset-inline-start: auto;\n inset-inline-end: 0;\n }\n\n /* The text now stacks along the vertical axis, whose start is the zero end — the\n bottom of the bar. */\n .v-progress-linear[data-orientation='vertical'] .v-progress-linear-text {\n flex-direction: column-reverse;\n padding-inline: 0;\n padding-block: var(--vectis-space-2);\n }\n\n /* The cut moves to the vertical axis: the fill rises from the bottom, which is that\n axis' start. It is therefore the same in both reading directions, which means the\n right-to-left rule further up has to be neutralized.\n\n TRAP — the second selector is what neutralizes it, and it is written that way on\n purpose: it is one step MORE specific than that rule, where the first selector alone\n would merely tie with it and win by source order — a far more fragile arrangement. */\n .v-progress-linear[data-orientation='vertical'] .v-progress-linear-text,\n .v-progress-linear[data-orientation='vertical']:dir(rtl) .v-progress-linear-text {\n clip-path: inset(var(--progress-clip-end) -100vmax var(--progress-clip-start) -100vmax);\n }\n\n /* When the progress cannot be measured, a bar of fixed size crosses the track from\n just outside one end to just outside the other. At each extreme it is exactly flush\n with the edge without ever pulling away from it, which is what makes the loop\n invisible and keeps the track from ever looking empty — no second bar is needed.\n\n The easing carries the whole impression: a gradual entry, a quick crossing, a damped\n exit. A linear run, or an asymmetric curve, immediately reads as mechanical.\n\n The movement is expressed in LOGICAL properties — a position and a size as\n percentages of the track — rather than as a transform. One definition then serves\n the horizontal, the vertical and the right-to-left cases, where a transform, being\n physical, would need its own keyframes per axis and a flip per direction. */\n .v-progress-linear[data-indeterminate] {\n overflow: hidden;\n }\n\n .v-progress-linear[data-indeterminate] .v-progress-linear-fill {\n /* The starting position is derived from this size, and the two must stay tied: that\n is what has the bar begin exactly off the track rather than half on it. */\n --progress-bar: 40%;\n /* The anchoring is put back at the start of the axis, vertical case included — where\n a measurable progress anchors at the far end instead. */\n inset-inline-start: 0;\n inset-inline-end: auto;\n inline-size: var(--progress-bar);\n /* The transition of a measurable progress has no place here: switching to this mode\n would otherwise be animated as the bar growing to its new size. */\n transition: none;\n animation: v-progress-linear-indeterminate var(--vectis-duration-1500) var(--vectis-ease-in-out)\n infinite;\n }\n\n @keyframes v-progress-linear-indeterminate {\n from {\n inset-inline-start: calc(-1 * var(--progress-bar));\n }\n\n to {\n inset-inline-start: 100%;\n }\n }\n\n /* Turned upright, the axis runs downwards, so the bar would travel from the top down —\n the opposite of a measurable fill, which rises from the bottom. The same keyframes\n are simply read backwards, which changes nothing else BECAUSE the easing curve is\n symmetric; an asymmetric one would need a second set of keyframes.\n\n Nothing is needed for a right-to-left page: the logical inset already follows the\n reading direction. */\n .v-progress-linear[data-orientation='vertical'][data-indeterminate] .v-progress-linear-fill {\n animation-direction: reverse;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-progress-linear-fill,\n .v-progress-linear-text {\n transition: none;\n }\n\n /* Slowed down and not stopped: a motionless loader no longer says that anything is\n happening, which is the one thing it exists to say. */\n .v-progress-linear[data-indeterminate] .v-progress-linear-fill {\n animation-duration: var(--vectis-duration-5000);\n }\n }\n}\n</style>\n"],"mappings":""}