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,106 @@
1
+ import { useMessages as e } from "../../i18n/state.js";
2
+ import t from "../VTypography/VTypography.js";
3
+ import { hueOf as n } from "./color.js";
4
+ import { computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, defineComponent as l, normalizeStyle as u, openBlock as d, renderSlot as f, toDisplayString as p, unref as m, withCtx as h } from "vue";
5
+ //#region src/components/VCalendar/VCalendarEvent.vue?vue&type=script&setup=true&lang.ts
6
+ var g = [
7
+ "data-event-id",
8
+ "data-layout",
9
+ "data-custom",
10
+ "data-continues-before",
11
+ "data-continues-after",
12
+ "data-dragging",
13
+ "data-rejected",
14
+ "data-grabbed",
15
+ "data-ghost",
16
+ "aria-label",
17
+ "aria-roledescription",
18
+ "aria-describedby",
19
+ "inert"
20
+ ], _ = { class: "v-calendar-event-body" }, v = { class: "v-calendar-event-title" }, y = {
21
+ key: 0,
22
+ class: "v-calendar-event-time"
23
+ }, b = {
24
+ key: 0,
25
+ class: "v-calendar-event-handle",
26
+ "data-calendar-handle": "",
27
+ "aria-hidden": "true"
28
+ }, x = /*@__PURE__*/ l({
29
+ __name: "VCalendarEvent",
30
+ props: {
31
+ event: {},
32
+ layout: { default: "block" },
33
+ timeText: { default: "" },
34
+ continuesBefore: {
35
+ type: Boolean,
36
+ default: !1
37
+ },
38
+ continuesAfter: {
39
+ type: Boolean,
40
+ default: !1
41
+ },
42
+ resizable: {
43
+ type: Boolean,
44
+ default: !1
45
+ },
46
+ dragging: {
47
+ type: Boolean,
48
+ default: !1
49
+ },
50
+ rejected: {
51
+ type: Boolean,
52
+ default: !1
53
+ },
54
+ grabbed: {
55
+ type: Boolean,
56
+ default: !1
57
+ },
58
+ hintId: { default: void 0 },
59
+ ghostOf: { default: void 0 }
60
+ },
61
+ setup(l) {
62
+ let x = l, S = e(), C = r(() => n(x.ghostOf ?? x.event.id)), w = r(() => x.event.color ? { "--calendar-event-color": x.event.color } : { "--vectis-calendar-event-hue": String(C.value) }), T = r(() => x.timeText ? `${x.event.title}, ${x.timeText}` : x.event.title);
63
+ return (e, n) => (d(), o("button", {
64
+ type: "button",
65
+ class: "v-calendar-event",
66
+ "data-event-id": String(l.event.id),
67
+ "data-layout": l.layout,
68
+ "data-custom": l.event.color ? "" : void 0,
69
+ "data-continues-before": l.continuesBefore ? "" : void 0,
70
+ "data-continues-after": l.continuesAfter ? "" : void 0,
71
+ "data-dragging": l.dragging ? "" : void 0,
72
+ "data-rejected": l.rejected ? "" : void 0,
73
+ "data-grabbed": l.grabbed ? "" : void 0,
74
+ "data-ghost": l.ghostOf === void 0 ? void 0 : "",
75
+ style: u(w.value),
76
+ "aria-label": T.value,
77
+ "aria-roledescription": m(S).calendar.eventRoleDescription,
78
+ "aria-describedby": l.hintId,
79
+ inert: l.ghostOf !== void 0 || void 0
80
+ }, [s("span", _, [f(e.$slots, "default", {
81
+ event: l.event,
82
+ layout: l.layout,
83
+ timeText: l.timeText,
84
+ continuesBefore: l.continuesBefore,
85
+ continuesAfter: l.continuesAfter,
86
+ dragging: l.dragging,
87
+ grabbed: l.grabbed
88
+ }, () => [
89
+ s("span", v, p(l.event.title), 1),
90
+ l.layout === "block" && l.timeText ? (d(), o("span", y, p(l.timeText), 1)) : a("", !0),
91
+ l.layout === "block" && l.event.description ? (d(), i(t, {
92
+ key: 1,
93
+ as: "span",
94
+ variant: "caption",
95
+ class: "v-calendar-event-description"
96
+ }, {
97
+ default: h(() => [c(p(l.event.description), 1)]),
98
+ _: 1
99
+ })) : a("", !0)
100
+ ])]), l.resizable && l.layout === "block" ? (d(), o("span", b)) : a("", !0)], 12, g));
101
+ }
102
+ });
103
+ //#endregion
104
+ export { x as default };
105
+
106
+ //# sourceMappingURL=VCalendarEvent.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VCalendarEvent.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/VCalendar/VCalendarEvent.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"E extends CalendarEvent\">\n// @a11y @core\n/**\n * One event, as it is drawn on the calendar.\n *\n * It is internal to VCalendar and has no story of its own: its documentation lives with\n * the component that renders it (the `VMenuPanel` and `VComboboxOption` precedent). It\n * exists because the same card is drawn from three places in two shapes — a block in a day\n * column, a chip in the all-day band or a month cell — and writing it three times would\n * triplicate the accessible name, the colour table and the slot.\n *\n * It is a real `<button>`, which is what makes an event reachable and activatable with no\n * JavaScript of its own. The only script here derives the colour; everything else — where\n * the card goes, and what happens when it is dragged — belongs to the calendar, which is\n * the thing that knows about the grid.\n */\nimport { computed } from 'vue'\n\nimport VTypography from '../VTypography/VTypography.vue'\n\nimport { useMessages } from '../../i18n/state'\n\nimport { hueOf } from './color'\nimport type { CalendarEvent, CalendarEventId } from './types'\n\nexport interface CalendarEventProps<T> {\n /** The event this card stands for. */\n event: T\n /**\n * Which shape to take: a block, which fills the box the calendar gives it and can show a\n * second line, or a chip, which is one line high and sits in a row of others.\n */\n layout?: 'block' | 'chip'\n /** The event's times, already written out for the reader by the calendar. */\n timeText?: string\n /** Whether the event carries on past the start or the end of what is on show. */\n continuesBefore?: boolean\n continuesAfter?: boolean\n /** Shows the strip along the bottom edge that the event's end is dragged by. */\n resizable?: boolean\n /** Whether the card is being dragged with a pointer right now. */\n dragging?: boolean\n /**\n * Whether letting go now would write nothing: the pointer has left the calendar, and the event\n * is about to return to where the faded echo shows it started.\n *\n * It is separate from `dragging` rather than folded into it because a refused card is ALSO\n * being dragged — the two are orthogonal, and the stylesheet reads both. Named for what the\n * card knows, which is that its drop will not be taken; a card knows nothing of a view it\n * might be outside of.\n */\n rejected?: boolean\n /** Whether the card has been taken hold of with the keyboard. */\n grabbed?: boolean\n /** How the card says it can be moved, read from a node the calendar shares between them. */\n hintId?: string\n /**\n * Marks this card as the faded echo left behind where a dragged event STARTED, and names\n * the event it echoes.\n *\n * It carries the original id rather than a bare boolean because the colour is derived from\n * an id: a ghost has to be given a distinct one so the layout can tell the two apart, and\n * without this the echo would come out a different colour from the card it belongs to.\n */\n ghostOf?: CalendarEventId\n}\n\nconst props = withDefaults(defineProps<CalendarEventProps<E>>(), {\n layout: 'block',\n timeText: '',\n continuesBefore: false,\n continuesAfter: false,\n resizable: false,\n dragging: false,\n rejected: false,\n grabbed: false,\n hintId: undefined,\n ghostOf: undefined,\n})\n\ndefineSlots<{\n /** The whole content of the card, replacing the title and the times. */\n default?(props: {\n event: E\n layout: 'block' | 'chip'\n timeText: string\n continuesBefore: boolean\n continuesAfter: boolean\n dragging: boolean\n grabbed: boolean\n }): unknown\n}>()\n\nconst m = useMessages()\n\n/*\n * A colour given by the consumer is used as it stands; otherwise a hue is derived from the\n * event's id and the token layer supplies the lightness and the chroma that go with it.\n * The two are kept apart by an attribute rather than by a fallback chain, because the\n * custom case needs a DIFFERENT recipe and not merely a different value — see the\n * stylesheet below.\n */\nconst hue = computed(() => hueOf(props.ghostOf ?? props.event.id))\n\nconst style = computed(() =>\n props.event.color\n ? { '--calendar-event-color': props.event.color }\n : { '--vectis-calendar-event-hue': String(hue.value) },\n)\n\n/**\n * What a screen reader hears: the title, then when it happens. The visible card may hide\n * the times when it is too short to hold them, so the name has to carry them itself —\n * \"Standup\" alone would leave a reader unable to tell two days of it apart.\n */\nconst accessibleName = computed(() =>\n props.timeText ? `${props.event.title}, ${props.timeText}` : props.event.title,\n)\n</script>\n\n<template>\n <button\n type=\"button\"\n class=\"v-calendar-event\"\n :data-event-id=\"String(event.id)\"\n :data-layout=\"layout\"\n :data-custom=\"event.color ? '' : undefined\"\n :data-continues-before=\"continuesBefore ? '' : undefined\"\n :data-continues-after=\"continuesAfter ? '' : undefined\"\n :data-dragging=\"dragging ? '' : undefined\"\n :data-rejected=\"rejected ? '' : undefined\"\n :data-grabbed=\"grabbed ? '' : undefined\"\n :data-ghost=\"ghostOf !== undefined ? '' : undefined\"\n :style=\"style\"\n :aria-label=\"accessibleName\"\n :aria-roledescription=\"m.calendar.eventRoleDescription\"\n :aria-describedby=\"hintId\"\n :inert=\"ghostOf !== undefined ? true : undefined\"\n >\n <!--\n The content sits in a box of its own because the CARD is the container the stylesheet\n queries, and an element cannot be styled by its own container query. The layout that\n has to change when a card gets short — a column of two lines becoming one row — must\n therefore live on a descendant. It is also why the padding belongs here rather than on\n the button: a card cannot zero its own.\n -->\n <span class=\"v-calendar-event-body\">\n <slot\n :event=\"event\"\n :layout=\"layout\"\n :time-text=\"timeText\"\n :continues-before=\"continuesBefore\"\n :continues-after=\"continuesAfter\"\n :dragging=\"dragging\"\n :grabbed=\"grabbed\"\n >\n <span class=\"v-calendar-event-title\">{{ event.title }}</span>\n <span v-if=\"layout === 'block' && timeText\" class=\"v-calendar-event-time\">\n {{ timeText }}\n </span>\n <VTypography\n v-if=\"layout === 'block' && event.description\"\n as=\"span\"\n variant=\"caption\"\n class=\"v-calendar-event-description\"\n >\n {{ event.description }}\n </VTypography>\n </slot>\n </span>\n\n <!--\n The strip the event's end is dragged by.\n\n It is a `span` and NOT a control, which is what keeps it out of the accessibility tree\n and away from `nested-interactive`: a button inside a button is invalid HTML and a\n blocking accessibility failure at once. It is a pointer affordance and nothing else,\n and its keyboard equivalent lives on the card itself as Shift with the arrow keys —\n which is why hiding it costs a reader nothing.\n -->\n <span\n v-if=\"resizable && layout === 'block'\"\n class=\"v-calendar-event-handle\"\n data-calendar-handle\n aria-hidden=\"true\"\n />\n </button>\n</template>\n\n<style>\n@layer vectis.components {\n .v-calendar-event {\n /*\n * The three colours of a card, named by what they paint rather than by where they come\n * from — which is what lets the custom block below swap the SOURCE of all three without\n * touching a single rule that consumes them.\n */\n --calendar-event-face: var(--vectis-color-event-surface);\n --calendar-event-edge: var(--vectis-color-event-border);\n --calendar-event-ink: var(--vectis-color-event-text);\n\n /* The handle is placed against this box, so the card has to establish one. */\n position: relative;\n display: flex;\n overflow: hidden;\n /*\n * The card is what the body below is measured against.\n *\n * `size` and not `inline-size`, which is what the library's other four containers use:\n * the question being asked here is about HEIGHT, since that is what a short event runs\n * out of. It is safe because a card's two dimensions are both set outright by\n * `.v-calendar-block` — size containment therefore removes an influence nothing was\n * exercising. Asking in minutes instead would have meant calibrating against\n * `--vectis-control-size-calendar-hour`, and being silently wrong for anyone who\n * overrode it.\n */\n container-type: size;\n border: 1px solid var(--calendar-event-edge);\n /* The leading edge is what carries the colour at a glance, so it is drawn thicker. It\n is a border and not a background stripe: under Windows forced-colors a background is\n forced to Canvas and vanishes, where a border keeps a colour of its own. */\n border-inline-start: 3px solid var(--calendar-event-edge);\n border-radius: var(--vectis-radius-interactive);\n background: var(--calendar-event-face);\n color: var(--calendar-event-ink);\n font-family: var(--vectis-text-family);\n text-align: start;\n cursor: pointer;\n transition:\n box-shadow var(--vectis-duration-fast) var(--vectis-ease-default),\n filter var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n /*\n * A colour the consumer chose is an arbitrary value, so the card is built so that NOTHING\n * is ever written on top of it: it paints the edge, and the face is a faint wash of it\n * over the page's own surface — which also makes it follow the theme with no second\n * setting. The text stays the page's text colour, whose contrast against that surface is\n * already guaranteed. This is the deliberate difference from VChip, where a fully\n * coloured chip leaves the check to whoever chose the colour.\n */\n .v-calendar-event[data-custom] {\n --calendar-event-edge: var(--calendar-event-color);\n --calendar-event-face: color-mix(\n in oklab,\n var(--calendar-event-color) 14%,\n var(--vectis-color-surface)\n );\n --calendar-event-ink: var(--vectis-color-text);\n }\n\n .v-calendar-event-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: 1px;\n /* Without this a flex item refuses to shrink past its content, and a card too short for\n its own text would push its title out of the clip instead of cropping it. */\n min-block-size: 0;\n min-inline-size: 0;\n overflow: hidden;\n padding: var(--vectis-space-1) var(--vectis-space-2);\n }\n\n /*\n * A card too short for two lines puts them on ONE: the title first and ellipsized, the\n * time after it, and the description dropped — which is the only way a quarter of an hour\n * shows anything at all. Three rem is where a title line, a time line, the gap and the\n * padding stop fitting; below it there is room for exactly one line.\n *\n * The threshold is a literal because a container query takes no custom properties — the\n * same constraint VPagination's steps are written under.\n */\n @container (max-height: 3rem) {\n .v-calendar-event[data-layout='block'] .v-calendar-event-body {\n flex-direction: row;\n align-items: center;\n gap: var(--vectis-space-1);\n padding-block: 0;\n }\n\n .v-calendar-event[data-layout='block'] .v-calendar-event-title {\n flex: 1;\n min-inline-size: 0;\n }\n\n .v-calendar-event[data-layout='block'] .v-calendar-event-time {\n flex: none;\n }\n\n /* There is no room for a third thing, and the title is what identifies the event. */\n .v-calendar-event[data-layout='block'] .v-calendar-event-description {\n display: none;\n }\n }\n\n /*\n * The shortest card there is: one slot, which at the default hour height is sixteen pixels,\n * leaving fourteen once the border is taken. A line of the title at its normal leading is\n * eighteen — so the leading is what gives, down to the glyphs themselves. Nothing smaller\n * is available: twelve pixels is already the smallest type role the library has.\n *\n * This tier exists because a card may no longer grow past its own length: it is the price\n * of a quarter of an hour that stays inside its slot, and it is paid in leading rather than\n * in a card that covers the next one.\n */\n @container (max-height: 1.5rem) {\n .v-calendar-event[data-layout='block'] .v-calendar-event-title,\n .v-calendar-event[data-layout='block'] .v-calendar-event-time {\n line-height: 1;\n }\n\n /* Half the strip, or half of a sixteen-pixel card would resize rather than move it. */\n .v-calendar-event[data-layout='block'] .v-calendar-event-handle {\n block-size: calc(var(--vectis-control-size-calendar-handle) / 2);\n }\n }\n\n .v-calendar-event:hover {\n filter: brightness(0.97);\n }\n\n /*\n * A card being moved is lifted off the grid and made slightly transparent, so the hours\n * underneath stay readable while it travels — a solid card would hide the very rules the\n * reader is aiming at. `pointer-events: none` matters as much: the pointer is captured by\n * the grid, and a card under the cursor would otherwise take the hover of every cell it\n * passed over.\n */\n .v-calendar-event[data-dragging] {\n opacity: 0.75;\n box-shadow: var(--vectis-shadow-md);\n pointer-events: none;\n z-index: 3;\n }\n\n /*\n * A card whose drop will not be taken: the pointer has left the calendar, and letting go here\n * puts the event back where the echo shows it started.\n *\n * THREE channels, because one is never enough. The colour is the danger role, reached through\n * the same three local variables `[data-custom]` swaps — which is also what repaints a card the\n * consumer coloured, that rule sitting higher up this sheet. The LIFT is taken away, so a card\n * that will not land visibly stops being carried: the one cue that costs no colour at all. And\n * the border goes DOTTED, the only one of the three surviving Windows forced-colors, where the\n * face is forced to Canvas and every card would otherwise look identical — dotted rather than\n * dashed because dashed is already the echo's language, and a refused drop must not read as a\n * memory of one.\n *\n * `opacity: 0.75` is deliberately left in place: it is what keeps the hours under the card\n * readable, and the reader is still aiming with it.\n *\n * TRAP — this rule must stay BELOW `[data-dragging]`. Both are (0,2,0) and a refused card is\n * always also a dragged one, so the later rule is the whole of the arbitration. That is\n * legitimate here and only here: these two live in the SAME sheet, where the internal order is\n * ours to decide — between two component sheets it would be the consumer's bundler deciding.\n */\n .v-calendar-event[data-rejected] {\n --calendar-event-face: var(--vectis-color-danger-surface);\n --calendar-event-edge: var(--vectis-color-danger-border);\n --calendar-event-ink: var(--vectis-color-danger-text);\n\n border-style: dotted;\n box-shadow: none;\n }\n\n /*\n * The echo left where a dragged event started, so the reader can see what they are moving\n * it FROM — without it a long drag ends with no idea what has just been given up.\n *\n * Faded rather than outlined, and dashed rather than solid, so that it reads as a memory\n * and not as a second event: at a glance the only card that looks real is the one under the\n * pointer. It sits UNDER everything (`z-index: 0`), since it is the one thing on the grid\n * that nothing should ever be hidden behind.\n *\n * `inert` in the template is what keeps it out of the accessibility tree and out of reach\n * of the pointer, in one attribute — a duplicate announced a second time would be noise,\n * and a focusable copy inside a hidden subtree is an axe violation of its own.\n */\n .v-calendar-event[data-ghost] {\n opacity: 0.4;\n border-style: dashed;\n z-index: 0;\n }\n\n /* Held by the keyboard: the same lift, but marked with the focus ring's own colour, since\n there is no pointer to show where it is going. */\n .v-calendar-event[data-grabbed] {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n box-shadow: var(--vectis-shadow-md);\n z-index: 3;\n }\n\n .v-calendar-event-handle {\n position: absolute;\n inset-block-end: 0;\n inset-inline: 0;\n block-size: var(--vectis-control-size-calendar-handle);\n /* Dragging here IS how the end is set, so it must do nothing else: no scrolling under a\n finger, and no selecting the text it sits over. */\n touch-action: none;\n cursor: ns-resize;\n }\n\n /* The grip appears on hover and while the card is being resized, never permanently: a\n short card is mostly handle, and a line across every event all the time reads as a\n border nobody asked for. */\n .v-calendar-event-handle::after {\n content: '';\n position: absolute;\n inset-block-end: 2px;\n inset-inline-start: 50%;\n inline-size: var(--vectis-space-4);\n block-size: 2px;\n translate: -50% 0;\n border-radius: var(--vectis-radius-pill);\n background: var(--calendar-event-ink);\n opacity: 0;\n transition: opacity var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n .v-calendar-event:hover .v-calendar-event-handle::after,\n .v-calendar-event[data-dragging] .v-calendar-event-handle::after {\n opacity: 0.6;\n }\n\n .v-calendar-event:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: calc(-1 * var(--vectis-focus-ring-width));\n }\n\n /* An event running past what is on show loses the corner on that side, so the card reads\n as cut off rather than as merely small. */\n .v-calendar-event[data-continues-before] {\n border-start-start-radius: 0;\n border-start-end-radius: 0;\n border-block-start-style: dashed;\n }\n\n .v-calendar-event[data-continues-after] {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n border-block-end-style: dashed;\n }\n\n /*\n * A chip fills the box it was put in — a lane of the all-day band, whose grid row is\n * already the right height — unless the consumer of this class names a height instead.\n *\n * TRAP — that indirection is not a nicety, it is the only correct shape. This selector is\n * (0,2,0) and `.v-calendar-month-chip`, which needs a different height, is (0,1,0) in\n * ANOTHER SHEET: matching specificity would hand the winner to whichever order the\n * consumer's bundler happens to emit, and beating it would need a three-class compound.\n * Routing through a property this rule already reads is the library's documented way out,\n * the one `.v-table-title` takes on `--typography-color`.\n */\n .v-calendar-event[data-layout='chip'] {\n block-size: var(--calendar-chip-height, 100%);\n }\n\n .v-calendar-event[data-layout='chip'] .v-calendar-event-body {\n flex-direction: row;\n align-items: center;\n gap: var(--vectis-space-1);\n padding-block: 0;\n }\n\n .v-calendar-event-title {\n overflow: hidden;\n font-size: var(--vectis-text-body-sm-size);\n font-weight: var(--vectis-font-weight-medium);\n line-height: var(--vectis-text-body-sm-leading);\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .v-calendar-event-time {\n overflow: hidden;\n font-size: var(--vectis-text-caption-size);\n line-height: var(--vectis-text-caption-leading);\n text-overflow: ellipsis;\n white-space: nowrap;\n /* The times are secondary to the title, but the card's colour is already doing the\n quiet work — a muted token here would fight it, so the same ink at less weight. */\n opacity: 0.85;\n }\n\n .v-calendar-event-description {\n overflow: hidden;\n /* The card's height is the event's length, so a description shows only where there is\n genuinely room for it: it takes whatever is left and disappears when that is nothing. */\n min-block-size: 0;\n color: inherit;\n text-overflow: ellipsis;\n opacity: 0.85;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-calendar-event,\n .v-calendar-event-handle::after {\n transition: none;\n }\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEA,IAAM,IAAQ,GA0BR,IAAI,EAAY,GAShB,IAAM,QAAe,EAAM,EAAM,WAAW,EAAM,MAAM,EAAE,CAAC,GAE3D,IAAQ,QACZ,EAAM,MAAM,QACR,EAAE,0BAA0B,EAAM,MAAM,MAAM,IAC9C,EAAE,+BAA+B,OAAO,EAAI,KAAK,EAAE,CACzD,GAOM,IAAiB,QACrB,EAAM,WAAW,GAAG,EAAM,MAAM,MAAM,IAAI,EAAM,aAAa,EAAM,MAAM,KAC3E;yBAIE,EAiES,UAAA;GAhEP,MAAK;GACL,OAAM;GACL,iBAAe,OAAO,EAAA,MAAM,EAAE;GAC9B,eAAa,EAAA;GACb,eAAa,EAAA,MAAM,QAAK,KAAQ,KAAA;GAChC,yBAAuB,EAAA,kBAAe,KAAQ,KAAA;GAC9C,wBAAsB,EAAA,iBAAc,KAAQ,KAAA;GAC5C,iBAAe,EAAA,WAAQ,KAAQ,KAAA;GAC/B,iBAAe,EAAA,WAAQ,KAAQ,KAAA;GAC/B,gBAAc,EAAA,UAAO,KAAQ,KAAA;GAC7B,cAAY,EAAA,YAAY,KAAA,IAAiB,KAAA,IAAR;GACjC,OAAK,EAAE,EAAA,KAAK;GACZ,cAAY,EAAA;GACZ,wBAAsB,EAAA,CAAA,CAAC,CAAC,SAAS;GACjC,oBAAkB,EAAA;GAClB,OAAO,EAAA,YAAY,KAAA,KAAmB,KAAA;MASvC,EAuBO,QAvBP,GAuBO,CAtBL,EAqBO,EAAA,QAAA,WAAA;GApBJ,OAAO,EAAA;GACP,QAAQ,EAAA;GACR,UAAW,EAAA;GACX,iBAAkB,EAAA;GAClB,gBAAiB,EAAA;GACjB,UAAU,EAAA;GACV,SAAS,EAAA;WAcL;GAZL,EAA6D,QAA7D,GAA6D,EAArB,EAAA,MAAM,KAAK,GAAA,CAAA;GACvC,EAAA,WAAM,WAAgB,EAAA,YAAA,EAAA,GAAlC,EAEO,QAFP,GAEO,EADF,EAAA,QAAQ,GAAA,CAAA,KAAA,EAAA,IAAA,EAAA;GAGL,EAAA,WAAM,WAAgB,EAAA,MAAM,eAAA,EAAA,GADpC,EAOc,GAAA;;IALZ,IAAG;IACH,SAAQ;IACR,OAAM;;qBAEiB,CAAA,EAAA,EAApB,EAAA,MAAM,WAAW,GAAA,CAAA,CAAA,CAAA;;;QAelB,EAAA,aAAa,EAAA,WAAM,WAAA,EAAA,GAD3B,EAKE,QALF,CAKE,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-calendar-month{block-size:100%;min-block-size:0;font-family:var(--vectis-text-family);color:var(--vectis-color-text);flex-direction:column;display:flex;overflow:auto}.v-calendar-month[data-outside]{cursor:not-allowed}.v-calendar-month-head,.v-calendar-month-week{grid-template-columns:repeat(var(--calendar-columns), minmax(0, 1fr));display:grid}.v-calendar-month-head{z-index:1;background:var(--vectis-color-surface);border-block-end:1px solid var(--vectis-color-border);position:sticky;inset-block-start:0}.v-calendar-month-weekday{padding-block:var(--vectis-space-2);color:var(--vectis-color-text-muted);font-size:var(--vectis-text-overline-size);font-weight:var(--vectis-text-overline-weight);letter-spacing:var(--vectis-text-overline-tracking);text-align:center;text-transform:uppercase}.v-calendar-month-grid[data-edge]:after{content:"";inline-size:var(--vectis-control-size-calendar-edge);background:var(--vectis-color-accent-surface);z-index:1;pointer-events:none;position:absolute;inset-block:0}.v-calendar-month-grid[data-edge=start]:after{inset-inline-start:0}.v-calendar-month-grid[data-edge=end]:after{inset-inline-end:0}.v-calendar-month-grid{flex-direction:column;flex:1;min-block-size:0;display:flex;position:relative}.v-calendar-month-week{min-block-size:var(--vectis-control-size-calendar-month-cell);flex:1}.v-calendar-month-cell{padding:var(--vectis-space-1);border-block-start:1px solid var(--vectis-color-border);border-inline-start:1px solid var(--vectis-color-border);cursor:pointer;flex-direction:column;gap:2px;display:flex;overflow:hidden}.v-calendar-month-cell:first-child{border-inline-start:none}.v-calendar-month-cell:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:calc(-1 * var(--vectis-focus-ring-width))}.v-calendar-month-cell[data-adjacent]{background:var(--vectis-color-surface-sunken);color:var(--vectis-color-text-subtle)}.v-calendar-month-day{inline-size:var(--vectis-control-height-sm);block-size:var(--vectis-control-height-sm);border-radius:var(--vectis-radius-pill);color:inherit;font-family:inherit;font-size:var(--vectis-text-body-md-size);cursor:pointer;transition:background-color var(--vectis-duration-fast) var(--vectis-ease-default);background:0 0;border:none;flex:none;justify-content:center;align-self:center;align-items:center;display:flex}.v-calendar-month-day:hover{background:var(--vectis-color-surface-muted)}.v-calendar-month-day:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset)}.v-calendar-month-cell[data-today] .v-calendar-month-day{background:var(--vectis-color-accent);color:var(--vectis-color-text-on-accent);font-weight:var(--vectis-font-weight-semibold)}.v-calendar-month-chip{--calendar-chip-height:var(--vectis-control-size-calendar-allday-lane);flex:none}.v-calendar-month-more{padding-inline:var(--vectis-space-1);color:var(--vectis-color-text-muted);font-family:inherit;font-size:var(--vectis-text-caption-size);text-align:start;cursor:pointer;background:0 0;border:none;flex:none}.v-calendar-month-more:hover{color:var(--vectis-color-text);text-decoration:underline}.v-calendar-month-more:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset)}@media (prefers-reduced-motion:reduce){.v-calendar-month-day{transition:none}}}
@@ -0,0 +1,60 @@
1
+ import { HourFormat } from '../../utils/time.js';
2
+ import { MonthCell } from './layout.js';
3
+ import { CalendarEvent, CalendarEventId, CalendarEventTimes } from './types.js';
4
+ export interface CalendarMonthProps<T> {
5
+ /** The weeks, already padded to a fixed height and filtered to the visible weekdays. */
6
+ weeks: MonthCell[][];
7
+ events: T[];
8
+ locale: string;
9
+ hourFormat: HourFormat;
10
+ today: string | null;
11
+ /** How many events a day shows before it starts counting the rest. */
12
+ eventLimit: number;
13
+ /** Whether events can be moved from one day to another. */
14
+ editable: boolean;
15
+ /** The node telling a reader how a chip can be moved, shared by every one of them. */
16
+ hintId: string;
17
+ /** How long a drag rests against an edge before the month turns. Zero turns paging off. */
18
+ edgeStepDelay: number;
19
+ label: string;
20
+ }
21
+ declare const __VLS_export: <E extends CalendarEvent>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
22
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<(CalendarMonthProps<E> & {
23
+ /** Which day holds the tab stop. Only the date matters here; the hour is the grid's affair. */
24
+ focused: string;
25
+ }) & {
26
+ onAnnounce?: ((message: string) => any) | undefined;
27
+ onStep?: ((delta: 1 | -1) => any) | undefined;
28
+ "onDay-activate"?: ((iso: string) => any) | undefined;
29
+ "onCell-activate"?: ((iso: string) => any) | undefined;
30
+ "onEvent-activate"?: ((event: E) => any) | undefined;
31
+ "onEvent-drop"?: ((id: CalendarEventId, times: CalendarEventTimes, kind: "move") => any) | undefined;
32
+ "onUpdate:focused"?: ((value: string) => any) | undefined;
33
+ }> & (typeof globalThis extends {
34
+ __VLS_PROPS_FALLBACK: infer P;
35
+ } ? P : {});
36
+ expose: (exposed: import('vue').ShallowUnwrapRef<{
37
+ focus: () => void;
38
+ scrollToMinutes: () => void;
39
+ }>) => void;
40
+ attrs: any;
41
+ slots: {
42
+ event?(props: {
43
+ event: E;
44
+ layout: "block" | "chip";
45
+ timeText: string;
46
+ continuesBefore: boolean;
47
+ continuesAfter: boolean;
48
+ }): unknown;
49
+ };
50
+ emit: (((evt: "announce", message: string) => void) & ((evt: "step", delta: 1 | -1) => void) & ((evt: "day-activate", iso: string) => void) & ((evt: "cell-activate", iso: string) => void) & ((evt: "event-activate", event: E) => void) & ((evt: "event-drop", id: CalendarEventId, times: CalendarEventTimes, kind: "move") => void)) & ((event: "update:focused", value: string) => void);
51
+ }>) => import('vue').VNode & {
52
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
53
+ };
54
+ declare const _default: typeof __VLS_export;
55
+ export default _default;
56
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
57
+ [K in keyof T]: T[K];
58
+ } : {
59
+ [K in keyof T as K]: T[K];
60
+ }) & {};
@@ -0,0 +1,9 @@
1
+ import './VCalendarMonth.css';
2
+ import e from "./VCalendarMonth.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/components/VCalendar/VCalendarMonth.vue
5
+ var t = e;
6
+ //#endregion
7
+ export { t as default };
8
+
9
+ //# sourceMappingURL=VCalendarMonth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VCalendarMonth.js","names":[],"sources":["../../../src/components/VCalendar/VCalendarMonth.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"E extends CalendarEvent\">\n// @a11y @keyboard @core\n/**\n * The month view: the weeks stacked one under another, each day a square holding as many of\n * its events as will fit.\n *\n * It is internal to VCalendar and has no story of its own — its documentation lives with\n * the component that renders it. Like the time grid it computes nothing about dates: it is\n * handed the weeks already cut and filtered, and turns them into boxes.\n *\n * A day here is not a column of hours but a SUMMARY, so the events are drawn as chips in\n * the order the day would be read out — the all-day ones first, then the rest by when they\n * start — and a day with more than it can show says how many are left rather than silently\n * dropping them.\n */\nimport { computed, nextTick, ref, useId, watch } from 'vue'\n\nimport { formatDisplay as formatDate } from '../../utils/date'\nimport { isRtl as isElementRtl } from '../../utils/direction'\nimport { clamp } from '../../utils/number'\nimport { formatDisplay as formatTimeDisplay, type HourFormat } from '../../utils/time'\n\nimport { useMessages } from '../../i18n/state'\n\nimport VCalendarEvent from './VCalendarEvent.vue'\nimport { calendarIntent } from './keyboard'\nimport { EDGE_BAND, useEdgeStep } from './edgeStep'\nimport {\n DRAG_THRESHOLD,\n eventsByDay,\n inlineEdgeAt,\n isAllDayEvent,\n moveEventToDay,\n pointToMonthCell,\n pointWithin,\n timesOf,\n type MonthCell,\n} from './layout'\nimport type { CalendarEvent, CalendarEventId, CalendarEventTimes } from './types'\n\nexport interface CalendarMonthProps<T> {\n /** The weeks, already padded to a fixed height and filtered to the visible weekdays. */\n weeks: MonthCell[][]\n events: T[]\n locale: string\n hourFormat: HourFormat\n today: string | null\n /** How many events a day shows before it starts counting the rest. */\n eventLimit: number\n /** Whether events can be moved from one day to another. */\n editable: boolean\n /** The node telling a reader how a chip can be moved, shared by every one of them. */\n hintId: string\n /** How long a drag rests against an edge before the month turns. Zero turns paging off. */\n edgeStepDelay: number\n label: string\n}\n\nconst props = defineProps<CalendarMonthProps<E>>()\n\nconst emit = defineEmits<{\n /** A day was asked to be opened on its own. */\n 'day-activate': [iso: string]\n /** An empty part of a day was activated. */\n 'cell-activate': [iso: string]\n 'event-activate': [event: E]\n /** An event was dropped on another day. A month has no hours, so it is only ever a move. */\n 'event-drop': [id: CalendarEventId, times: CalendarEventTimes, kind: 'move']\n /** Something happened that a reader who cannot see the grid needs told. */\n announce: [message: string]\n step: [delta: -1 | 1]\n}>()\n\n/** Which day holds the tab stop. Only the date matters here; the hour is the grid's affair. */\nconst focused = defineModel<string>('focused', { required: true })\n\ndefineSlots<{\n event?(props: {\n event: E\n layout: 'block' | 'chip'\n timeText: string\n continuesBefore: boolean\n continuesAfter: boolean\n }): unknown\n}>()\n\nconst m = useMessages()\nconst uid = useId()\n\nconst cellId = (iso: string) => `${uid}-m-${iso}`\n\n/** The column headings, taken from the first week so they always match the columns drawn. */\nconst weekdayNames = computed(() =>\n (props.weeks[0] ?? []).map((cell) => formatDate(cell.iso, props.locale, { weekday: 'short' })),\n)\n\n/*\n * The two labels every square carries, worked out once per cell rather than once per USE.\n *\n * `longDay` is asked for twice in the template — the square's own `aria-label`, then the\n * name of the button that opens the day — so the 42 cells cost 126 `Intl` formats a render,\n * and the drag re-renders the whole grid on every `pointermove` through `gesture.preview`.\n * The map depends on the weeks and the locale alone, so it survives every frame of a drag.\n */\nconst dayLabels = computed(() => {\n const map = new Map<string, { number: string; long: string }>()\n for (const week of props.weeks) {\n for (const cell of week) {\n map.set(cell.iso, {\n number: formatDate(cell.iso, props.locale, { day: 'numeric' }),\n long: formatDate(cell.iso, props.locale, {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n }),\n })\n }\n }\n return map\n})\n\nconst dayNumber = (iso: string) =>\n dayLabels.value.get(iso)?.number ?? formatDate(iso, props.locale, { day: 'numeric' })\n\n/*\n * A day outside the grid can reach this — the announcement after a move names the day the\n * event landed on, which may be the next month — so it falls back to formatting rather than\n * assuming the map holds it.\n */\nconst longDay = (iso: string) =>\n dayLabels.value.get(iso)?.long ??\n formatDate(iso, props.locale, { weekday: 'long', day: 'numeric', month: 'long' })\n\n/* ------------------------------------------------------------------- the gesture */\n\n/**\n * A chip being carried from one day to another, by pointer or by keyboard.\n *\n * A month has no hours, so there is one kind and no resize: only which day an event starts\n * on moves, and its length in days and its times come along untouched.\n */\ninterface Gesture {\n id: CalendarEventId\n /** Where the event was when the gesture began — every frame is computed from THIS. */\n origin: CalendarEventTimes\n /** What the chip shows right now. The model is not touched until the gesture ends. */\n preview: CalendarEventTimes\n pointerId: number | null\n originX: number\n originY: number\n /** Which square the pointer took hold in, so a long bar does not jump under it. */\n grabIndex: number\n /**\n * Where the pointer last was — needed because turning the month moves the squares under a\n * hand that is holding still, and the chip has to be worked out again against the new ones.\n */\n lastX: number\n lastY: number\n moved: boolean\n /**\n * Whether the pointer is off the month altogether — over the toolbar, or over the page beside\n * it. Letting go here abandons the gesture and writes nothing.\n *\n * A KEYBOARD grab can never set it: `onPointermove` is the only writer, and it returns on the\n * id mismatch before reaching that line — a grab's `pointerId` is null.\n */\n outside: boolean\n}\n\nconst gesture = ref<Gesture | null>(null)\nconst grabbing = computed(() => gesture.value !== null && gesture.value.pointerId === null)\nconst gridEl = ref<HTMLElement | null>(null)\n/** The view's own box, which a drag is measured against to know whether it has left it. */\nconst rootEl = ref<HTMLElement | null>(null)\n\n/**\n * The id the faded echo of a dragged chip carries.\n *\n * It must DIFFER from the event's own, or the two would collide in the map the day grouping\n * keys by id. The original is recovered from it and handed to the card as `ghostOf`, because\n * the colour of an event is derived from its id — under a fresh one the echo would come out\n * a different colour from the chip it belongs to.\n */\nconst GHOST_PREFIX = '__vectis-calendar-ghost__'\nconst ghostIdOf = (id: CalendarEventId) => `${GHOST_PREFIX}${id}`\nconst originalIdOf = (id: CalendarEventId) => String(id).slice(GHOST_PREFIX.length)\nconst isGhostId = (id: CalendarEventId) => String(id).startsWith(GHOST_PREFIX)\n\n/**\n * The events as the month should currently DRAW them — the model, with the one being carried\n * put wherever it now is. Running the preview through the same grouping as everything else is\n * what makes the day it leaves and the day it arrives at both redraw with no special case.\n */\nconst drawnEvents = computed<E[]>(() => {\n const state = gesture.value\n if (!state) return props.events\n\n const moving = props.events.map((item) =>\n item.id === state.id ? ({ ...item, ...state.preview } as E) : item,\n )\n\n /*\n * The faded echo of where the chip started, so the reader can see what they are moving it\n * FROM. Added only once the drag has travelled, or a click would flash a second chip in\n * the same day.\n *\n * Nothing has to be held out of a layout here, unlike the time grid: a month cell simply\n * stacks its chips, so the echo takes its own line in the day it came from and disturbs\n * nothing.\n */\n const original = state.moved ? props.events.find((item) => item.id === state.id) : undefined\n if (!original) return moving\n\n return [...moving, { ...original, ...state.origin, id: ghostIdOf(state.id) } as E]\n})\n\n/** Every day's events, worked out once rather than once per chip. */\nconst byDay = computed(() =>\n eventsByDay(\n drawnEvents.value,\n props.weeks.flatMap((week) => week.map((cell) => cell.iso)),\n ),\n)\n\nconst eventsById = computed(() => new Map(drawnEvents.value.map((item) => [item.id, item])))\n\nconst shownOf = (iso: string) => (byDay.value.get(iso) ?? []).slice(0, props.eventLimit)\nconst hiddenOf = (iso: string) =>\n Math.max(0, (byDay.value.get(iso) ?? []).length - props.eventLimit)\n\n/**\n * A chip says when it happens only when that is not obvious: an all-day event has no time\n * to give, and the day it sits in already says which day it is.\n */\nfunction timeTextOf(event: E): string {\n if (isAllDayEvent(event)) return ''\n return formatTimeDisplay(event.startTime, props.locale, props.hourFormat)\n}\n\n/** The flattened list of days, which is what the arrows travel along. */\nconst flat = computed(() => props.weeks.flat().map((cell) => cell.iso))\n\nfunction moveFocusTo(iso: string) {\n focused.value = iso\n // @a11y — the model decides which cell is tabbable, so the focus can only follow once the\n // render that applied it has run.\n void nextTick(() => document.getElementById(cellId(iso))?.focus())\n}\n\nconst tabbable = computed(() =>\n flat.value.includes(focused.value) ? focused.value : (flat.value[0] ?? null),\n)\n\nfunction onKeydown(event: KeyboardEvent) {\n const target = event.target as HTMLElement | null\n\n // A chip answers its own table, delegated here on the same element as the pointer so the\n // two input paths cannot drift apart.\n const card = target?.closest<HTMLElement>('.v-calendar-event')\n if (card) {\n onCardKeydown(event, card)\n return\n }\n\n const cell = target?.closest<HTMLElement>('.v-calendar-month-cell')\n if (!cell) return\n\n // The step is irrelevant to a month, which has no hours: 1 keeps the table honest without\n // asking the calendar for a number this view never uses.\n const intent = calendarIntent(event.key, event.shiftKey, 'cell', 1, isRtl())\n if (!intent) return\n\n const iso = cell.dataset.iso!\n const index = flat.value.indexOf(iso)\n const columns = props.weeks[0]?.length ?? 1\n\n if (intent.kind === 'moveFocus') {\n /*\n * The same table serves both views, so its two axes are read differently here: a\n * sideways step is one day, and a vertical one is a whole week rather than an hour.\n * That is the only place the month reinterprets it, and it is why the table returns a\n * direction rather than a date.\n */\n const delta = intent.days !== 0 ? intent.days : Math.sign(intent.minutes) * columns\n const next = flat.value[clamp(index + delta, 0, flat.value.length - 1)]\n if (!next) return\n event.preventDefault()\n moveFocusTo(next)\n return\n }\n\n if (intent.kind === 'rowEdge') {\n const row = Math.floor(index / columns)\n const edge = intent.edge === 'start' ? row * columns : row * columns + columns - 1\n const next = flat.value[clamp(edge, 0, flat.value.length - 1)]\n if (!next) return\n event.preventDefault()\n moveFocusTo(next)\n return\n }\n\n if (intent.kind === 'period') {\n event.preventDefault()\n emit('step', intent.delta)\n return\n }\n\n if (intent.kind === 'activate') {\n event.preventDefault()\n emit('cell-activate', iso)\n }\n}\n\n/* ------------------------------------------------------- the gesture, by pointer */\n\nconst isRtl = () => isElementRtl(gridEl.value)\n\n/** The grid as the pure geometry wants it: plain numbers, no element. */\nfunction geometryOf(rect: DOMRect) {\n const rtl = isRtl()\n return {\n top: rect.top,\n height: rect.height,\n inlineStart: rtl ? rect.right : rect.left,\n inlineSize: rect.width,\n columns: props.weeks[0]?.length ?? 1,\n rows: props.weeks.length || 1,\n }\n}\n\n/** Which of the flattened squares a point falls on. */\nfunction indexAt(x: number, y: number): number | null {\n const rect = gridEl.value?.getBoundingClientRect()\n if (!rect) return null\n const cell = pointToMonthCell({ x, y }, geometryOf(rect), isRtl())\n const columns = props.weeks[0]?.length ?? 1\n return cell.rowIndex * columns + cell.columnIndex\n}\n\nconst edge = useEdgeStep(\n (direction) => emit('step', direction),\n () => props.edgeStepDelay,\n)\n\n/** Which edge is counting down, in words, for the stylesheet to light up. */\nconst edgeCue = computed(() =>\n edge.pending.value === -1 ? 'start' : edge.pending.value === 1 ? 'end' : undefined,\n)\n\n/*\n * Turning the month swaps every square out from under a live drag, and the chip's day is then\n * a different one — it would vanish until the next pointer move, which never comes if the hand\n * is holding still against the edge. Re-applying the last position once the new month is\n * rendered is what carries the chip across the boundary.\n */\nwatch(\n () => props.weeks,\n () => {\n const state = gesture.value\n if (state?.moved) applyPoint(state)\n },\n { flush: 'post' },\n)\n\nfunction onGridPointerdown(event: PointerEvent) {\n endLastGesture()\n if (gesture.value || !props.editable || event.button !== 0) return\n\n const card = (event.target as HTMLElement | null)?.closest<HTMLElement>('.v-calendar-event')\n if (!card) return\n const item = eventsById.value.get(cardIdOf(card))\n const index = indexAt(event.clientX, event.clientY)\n if (!item || index === null) return\n\n gesture.value = {\n id: item.id,\n origin: timesOf(item),\n preview: timesOf(item),\n pointerId: event.pointerId,\n originX: event.clientX,\n originY: event.clientY,\n grabIndex: index,\n lastX: event.clientX,\n lastY: event.clientY,\n moved: false,\n outside: false,\n }\n\n /*\n * @fallback — captured on the GRID rather than on the chip, because a chip is redrawn on\n * another day the moment the drag starts and a captured element that moves takes the\n * pointer with it. Wrapped because a pointer event fired by a TEST refers to no real\n * pointer and the call then throws; failing to capture only means the drag stops at the\n * edge, which no test is checking.\n */\n try {\n gridEl.value?.setPointerCapture(event.pointerId)\n } catch {\n /* a synthetic pointer: nothing to capture */\n }\n}\n\n/** The event a chip stands for, read back off the attribute the card publishes. */\nfunction cardIdOf(card: HTMLElement): CalendarEventId {\n const raw = card.dataset.eventId ?? ''\n // An id may be a number and an attribute is always text; the map is keyed by the original.\n return eventsById.value.has(raw) ? raw : Number(raw)\n}\n\nfunction onPointermove(event: PointerEvent) {\n const state = gesture.value\n if (!state || state.pointerId !== event.pointerId) return\n\n state.lastX = event.clientX\n state.lastY = event.clientY\n\n if (\n !state.moved &&\n Math.abs(event.clientX - state.originX) < DRAG_THRESHOLD &&\n Math.abs(event.clientY - state.originY) < DRAG_THRESHOLD\n ) {\n return\n }\n\n state.moved = true\n state.outside = isPointerOutside(state)\n applyPoint(state)\n\n const rect = gridEl.value?.getBoundingClientRect()\n if (rect) edge.watchEdge(inlineEdgeAt(state.lastX, geometryOf(rect), EDGE_BAND, isRtl()))\n}\n\n/**\n * Whether the pointer has left the month's own box.\n *\n * Measured against the ROOT and not against `gridEl`, whose rect leaves out the row of weekday\n * names above it — the month's own version of the all-day band the time grid has to include, and\n * the same mistake to make. The rect goes in raw, never through `geometryOf`: containment has no\n * reading direction, where `inlineStart` is the right edge in a right-to-left page.\n *\n * Neither `applyPoint` nor the edge watch is gated on the result — see the twin of this function\n * in VCalendarTimeGrid.vue, which carries the reasoning for both.\n */\nfunction isPointerOutside(state: Gesture): boolean {\n const rect = rootEl.value?.getBoundingClientRect()\n return rect ? !pointWithin({ x: state.lastX, y: state.lastY }, rect) : false\n}\n\n/**\n * Works out which day the chip now belongs to, from wherever the pointer last was.\n *\n * Separate from the handler because the month turning calls it too: the squares change under\n * a hand that has not moved, and the chip has to be placed against the new ones.\n */\nfunction applyPoint(state: Gesture) {\n const index = indexAt(state.lastX, state.lastY)\n if (index === null) return\n\n /*\n * The target is the event's START shifted by however many squares the pointer has crossed,\n * not the square it is over — so a bar grabbed by its third day keeps its third day under\n * the finger. The days come out of the flattened grid, which is already filtered to the\n * weekdays on show, so a hidden weekend is not counted.\n */\n const days = flat.value\n const from = days.indexOf(state.origin.start)\n const target =\n days[\n clamp((from === -1 ? state.grabIndex : from) + index - state.grabIndex, 0, days.length - 1)\n ]\n if (target) state.preview = moveEventToDay(state.origin, target)\n}\n\nlet justDragged = false\n\n/**\n * Closes the books on whatever gesture came before, at the start of a new press — without which\n * the flag can be left standing and swallow a deliberate click on some chip, long after the drag\n * that raised it. The month cannot reach that on its own, having no gesture that runs without\n * `editable`; it is kept in step with the time grid, whose twin of this function carries the\n * reasoning, so the two cannot answer a press differently.\n */\nfunction endLastGesture() {\n justDragged = false\n}\n\nfunction onPointerup(event: PointerEvent) {\n const state = gesture.value\n if (!state || state.pointerId !== event.pointerId) return\n gesture.value = null\n justDragged = state.moved\n edge.cancel()\n\n // Let go off the month altogether: nothing is written and the chip goes back where it was.\n // `justDragged` above still matters, and the two revert paths must stay apart — the twin of\n // this branch in VCalendarTimeGrid.vue carries the reasoning for both.\n if (state.outside) return\n\n if (!state.moved) return\n emit('event-drop', state.id, state.preview, 'move')\n}\n\nfunction onPointercancel() {\n // The gesture was taken away. Nothing is written: the chip goes back to where the model\n // still says it is.\n gesture.value = null\n edge.cancel()\n}\n\nfunction onCardClick(item: E) {\n // `pointerup` fires before `click`, so letting go at the end of a drag would ALSO open the\n // event — the consumer's editor over every chip the reader had just moved.\n if (justDragged) {\n justDragged = false\n return\n }\n emit('event-activate', item)\n}\n\n/* ------------------------------------------------------ the gesture, by keyboard */\n\nfunction announceMoved(title: string, times: CalendarEventTimes) {\n emit('announce', m.value.calendar.movedTo(title, longDay(times.start)))\n}\n\nfunction refocusCard(id: CalendarEventId) {\n void nextTick(() => {\n /*\n * Walked rather than selected, for the reason spelled out at the twin of this function in\n * VCalendarTimeGrid.vue: a consumer's id may need escaping, and `CSS.escape` is unavailable\n * in jsdom — where the throw lands inside a `nextTick`, so it surfaces as an unhandled\n * rejection rather than as a failing test.\n */\n const cards = gridEl.value?.querySelectorAll<HTMLElement>('.v-calendar-event')\n Array.from(cards ?? [])\n .find((card) => card.dataset.eventId === String(id))\n ?.focus()\n })\n}\n\n/**\n * A chip answers a different table from the grid it sits in — that is what a grab mode IS.\n * Without it the month would offer a gesture the pointer alone could reach, which is the\n * WCAG 2.1.1 failure the time grid already avoids.\n */\nfunction onCardKeydown(event: KeyboardEvent, card: HTMLElement) {\n const item = eventsById.value.get(cardIdOf(card))\n if (!item) return\n\n const held = grabbing.value && gesture.value?.id === item.id\n const intent = calendarIntent(event.key, event.shiftKey, held ? 'grabbed' : 'event', 1, isRtl())\n if (!intent) return\n\n if (!held) {\n if (intent.kind !== 'activate' || !props.editable) return\n // Enter is also how a button is pressed: without this the same keystroke would take hold\n // of the event and open it at once.\n event.preventDefault()\n gesture.value = {\n id: item.id,\n origin: timesOf(item),\n preview: timesOf(item),\n pointerId: null,\n originX: 0,\n originY: 0,\n grabIndex: 0,\n // There is no pointer to remember; the arrows work off the preview, not off a position.\n lastX: 0,\n lastY: 0,\n moved: false,\n outside: false,\n }\n emit('announce', m.value.calendar.grabbed)\n return\n }\n\n const state = gesture.value!\n event.preventDefault()\n\n // A month has no hours to stretch, so Shift with an arrow is simply not a gesture here.\n if (intent.kind === 'grabMove') {\n const days = flat.value\n const columns = props.weeks[0]?.length ?? 1\n // The same reinterpretation the cell arrows make: sideways is a day, vertical is a week.\n const delta = intent.days !== 0 ? intent.days : Math.sign(intent.minutes) * columns\n const from = days.indexOf(state.preview.start)\n const target = days[clamp(from + delta, 0, days.length - 1)]\n if (!target) return\n state.preview = moveEventToDay(state.preview, target)\n state.moved = true\n announceMoved(item.title, state.preview)\n refocusCard(state.id)\n return\n }\n\n if (intent.kind === 'activate') {\n gesture.value = null\n if (state.moved) emit('event-drop', state.id, state.preview, 'move')\n emit('announce', m.value.calendar.dropped)\n refocusCard(state.id)\n return\n }\n\n if (intent.kind === 'cancel') {\n gesture.value = null\n emit('announce', m.value.calendar.reverted)\n refocusCard(state.id)\n }\n}\n\nfunction focus() {\n if (tabbable.value) document.getElementById(cellId(tabbable.value))?.focus()\n}\n\ndefineExpose({ focus, scrollToMinutes: () => {} })\n</script>\n\n<template>\n <div\n ref=\"rootEl\"\n class=\"v-calendar-month\"\n :data-outside=\"gesture?.outside ? '' : undefined\"\n :style=\"{ '--calendar-columns': String(weekdayNames.length) }\"\n >\n <div class=\"v-calendar-month-head\" aria-hidden=\"true\">\n <span v-for=\"name in weekdayNames\" :key=\"name\" class=\"v-calendar-month-weekday\">\n {{ name }}\n </span>\n </div>\n\n <div\n ref=\"gridEl\"\n class=\"v-calendar-month-grid\"\n role=\"grid\"\n :aria-label=\"label\"\n :data-gesture=\"gesture ? '' : undefined\"\n :data-edge=\"edgeCue\"\n @keydown=\"onKeydown\"\n @pointerdown=\"onGridPointerdown\"\n @pointermove=\"onPointermove\"\n @pointerup=\"onPointerup\"\n @pointercancel=\"onPointercancel\"\n >\n <div\n v-for=\"(week, row) in weeks\"\n :key=\"week[0]?.iso ?? row\"\n role=\"row\"\n class=\"v-calendar-month-week\"\n >\n <div\n v-for=\"cell in week\"\n :id=\"cellId(cell.iso)\"\n :key=\"cell.iso\"\n role=\"gridcell\"\n class=\"v-calendar-month-cell\"\n :data-iso=\"cell.iso\"\n :data-adjacent=\"cell.adjacent ?? undefined\"\n :data-today=\"cell.iso === today ? '' : undefined\"\n :tabindex=\"tabbable === cell.iso ? 0 : -1\"\n :aria-label=\"longDay(cell.iso)\"\n >\n <button\n type=\"button\"\n class=\"v-calendar-month-day\"\n tabindex=\"-1\"\n :aria-label=\"m.calendar.openDay(longDay(cell.iso))\"\n @click=\"emit('day-activate', cell.iso)\"\n >\n {{ dayNumber(cell.iso) }}\n </button>\n\n <VCalendarEvent\n v-for=\"item in shownOf(cell.iso)\"\n :key=\"item.id\"\n class=\"v-calendar-month-chip\"\n :event=\"item\"\n layout=\"chip\"\n :time-text=\"timeTextOf(item)\"\n :dragging=\"gesture?.id === item.id && gesture.pointerId !== null\"\n :rejected=\"gesture?.id === item.id && gesture.outside\"\n :grabbed=\"grabbing && gesture?.id === item.id\"\n :hint-id=\"editable && !isGhostId(item.id) ? hintId : undefined\"\n :ghost-of=\"isGhostId(item.id) ? originalIdOf(item.id) : undefined\"\n @click=\"onCardClick(item)\"\n >\n <template v-if=\"$slots.event\" #default=\"slotProps\">\n <slot name=\"event\" v-bind=\"slotProps\" />\n </template>\n </VCalendarEvent>\n\n <button\n v-if=\"hiddenOf(cell.iso) > 0\"\n type=\"button\"\n class=\"v-calendar-month-more\"\n tabindex=\"-1\"\n @click=\"emit('day-activate', cell.iso)\"\n >\n {{ m.calendar.moreEvents(hiddenOf(cell.iso)) }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style>\n@layer vectis.components {\n .v-calendar-month {\n display: flex;\n flex-direction: column;\n overflow: auto;\n block-size: 100%;\n min-block-size: 0;\n font-family: var(--vectis-text-family);\n color: var(--vectis-color-text);\n }\n\n /* A drag currently held off the month. Best-effort only, and never the signal — the twin rule\n in VCalendarTimeGrid.vue carries the reasoning. */\n .v-calendar-month[data-outside] {\n cursor: not-allowed;\n }\n\n .v-calendar-month-head,\n .v-calendar-month-week {\n display: grid;\n grid-template-columns: repeat(var(--calendar-columns), minmax(0, 1fr));\n }\n\n .v-calendar-month-head {\n position: sticky;\n inset-block-start: 0;\n z-index: 1;\n background: var(--vectis-color-surface);\n border-block-end: 1px solid var(--vectis-color-border);\n }\n\n .v-calendar-month-weekday {\n padding-block: var(--vectis-space-2);\n color: var(--vectis-color-text-muted);\n font-size: var(--vectis-text-overline-size);\n font-weight: var(--vectis-text-overline-weight);\n letter-spacing: var(--vectis-text-overline-tracking);\n text-align: center;\n text-transform: uppercase;\n }\n\n /* The strip that lights up while a drag rests against an edge, counting down to turn the\n month. Its width is `--vectis-control-size-calendar-edge`, whose twin is `EDGE_BAND` in\n `edgeStep.ts` — the JavaScript deciding where that countdown actually starts. */\n .v-calendar-month-grid[data-edge]::after {\n content: '';\n position: absolute;\n inset-block: 0;\n inline-size: var(--vectis-control-size-calendar-edge);\n background: var(--vectis-color-accent-surface);\n z-index: 1;\n pointer-events: none;\n }\n\n .v-calendar-month-grid[data-edge='start']::after {\n inset-inline-start: 0;\n }\n\n .v-calendar-month-grid[data-edge='end']::after {\n inset-inline-end: 0;\n }\n\n .v-calendar-month-grid {\n /* The strip above is placed against this box. */\n position: relative;\n display: flex;\n /* The rows share what height there is, so a month fills the box it was given instead of\n leaving a band of nothing under the last week. The floor keeps a day readable when\n that box is short. */\n flex: 1;\n flex-direction: column;\n min-block-size: 0;\n }\n\n .v-calendar-month-week {\n flex: 1;\n min-block-size: var(--vectis-control-size-calendar-month-cell);\n }\n\n .v-calendar-month-cell {\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow: hidden;\n padding: var(--vectis-space-1);\n border-block-start: 1px solid var(--vectis-color-border);\n border-inline-start: 1px solid var(--vectis-color-border);\n cursor: pointer;\n }\n\n .v-calendar-month-cell:first-child {\n border-inline-start: none;\n }\n\n .v-calendar-month-cell:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n /* Inwards: the month scrolls, and an outward ring on a cell at the edge would be cropped. */\n outline-offset: calc(-1 * var(--vectis-focus-ring-width));\n }\n\n /* The days of the neighbouring months are kept — the grid is a fixed six rows, so the\n page never jumps — but pushed back, since they are context rather than content. */\n .v-calendar-month-cell[data-adjacent] {\n background: var(--vectis-color-surface-sunken);\n color: var(--vectis-color-text-subtle);\n }\n\n .v-calendar-month-day {\n align-self: center;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: none;\n inline-size: var(--vectis-control-height-sm);\n block-size: var(--vectis-control-height-sm);\n /* A button carries a border from the browser, which around a round day number reads as a\n stray ring. It goes together with the background, and neither is optional. */\n border: none;\n border-radius: var(--vectis-radius-pill);\n background: none;\n color: inherit;\n font-family: inherit;\n font-size: var(--vectis-text-body-md-size);\n cursor: pointer;\n transition: background-color var(--vectis-duration-fast) var(--vectis-ease-default);\n }\n\n .v-calendar-month-day:hover {\n background: var(--vectis-color-surface-muted);\n }\n\n .v-calendar-month-day:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n }\n\n /* Semibold here marks a state — which day is today — and is not a type role. */\n .v-calendar-month-cell[data-today] .v-calendar-month-day {\n background: var(--vectis-color-accent);\n color: var(--vectis-color-text-on-accent);\n font-weight: var(--vectis-font-weight-semibold);\n }\n\n /*\n * A day in the month view is a summary, so a chip is capped at one lane however long the\n * event really is — an all-day bar and a two-hour meeting look the same here, and several\n * have to fit under the date.\n *\n * The height is SET AS A PROPERTY rather than as `block-size`. The chip rule in\n * VCalendarEvent's own sheet is (0,2,0) against this (0,1,0), so declaring the size\n * directly would lose — and matching its specificity would only hand the decision to\n * whichever sheet the consumer's bundler emitted last, which is the failure the library's\n * one-sheet-per-component rule exists to prevent.\n */\n .v-calendar-month-chip {\n --calendar-chip-height: var(--vectis-control-size-calendar-allday-lane);\n\n flex: none;\n }\n\n .v-calendar-month-more {\n flex: none;\n padding-inline: var(--vectis-space-1);\n border: none;\n background: none;\n color: var(--vectis-color-text-muted);\n font-family: inherit;\n font-size: var(--vectis-text-caption-size);\n text-align: start;\n cursor: pointer;\n }\n\n .v-calendar-month-more:hover {\n color: var(--vectis-color-text);\n text-decoration: underline;\n }\n\n .v-calendar-month-more:focus-visible {\n outline: var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);\n outline-offset: var(--vectis-focus-ring-offset);\n }\n\n @media (prefers-reduced-motion: reduce) {\n .v-calendar-month-day {\n transition: none;\n }\n }\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,342 @@
1
+ import { useMessages as e } from "../../i18n/state.js";
2
+ import { isRtl as t } from "../../utils/direction.js";
3
+ import { clamp as n } from "../../utils/number.js";
4
+ import { formatDisplay as r } from "../../utils/date.js";
5
+ import { formatDisplay as i } from "../../utils/time.js";
6
+ import a from "./VCalendarEvent.js";
7
+ import { calendarIntent as o } from "./keyboard.js";
8
+ import { useEdgeStep as s } from "./edgeStep.js";
9
+ import { eventsByDay as c, inlineEdgeAt as l, isAllDayEvent as ee, moveEventToDay as u, pointToMonthCell as te, pointWithin as ne, timesOf as d } from "./layout.js";
10
+ import { Fragment as f, computed as p, createBlock as re, createCommentVNode as ie, createElementBlock as m, createElementVNode as h, createSlots as ae, defineComponent as g, mergeModels as _, mergeProps as oe, nextTick as v, normalizeStyle as se, openBlock as y, ref as b, renderList as x, renderSlot as ce, toDisplayString as S, unref as C, useId as le, useModel as ue, watch as de, withCtx as fe } from "vue";
11
+ //#region src/components/VCalendar/VCalendarMonth.vue?vue&type=script&setup=true&lang.ts
12
+ var pe = ["data-outside"], me = {
13
+ class: "v-calendar-month-head",
14
+ "aria-hidden": "true"
15
+ }, he = [
16
+ "aria-label",
17
+ "data-gesture",
18
+ "data-edge"
19
+ ], ge = [
20
+ "id",
21
+ "data-iso",
22
+ "data-adjacent",
23
+ "data-today",
24
+ "tabindex",
25
+ "aria-label"
26
+ ], _e = ["aria-label", "onClick"], ve = ["onClick"], w = "__vectis-calendar-ghost__", T = /*@__PURE__*/ g({
27
+ __name: "VCalendarMonth",
28
+ props: /*@__PURE__*/ _({
29
+ weeks: {},
30
+ events: {},
31
+ locale: {},
32
+ hourFormat: {},
33
+ today: {},
34
+ eventLimit: {},
35
+ editable: { type: Boolean },
36
+ hintId: {},
37
+ edgeStepDelay: {},
38
+ label: {}
39
+ }, {
40
+ focused: { required: !0 },
41
+ focusedModifiers: {}
42
+ }),
43
+ emits: /*@__PURE__*/ _([
44
+ "day-activate",
45
+ "cell-activate",
46
+ "event-activate",
47
+ "event-drop",
48
+ "announce",
49
+ "step"
50
+ ], ["update:focused"]),
51
+ setup(g, { expose: _, emit: T }) {
52
+ let E = g, D = T, O = ue(g, "focused"), k = e(), ye = le(), A = (e) => `${ye}-m-${e}`, j = p(() => (E.weeks[0] ?? []).map((e) => r(e.iso, E.locale, { weekday: "short" }))), M = p(() => {
53
+ let e = /* @__PURE__ */ new Map();
54
+ for (let t of E.weeks) for (let n of t) e.set(n.iso, {
55
+ number: r(n.iso, E.locale, { day: "numeric" }),
56
+ long: r(n.iso, E.locale, {
57
+ weekday: "long",
58
+ day: "numeric",
59
+ month: "long"
60
+ })
61
+ });
62
+ return e;
63
+ }), be = (e) => M.value.get(e)?.number ?? r(e, E.locale, { day: "numeric" }), N = (e) => M.value.get(e)?.long ?? r(e, E.locale, {
64
+ weekday: "long",
65
+ day: "numeric",
66
+ month: "long"
67
+ }), P = b(null), F = p(() => P.value !== null && P.value.pointerId === null), I = b(null), L = b(null), xe = (e) => `${w}${e}`, Se = (e) => String(e).slice(25), R = (e) => String(e).startsWith(w), z = p(() => {
68
+ let e = P.value;
69
+ if (!e) return E.events;
70
+ let t = E.events.map((t) => t.id === e.id ? {
71
+ ...t,
72
+ ...e.preview
73
+ } : t), n = e.moved ? E.events.find((t) => t.id === e.id) : void 0;
74
+ return n ? [...t, {
75
+ ...n,
76
+ ...e.origin,
77
+ id: xe(e.id)
78
+ }] : t;
79
+ }), B = p(() => c(z.value, E.weeks.flatMap((e) => e.map((e) => e.iso)))), V = p(() => new Map(z.value.map((e) => [e.id, e]))), Ce = (e) => (B.value.get(e) ?? []).slice(0, E.eventLimit), H = (e) => Math.max(0, (B.value.get(e) ?? []).length - E.eventLimit);
80
+ function we(e) {
81
+ return ee(e) ? "" : i(e.startTime, E.locale, E.hourFormat);
82
+ }
83
+ let U = p(() => E.weeks.flat().map((e) => e.iso));
84
+ function W(e) {
85
+ O.value = e, v(() => document.getElementById(A(e))?.focus());
86
+ }
87
+ let G = p(() => U.value.includes(O.value) ? O.value : U.value[0] ?? null);
88
+ function Te(e) {
89
+ let t = e.target, r = t?.closest(".v-calendar-event");
90
+ if (r) {
91
+ Fe(e, r);
92
+ return;
93
+ }
94
+ let i = t?.closest(".v-calendar-month-cell");
95
+ if (!i) return;
96
+ let a = o(e.key, e.shiftKey, "cell", 1, K());
97
+ if (!a) return;
98
+ let s = i.dataset.iso, c = U.value.indexOf(s), l = E.weeks[0]?.length ?? 1;
99
+ if (a.kind === "moveFocus") {
100
+ let t = a.days === 0 ? Math.sign(a.minutes) * l : a.days, r = U.value[n(c + t, 0, U.value.length - 1)];
101
+ if (!r) return;
102
+ e.preventDefault(), W(r);
103
+ return;
104
+ }
105
+ if (a.kind === "rowEdge") {
106
+ let t = Math.floor(c / l), r = a.edge === "start" ? t * l : t * l + l - 1, i = U.value[n(r, 0, U.value.length - 1)];
107
+ if (!i) return;
108
+ e.preventDefault(), W(i);
109
+ return;
110
+ }
111
+ if (a.kind === "period") {
112
+ e.preventDefault(), D("step", a.delta);
113
+ return;
114
+ }
115
+ a.kind === "activate" && (e.preventDefault(), D("cell-activate", s));
116
+ }
117
+ let K = () => t(I.value);
118
+ function q(e) {
119
+ let t = K();
120
+ return {
121
+ top: e.top,
122
+ height: e.height,
123
+ inlineStart: t ? e.right : e.left,
124
+ inlineSize: e.width,
125
+ columns: E.weeks[0]?.length ?? 1,
126
+ rows: E.weeks.length || 1
127
+ };
128
+ }
129
+ function J(e, t) {
130
+ let n = I.value?.getBoundingClientRect();
131
+ if (!n) return null;
132
+ let r = te({
133
+ x: e,
134
+ y: t
135
+ }, q(n), K()), i = E.weeks[0]?.length ?? 1;
136
+ return r.rowIndex * i + r.columnIndex;
137
+ }
138
+ let Y = s((e) => D("step", e), () => E.edgeStepDelay), Ee = p(() => Y.pending.value === -1 ? "start" : Y.pending.value === 1 ? "end" : void 0);
139
+ de(() => E.weeks, () => {
140
+ let e = P.value;
141
+ e?.moved && Z(e);
142
+ }, { flush: "post" });
143
+ function De(e) {
144
+ if (Ae(), P.value || !E.editable || e.button !== 0) return;
145
+ let t = e.target?.closest(".v-calendar-event");
146
+ if (!t) return;
147
+ let n = V.value.get(X(t)), r = J(e.clientX, e.clientY);
148
+ if (!(!n || r === null)) {
149
+ P.value = {
150
+ id: n.id,
151
+ origin: d(n),
152
+ preview: d(n),
153
+ pointerId: e.pointerId,
154
+ originX: e.clientX,
155
+ originY: e.clientY,
156
+ grabIndex: r,
157
+ lastX: e.clientX,
158
+ lastY: e.clientY,
159
+ moved: !1,
160
+ outside: !1
161
+ };
162
+ try {
163
+ I.value?.setPointerCapture(e.pointerId);
164
+ } catch {}
165
+ }
166
+ }
167
+ function X(e) {
168
+ let t = e.dataset.eventId ?? "";
169
+ return V.value.has(t) ? t : Number(t);
170
+ }
171
+ function Oe(e) {
172
+ let t = P.value;
173
+ if (!t || t.pointerId !== e.pointerId || (t.lastX = e.clientX, t.lastY = e.clientY, !t.moved && Math.abs(e.clientX - t.originX) < 3 && Math.abs(e.clientY - t.originY) < 3)) return;
174
+ t.moved = !0, t.outside = ke(t), Z(t);
175
+ let n = I.value?.getBoundingClientRect();
176
+ n && Y.watchEdge(l(t.lastX, q(n), 48, K()));
177
+ }
178
+ function ke(e) {
179
+ let t = L.value?.getBoundingClientRect();
180
+ return t ? !ne({
181
+ x: e.lastX,
182
+ y: e.lastY
183
+ }, t) : !1;
184
+ }
185
+ function Z(e) {
186
+ let t = J(e.lastX, e.lastY);
187
+ if (t === null) return;
188
+ let r = U.value, i = r.indexOf(e.origin.start), a = r[n((i === -1 ? e.grabIndex : i) + t - e.grabIndex, 0, r.length - 1)];
189
+ a && (e.preview = u(e.origin, a));
190
+ }
191
+ let Q = !1;
192
+ function Ae() {
193
+ Q = !1;
194
+ }
195
+ function je(e) {
196
+ let t = P.value;
197
+ !t || t.pointerId !== e.pointerId || (P.value = null, Q = t.moved, Y.cancel(), !t.outside && t.moved && D("event-drop", t.id, t.preview, "move"));
198
+ }
199
+ function Me() {
200
+ P.value = null, Y.cancel();
201
+ }
202
+ function Ne(e) {
203
+ if (Q) {
204
+ Q = !1;
205
+ return;
206
+ }
207
+ D("event-activate", e);
208
+ }
209
+ function Pe(e, t) {
210
+ D("announce", k.value.calendar.movedTo(e, N(t.start)));
211
+ }
212
+ function $(e) {
213
+ v(() => {
214
+ let t = I.value?.querySelectorAll(".v-calendar-event");
215
+ Array.from(t ?? []).find((t) => t.dataset.eventId === String(e))?.focus();
216
+ });
217
+ }
218
+ function Fe(e, t) {
219
+ let r = V.value.get(X(t));
220
+ if (!r) return;
221
+ let i = F.value && P.value?.id === r.id, a = o(e.key, e.shiftKey, i ? "grabbed" : "event", 1, K());
222
+ if (!a) return;
223
+ if (!i) {
224
+ if (a.kind !== "activate" || !E.editable) return;
225
+ e.preventDefault(), P.value = {
226
+ id: r.id,
227
+ origin: d(r),
228
+ preview: d(r),
229
+ pointerId: null,
230
+ originX: 0,
231
+ originY: 0,
232
+ grabIndex: 0,
233
+ lastX: 0,
234
+ lastY: 0,
235
+ moved: !1,
236
+ outside: !1
237
+ }, D("announce", k.value.calendar.grabbed);
238
+ return;
239
+ }
240
+ let s = P.value;
241
+ if (e.preventDefault(), a.kind === "grabMove") {
242
+ let e = U.value, t = E.weeks[0]?.length ?? 1, i = a.days === 0 ? Math.sign(a.minutes) * t : a.days, o = e[n(e.indexOf(s.preview.start) + i, 0, e.length - 1)];
243
+ if (!o) return;
244
+ s.preview = u(s.preview, o), s.moved = !0, Pe(r.title, s.preview), $(s.id);
245
+ return;
246
+ }
247
+ if (a.kind === "activate") {
248
+ P.value = null, s.moved && D("event-drop", s.id, s.preview, "move"), D("announce", k.value.calendar.dropped), $(s.id);
249
+ return;
250
+ }
251
+ a.kind === "cancel" && (P.value = null, D("announce", k.value.calendar.reverted), $(s.id));
252
+ }
253
+ function Ie() {
254
+ G.value && document.getElementById(A(G.value))?.focus();
255
+ }
256
+ return _({
257
+ focus: Ie,
258
+ scrollToMinutes: () => {}
259
+ }), (e, t) => (y(), m("div", {
260
+ ref_key: "rootEl",
261
+ ref: L,
262
+ class: "v-calendar-month",
263
+ "data-outside": P.value?.outside ? "" : void 0,
264
+ style: se({ "--calendar-columns": String(j.value.length) })
265
+ }, [h("div", me, [(y(!0), m(f, null, x(j.value, (e) => (y(), m("span", {
266
+ key: e,
267
+ class: "v-calendar-month-weekday"
268
+ }, S(e), 1))), 128))]), h("div", {
269
+ ref_key: "gridEl",
270
+ ref: I,
271
+ class: "v-calendar-month-grid",
272
+ role: "grid",
273
+ "aria-label": g.label,
274
+ "data-gesture": P.value ? "" : void 0,
275
+ "data-edge": Ee.value,
276
+ onKeydown: Te,
277
+ onPointerdown: De,
278
+ onPointermove: Oe,
279
+ onPointerup: je,
280
+ onPointercancel: Me
281
+ }, [(y(!0), m(f, null, x(g.weeks, (t, n) => (y(), m("div", {
282
+ key: t[0]?.iso ?? n,
283
+ role: "row",
284
+ class: "v-calendar-month-week"
285
+ }, [(y(!0), m(f, null, x(t, (t) => (y(), m("div", {
286
+ id: A(t.iso),
287
+ key: t.iso,
288
+ role: "gridcell",
289
+ class: "v-calendar-month-cell",
290
+ "data-iso": t.iso,
291
+ "data-adjacent": t.adjacent ?? void 0,
292
+ "data-today": t.iso === g.today ? "" : void 0,
293
+ tabindex: G.value === t.iso ? 0 : -1,
294
+ "aria-label": N(t.iso)
295
+ }, [
296
+ h("button", {
297
+ type: "button",
298
+ class: "v-calendar-month-day",
299
+ tabindex: "-1",
300
+ "aria-label": C(k).calendar.openDay(N(t.iso)),
301
+ onClick: (e) => D("day-activate", t.iso)
302
+ }, S(be(t.iso)), 9, _e),
303
+ (y(!0), m(f, null, x(Ce(t.iso), (t) => (y(), re(a, {
304
+ key: t.id,
305
+ class: "v-calendar-month-chip",
306
+ event: t,
307
+ layout: "chip",
308
+ "time-text": we(t),
309
+ dragging: P.value?.id === t.id && P.value.pointerId !== null,
310
+ rejected: P.value?.id === t.id && P.value.outside,
311
+ grabbed: F.value && P.value?.id === t.id,
312
+ "hint-id": g.editable && !R(t.id) ? g.hintId : void 0,
313
+ "ghost-of": R(t.id) ? Se(t.id) : void 0,
314
+ onClick: (e) => Ne(t)
315
+ }, ae({ _: 2 }, [e.$slots.event ? {
316
+ name: "default",
317
+ fn: fe((t) => [ce(e.$slots, "event", oe({ ref_for: !0 }, t))]),
318
+ key: "0"
319
+ } : void 0]), 1032, [
320
+ "event",
321
+ "time-text",
322
+ "dragging",
323
+ "rejected",
324
+ "grabbed",
325
+ "hint-id",
326
+ "ghost-of",
327
+ "onClick"
328
+ ]))), 128)),
329
+ H(t.iso) > 0 ? (y(), m("button", {
330
+ key: 0,
331
+ type: "button",
332
+ class: "v-calendar-month-more",
333
+ tabindex: "-1",
334
+ onClick: (e) => D("day-activate", t.iso)
335
+ }, S(C(k).calendar.moreEvents(H(t.iso))), 9, ve)) : ie("", !0)
336
+ ], 8, ge))), 128))]))), 128))], 40, he)], 12, pe));
337
+ }
338
+ });
339
+ //#endregion
340
+ export { T as default };
341
+
342
+ //# sourceMappingURL=VCalendarMonth.vue_vue_type_script_setup_true_lang.js.map