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,292 @@
1
+ import { clamp as e } from "../../utils/number.js";
2
+ import { pad2 as t } from "../../utils/text.js";
3
+ import { addDays as n, addMonths as r, buildMonthGrid as i, compareISO as a, daysInMonth as o, formatISO as s, isoOf as c, parseISO as l } from "../../utils/date.js";
4
+ import { minutesOf as u } from "../../utils/time.js";
5
+ //#region src/components/VCalendar/layout.ts
6
+ var d = 1440, f = 7, p = 1440 * 60 * 1e3;
7
+ function m(e, t) {
8
+ let n = String(e), r = String(t);
9
+ return n < r ? -1 : +(n > r);
10
+ }
11
+ function h(t, n) {
12
+ let r = e(Math.round(t * 60), 0, d);
13
+ return {
14
+ start: r,
15
+ end: e(Math.round(n * 60), r + 60, d)
16
+ };
17
+ }
18
+ function g(n) {
19
+ let r = e(Math.round(n), 0, d - 1);
20
+ return `${t(Math.floor(r / 60))}:${t(r % 60)}`;
21
+ }
22
+ function _(e, t) {
23
+ return u(e) ?? t;
24
+ }
25
+ function v(e, t) {
26
+ let n = /* @__PURE__ */ new Set(), r = [];
27
+ for (let t of e ?? []) {
28
+ let e = Math.trunc(t);
29
+ e >= 0 && e <= 6 && !n.has(e) && (n.add(e), r.push(e));
30
+ }
31
+ if (r.length > 0) return r;
32
+ let i = (Math.trunc(t) % 7 + 7) % 7;
33
+ return Array.from({ length: f }, (e, t) => (i + t) % 7);
34
+ }
35
+ function y(e, t) {
36
+ let n = l(e);
37
+ return n !== null && t.includes(n.getDay());
38
+ }
39
+ function b(e, t, r = 1) {
40
+ if (t.length === 0) return e;
41
+ let i = e;
42
+ for (let e = 0; e < f; e++) {
43
+ if (y(i, t)) return i;
44
+ i = n(i, r);
45
+ }
46
+ return e;
47
+ }
48
+ function x(e, t, r) {
49
+ if (t === 0 || r.length === 0) return e;
50
+ let i = t > 0 ? 1 : -1, a = e, o = Math.abs(t), s = Math.abs(t) * f + f;
51
+ for (; o > 0 && s-- > 0;) a = n(a, i), y(a, r) && o--;
52
+ return a;
53
+ }
54
+ function S(t, n) {
55
+ return t === "day" ? 1 : t === "4days" ? 4 : t === "custom" ? e(Math.trunc(n), 1, 31) : f;
56
+ }
57
+ function C(e, t, r, i) {
58
+ if (r.length === 0 || l(e) === null || t === "year") return [];
59
+ if (t === "month") {
60
+ let t = l(e), n = t.getFullYear(), i = t.getMonth(), a = [];
61
+ for (let e = 1; e <= o(n, i); e++) {
62
+ let t = c(n, i, e);
63
+ y(t, r) && a.push(t);
64
+ }
65
+ return a;
66
+ }
67
+ if (t === "week") {
68
+ let t = n(e, -((l(e).getDay() - r[0] + f) % f)), i = [];
69
+ for (let e = 0; e < f; e++) {
70
+ let a = n(t, e);
71
+ y(a, r) && i.push(a);
72
+ }
73
+ return i;
74
+ }
75
+ let a = S(t, i), s = [b(e, r)];
76
+ for (let e = 1; e < a; e++) s.push(x(s[e - 1], 1, r));
77
+ return s;
78
+ }
79
+ function w(e, t, i, a, o) {
80
+ return l(e) === null ? e : t === "month" ? r(e, i) : t === "year" ? r(e, i * 12) : t === "week" ? b(n(e, i * f), a) : x(e, i * S(t, o), a);
81
+ }
82
+ function T(e, t, n, r) {
83
+ if (t === "year") {
84
+ let t = l(e)?.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear();
85
+ return {
86
+ start: c(t, 0, 1),
87
+ end: c(t, 11, 31)
88
+ };
89
+ }
90
+ let i = C(e, t, n, r);
91
+ return i.length === 0 ? {
92
+ start: e,
93
+ end: e
94
+ } : {
95
+ start: i[0],
96
+ end: i[i.length - 1]
97
+ };
98
+ }
99
+ function E(e) {
100
+ return e.allDay === !0 || a(e.start, e.end) !== 0;
101
+ }
102
+ function D(t, n, r, i) {
103
+ let a = new Map(n.map((e, t) => [e, t])), o = [];
104
+ for (let n of t) {
105
+ if (E(n)) continue;
106
+ let t = a.get(n.start);
107
+ if (t === void 0) continue;
108
+ let s = _(n.startTime, r.start), c = Math.max(_(n.endTime, s + i), s + 1);
109
+ if (c <= r.start || s >= r.end) continue;
110
+ let l = e(s, r.start, r.end - 1), u = e(Math.max(c, l + i), l + 1, r.end);
111
+ o.push({
112
+ id: n.id,
113
+ dayIndex: t,
114
+ start: l,
115
+ end: u,
116
+ clippedStart: s < r.start,
117
+ clippedEnd: c > r.end
118
+ });
119
+ }
120
+ return o;
121
+ }
122
+ function O(e) {
123
+ let t = [...e].sort((e, t) => e.start - t.start || t.end - t.start - (e.end - e.start) || m(e.id, t.id)), n = [], r = [], i = [], a = -Infinity, o = () => {
124
+ let e = i.length;
125
+ for (let t of r) {
126
+ let n = 1;
127
+ for (; t.column + n < e && !r.some((e) => e.column === t.column + n && e.start < t.end && t.start < e.end);) n++;
128
+ t.span = n, t.columns = e;
129
+ }
130
+ n.push(...r), r = [], i = [], a = -Infinity;
131
+ };
132
+ for (let e of t) {
133
+ e.start >= a && r.length > 0 && o();
134
+ let t = i.findIndex((t) => t <= e.start);
135
+ t === -1 ? (t = i.length, i.push(e.end)) : i[t] = e.end, r.push({
136
+ ...e,
137
+ column: t,
138
+ span: 1,
139
+ columns: 1
140
+ }), a = Math.max(a, e.end);
141
+ }
142
+ return r.length > 0 && o(), n;
143
+ }
144
+ function k(e, t) {
145
+ let n = l(e);
146
+ if (!n || t.length === 0) return [];
147
+ let r = i(n.getFullYear(), n.getMonth(), t[0]), a = [];
148
+ for (let e = 0; e < r.length; e += f) {
149
+ let n = r.slice(e, e + f).filter((e) => y(e.iso, t));
150
+ n.length > 0 && a.push(n);
151
+ }
152
+ return a;
153
+ }
154
+ function A(e) {
155
+ let t = l(e);
156
+ if (!t) return [];
157
+ let n = t.getFullYear();
158
+ return Array.from({ length: 12 }, (e, t) => c(n, t, 1));
159
+ }
160
+ function j(e, t) {
161
+ return a(t, e.start) >= 0 && a(t, e.end) <= 0;
162
+ }
163
+ function M(e, t) {
164
+ let r = /* @__PURE__ */ new Map();
165
+ for (let e of t) r.set(e, []);
166
+ if (t.length === 0) return /* @__PURE__ */ new Map();
167
+ let i = t[0], o = t[t.length - 1];
168
+ for (let t of e) {
169
+ let e = a(t.start, i) > 0 ? t.start : i, s = a(t.end, o) < 0 ? t.end : o;
170
+ if (a(e, s) > 0) continue;
171
+ let c = {
172
+ event: t,
173
+ allDay: +!E(t),
174
+ minutes: _(t.startTime, 0),
175
+ id: String(t.id)
176
+ };
177
+ for (let t = e; a(t, s) <= 0; t = n(t, 1)) r.get(t)?.push(c);
178
+ }
179
+ let s = /* @__PURE__ */ new Map();
180
+ for (let [e, t] of r) t.sort(N), s.set(e, t.map((e) => e.event));
181
+ return s;
182
+ }
183
+ function N(e, t) {
184
+ return e.allDay - t.allDay || e.minutes - t.minutes || (e.id < t.id ? -1 : +(e.id > t.id));
185
+ }
186
+ function P(e, t) {
187
+ let n = [];
188
+ for (let r of e) {
189
+ if (!E(r)) continue;
190
+ let e = -1, i = -1;
191
+ for (let n = 0; n < t.length; n++) j(r, t[n]) && (e === -1 && (e = n), i = n);
192
+ e !== -1 && n.push({
193
+ id: r.id,
194
+ startIndex: e,
195
+ span: i - e + 1,
196
+ continuesBefore: a(r.start, t[e]) < 0,
197
+ continuesAfter: a(r.end, t[i]) > 0,
198
+ lane: 0
199
+ });
200
+ }
201
+ n.sort((e, t) => e.startIndex - t.startIndex || t.span - e.span || m(e.id, t.id));
202
+ let r = [];
203
+ for (let e of n) {
204
+ let t = r.findIndex((t) => t < e.startIndex);
205
+ t === -1 && (t = r.length, r.push(0)), r[t] = e.startIndex + e.span - 1, e.lane = t;
206
+ }
207
+ return n;
208
+ }
209
+ function F(t, n) {
210
+ let r = n.end - n.start;
211
+ return r > 0 ? e((t - n.start) / r, 0, 1) : 0;
212
+ }
213
+ function I(t, n, r, i) {
214
+ let a = Math.max(1, n.columns), o = n.inlineSize / a, s = i ? n.inlineStart - t.x : t.x - n.inlineStart, c = e(o > 0 ? Math.floor(s / o) : 0, 0, a - 1), l = n.height > 0 ? (t.y - n.top) / n.height : 0;
215
+ return {
216
+ columnIndex: c,
217
+ minutes: e(r.start + l * (r.end - r.start), r.start, r.end)
218
+ };
219
+ }
220
+ function L(t, n) {
221
+ let r = n > 0 ? n : 1;
222
+ return e(Math.round(t / r) * r, 0, d);
223
+ }
224
+ function R(t, n) {
225
+ let r = n > 0 ? n : 1;
226
+ return e(Math.floor(t / r) * r, 0, d);
227
+ }
228
+ function z(t, r, i, a, o) {
229
+ let s = _(t.startTime, a.start), c = Math.max(_(t.endTime, s), s + 1) - s, l = o && o.length > 0 ? x(t.start, r, o) : n(t.start, r), u = e(s + i, a.start, Math.max(a.start, a.end - c));
230
+ return {
231
+ start: l,
232
+ end: l,
233
+ startTime: g(u),
234
+ endTime: g(u + c)
235
+ };
236
+ }
237
+ function B(t, n, r, i) {
238
+ let a = _(t.startTime, i.start), o = e(n, a + Math.max(r, 1), i.end);
239
+ return {
240
+ start: t.start,
241
+ end: t.start,
242
+ startTime: g(a),
243
+ endTime: g(o)
244
+ };
245
+ }
246
+ function V(e) {
247
+ let t = l(e.start), n = l(e.end);
248
+ return !t || !n ? 0 : Math.max(0, Math.round((n.getTime() - t.getTime()) / p));
249
+ }
250
+ function H(e, t) {
251
+ return l(t) === null ? e : {
252
+ start: t,
253
+ end: n(t, V(e)),
254
+ startTime: e.startTime,
255
+ endTime: e.endTime
256
+ };
257
+ }
258
+ function U(t, n, r) {
259
+ let i = Math.max(1, n.columns), a = Math.max(1, n.rows), o = n.inlineSize / i, s = r ? n.inlineStart - t.x : t.x - n.inlineStart, c = e(o > 0 ? Math.floor(s / o) : 0, 0, i - 1), l = n.height / a;
260
+ return {
261
+ columnIndex: c,
262
+ rowIndex: e(l > 0 ? Math.floor((t.y - n.top) / l) : 0, 0, a - 1)
263
+ };
264
+ }
265
+ function W(e, t, n, r) {
266
+ if (n <= 0 || t.inlineSize <= 0) return null;
267
+ let i = r ? t.inlineStart - e : e - t.inlineStart;
268
+ return i < n ? -1 : i > t.inlineSize - n ? 1 : null;
269
+ }
270
+ function G(t, n, r) {
271
+ if (r <= 0 || n.height <= 0) return 0;
272
+ let i = t - n.top, a = n.top + n.height - t;
273
+ return i < r ? -e((r - i) / r, 0, 1) : a < r ? e((r - a) / r, 0, 1) : 0;
274
+ }
275
+ function K(e, t) {
276
+ return t.width <= 0 || t.height <= 0 || e.x >= t.left && e.x <= t.left + t.width && e.y >= t.top && e.y <= t.top + t.height;
277
+ }
278
+ function q(e) {
279
+ return {
280
+ start: e.start,
281
+ end: e.end,
282
+ startTime: e.startTime,
283
+ endTime: e.endTime
284
+ };
285
+ }
286
+ function J() {
287
+ return s(/* @__PURE__ */ new Date());
288
+ }
289
+ //#endregion
290
+ export { x as advanceVisibleDays, G as blockEdgeAt, S as columnCount, j as coversDay, V as daySpan, M as eventsByDay, R as floorToSlot, F as fractionOf, W as inlineEdgeAt, E as isAllDayEvent, y as isVisibleDay, _ as minutesAt, k as monthWeeks, A as monthsOfYear, z as moveEvent, H as moveEventToDay, v as normalizeWeekdays, P as packAllDay, O as packDayColumn, I as pointToCell, U as pointToMonthCell, K as pointWithin, B as resizeEvent, L as snapToSlot, b as snapToVisibleDay, w as stepAnchor, g as timeOf, D as timedSegments, q as timesOf, J as todayISO, C as visibleDays, T as visibleRange, h as windowOf };
291
+
292
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","names":[],"sources":["../../../src/components/VCalendar/layout.ts"],"sourcesContent":["// @core\n/**\n * Everything VCalendar has to work out rather than render: which days a view shows, where\n * an event's box goes, how a day's width is shared between events happening at once, and\n * what point on the screen corresponds to what moment in the day.\n *\n * It sits in VCalendar's own folder rather than in `utils/` because it has exactly one\n * consumer, which fails the admission rule for shared code, and because VCalendar owns\n * the contract (the same reasoning as `VDatePicker/keyboard.ts` and\n * `VHotkeys/platform.ts`).\n *\n * Being pure is not tidiness here, it is the only way any of this is testable. The test\n * environment lays nothing out — every element it renders measures zero — so a function\n * that took an Element could never be checked. NOTHING below receives one: the single\n * `getBoundingClientRect()` in the whole component builds the plain `GridGeometry` struct\n * that `pointToCell` takes, and every consequence of that measurement is an ordinary unit\n * test over numbers.\n *\n * Times are handled throughout as MINUTES SINCE MIDNIGHT, converted at the edges from the\n * `HH:mm` strings the public API speaks. That is what lets the arithmetic be plain\n * addition instead of a string dance at every step.\n */\nimport {\n addDays,\n addMonths,\n buildMonthGrid,\n compareISO,\n daysInMonth,\n formatISO,\n isoOf,\n parseISO,\n} from '../../utils/date'\nimport { clamp } from '../../utils/number'\nimport { pad2 } from '../../utils/text'\nimport { minutesOf } from '../../utils/time'\n\nimport type { MonthCell } from '../../utils/date'\nimport type { CalendarEvent, CalendarEventId, CalendarEventTimes, CalendarView } from './types'\n\n/** How many minutes a day holds. The upper bound of every time computed here. */\nconst MINUTES_PER_DAY = 24 * 60\n\nconst DAYS_PER_WEEK = 7\n\n/**\n * A day in milliseconds, for counting the days between two dates.\n *\n * It is safe here because both ends come from `parseISO`, which builds LOCAL midnights: the\n * difference between two of them is a whole number of days everywhere except across a\n * daylight-saving boundary, and `Math.round` absorbs the hour that gains or loses there.\n */\nconst MS_PER_DAY = 24 * 60 * 60 * 1000\n\n/**\n * How far the pointer must travel before a press becomes a drag rather than a click.\n *\n * It is what keeps click-to-create and click-to-open alive: a press that never moves this\n * far writes nothing on release and is handled as a plain activation. Without it, the\n * hand's natural tremor during a click would register as a one-pixel drag and every click\n * would silently move its event.\n */\nexport const DRAG_THRESHOLD = 3\n\n/**\n * The last tie-break of every ordering below: a stable total order over event ids.\n *\n * TRAP — this must NOT be `localeCompare`. An id is an opaque key, never user-facing text,\n * so there is nothing here to collate; and `localeCompare` with no locale resolves against\n * the RUNTIME's default, which differs between Node and the browser. The three orderings it\n * settles all decide rendered markup — `packDayColumn` assigns columns, `packAllDay`\n * assigns lanes, `eventsOnDay` sets the order chips are listed in — so a divergent order is\n * a hydration mismatch, silent in dev and visible only as a card in the wrong place. It is\n * the same hazard `VDataTable` avoids by passing its locale explicitly.\n *\n * Comparing by code point is also allocation-free, which matters because all three run on\n * every frame of a drag.\n */\nfunction compareId(a: CalendarEventId, b: CalendarEventId): number {\n const left = String(a)\n const right = String(b)\n return left < right ? -1 : left > right ? 1 : 0\n}\n\n/** The slice of the day a calendar is showing, as minutes since midnight. */\nexport interface TimeWindow {\n start: number\n end: number\n}\n\n/** Turns the `dayStart`/`dayEnd` props, given in hours, into the window the rest works in. */\nexport function windowOf(startHour: number, endHour: number): TimeWindow {\n const start = clamp(Math.round(startHour * 60), 0, MINUTES_PER_DAY)\n const end = clamp(Math.round(endHour * 60), start + 60, MINUTES_PER_DAY)\n return { start, end }\n}\n\n/**\n * Minutes since midnight back into an `HH:mm` string.\n *\n * TRAP — the value is held one minute short of midnight rather than allowed to reach it.\n * A day's last moment is 1440 in this arithmetic, but `24:00` is not a time any of the\n * design system's helpers accept (`isValidTime` rejects it), and the alternative — writing\n * `00:00` on the following day — would turn an ordinary evening appointment into a\n * two-day event and send it to the all-day band. One minute is invisible at every zoom\n * this component offers; a card in the wrong place is not.\n */\nexport function timeOf(minutes: number): string {\n const held = clamp(Math.round(minutes), 0, MINUTES_PER_DAY - 1)\n return `${pad2(Math.floor(held / 60))}:${pad2(held % 60)}`\n}\n\n/** An `HH:mm` string into minutes since midnight; `fallback` when it is not one. */\nexport function minutesAt(time: string | undefined, fallback: number): number {\n return minutesOf(time) ?? fallback\n}\n\n/**\n * The weekdays a calendar shows, in reading order.\n *\n * The array does double duty, which is why there is no separate \"first day of week\" prop:\n * it says which days are VISIBLE — `[1,2,3,4,5]` hides the weekend everywhere — and its\n * first entry is the day a week starts on. Given nothing, the seven days rotated to the\n * locale's own first day.\n */\nexport function normalizeWeekdays(\n weekdays: readonly number[] | undefined,\n firstDayOfWeek: number,\n): number[] {\n const seen = new Set<number>()\n const kept: number[] = []\n for (const day of weekdays ?? []) {\n const value = Math.trunc(day)\n if (value >= 0 && value <= 6 && !seen.has(value)) {\n seen.add(value)\n kept.push(value)\n }\n }\n if (kept.length > 0) return kept\n const first = ((Math.trunc(firstDayOfWeek) % 7) + 7) % 7\n return Array.from({ length: DAYS_PER_WEEK }, (_, i) => (first + i) % 7)\n}\n\n/** Whether a date falls on one of the visible weekdays. */\nexport function isVisibleDay(iso: string, weekdays: readonly number[]): boolean {\n const date = parseISO(iso)\n return date !== null && weekdays.includes(date.getDay())\n}\n\n/**\n * The first visible day at or after `iso` (or at or before it, going backwards).\n *\n * The loop is bounded at seven because a non-empty weekday list always contains one of any\n * seven consecutive days — the bound is a guard against an empty list, never a real limit.\n */\nexport function snapToVisibleDay(\n iso: string,\n weekdays: readonly number[],\n direction: -1 | 1 = 1,\n): string {\n if (weekdays.length === 0) return iso\n let current = iso\n for (let i = 0; i < DAYS_PER_WEEK; i++) {\n if (isVisibleDay(current, weekdays)) return current\n current = addDays(current, direction)\n }\n return iso\n}\n\n/** Moves `count` VISIBLE days from `iso`, skipping over the hidden ones. */\nexport function advanceVisibleDays(\n iso: string,\n count: number,\n weekdays: readonly number[],\n): string {\n if (count === 0 || weekdays.length === 0) return iso\n const direction = count > 0 ? 1 : -1\n let current = iso\n let remaining = Math.abs(count)\n // Bounded so a malformed weekday list can never spin: at worst one visible day costs\n // seven calendar days, so this is the same walk with its worst case written down.\n let guard = Math.abs(count) * DAYS_PER_WEEK + DAYS_PER_WEEK\n while (remaining > 0 && guard-- > 0) {\n current = addDays(current, direction)\n if (isVisibleDay(current, weekdays)) remaining--\n }\n return current\n}\n\n/** How many day columns a view shows, before the visible-weekday filter applies. */\nexport function columnCount(view: CalendarView, customDays: number): number {\n if (view === 'day') return 1\n if (view === '4days') return 4\n if (view === 'custom') return clamp(Math.trunc(customDays), 1, 31)\n return DAYS_PER_WEEK\n}\n\n/**\n * The days a view shows, in reading order.\n *\n * `day`, `4days` and `custom` run forward from the anchor over the visible days alone, so\n * a four-day view of a Monday-to-Friday calendar shows four WORKING days rather than four\n * calendar ones. `week` shows the week the anchor falls in, starting on `weekdays[0]`.\n * `month` returns every day of the anchor's month that is visible — the grid that renders\n * them cuts them back into weeks itself.\n *\n * `year` returns an empty list on purpose: that view is twelve month names, not a row of\n * days, and giving it a 365-entry list nothing reads would be an invitation to read it.\n */\nexport function visibleDays(\n anchor: string,\n view: CalendarView,\n weekdays: readonly number[],\n customDays: number,\n): string[] {\n if (weekdays.length === 0 || parseISO(anchor) === null) return []\n if (view === 'year') return []\n\n if (view === 'month') {\n const date = parseISO(anchor)!\n const year = date.getFullYear()\n const month0 = date.getMonth()\n const days: string[] = []\n for (let day = 1; day <= daysInMonth(year, month0); day++) {\n const iso = isoOf(year, month0, day)\n if (isVisibleDay(iso, weekdays)) days.push(iso)\n }\n return days\n }\n\n if (view === 'week') {\n const date = parseISO(anchor)!\n const offset = (date.getDay() - weekdays[0]! + DAYS_PER_WEEK) % DAYS_PER_WEEK\n const weekStart = addDays(anchor, -offset)\n const days: string[] = []\n for (let i = 0; i < DAYS_PER_WEEK; i++) {\n const iso = addDays(weekStart, i)\n if (isVisibleDay(iso, weekdays)) days.push(iso)\n }\n return days\n }\n\n const total = columnCount(view, customDays)\n const days: string[] = [snapToVisibleDay(anchor, weekdays)]\n for (let i = 1; i < total; i++) days.push(advanceVisibleDays(days[i - 1]!, 1, weekdays))\n return days\n}\n\n/**\n * Where Previous and Next land.\n *\n * TRAP — the day-shaped views step over VISIBLE days, not calendar ones. Stepping by one\n * calendar day from a Friday in a Monday-to-Friday calendar would land on a Saturday the\n * grid does not draw; the view would then show the same week it already showed, and the\n * button would look broken with nothing in the console to say why.\n */\nexport function stepAnchor(\n anchor: string,\n view: CalendarView,\n direction: -1 | 1,\n weekdays: readonly number[],\n customDays: number,\n): string {\n if (parseISO(anchor) === null) return anchor\n if (view === 'month') return addMonths(anchor, direction)\n if (view === 'year') return addMonths(anchor, direction * 12)\n if (view === 'week') return snapToVisibleDay(addDays(anchor, direction * DAYS_PER_WEEK), weekdays)\n return advanceVisibleDays(anchor, direction * columnCount(view, customDays), weekdays)\n}\n\n/** The first and last day a view covers, which is what names it in the toolbar. */\nexport function visibleRange(\n anchor: string,\n view: CalendarView,\n weekdays: readonly number[],\n customDays: number,\n): { start: string; end: string } {\n if (view === 'year') {\n const date = parseISO(anchor)\n const year = date?.getFullYear() ?? new Date().getFullYear()\n return { start: isoOf(year, 0, 1), end: isoOf(year, 11, 31) }\n }\n const days = visibleDays(anchor, view, weekdays, customDays)\n if (days.length === 0) return { start: anchor, end: anchor }\n return { start: days[0]!, end: days[days.length - 1]! }\n}\n\n/**\n * Whether an event belongs in the band above the grid rather than in a day's column.\n *\n * The second clause is not a convenience: an event running from one day to the next cannot\n * be drawn inside a single column, so the band — where it becomes a bar with its times in\n * its label — is the only place it can honestly go.\n */\nexport function isAllDayEvent(event: CalendarEvent): boolean {\n return event.allDay === true || compareISO(event.start, event.end) !== 0\n}\n\n/** One event's box in one day column, in minutes since midnight. */\nexport interface EventSegment {\n id: CalendarEventId\n /** Which of the visible columns it belongs to. */\n dayIndex: number\n start: number\n end: number\n /** Whether the window cut it off, so the card can show that it carries on past the edge. */\n clippedStart: boolean\n clippedEnd: boolean\n}\n\n/**\n * Cuts the timed events into the boxes the day columns draw. All-day events produce none —\n * they are the band's business — and so does an event whose day is not on show or whose\n * hours fall entirely outside the window.\n *\n * `minDuration` is applied HERE, by stretching the end, so that `packDayColumn` below sees\n * ordinary intervals and can stay a plain interval algorithm. Were the minimum applied\n * during packing instead, two events fifteen minutes apart would be laid out as though\n * they did not overlap and then drawn as though they did.\n */\nexport function timedSegments(\n events: readonly CalendarEvent[],\n days: readonly string[],\n window: TimeWindow,\n minDuration: number,\n): EventSegment[] {\n const index = new Map(days.map((iso, i) => [iso, i]))\n const segments: EventSegment[] = []\n\n for (const event of events) {\n if (isAllDayEvent(event)) continue\n const dayIndex = index.get(event.start)\n if (dayIndex === undefined) continue\n\n const rawStart = minutesAt(event.startTime, window.start)\n const rawEnd = Math.max(minutesAt(event.endTime, rawStart + minDuration), rawStart + 1)\n if (rawEnd <= window.start || rawStart >= window.end) continue\n\n const start = clamp(rawStart, window.start, window.end - 1)\n const end = clamp(Math.max(rawEnd, start + minDuration), start + 1, window.end)\n segments.push({\n id: event.id,\n dayIndex,\n start,\n end,\n clippedStart: rawStart < window.start,\n clippedEnd: rawEnd > window.end,\n })\n }\n\n return segments\n}\n\n/** A segment once it knows how much of its column's width it gets. */\nexport interface PlacedSegment extends EventSegment {\n /** Which column of its cluster it sits in, counted from zero. */\n column: number\n /** How many columns it takes up — more than one when the room beside it is free. */\n span: number\n /** How many columns its cluster has. It is what both of the above are read against. */\n columns: number\n}\n\n/**\n * Shares one day's width out between the events happening at the same time.\n *\n * Three passes. First the segments are cut into CLUSTERS — runs joined by overlap, where an\n * event starting after everything before it has finished begins a new one. That is what\n * stops a crowded morning from squeezing a lone afternoon meeting into a sliver. Then,\n * inside a cluster, each event takes the first column whose last occupant has already\n * ended, which is the ordinary greedy colouring of an interval graph and uses as few\n * columns as the cluster can be drawn in. Finally each event grows sideways for as long as\n * nothing in the next column overlaps it, so a single event never leaves a gap it could\n * have filled.\n *\n * The order is fixed — by start, then longest first, then by id — so the same list always\n * produces the same picture. Without the id to break the last tie, two events at the same\n * time for the same length would swap places whenever the array was re-sorted, and the\n * whole day would appear to shuffle for no reason.\n *\n * Overlap is strictly `a.start < b.end && b.start < a.end`, so events that merely touch —\n * one ending exactly as the next begins — share a column instead of splitting the width.\n */\nexport function packDayColumn(segments: readonly EventSegment[]): PlacedSegment[] {\n const sorted = [...segments].sort(\n (a, b) => a.start - b.start || b.end - b.start - (a.end - a.start) || compareId(a.id, b.id),\n )\n\n const placed: PlacedSegment[] = []\n let cluster: PlacedSegment[] = []\n let columnEnds: number[] = []\n let clusterEnd = -Infinity\n\n const flush = () => {\n const columns = columnEnds.length\n for (const item of cluster) {\n let span = 1\n while (\n item.column + span < columns &&\n !cluster.some(\n (other) =>\n other.column === item.column + span && other.start < item.end && item.start < other.end,\n )\n ) {\n span++\n }\n item.span = span\n item.columns = columns\n }\n placed.push(...cluster)\n cluster = []\n columnEnds = []\n clusterEnd = -Infinity\n }\n\n for (const segment of sorted) {\n if (segment.start >= clusterEnd && cluster.length > 0) flush()\n\n let column = columnEnds.findIndex((end) => end <= segment.start)\n if (column === -1) {\n column = columnEnds.length\n columnEnds.push(segment.end)\n } else {\n columnEnds[column] = segment.end\n }\n\n cluster.push({ ...segment, column, span: 1, columns: 1 })\n clusterEnd = Math.max(clusterEnd, segment.end)\n }\n if (cluster.length > 0) flush()\n\n return placed\n}\n\n/**\n * One square of the month view: a day, and whether it belongs to the month on show.\n *\n * It is `utils/date`'s own type, re-exported rather than restated: `monthWeeks` below builds\n * its cells by calling `buildMonthGrid` from that module, so a second declaration here could\n * only ever drift away from the shape it is actually handed. The re-export keeps\n * `import { type MonthCell } from './layout'` working for the two views that read it.\n */\nexport type { MonthCell }\n\n/**\n * The month view, cut into weeks.\n *\n * It keeps the fixed six rows `buildMonthGrid` produces — padded with the neighbouring\n * months — so the grid is the same height whichever month is on show and the page does not\n * jump as one steps through the year. Each row is then filtered down to the visible\n * weekdays, which is what makes a Monday-to-Friday month five columns wide rather than\n * seven with two blanks.\n */\nexport function monthWeeks(anchor: string, weekdays: readonly number[]): MonthCell[][] {\n const date = parseISO(anchor)\n if (!date || weekdays.length === 0) return []\n\n const cells = buildMonthGrid(date.getFullYear(), date.getMonth(), weekdays[0]!)\n const weeks: MonthCell[][] = []\n for (let i = 0; i < cells.length; i += DAYS_PER_WEEK) {\n const week = cells\n .slice(i, i + DAYS_PER_WEEK)\n .filter((cell) => isVisibleDay(cell.iso, weekdays))\n if (week.length > 0) weeks.push(week)\n }\n return weeks\n}\n\n/** The first day of each month of the anchor's year, which is what the year view lays out. */\nexport function monthsOfYear(anchor: string): string[] {\n const date = parseISO(anchor)\n if (!date) return []\n const year = date.getFullYear()\n return Array.from({ length: 12 }, (_, month0) => isoOf(year, month0, 1))\n}\n\n/** Whether an event covers a given day at all, all-day or timed. */\nexport function coversDay(event: CalendarEvent, iso: string): boolean {\n return compareISO(iso, event.start) >= 0 && compareISO(iso, event.end) <= 0\n}\n\n/**\n * The events falling on one day, in the order a summary should list them: the all-day ones\n * first, since they frame the day rather than sit inside it, then the rest by when they\n * start. The last tie is broken by id so the list cannot reshuffle for no reason.\n */\nexport function eventsOnDay<T extends CalendarEvent>(events: readonly T[], iso: string): T[] {\n return events.filter((event) => coversDay(event, iso)).sort(compareForDay)\n}\n\n/** The order `eventsOnDay` and `eventsByDay` both list a day in — see `eventsOnDay`. */\nfunction compareForDay(a: CalendarEvent, b: CalendarEvent): number {\n const allDayA = isAllDayEvent(a) ? 0 : 1\n const allDayB = isAllDayEvent(b) ? 0 : 1\n return (\n allDayA - allDayB ||\n minutesAt(a.startTime, 0) - minutesAt(b.startTime, 0) ||\n compareId(a.id, b.id)\n )\n}\n\n/**\n * Every visible day's events at once, in one pass over the list.\n *\n * WHY THIS EXISTS RATHER THAN A LOOP OVER `eventsOnDay`. The month view needs all 42 squares\n * filled, and asking `eventsOnDay` once per square walks the whole event list 42 times and\n * sorts it 42 times — `cells × events`, with a sort each. Measured on the bench: 7.8 ms per\n * render at 2000 events, and the month view re-renders on every `pointermove` of a drag, so\n * that is roughly half a frame spent rebuilding lists no gesture changed.\n *\n * Here each event is placed once, into the days it actually covers, and each day is sorted\n * once — `events × span + cells × k log k`. The walk is bounded to the grid on both ends, so\n * an event running from last year costs its visible part and nothing more.\n *\n * The ORDER is identical to `eventsOnDay`'s, because both sort with `compareForDay`. That\n * matters: it is the order chips are listed in, so a difference would be visible.\n */\nexport function eventsByDay<T extends CalendarEvent>(\n events: readonly T[],\n days: readonly string[],\n): Map<string, T[]> {\n const buckets = new Map<string, Ranked<T>[]>()\n for (const iso of days) buckets.set(iso, [])\n if (days.length === 0) return new Map()\n\n // The grid's own bounds. `days` is in order, so its ends bound every walk below — which\n // is what keeps a long-running event from being walked outside the month on show.\n const first = days[0]!\n const last = days[days.length - 1]!\n\n for (const event of events) {\n const from = compareISO(event.start, first) > 0 ? event.start : first\n const to = compareISO(event.end, last) < 0 ? event.end : last\n if (compareISO(from, to) > 0) continue\n\n /*\n * The sort key is derived ONCE per event, not once per comparison — which is where the\n * time in this function actually goes. `compareForDay` calls `minutesAt`, and that\n * re-parses an `HH:mm` string every time it is asked: a 42-square month holding 2000\n * events sorts some 17 000 pairs, so the parsing dwarfed the scan this pass replaced.\n * Measured: removing the redundant scan alone bought 5 %, hoisting the key bought the\n * rest. Decorate-sort-undecorate, for exactly the classic reason.\n */\n const ranked: Ranked<T> = {\n event,\n allDay: isAllDayEvent(event) ? 0 : 1,\n minutes: minutesAt(event.startTime, 0),\n id: String(event.id),\n }\n\n for (let iso = from; compareISO(iso, to) <= 0; iso = addDays(iso, 1)) {\n // A day the weekday filter hides has no bucket, so it is simply skipped: that is what\n // makes a Monday-to-Friday month cost nothing for the weekends it does not show.\n buckets.get(iso)?.push(ranked)\n }\n }\n\n const byDay = new Map<string, T[]>()\n for (const [iso, list] of buckets) {\n list.sort(compareRanked)\n byDay.set(\n iso,\n list.map((item) => item.event),\n )\n }\n return byDay\n}\n\n/** An event with its sort key already worked out — see `eventsByDay`. */\ninterface Ranked<T> {\n event: T\n allDay: number\n minutes: number\n id: string\n}\n\n/** `compareForDay`, reading keys that are already computed rather than deriving them. */\nfunction compareRanked<T>(a: Ranked<T>, b: Ranked<T>): number {\n return a.allDay - b.allDay || a.minutes - b.minutes || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)\n}\n\n/** One bar in the all-day band: the columns it covers, and the row it sits on. */\nexport interface AllDaySpan {\n id: CalendarEventId\n /** The first visible column it covers. */\n startIndex: number\n /** How many visible columns it covers, at least one. */\n span: number\n /** Whether it reaches beyond the days on show, on either side. */\n continuesBefore: boolean\n continuesAfter: boolean\n /** Which row of the band it sits on. */\n lane: number\n}\n\n/**\n * Stacks the all-day bars into as few rows as they fit in.\n *\n * A bar covers the run from the FIRST to the LAST visible day it touches, which is what\n * makes a hidden weekday in the middle of a range simply not there rather than a gap to\n * account for: an event running Friday to Monday in a Monday-to-Friday calendar shows as\n * one day on the Friday and one on the following Monday, because those are the two days it\n * actually covers on screen.\n *\n * The rows are the same greedy pass the day columns use — each bar takes the first row\n * whose last bar has already ended — and the ordering is fixed, longest first at equal\n * starts, so the band cannot reshuffle when the array is re-sorted.\n */\nexport function packAllDay(\n events: readonly CalendarEvent[],\n days: readonly string[],\n): AllDaySpan[] {\n const spans: AllDaySpan[] = []\n\n for (const event of events) {\n if (!isAllDayEvent(event)) continue\n\n let first = -1\n let last = -1\n for (let i = 0; i < days.length; i++) {\n if (coversDay(event, days[i]!)) {\n if (first === -1) first = i\n last = i\n }\n }\n if (first === -1) continue\n\n spans.push({\n id: event.id,\n startIndex: first,\n span: last - first + 1,\n continuesBefore: compareISO(event.start, days[first]!) < 0,\n continuesAfter: compareISO(event.end, days[last]!) > 0,\n lane: 0,\n })\n }\n\n spans.sort((a, b) => a.startIndex - b.startIndex || b.span - a.span || compareId(a.id, b.id))\n\n const laneEnds: number[] = []\n for (const span of spans) {\n let lane = laneEnds.findIndex((end) => end < span.startIndex)\n if (lane === -1) {\n lane = laneEnds.length\n laneEnds.push(0)\n }\n laneEnds[lane] = span.startIndex + span.span - 1\n span.lane = lane\n }\n\n return spans\n}\n\n/** Where a moment sits in the visible window, as a unitless fraction the stylesheet scales. */\nexport function fractionOf(minutes: number, window: TimeWindow): number {\n const span = window.end - window.start\n return span > 0 ? clamp((minutes - window.start) / span, 0, 1) : 0\n}\n\n/** The measurements of the grid a pointer is being read against, in viewport coordinates. */\nexport interface GridGeometry {\n top: number\n height: number\n /** The edge the first column starts at: the left one normally, the right one in RTL. */\n inlineStart: number\n inlineSize: number\n columns: number\n}\n\n/**\n * Turns a point on the screen into a point on the calendar: which day column it fell in,\n * and what moment that height stands for.\n *\n * Both answers are brought back inside the grid, so a pointer dragged past an edge keeps\n * producing the nearest sensible value rather than none — which is what makes a drag that\n * wanders off the component behave as the user expects instead of stopping dead.\n */\nexport function pointToCell(\n point: { x: number; y: number },\n geometry: GridGeometry,\n window: TimeWindow,\n rtl: boolean,\n): { columnIndex: number; minutes: number } {\n const columns = Math.max(1, geometry.columns)\n const columnSize = geometry.inlineSize / columns\n const offset = rtl ? geometry.inlineStart - point.x : point.x - geometry.inlineStart\n const columnIndex = clamp(columnSize > 0 ? Math.floor(offset / columnSize) : 0, 0, columns - 1)\n\n const fraction = geometry.height > 0 ? (point.y - geometry.top) / geometry.height : 0\n const minutes = clamp(\n window.start + fraction * (window.end - window.start),\n window.start,\n window.end,\n )\n\n return { columnIndex, minutes }\n}\n\n/** Rounds a moment to the nearest step the calendar allows. */\nexport function snapToSlot(minutes: number, step: number): number {\n const size = step > 0 ? step : 1\n return clamp(Math.round(minutes / size) * size, 0, MINUTES_PER_DAY)\n}\n\n/** Rounds a moment DOWN to the step containing it — where a new event begins. */\nexport function floorToSlot(minutes: number, step: number): number {\n const size = step > 0 ? step : 1\n return clamp(Math.floor(minutes / size) * size, 0, MINUTES_PER_DAY)\n}\n\n/**\n * Where an event lands when it is dragged or nudged: it keeps its length and moves by whole\n * days and whole steps.\n *\n * An event pushed past the end of the window is held against it rather than having its tail\n * cut off — moving something must never change how long it is, which is the other gesture's\n * job.\n */\nexport function moveEvent(\n origin: CalendarEventTimes,\n dayDelta: number,\n minuteDelta: number,\n window: TimeWindow,\n weekdays?: readonly number[],\n): CalendarEventTimes {\n const startMinutes = minutesAt(origin.startTime, window.start)\n const endMinutes = Math.max(minutesAt(origin.endTime, startMinutes), startMinutes + 1)\n const duration = endMinutes - startMinutes\n\n const start =\n weekdays && weekdays.length > 0\n ? advanceVisibleDays(origin.start, dayDelta, weekdays)\n : addDays(origin.start, dayDelta)\n\n const nextStart = clamp(\n startMinutes + minuteDelta,\n window.start,\n Math.max(window.start, window.end - duration),\n )\n\n return {\n start,\n end: start,\n startTime: timeOf(nextStart),\n endTime: timeOf(nextStart + duration),\n }\n}\n\n/**\n * Where the end of an event lands when its bottom edge is dragged. It can never cross the\n * start: the shortest an event may become is one step, which is also the length a new one\n * is created at.\n */\nexport function resizeEvent(\n origin: CalendarEventTimes,\n endMinutes: number,\n minDuration: number,\n window: TimeWindow,\n): CalendarEventTimes {\n const startMinutes = minutesAt(origin.startTime, window.start)\n const floor = Math.max(minDuration, 1)\n const end = clamp(endMinutes, startMinutes + floor, window.end)\n\n return {\n start: origin.start,\n end: origin.start,\n startTime: timeOf(startMinutes),\n endTime: timeOf(end),\n }\n}\n\n/**\n * How many whole days an event covers beyond its first — zero for one that starts and ends\n * on the same day, two for a trip from Monday to Wednesday.\n */\nexport function daySpan(times: CalendarEventTimes): number {\n const start = parseISO(times.start)\n const end = parseISO(times.end)\n if (!start || !end) return 0\n return Math.max(0, Math.round((end.getTime() - start.getTime()) / MS_PER_DAY))\n}\n\n/**\n * Moves an event to another day, KEEPING its length in days as well as its times.\n *\n * This is the counterpart of `moveEvent`, and the two must not be confused: that one is for\n * a timed move INSIDE a single day and deliberately collapses `end` onto `start`, so putting\n * a three-day trip through it would silently squash it into one Tuesday. This one is for the\n * whole-day gestures — an all-day bar dragged along the band, a chip dragged across a month —\n * where the times are carried along untouched and only the dates move.\n */\nexport function moveEventToDay(origin: CalendarEventTimes, target: string): CalendarEventTimes {\n if (parseISO(target) === null) return origin\n return {\n start: target,\n end: addDays(target, daySpan(origin)),\n startTime: origin.startTime,\n endTime: origin.endTime,\n }\n}\n\n/** The measurements of a month grid — the same struct, with rows where a time window was. */\nexport interface MonthGeometry {\n top: number\n height: number\n inlineStart: number\n inlineSize: number\n columns: number\n rows: number\n}\n\n/**\n * Turns a point on the screen into a square of the month.\n *\n * The block axis is a ROW here rather than a moment, which is the whole difference from\n * `pointToCell` — the inline half is the same arithmetic, RTL flip included. It is sound\n * because every week of a month is drawn the same height: the rows share what space there is\n * and a day too full for its box clips rather than growing.\n */\nexport function pointToMonthCell(\n point: { x: number; y: number },\n geometry: MonthGeometry,\n rtl: boolean,\n): { columnIndex: number; rowIndex: number } {\n const columns = Math.max(1, geometry.columns)\n const rows = Math.max(1, geometry.rows)\n\n const columnSize = geometry.inlineSize / columns\n const offset = rtl ? geometry.inlineStart - point.x : point.x - geometry.inlineStart\n const columnIndex = clamp(columnSize > 0 ? Math.floor(offset / columnSize) : 0, 0, columns - 1)\n\n const rowSize = geometry.height / rows\n const rowIndex = clamp(\n rowSize > 0 ? Math.floor((point.y - geometry.top) / rowSize) : 0,\n 0,\n rows - 1,\n )\n\n return { columnIndex, rowIndex }\n}\n\n/**\n * Which inline edge a point is resting against, as a direction to page in: -1 for the start\n * edge, 1 for the end one, nothing in between.\n *\n * It answers in READING order, so the start edge is the left one normally and the right one\n * in a right-to-left page — which is what makes \"hold at the edge to go back\" mean the same\n * thing in both.\n */\nexport function inlineEdgeAt(\n x: number,\n geometry: { inlineStart: number; inlineSize: number },\n band: number,\n rtl: boolean,\n): -1 | 1 | null {\n if (band <= 0 || geometry.inlineSize <= 0) return null\n const offset = rtl ? geometry.inlineStart - x : x - geometry.inlineStart\n // Past the far side of the box counts as being against that edge: a pointer dragged clean\n // off the calendar is asking to keep going, not to stop.\n if (offset < band) return -1\n if (offset > geometry.inlineSize - band) return 1\n return null\n}\n\n/**\n * How hard a point near the top or bottom of a box is asking it to scroll: -1 at the very\n * top, 1 at the very bottom, 0 anywhere in the middle.\n *\n * A FRACTION and not a direction, so the speed can rise as the pointer nears the edge. At a\n * constant speed there is no setting that works: fast enough to be useful at the boundary is\n * uncontrollable a few pixels in, and gentle enough to be controllable never gets anywhere.\n */\nexport function blockEdgeAt(\n y: number,\n geometry: { top: number; height: number },\n band: number,\n): number {\n if (band <= 0 || geometry.height <= 0) return 0\n const fromTop = y - geometry.top\n const fromBottom = geometry.top + geometry.height - y\n if (fromTop < band) return -clamp((band - fromTop) / band, 0, 1)\n if (fromBottom < band) return clamp((band - fromBottom) / band, 0, 1)\n return 0\n}\n\n/**\n * Whether a point falls inside a box — how a drag decides, on release, whether it is over the\n * calendar at all or over the toolbar, or over the page beside it.\n *\n * It takes the box as the browser MEASURED it, and never the `GridGeometry` the rest of this file\n * works in. Containment is a physical question with no reading direction, where `inlineStart` is\n * the box's RIGHT edge in a right-to-left page: bracketing with it would walk off the far side of\n * the screen and make every right-to-left drop read as outside. `columns` says nothing about\n * whether a point is in a box either, so asking for a `GridGeometry` would ask every caller to\n * build a thing this needs no part of.\n *\n * The edges COUNT as inside: a rect is a pair of floats on a screen that may be scaled by a\n * fraction, and an exclusive boundary would refuse a drop that looked, and was, on target.\n *\n * TRAP — a box that measures nothing contains EVERYTHING. That is the same answer `inlineEdgeAt`\n * and `blockEdgeAt` give a box of no size, and for the same reason: with no measurement there is\n * no outside to be on. Take a zero-size box literally instead and the calendar refuses every drop\n * wherever nothing has been laid out — in a hidden tab, before the first frame, and in jsdom,\n * which measures nothing at all and where all but a handful of the drag tests would go red at\n * once.\n */\nexport function pointWithin(\n point: { x: number; y: number },\n box: { left: number; top: number; width: number; height: number },\n): boolean {\n if (box.width <= 0 || box.height <= 0) return true\n return (\n point.x >= box.left &&\n point.x <= box.left + box.width &&\n point.y >= box.top &&\n point.y <= box.top + box.height\n )\n}\n\n/** The times of an event, as the shape the move and resize events carry. */\nexport function timesOf(event: CalendarEvent): CalendarEventTimes {\n return {\n start: event.start,\n end: event.end,\n startTime: event.startTime,\n endTime: event.endTime,\n }\n}\n\n/** Today, as the calendar reads it. Kept here so the component has one place to call. */\nexport function todayISO(): string {\n return formatISO(new Date())\n}\n"],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The vocabulary VCalendar and its internal grids share.
3
+ *
4
+ * These types live in a module of their own rather than in `VCalendar.vue` because the
5
+ * grids need them and VCalendar imports the grids: declaring them beside the component
6
+ * would make that a cycle. The name follows the rule for an ancillary module — a role
7
+ * name, unprefixed, since the `V` marks a tag and a TypeScript module has none (the
8
+ * `VIcon/types.ts` precedent).
9
+ *
10
+ * Every date below is a local ISO `YYYY-MM-DD` string and every time a 24-hour `HH:mm`
11
+ * one, exactly as `utils/date` and `utils/time` define them. That is what keeps the
12
+ * server and the browser in agreement: no `Date` crosses this boundary, so no timezone
13
+ * can shift a card between the two renders.
14
+ */
15
+ /** What identifies one event, and what the move and resize events refer back to. */
16
+ export type CalendarEventId = string | number;
17
+ /**
18
+ * One entry in the calendar.
19
+ *
20
+ * The seven fields below are the contract. A consumer needing more of their own writes an
21
+ * interface extending this one and hands it to the component, which carries the type
22
+ * through to the `#event` slot — so extra fields arrive typed rather than as `unknown`.
23
+ */
24
+ export interface CalendarEvent {
25
+ /**
26
+ * What identifies this event. It must be unique among the events given and stable
27
+ * across renders: it is what the drag writes back to, what gives a card its key, and
28
+ * what decides the colour of an event that names none — so an event keeps its colour
29
+ * as the list is filtered or re-sorted.
30
+ */
31
+ id: CalendarEventId;
32
+ /** What the event is called. It is the accessible name of its card. */
33
+ title: string;
34
+ /** The day it starts on. */
35
+ start: string;
36
+ /** The day it ends on — the same day as `start` for an ordinary appointment. */
37
+ end: string;
38
+ /** When it starts on that day. */
39
+ startTime: string;
40
+ /** When it ends. */
41
+ endTime: string;
42
+ /** A second line under the title, shown where the card is tall enough to hold one. */
43
+ description?: string;
44
+ /**
45
+ * Any CSS colour. Left out, one is derived from the id, so the same event is always
46
+ * drawn the same way. It tints the card and paints its leading edge; the title is never
47
+ * set on top of it, which is what keeps an arbitrary colour readable.
48
+ */
49
+ color?: string;
50
+ /**
51
+ * The name of a time zone, shown beside the times as an annotation — "09:00 – 10:00
52
+ * (Europe/Paris)". It is DISPLAY ONLY: it never moves the card, which is always placed
53
+ * from the dates and times above, read as local time.
54
+ */
55
+ timezone?: string;
56
+ /**
57
+ * Keeps the event in the band above the grid rather than in a day's column. An event
58
+ * whose `start` and `end` fall on different days is already shown there without this,
59
+ * since a card spanning two days cannot be drawn inside one column.
60
+ */
61
+ allDay?: boolean;
62
+ }
63
+ /**
64
+ * Which period the calendar is showing. `custom` is the general case and `4days` a
65
+ * preset on the same machinery — they differ only in where the number of days comes from.
66
+ */
67
+ export type CalendarView = 'day' | '4days' | 'week' | 'month' | 'year' | 'custom';
68
+ /**
69
+ * Where an event sits in time, and nothing else. The move and resize events carry one of
70
+ * these as the "before" value, so a consumer can undo a drag without keeping a copy of
71
+ * the whole event.
72
+ */
73
+ export interface CalendarEventTimes {
74
+ start: string;
75
+ end: string;
76
+ startTime: string;
77
+ endTime: string;
78
+ }
@@ -0,0 +1,2 @@
1
+ @layer vectis.reset, vectis.tokens, vectis.components, vectis.utilities;
2
+ @layer vectis.components{.v-carousel{--carousel-axis-x:1;--carousel-axis-y:0;--carousel-dir:1;--carousel-tilt:32deg;--carousel-depth:-6rem;--carousel-perspective:60rem;--carousel-scale-min:.86;--carousel-gap:var(--vectis-space-3);--carousel-item-min:0px;--carousel-peek:0px;--carousel-viewport-block:var(--vectis-control-size-carousel-block);--carousel-outset:0px;gap:var(--vectis-space-3);font-family:var(--vectis-text-family);flex-direction:column;display:flex;position:relative}.v-carousel[data-orientation=horizontal]{padding-inline:var(--carousel-outset)}.v-carousel[data-orientation=vertical]{--carousel-axis-x:0;--carousel-axis-y:1;padding-block:var(--carousel-outset);flex-direction:row}.v-carousel[data-controls=outside]:has(>.v-carousel-stage>.v-carousel-controls){--carousel-outset:calc(var(--vectis-control-height-md) + var(--vectis-space-2))}[dir=rtl] .v-carousel[data-orientation=horizontal]{--carousel-dir:-1}.v-carousel-stage{gap:var(--vectis-space-3);flex-direction:column;min-block-size:0;min-inline-size:0;display:flex;position:relative}.v-carousel[data-orientation=vertical] .v-carousel-stage{flex-grow:1}.v-carousel-viewport{gap:var(--carousel-gap);overscroll-behavior:contain;scroll-snap-type:inline mandatory;scroll-behavior:smooth;scrollbar-width:none;border-radius:var(--vectis-radius-surface);min-block-size:0;min-inline-size:0;display:flex;overflow:auto}.v-carousel-viewport::-webkit-scrollbar{display:none}.v-carousel-viewport:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:var(--vectis-focus-ring-offset)}.v-carousel[data-orientation=vertical] .v-carousel-viewport{scroll-snap-type:block mandatory;block-size:var(--carousel-viewport-block);flex-direction:column}.v-carousel-slide{flex-grow:0;flex-shrink:0;flex-basis:max(var(--carousel-item-min), calc((100% - (var(--carousel-per-view) - 1) * var(--carousel-gap) - var(--carousel-peek)) / var(--carousel-per-view)));scroll-snap-align:start;min-block-size:0;min-inline-size:0;position:relative}.v-carousel-slide:last-child{scroll-snap-align:end}.v-carousel-effect{block-size:100%}@supports (view-timeline-name:--v) and (animation-range:cover){.v-carousel:not([data-effect=slide]) .v-carousel-slide{view-timeline:--carousel-view inline}.v-carousel[data-orientation=vertical]:not([data-effect=slide]) .v-carousel-slide{view-timeline:--carousel-view block}.v-carousel:not([data-effect=slide]) .v-carousel-effect{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--carousel-view;animation-range:cover;animation-duration:auto}.v-carousel[data-effect=fade] .v-carousel-effect{animation-name:v-carousel-fade}.v-carousel[data-effect=scale] .v-carousel-effect{animation-name:v-carousel-scale}.v-carousel[data-effect=cover] .v-carousel-effect{animation-name:v-carousel-cover}}@keyframes v-carousel-fade{0%{opacity:0;translate:calc(var(--carousel-axis-x) * var(--carousel-dir) * -100%) calc(var(--carousel-axis-y) * -100%)}50%{opacity:1;translate:0}to{opacity:0;translate:calc(var(--carousel-axis-x) * var(--carousel-dir) * 100%) calc(var(--carousel-axis-y) * 100%)}}@keyframes v-carousel-scale{0%,to{scale:var(--carousel-scale-min)}50%{scale:1}}@keyframes v-carousel-cover{0%{transform:perspective(var(--carousel-perspective)) translateZ(var(--carousel-depth)) rotate3d(var(--carousel-axis-y), var(--carousel-axis-x), 0, calc(var(--carousel-dir) * var(--carousel-tilt)))}50%{transform:perspective(var(--carousel-perspective)) translateZ(0) rotate3d(0, 1, 0, 0deg)}to{transform:perspective(var(--carousel-perspective)) translateZ(var(--carousel-depth)) rotate3d(var(--carousel-axis-y), var(--carousel-axis-x), 0, calc(var(--carousel-dir) * var(--carousel-tilt) * -1))}}.v-carousel-controls{gap:var(--vectis-space-2);transition:opacity var(--vectis-duration-fast) var(--vectis-ease-default);display:flex}.v-carousel[data-orientation=vertical] .v-carousel-controls{flex-direction:column}[dir=rtl] .v-carousel[data-orientation=horizontal] .v-carousel-control .v-icon{scale:-1 1}.v-carousel:is([data-controls=inside],[data-controls=outside]) .v-carousel-controls{pointer-events:none;justify-content:space-between;align-items:center;position:absolute;inset:0}.v-carousel[data-controls=inside] .v-carousel-controls{inset:var(--vectis-space-2)}.v-carousel[data-controls=outside] .v-carousel-controls{inset-inline:calc(-1 * var(--carousel-outset))}.v-carousel[data-orientation=vertical][data-controls=outside] .v-carousel-controls{inset-inline:0;inset-block:calc(-1 * var(--carousel-outset))}@media (hover:hover){.v-carousel[data-controls-visibility=hover] .v-carousel-controls{opacity:0}.v-carousel[data-controls-visibility=hover]:hover .v-carousel-controls,.v-carousel[data-controls-visibility=hover]:has(:focus-visible) .v-carousel-controls{opacity:1}}.v-carousel-control{pointer-events:auto}.v-carousel-indicators{gap:var(--vectis-space-1);justify-content:center;align-items:center;display:flex}.v-carousel[data-orientation=vertical] .v-carousel-indicators{flex-direction:column}.v-carousel[data-indicators=inside] .v-carousel-indicators{inline-size:fit-content;margin-inline:auto;position:absolute;inset-block-end:var(--vectis-space-3);inset-inline:0}.v-carousel[data-orientation=vertical][data-indicators=inside] .v-carousel-indicators{inset-block:0;inset-inline:auto var(--vectis-space-3);block-size:fit-content;margin-block:auto;margin-inline:0}.v-carousel-indicator{min-inline-size:var(--vectis-control-height-xs);min-block-size:var(--vectis-control-height-xs);cursor:pointer;border-radius:var(--vectis-radius-pill);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex}.v-carousel-indicator:focus-visible{outline:var(--vectis-focus-ring-width) solid var(--vectis-focus-ring-color);outline-offset:calc(-1 * var(--vectis-focus-ring-width))}.v-carousel-dot{inline-size:var(--vectis-control-size-carousel-indicator);block-size:var(--vectis-control-size-carousel-indicator);background:var(--vectis-color-border-strong);border-radius:var(--vectis-radius-pill);transition:inline-size var(--vectis-duration-base) var(--vectis-ease-default), block-size var(--vectis-duration-base) var(--vectis-ease-default), background var(--vectis-duration-base) var(--vectis-ease-default);display:block}.v-carousel-indicator:hover .v-carousel-dot{background:var(--vectis-color-text-subtle)}.v-carousel-indicator[aria-current] .v-carousel-dot{inline-size:var(--vectis-control-size-carousel-indicator-active);background:var(--vectis-color-accent)}.v-carousel[data-orientation=vertical] .v-carousel-indicator[aria-current] .v-carousel-dot{inline-size:var(--vectis-control-size-carousel-indicator);block-size:var(--vectis-control-size-carousel-indicator-active)}.v-carousel[data-indicators=inside] .v-carousel-dot{background:color-mix(in oklab, var(--vectis-color-text-on-accent) 55%, transparent);box-shadow:0 0 0 1px color-mix(in oklab, var(--vectis-color-surface-inverse) 45%, transparent)}.v-carousel[data-indicators=inside] .v-carousel-indicator:hover .v-carousel-dot,.v-carousel[data-indicators=inside] .v-carousel-indicator[aria-current] .v-carousel-dot{background:var(--vectis-color-text-on-accent)}@media (prefers-reduced-motion:reduce){.v-carousel-effect{animation:none}.v-carousel-viewport{scroll-behavior:auto}.v-carousel-controls,.v-carousel-dot{transition:none}}}