vuetify 3.1.16 → 3.2.1

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 (476) hide show
  1. package/dist/_component-variables-labs.sass +1 -0
  2. package/dist/json/attributes.json +331 -179
  3. package/dist/json/importMap-labs.json +4 -4
  4. package/dist/json/importMap.json +16 -12
  5. package/dist/json/tags.json +45 -2
  6. package/dist/json/web-types.json +851 -329
  7. package/dist/vuetify-labs.css +663 -440
  8. package/dist/vuetify-labs.d.ts +5905 -7618
  9. package/dist/vuetify-labs.esm.js +1635 -649
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +1634 -647
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +265 -58
  14. package/dist/vuetify.d.ts +6509 -7498
  15. package/dist/vuetify.esm.js +1375 -423
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +1374 -421
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +800 -728
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/blueprints/index.d.ts +35 -1
  23. package/lib/blueprints/md1.d.ts +35 -1
  24. package/lib/blueprints/md2.d.ts +35 -1
  25. package/lib/blueprints/md3.d.ts +35 -1
  26. package/lib/components/VAlert/VAlert.mjs +6 -4
  27. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  28. package/lib/components/VAlert/index.d.ts +57 -55
  29. package/lib/components/VApp/VApp.mjs +4 -2
  30. package/lib/components/VApp/VApp.mjs.map +1 -1
  31. package/lib/components/VApp/index.d.ts +22 -13
  32. package/lib/components/VAppBar/VAppBar.mjs +65 -13
  33. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  34. package/lib/components/VAppBar/VAppBarNavIcon.mjs +7 -4
  35. package/lib/components/VAppBar/VAppBarNavIcon.mjs.map +1 -1
  36. package/lib/components/VAppBar/index.d.ts +113 -92
  37. package/lib/components/VAutocomplete/VAutocomplete.mjs +2 -1
  38. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  39. package/lib/components/VAutocomplete/index.d.ts +276 -418
  40. package/lib/components/VAvatar/VAvatar.mjs +4 -2
  41. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  42. package/lib/components/VAvatar/index.d.ts +23 -14
  43. package/lib/components/VBadge/VBadge.mjs +6 -5
  44. package/lib/components/VBadge/VBadge.mjs.map +1 -1
  45. package/lib/components/VBadge/index.d.ts +27 -22
  46. package/lib/components/VBanner/VBanner.mjs +6 -4
  47. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  48. package/lib/components/VBanner/VBannerActions.mjs +5 -2
  49. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  50. package/lib/components/VBanner/index.d.ts +92 -66
  51. package/lib/components/VBottomNavigation/VBottomNavigation.mjs +4 -2
  52. package/lib/components/VBottomNavigation/VBottomNavigation.mjs.map +1 -1
  53. package/lib/components/VBottomNavigation/index.d.ts +22 -13
  54. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +4 -2
  55. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  56. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs +6 -3
  57. package/lib/components/VBreadcrumbs/VBreadcrumbsDivider.mjs.map +1 -1
  58. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +4 -2
  59. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  60. package/lib/components/VBreadcrumbs/index.d.ts +132 -91
  61. package/lib/components/VBtn/VBtn.mjs +9 -4
  62. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  63. package/lib/components/VBtn/_mixins.scss +1 -1
  64. package/lib/components/VBtn/index.d.ts +39 -36
  65. package/lib/components/VBtnGroup/VBtnGroup.mjs +4 -1
  66. package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
  67. package/lib/components/VBtnGroup/index.d.ts +22 -13
  68. package/lib/components/VBtnToggle/VBtnToggle.mjs +4 -2
  69. package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
  70. package/lib/components/VBtnToggle/index.d.ts +30 -21
  71. package/lib/components/VCard/VCard.mjs +5 -3
  72. package/lib/components/VCard/VCard.mjs.map +1 -1
  73. package/lib/components/VCard/VCardActions.mjs +7 -4
  74. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  75. package/lib/components/VCard/VCardItem.mjs +5 -2
  76. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  77. package/lib/components/VCard/index.d.ts +250 -141
  78. package/lib/components/VCarousel/VCarousel.mjs +3 -3
  79. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  80. package/lib/components/VCarousel/VCarouselItem.mjs +6 -3
  81. package/lib/components/VCarousel/VCarouselItem.mjs.map +1 -1
  82. package/lib/components/VCarousel/index.d.ts +78 -141
  83. package/lib/components/VCheckbox/VCheckbox.mjs +3 -2
  84. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  85. package/lib/components/VCheckbox/VCheckboxBtn.mjs +2 -1
  86. package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
  87. package/lib/components/VCheckbox/index.d.ts +75 -109
  88. package/lib/components/VChip/VChip.mjs +7 -8
  89. package/lib/components/VChip/VChip.mjs.map +1 -1
  90. package/lib/components/VChip/index.d.ts +27 -30
  91. package/lib/components/VChipGroup/VChipGroup.mjs +4 -1
  92. package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
  93. package/lib/components/VChipGroup/index.d.ts +22 -13
  94. package/lib/components/VCode/index.d.ts +30 -17
  95. package/lib/components/VColorPicker/VColorPicker.mjs +3 -3
  96. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  97. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +5 -2
  98. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  99. package/lib/components/VColorPicker/VColorPickerEdit.mjs +6 -3
  100. package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
  101. package/lib/components/VColorPicker/VColorPickerPreview.mjs +6 -3
  102. package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
  103. package/lib/components/VColorPicker/VColorPickerSwatches.mjs +7 -5
  104. package/lib/components/VColorPicker/VColorPickerSwatches.mjs.map +1 -1
  105. package/lib/components/VColorPicker/index.d.ts +34 -1
  106. package/lib/components/VCombobox/VCombobox.mjs +2 -1
  107. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  108. package/lib/components/VCombobox/index.d.ts +276 -418
  109. package/lib/components/VCounter/VCounter.mjs +4 -1
  110. package/lib/components/VCounter/VCounter.mjs.map +1 -1
  111. package/lib/components/VCounter/index.d.ts +22 -145
  112. package/lib/components/VDefaultsProvider/index.d.ts +0 -12
  113. package/lib/components/VDialog/VDialog.mjs +2 -1
  114. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  115. package/lib/components/VDialog/index.d.ts +104 -282
  116. package/lib/components/VDivider/VDivider.mjs +4 -2
  117. package/lib/components/VDivider/VDivider.mjs.map +1 -1
  118. package/lib/components/VDivider/index.d.ts +22 -13
  119. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +4 -2
  120. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  121. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs +4 -1
  122. package/lib/components/VExpansionPanel/VExpansionPanelText.mjs.map +1 -1
  123. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +4 -2
  124. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  125. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -1
  126. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  127. package/lib/components/VExpansionPanel/index.d.ts +109 -81
  128. package/lib/components/VField/VField.css +59 -11
  129. package/lib/components/VField/VField.mjs +18 -8
  130. package/lib/components/VField/VField.mjs.map +1 -1
  131. package/lib/components/VField/VField.sass +57 -5
  132. package/lib/components/VField/VFieldLabel.mjs +6 -3
  133. package/lib/components/VField/VFieldLabel.mjs.map +1 -1
  134. package/lib/components/VField/_variables.scss +4 -0
  135. package/lib/components/VField/index.d.ts +169 -84
  136. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  137. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  138. package/lib/components/VFileInput/index.d.ts +147 -174
  139. package/lib/components/VFooter/VFooter.mjs +4 -2
  140. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  141. package/lib/components/VFooter/index.d.ts +22 -13
  142. package/lib/components/VForm/VForm.mjs +5 -2
  143. package/lib/components/VForm/VForm.mjs.map +1 -1
  144. package/lib/components/VForm/index.d.ts +30 -17
  145. package/lib/components/VGrid/VCol.mjs +4 -1
  146. package/lib/components/VGrid/VCol.mjs.map +1 -1
  147. package/lib/components/VGrid/VContainer.mjs +4 -1
  148. package/lib/components/VGrid/VContainer.mjs.map +1 -1
  149. package/lib/components/VGrid/VRow.mjs +4 -1
  150. package/lib/components/VGrid/VRow.mjs.map +1 -1
  151. package/lib/components/VGrid/index.d.ts +104 -60
  152. package/lib/components/VHover/index.d.ts +20 -44
  153. package/lib/components/VIcon/VIcon.mjs +4 -2
  154. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  155. package/lib/components/VIcon/index.d.ts +23 -26
  156. package/lib/components/VImg/VImg.mjs +5 -3
  157. package/lib/components/VImg/VImg.mjs.map +1 -1
  158. package/lib/components/VImg/index.d.ts +26 -29
  159. package/lib/components/VInput/VInput.mjs +4 -1
  160. package/lib/components/VInput/VInput.mjs.map +1 -1
  161. package/lib/components/VInput/index.d.ts +37 -40
  162. package/lib/components/VItemGroup/VItemGroup.mjs +4 -1
  163. package/lib/components/VItemGroup/VItemGroup.mjs.map +1 -1
  164. package/lib/components/VItemGroup/index.d.ts +30 -33
  165. package/lib/components/VKbd/index.d.ts +30 -17
  166. package/lib/components/VLabel/VLabel.mjs +4 -1
  167. package/lib/components/VLabel/VLabel.mjs.map +1 -1
  168. package/lib/components/VLabel/index.d.ts +22 -13
  169. package/lib/components/VLayout/VLayout.mjs +8 -4
  170. package/lib/components/VLayout/VLayout.mjs.map +1 -1
  171. package/lib/components/VLayout/VLayoutItem.mjs +4 -2
  172. package/lib/components/VLayout/VLayoutItem.mjs.map +1 -1
  173. package/lib/components/VLayout/index.d.ts +44 -26
  174. package/lib/components/VLazy/VLazy.mjs +4 -2
  175. package/lib/components/VLazy/VLazy.mjs.map +1 -1
  176. package/lib/components/VLazy/index.d.ts +22 -13
  177. package/lib/components/VList/VList.mjs +4 -2
  178. package/lib/components/VList/VList.mjs.map +1 -1
  179. package/lib/components/VList/VListChildren.mjs.map +1 -1
  180. package/lib/components/VList/VListGroup.mjs +5 -2
  181. package/lib/components/VList/VListGroup.mjs.map +1 -1
  182. package/lib/components/VList/VListItem.mjs +4 -2
  183. package/lib/components/VList/VListItem.mjs.map +1 -1
  184. package/lib/components/VList/VListItemAction.mjs +4 -1
  185. package/lib/components/VList/VListItemAction.mjs.map +1 -1
  186. package/lib/components/VList/VListItemMedia.mjs +4 -1
  187. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  188. package/lib/components/VList/VListSubheader.mjs +5 -3
  189. package/lib/components/VList/VListSubheader.mjs.map +1 -1
  190. package/lib/components/VList/index.d.ts +932 -826
  191. package/lib/components/VLocaleProvider/VLocaleProvider.mjs +5 -2
  192. package/lib/components/VLocaleProvider/VLocaleProvider.mjs.map +1 -1
  193. package/lib/components/VLocaleProvider/index.d.ts +30 -17
  194. package/lib/components/VMain/VMain.mjs +4 -2
  195. package/lib/components/VMain/VMain.mjs.map +1 -1
  196. package/lib/components/VMain/index.d.ts +30 -17
  197. package/lib/components/VMenu/VMenu.mjs +2 -1
  198. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  199. package/lib/components/VMenu/index.d.ts +104 -282
  200. package/lib/components/VMessages/VMessages.mjs +4 -2
  201. package/lib/components/VMessages/VMessages.mjs.map +1 -1
  202. package/lib/components/VMessages/index.d.ts +22 -145
  203. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +4 -2
  204. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  205. package/lib/components/VNavigationDrawer/index.d.ts +26 -29
  206. package/lib/components/VNoSsr/VNoSsr.mjs.map +1 -1
  207. package/lib/components/VNoSsr/index.d.ts +3 -13
  208. package/lib/components/VOverlay/VOverlay.mjs +5 -3
  209. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  210. package/lib/components/VOverlay/index.d.ts +38 -45
  211. package/lib/components/VPagination/VPagination.mjs +4 -1
  212. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  213. package/lib/components/VPagination/index.d.ts +23 -30
  214. package/lib/components/VParallax/VParallax.mjs +5 -2
  215. package/lib/components/VParallax/VParallax.mjs.map +1 -1
  216. package/lib/components/VParallax/index.d.ts +34 -33
  217. package/lib/components/VProgressCircular/VProgressCircular.mjs +4 -2
  218. package/lib/components/VProgressCircular/VProgressCircular.mjs.map +1 -1
  219. package/lib/components/VProgressCircular/index.d.ts +22 -13
  220. package/lib/components/VProgressLinear/VProgressLinear.mjs +6 -4
  221. package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
  222. package/lib/components/VProgressLinear/index.d.ts +42 -45
  223. package/lib/components/VRadio/VRadio.mjs +2 -1
  224. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  225. package/lib/components/VRadio/index.d.ts +27 -38
  226. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
  227. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  228. package/lib/components/VRadioGroup/index.d.ts +45 -68
  229. package/lib/components/VRangeSlider/VRangeSlider.mjs +33 -21
  230. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  231. package/lib/components/VRangeSlider/index.d.ts +50 -49
  232. package/lib/components/VRating/VRating.css +0 -4
  233. package/lib/components/VRating/VRating.mjs +10 -36
  234. package/lib/components/VRating/VRating.mjs.map +1 -1
  235. package/lib/components/VRating/VRating.sass +0 -5
  236. package/lib/components/VRating/index.d.ts +24 -18
  237. package/lib/components/VResponsive/VResponsive.mjs +4 -2
  238. package/lib/components/VResponsive/VResponsive.mjs.map +1 -1
  239. package/lib/components/VResponsive/index.d.ts +43 -31
  240. package/lib/components/VSelect/VSelect.mjs +2 -1
  241. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  242. package/lib/components/VSelect/index.d.ts +245 -567
  243. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -2
  244. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  245. package/lib/components/VSelectionControl/index.d.ts +76 -46
  246. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +4 -1
  247. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  248. package/lib/components/VSelectionControlGroup/index.d.ts +23 -14
  249. package/lib/components/VSheet/VSheet.mjs +4 -2
  250. package/lib/components/VSheet/VSheet.mjs.map +1 -1
  251. package/lib/components/VSheet/index.d.ts +22 -13
  252. package/lib/components/VSlideGroup/VSlideGroup.mjs +4 -1
  253. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  254. package/lib/components/VSlideGroup/index.d.ts +59 -90
  255. package/lib/components/VSlider/VSlider.mjs +33 -14
  256. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  257. package/lib/components/VSlider/VSliderThumb.mjs +6 -4
  258. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  259. package/lib/components/VSlider/VSliderTrack.mjs +6 -4
  260. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  261. package/lib/components/VSlider/index.d.ts +50 -49
  262. package/lib/components/VSlider/slider.mjs +43 -23
  263. package/lib/components/VSlider/slider.mjs.map +1 -1
  264. package/lib/components/VSnackbar/VSnackbar.mjs +2 -1
  265. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  266. package/lib/components/VSnackbar/index.d.ts +92 -142
  267. package/lib/components/VSwitch/VSwitch.mjs +2 -1
  268. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  269. package/lib/components/VSwitch/index.d.ts +45 -72
  270. package/lib/components/VSystemBar/VSystemBar.mjs +4 -2
  271. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  272. package/lib/components/VSystemBar/index.d.ts +22 -13
  273. package/lib/components/VTable/VTable.mjs +4 -1
  274. package/lib/components/VTable/VTable.mjs.map +1 -1
  275. package/lib/components/VTable/index.d.ts +26 -29
  276. package/lib/components/VTabs/VTab.mjs +3 -4
  277. package/lib/components/VTabs/VTab.mjs.map +1 -1
  278. package/lib/components/VTabs/VTabs.mjs +2 -2
  279. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  280. package/lib/components/VTabs/index.d.ts +51 -33
  281. package/lib/components/VTextField/VTextField.mjs +2 -1
  282. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  283. package/lib/components/VTextField/index.d.ts +337 -317
  284. package/lib/components/VTextarea/VTextarea.mjs +2 -1
  285. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  286. package/lib/components/VTextarea/index.d.ts +127 -146
  287. package/lib/components/VThemeProvider/VThemeProvider.mjs +6 -3
  288. package/lib/components/VThemeProvider/VThemeProvider.mjs.map +1 -1
  289. package/lib/components/VThemeProvider/index.d.ts +22 -13
  290. package/lib/components/VTimeline/VTimeline.mjs +5 -3
  291. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  292. package/lib/components/VTimeline/VTimelineDivider.mjs +4 -1
  293. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  294. package/lib/components/VTimeline/VTimelineItem.mjs +8 -6
  295. package/lib/components/VTimeline/VTimelineItem.mjs.map +1 -1
  296. package/lib/components/VTimeline/index.d.ts +67 -57
  297. package/lib/components/VToolbar/VToolbar.css +3 -1
  298. package/lib/components/VToolbar/VToolbar.mjs +4 -2
  299. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  300. package/lib/components/VToolbar/VToolbar.sass +3 -1
  301. package/lib/components/VToolbar/VToolbarItems.mjs +9 -4
  302. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  303. package/lib/components/VToolbar/VToolbarTitle.mjs +5 -2
  304. package/lib/components/VToolbar/VToolbarTitle.mjs.map +1 -1
  305. package/lib/components/VToolbar/index.d.ts +74 -71
  306. package/lib/components/VTooltip/VTooltip.mjs +4 -3
  307. package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
  308. package/lib/components/VTooltip/index.d.ts +119 -150
  309. package/lib/components/VValidation/index.d.ts +6 -18
  310. package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.mjs +21 -23
  311. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -0
  312. package/lib/{labs → components}/VVirtualScroll/VVirtualScrollItem.mjs +5 -2
  313. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -0
  314. package/lib/{labs → components}/VVirtualScroll/index.d.ts +70 -30
  315. package/lib/components/VVirtualScroll/index.mjs.map +1 -0
  316. package/lib/components/VWindow/VWindow.mjs +4 -1
  317. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  318. package/lib/components/VWindow/VWindowItem.mjs +4 -1
  319. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  320. package/lib/components/VWindow/index.d.ts +61 -79
  321. package/lib/components/index.d.ts +5832 -6863
  322. package/lib/components/index.mjs +2 -1
  323. package/lib/components/index.mjs.map +1 -1
  324. package/lib/components/transitions/index.d.ts +0 -192
  325. package/lib/composables/component.mjs +11 -0
  326. package/lib/composables/component.mjs.map +1 -0
  327. package/lib/composables/defaults.mjs +63 -5
  328. package/lib/composables/defaults.mjs.map +1 -1
  329. package/lib/composables/focus.mjs.map +1 -1
  330. package/lib/composables/icons.mjs +15 -4
  331. package/lib/composables/icons.mjs.map +1 -1
  332. package/lib/composables/index.mjs +1 -0
  333. package/lib/composables/index.mjs.map +1 -1
  334. package/lib/composables/intersectionObserver.mjs +2 -2
  335. package/lib/composables/intersectionObserver.mjs.map +1 -1
  336. package/lib/composables/loader.mjs.map +1 -1
  337. package/lib/composables/scroll.mjs +3 -0
  338. package/lib/composables/scroll.mjs.map +1 -1
  339. package/lib/entry-bundler.mjs +1 -1
  340. package/lib/entry-bundler.mjs.map +1 -1
  341. package/lib/framework.mjs +8 -3
  342. package/lib/framework.mjs.map +1 -1
  343. package/lib/iconsets/fa-svg.d.ts +1 -1
  344. package/lib/iconsets/fa.d.ts +1 -1
  345. package/lib/iconsets/fa4.d.ts +1 -1
  346. package/lib/iconsets/md.d.ts +1 -1
  347. package/lib/iconsets/mdi-svg.d.ts +1 -1
  348. package/lib/iconsets/mdi.d.ts +1 -1
  349. package/lib/index.d.ts +45 -5
  350. package/lib/labs/VDataTable/index.d.ts +61 -933
  351. package/lib/labs/VInfiniteScroll/VInfiniteScroll.css +26 -0
  352. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs +215 -0
  353. package/lib/labs/VInfiniteScroll/VInfiniteScroll.mjs.map +1 -0
  354. package/lib/labs/VInfiniteScroll/VInfiniteScroll.sass +25 -0
  355. package/lib/labs/VInfiniteScroll/_variables.scss +3 -0
  356. package/lib/labs/VInfiniteScroll/index.d.ts +321 -0
  357. package/lib/labs/VInfiniteScroll/index.mjs +2 -0
  358. package/lib/labs/VInfiniteScroll/index.mjs.map +1 -0
  359. package/lib/labs/VSkeletonLoader/index.d.ts +0 -12
  360. package/lib/labs/components.d.ts +377 -1097
  361. package/lib/labs/components.mjs +1 -1
  362. package/lib/labs/components.mjs.map +1 -1
  363. package/lib/labs/date/DateAdapter.mjs +2 -0
  364. package/lib/labs/date/DateAdapter.mjs.map +1 -0
  365. package/lib/labs/date/adapters/vuetify.d.ts +52 -0
  366. package/lib/labs/date/adapters/vuetify.mjs +399 -0
  367. package/lib/labs/date/adapters/vuetify.mjs.map +1 -0
  368. package/lib/labs/date/date.mjs +39 -0
  369. package/lib/labs/date/date.mjs.map +1 -0
  370. package/lib/labs/date/index.d.ts +40 -0
  371. package/lib/labs/date/index.mjs +2 -0
  372. package/lib/labs/date/index.mjs.map +1 -0
  373. package/lib/labs/index.mjs +3 -2
  374. package/lib/labs/index.mjs.map +1 -1
  375. package/lib/locale/af.mjs +5 -1
  376. package/lib/locale/af.mjs.map +1 -1
  377. package/lib/locale/ar.mjs +5 -1
  378. package/lib/locale/ar.mjs.map +1 -1
  379. package/lib/locale/az.mjs +5 -1
  380. package/lib/locale/az.mjs.map +1 -1
  381. package/lib/locale/bg.mjs +5 -1
  382. package/lib/locale/bg.mjs.map +1 -1
  383. package/lib/locale/ca.mjs +5 -1
  384. package/lib/locale/ca.mjs.map +1 -1
  385. package/lib/locale/ckb.mjs +5 -1
  386. package/lib/locale/ckb.mjs.map +1 -1
  387. package/lib/locale/cs.mjs +5 -1
  388. package/lib/locale/cs.mjs.map +1 -1
  389. package/lib/locale/da.mjs +5 -1
  390. package/lib/locale/da.mjs.map +1 -1
  391. package/lib/locale/de.mjs +5 -1
  392. package/lib/locale/de.mjs.map +1 -1
  393. package/lib/locale/el.mjs +5 -1
  394. package/lib/locale/el.mjs.map +1 -1
  395. package/lib/locale/en.mjs +5 -1
  396. package/lib/locale/en.mjs.map +1 -1
  397. package/lib/locale/es.mjs +5 -1
  398. package/lib/locale/es.mjs.map +1 -1
  399. package/lib/locale/et.mjs +5 -1
  400. package/lib/locale/et.mjs.map +1 -1
  401. package/lib/locale/fa.mjs +5 -1
  402. package/lib/locale/fa.mjs.map +1 -1
  403. package/lib/locale/fi.mjs +5 -1
  404. package/lib/locale/fi.mjs.map +1 -1
  405. package/lib/locale/fr.mjs +5 -1
  406. package/lib/locale/fr.mjs.map +1 -1
  407. package/lib/locale/he.mjs +5 -1
  408. package/lib/locale/he.mjs.map +1 -1
  409. package/lib/locale/hr.mjs +5 -1
  410. package/lib/locale/hr.mjs.map +1 -1
  411. package/lib/locale/hu.mjs +5 -1
  412. package/lib/locale/hu.mjs.map +1 -1
  413. package/lib/locale/id.mjs +5 -1
  414. package/lib/locale/id.mjs.map +1 -1
  415. package/lib/locale/index.d.ts +168 -0
  416. package/lib/locale/it.mjs +5 -1
  417. package/lib/locale/it.mjs.map +1 -1
  418. package/lib/locale/ja.mjs +5 -1
  419. package/lib/locale/ja.mjs.map +1 -1
  420. package/lib/locale/ko.mjs +5 -1
  421. package/lib/locale/ko.mjs.map +1 -1
  422. package/lib/locale/lt.mjs +5 -1
  423. package/lib/locale/lt.mjs.map +1 -1
  424. package/lib/locale/lv.mjs +5 -1
  425. package/lib/locale/lv.mjs.map +1 -1
  426. package/lib/locale/nl.mjs +5 -1
  427. package/lib/locale/nl.mjs.map +1 -1
  428. package/lib/locale/no.mjs +5 -1
  429. package/lib/locale/no.mjs.map +1 -1
  430. package/lib/locale/pl.mjs +5 -1
  431. package/lib/locale/pl.mjs.map +1 -1
  432. package/lib/locale/pt.mjs +5 -1
  433. package/lib/locale/pt.mjs.map +1 -1
  434. package/lib/locale/ro.mjs +5 -1
  435. package/lib/locale/ro.mjs.map +1 -1
  436. package/lib/locale/ru.mjs +5 -1
  437. package/lib/locale/ru.mjs.map +1 -1
  438. package/lib/locale/sk.mjs +5 -1
  439. package/lib/locale/sk.mjs.map +1 -1
  440. package/lib/locale/sl.mjs +5 -1
  441. package/lib/locale/sl.mjs.map +1 -1
  442. package/lib/locale/sr-Cyrl.mjs +5 -1
  443. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  444. package/lib/locale/sr-Latn.mjs +5 -1
  445. package/lib/locale/sr-Latn.mjs.map +1 -1
  446. package/lib/locale/sv.mjs +5 -1
  447. package/lib/locale/sv.mjs.map +1 -1
  448. package/lib/locale/th.mjs +5 -1
  449. package/lib/locale/th.mjs.map +1 -1
  450. package/lib/locale/tr.mjs +5 -1
  451. package/lib/locale/tr.mjs.map +1 -1
  452. package/lib/locale/uk.mjs +5 -1
  453. package/lib/locale/uk.mjs.map +1 -1
  454. package/lib/locale/vi.mjs +5 -1
  455. package/lib/locale/vi.mjs.map +1 -1
  456. package/lib/locale/zh-Hans.mjs +5 -1
  457. package/lib/locale/zh-Hans.mjs.map +1 -1
  458. package/lib/locale/zh-Hant.mjs +5 -1
  459. package/lib/locale/zh-Hant.mjs.map +1 -1
  460. package/lib/styles/main.css +152 -0
  461. package/lib/styles/settings/_utilities.scss +11 -1
  462. package/lib/util/createSimpleFunctional.mjs +9 -4
  463. package/lib/util/createSimpleFunctional.mjs.map +1 -1
  464. package/lib/util/defineComponent.mjs +11 -43
  465. package/lib/util/defineComponent.mjs.map +1 -1
  466. package/lib/util/helpers.mjs +6 -2
  467. package/lib/util/helpers.mjs.map +1 -1
  468. package/lib/util/index.mjs +1 -0
  469. package/lib/util/index.mjs.map +1 -1
  470. package/package.json +3 -2
  471. package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +0 -1
  472. package/lib/labs/VVirtualScroll/VVirtualScrollItem.mjs.map +0 -1
  473. package/lib/labs/VVirtualScroll/index.mjs.map +0 -1
  474. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.css +0 -0
  475. /package/lib/{labs → components}/VVirtualScroll/VVirtualScroll.sass +0 -0
  476. /package/lib/{labs → components}/VVirtualScroll/index.mjs +0 -0
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * Vuetify v3.1.16
2
+ * Vuetify v3.2.1
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, getCurrentInstance as getCurrentInstance$1, unref, provide, inject as inject$1, onScopeDispose, effectScope, shallowRef, defineComponent as defineComponent$1, camelize, h, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText } from 'vue';
7
+ import { ref, onBeforeUnmount, watch, readonly, reactive, computed, watchEffect, toRefs, capitalize, onScopeDispose, effectScope, unref, provide, shallowRef, inject as inject$1, defineComponent as defineComponent$1, camelize, h, getCurrentInstance as getCurrentInstance$1, onDeactivated, onActivated, onMounted, toRaw, createVNode, TransitionGroup, Transition, mergeProps, onBeforeMount, nextTick, withDirectives, Fragment, resolveDirective, vShow, isRef, toRef, Text, resolveDynamicComponent, cloneVNode, warn, toHandlers, Teleport, createTextVNode, onBeforeUpdate, vModelText, onUpdated } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
@@ -167,11 +167,11 @@ const keyValues = Object.freeze({
167
167
  function keys(o) {
168
168
  return Object.keys(o);
169
169
  }
170
- function pick(obj, paths) {
170
+ function pick(obj, paths, exclude) {
171
171
  const found = Object.create(null);
172
172
  const rest = Object.create(null);
173
173
  for (const key in obj) {
174
- if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key)) {
174
+ if (paths.some(path => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some(path => path === key)) {
175
175
  found[key] = obj[key];
176
176
  } else {
177
177
  rest[key] = obj[key];
@@ -882,44 +882,6 @@ function getContrast(first, second) {
882
882
  return (light + 0.05) / (dark + 0.05);
883
883
  }
884
884
 
885
- // Utilities
886
- function getCurrentInstance(name, message) {
887
- const vm = getCurrentInstance$1();
888
- if (!vm) {
889
- throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
890
- }
891
- return vm;
892
- }
893
- function getCurrentInstanceName() {
894
- let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
895
- const vm = getCurrentInstance(name).type;
896
- return toKebabCase(vm?.aliasName || vm?.name);
897
- }
898
- let _uid = 0;
899
- let _map = new WeakMap();
900
- function getUid() {
901
- const vm = getCurrentInstance('getUid');
902
- if (_map.has(vm)) return _map.get(vm);else {
903
- const uid = _uid++;
904
- _map.set(vm, uid);
905
- return uid;
906
- }
907
- }
908
- getUid.reset = () => {
909
- _uid = 0;
910
- _map = new WeakMap();
911
- };
912
-
913
- function injectSelf(key) {
914
- const {
915
- provides
916
- } = getCurrentInstance('injectSelf');
917
- if (provides && key in provides) {
918
- // TS doesn't allow symbol as index type
919
- return provides[key];
920
- }
921
- }
922
-
923
885
  /**
924
886
  * Creates a factory function for props definitions.
925
887
  * This is used to define props in a composable then override
@@ -973,17 +935,54 @@ function propsFactory(props, source) {
973
935
 
974
936
  // Types
975
937
 
938
+ // Composables
939
+ const makeComponentProps = propsFactory({
940
+ class: [String, Array],
941
+ style: {
942
+ type: [String, Array, Object],
943
+ default: null
944
+ }
945
+ }, 'component');
946
+
947
+ function useToggleScope(source, fn) {
948
+ let scope;
949
+ function start() {
950
+ scope = effectScope();
951
+ scope.run(() => fn.length ? fn(() => {
952
+ scope?.stop();
953
+ start();
954
+ }) : fn());
955
+ }
956
+ watch(source, active => {
957
+ if (active && !scope) {
958
+ start();
959
+ } else if (!active) {
960
+ scope?.stop();
961
+ scope = undefined;
962
+ }
963
+ }, {
964
+ immediate: true
965
+ });
966
+ onScopeDispose(() => {
967
+ scope?.stop();
968
+ });
969
+ }
970
+
971
+ // Composables
972
+
973
+ // Types
974
+
976
975
  const DefaultsSymbol = Symbol.for('vuetify:defaults');
977
976
  function createDefaults(options) {
978
977
  return ref(options);
979
978
  }
980
- function useDefaults() {
979
+ function injectDefaults() {
981
980
  const defaults = inject$1(DefaultsSymbol);
982
981
  if (!defaults) throw new Error('[Vuetify] Could not find defaults instance');
983
982
  return defaults;
984
983
  }
985
984
  function provideDefaults(defaults, options) {
986
- const injectedDefaults = useDefaults();
985
+ const injectedDefaults = injectDefaults();
987
986
  const providedDefaults = ref(defaults);
988
987
  const newDefaults = computed(() => {
989
988
  const disabled = unref(options?.disabled);
@@ -1010,41 +1009,68 @@ function provideDefaults(defaults, options) {
1010
1009
  provide(DefaultsSymbol, newDefaults);
1011
1010
  return newDefaults;
1012
1011
  }
1013
-
1014
- function useToggleScope(source, fn) {
1015
- let scope;
1016
- function start() {
1017
- scope = effectScope();
1018
- scope.run(() => fn.length ? fn(() => {
1019
- scope?.stop();
1020
- start();
1021
- }) : fn());
1022
- }
1023
- watch(source, active => {
1024
- if (active && !scope) {
1025
- start();
1026
- } else if (!active) {
1027
- scope?.stop();
1028
- scope = undefined;
1012
+ function propIsDefined(vnode, prop) {
1013
+ return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1014
+ }
1015
+ function internalUseDefaults() {
1016
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1017
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1018
+ let defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : injectDefaults();
1019
+ const vm = getCurrentInstance('useDefaults');
1020
+ name = name ?? vm.type.name ?? vm.type.__name;
1021
+ if (!name) {
1022
+ throw new Error('[Vuetify] Could not determine component name');
1023
+ }
1024
+ const componentDefaults = computed(() => defaults.value?.[props._as ?? name]);
1025
+ const _props = new Proxy(props, {
1026
+ get(target, prop) {
1027
+ const propValue = Reflect.get(target, prop);
1028
+ if (prop === 'class' || prop === 'style') {
1029
+ return [componentDefaults.value?.[prop], propValue].filter(v => v != null);
1030
+ } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1031
+ return componentDefaults.value?.[prop] ?? defaults.value?.global?.[prop] ?? propValue;
1032
+ }
1033
+ return propValue;
1029
1034
  }
1030
- }, {
1031
- immediate: true
1032
1035
  });
1033
- onScopeDispose(() => {
1034
- scope?.stop();
1036
+ const _subcomponentDefaults = shallowRef();
1037
+ watchEffect(() => {
1038
+ if (componentDefaults.value) {
1039
+ const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1040
+ let [key] = _ref;
1041
+ return key.startsWith(key[0].toUpperCase());
1042
+ });
1043
+ if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1044
+ }
1035
1045
  });
1046
+ function provideSubDefaults() {
1047
+ // If subcomponent defaults are provided, override any
1048
+ // subcomponents provided by the component's setup function.
1049
+ // This uses injectSelf so must be done after the original setup to work.
1050
+ useToggleScope(_subcomponentDefaults, () => {
1051
+ provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1052
+ });
1053
+ }
1054
+ return {
1055
+ props: _props,
1056
+ provideSubDefaults
1057
+ };
1058
+ }
1059
+ function useDefaults() {
1060
+ let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1061
+ let name = arguments.length > 1 ? arguments[1] : undefined;
1062
+ const {
1063
+ props: _props,
1064
+ provideSubDefaults
1065
+ } = internalUseDefaults(props, name);
1066
+ provideSubDefaults();
1067
+ return _props;
1036
1068
  }
1037
1069
 
1038
1070
  // Utils
1039
1071
 
1040
1072
  // Types
1041
1073
 
1042
- function propIsDefined(vnode, prop) {
1043
- return typeof vnode.props?.[prop] !== 'undefined' || typeof vnode.props?.[toKebabCase(prop)] !== 'undefined';
1044
- }
1045
-
1046
- // No props
1047
-
1048
1074
  // Implementation
1049
1075
  function defineComponent(options) {
1050
1076
  options._setup = options._setup ?? options.setup;
@@ -1056,43 +1082,20 @@ function defineComponent(options) {
1056
1082
  options.props = propsFactory(options.props ?? {}, toKebabCase(options.name))();
1057
1083
  const propKeys = Object.keys(options.props);
1058
1084
  options.filterProps = function filterProps(props) {
1059
- return pick(props, propKeys);
1085
+ return pick(props, propKeys, ['class', 'style']);
1060
1086
  };
1061
1087
  options.props._as = String;
1062
1088
  options.setup = function setup(props, ctx) {
1063
- const defaults = useDefaults();
1089
+ const defaults = injectDefaults();
1064
1090
 
1065
1091
  // Skip props proxy if defaults are not provided
1066
1092
  if (!defaults.value) return options._setup(props, ctx);
1067
- const vm = getCurrentInstance$1();
1068
- const componentDefaults = computed(() => defaults.value[props._as ?? options.name]);
1069
- const _props = new Proxy(props, {
1070
- get(target, prop) {
1071
- const propValue = Reflect.get(target, prop);
1072
- if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {
1073
- return componentDefaults.value?.[prop] ?? defaults.value.global?.[prop] ?? propValue;
1074
- }
1075
- return propValue;
1076
- }
1077
- });
1078
- const _subcomponentDefaults = shallowRef();
1079
- watchEffect(() => {
1080
- if (componentDefaults.value) {
1081
- const subComponents = Object.entries(componentDefaults.value).filter(_ref => {
1082
- let [key] = _ref;
1083
- return key.startsWith(key[0].toUpperCase());
1084
- });
1085
- if (subComponents.length) _subcomponentDefaults.value = Object.fromEntries(subComponents);
1086
- }
1087
- });
1093
+ const {
1094
+ props: _props,
1095
+ provideSubDefaults
1096
+ } = internalUseDefaults(props, props._as ?? options.name, defaults);
1088
1097
  const setupBindings = options._setup(_props, ctx);
1089
-
1090
- // If subcomponent defaults are provided, override any
1091
- // subcomponents provided by the component's setup function.
1092
- // This uses injectSelf so must be done after the original setup to work.
1093
- useToggleScope(_subcomponentDefaults, () => {
1094
- provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
1095
- });
1098
+ provideSubDefaults();
1096
1099
  return setupBindings;
1097
1100
  };
1098
1101
  }
@@ -1113,15 +1116,19 @@ function createSimpleFunctional(klass) {
1113
1116
  tag: {
1114
1117
  type: String,
1115
1118
  default: tag
1116
- }
1119
+ },
1120
+ ...makeComponentProps()
1117
1121
  },
1118
1122
  setup(props, _ref) {
1119
1123
  let {
1120
1124
  slots
1121
1125
  } = _ref;
1122
- return () => h(props.tag, {
1123
- class: klass
1124
- }, slots.default?.());
1126
+ return () => {
1127
+ return h(props.tag, {
1128
+ class: [klass, props.class],
1129
+ style: props.style
1130
+ }, slots.default?.());
1131
+ };
1125
1132
  }
1126
1133
  });
1127
1134
  }
@@ -1154,6 +1161,34 @@ const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';
1154
1161
  const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering
1155
1162
  const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving
1156
1163
 
1164
+ // Utilities
1165
+ function getCurrentInstance(name, message) {
1166
+ const vm = getCurrentInstance$1();
1167
+ if (!vm) {
1168
+ throw new Error(`[Vuetify] ${name} ${message || 'must be called from inside a setup function'}`);
1169
+ }
1170
+ return vm;
1171
+ }
1172
+ function getCurrentInstanceName() {
1173
+ let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'composables';
1174
+ const vm = getCurrentInstance(name).type;
1175
+ return toKebabCase(vm?.aliasName || vm?.name);
1176
+ }
1177
+ let _uid = 0;
1178
+ let _map = new WeakMap();
1179
+ function getUid() {
1180
+ const vm = getCurrentInstance('getUid');
1181
+ if (_map.has(vm)) return _map.get(vm);else {
1182
+ const uid = _uid++;
1183
+ _map.set(vm, uid);
1184
+ return uid;
1185
+ }
1186
+ }
1187
+ getUid.reset = () => {
1188
+ _uid = 0;
1189
+ _map = new WeakMap();
1190
+ };
1191
+
1157
1192
  function getScrollParent(el) {
1158
1193
  while (el) {
1159
1194
  if (hasScrollbar(el)) return el;
@@ -1177,6 +1212,16 @@ function hasScrollbar(el) {
1177
1212
  return style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;
1178
1213
  }
1179
1214
 
1215
+ function injectSelf(key) {
1216
+ const {
1217
+ provides
1218
+ } = getCurrentInstance('injectSelf');
1219
+ if (provides && key in provides) {
1220
+ // TS doesn't allow symbol as index type
1221
+ return provides[key];
1222
+ }
1223
+ }
1224
+
1180
1225
  function isFixedPosition(el) {
1181
1226
  while (el) {
1182
1227
  if (window.getComputedStyle(el).position === 'fixed') {
@@ -1957,7 +2002,11 @@ var en = {
1957
2002
  item: 'Rating {0} of {1}'
1958
2003
  }
1959
2004
  },
1960
- loading: 'Loading...'
2005
+ loading: 'Loading...',
2006
+ infiniteScroll: {
2007
+ loadMore: 'Load more',
2008
+ empty: 'No more'
2009
+ }
1961
2010
  };
1962
2011
 
1963
2012
  const LANG_PREFIX = '$vuetify.';
@@ -2155,6 +2204,7 @@ function useRtl() {
2155
2204
  const VApp = genericComponent()({
2156
2205
  name: 'VApp',
2157
2206
  props: {
2207
+ ...makeComponentProps(),
2158
2208
  ...makeLayoutProps({
2159
2209
  fullHeight: true
2160
2210
  }),
@@ -2177,8 +2227,8 @@ const VApp = genericComponent()({
2177
2227
  } = useRtl();
2178
2228
  useRender(() => createVNode("div", {
2179
2229
  "ref": layoutRef,
2180
- "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value],
2181
- "style": layoutStyles.value
2230
+ "class": ['v-application', theme.themeClasses.value, layoutClasses.value, rtlClasses.value, props.class],
2231
+ "style": [layoutStyles.value, props.style]
2182
2232
  }, [createVNode("div", {
2183
2233
  "class": "v-application__wrap"
2184
2234
  }, [slots.default?.()])]));
@@ -2603,6 +2653,7 @@ const VResponsive = genericComponent()({
2603
2653
  props: {
2604
2654
  aspectRatio: [String, Number],
2605
2655
  contentClass: String,
2656
+ ...makeComponentProps(),
2606
2657
  ...makeDimensionProps()
2607
2658
  },
2608
2659
  setup(props, _ref) {
@@ -2616,8 +2667,8 @@ const VResponsive = genericComponent()({
2616
2667
  dimensionStyles
2617
2668
  } = useDimension(props);
2618
2669
  useRender(() => createVNode("div", {
2619
- "class": "v-responsive",
2620
- "style": dimensionStyles.value
2670
+ "class": ['v-responsive', props.class],
2671
+ "style": [dimensionStyles.value, props.style]
2621
2672
  }, [createVNode("div", {
2622
2673
  "class": "v-responsive__sizer",
2623
2674
  "style": aspectStyles.value
@@ -2735,6 +2786,7 @@ const VImg = genericComponent()({
2735
2786
  },
2736
2787
  srcset: String,
2737
2788
  width: [String, Number],
2789
+ ...makeComponentProps(),
2738
2790
  ...makeTransitionProps()
2739
2791
  },
2740
2792
  emits: {
@@ -2922,10 +2974,10 @@ const VImg = genericComponent()({
2922
2974
  useRender(() => withDirectives(createVNode(VResponsive, {
2923
2975
  "class": ['v-img', {
2924
2976
  'v-img--booting': !isBooted.value
2925
- }],
2926
- "style": {
2977
+ }, props.class],
2978
+ "style": [{
2927
2979
  width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
2928
- },
2980
+ }, props.style],
2929
2981
  "aspectRatio": aspectRatio.value,
2930
2982
  "aria-label": props.alt,
2931
2983
  "role": props.alt ? 'img' : undefined
@@ -2960,10 +3012,9 @@ const makeTagProps = propsFactory({
2960
3012
  }
2961
3013
  }, 'tag');
2962
3014
 
2963
- // Types
2964
-
2965
3015
  const makeVToolbarTitleProps = propsFactory({
2966
3016
  text: String,
3017
+ ...makeComponentProps(),
2967
3018
  ...makeTagProps()
2968
3019
  }, 'v-toolbar-title');
2969
3020
  const VToolbarTitle = genericComponent()({
@@ -2976,7 +3027,8 @@ const VToolbarTitle = genericComponent()({
2976
3027
  useRender(() => {
2977
3028
  const hasText = !!(slots.default || slots.text || props.text);
2978
3029
  return createVNode(props.tag, {
2979
- "class": "v-toolbar-title"
3030
+ "class": ['v-toolbar-title', props.class],
3031
+ "style": props.style
2980
3032
  }, {
2981
3033
  default: () => [hasText && createVNode("div", {
2982
3034
  "class": "v-toolbar-title__placeholder"
@@ -3157,6 +3209,7 @@ const makeVToolbarProps = propsFactory({
3157
3209
  image: String,
3158
3210
  title: String,
3159
3211
  ...makeBorderProps(),
3212
+ ...makeComponentProps(),
3160
3213
  ...makeElevationProps(),
3161
3214
  ...makeRoundedProps(),
3162
3215
  ...makeTagProps({
@@ -3207,8 +3260,8 @@ const VToolbar = genericComponent()({
3207
3260
  'v-toolbar--flat': props.flat,
3208
3261
  'v-toolbar--floating': props.floating,
3209
3262
  [`v-toolbar--density-${props.density}`]: true
3210
- }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value],
3211
- "style": [backgroundColorStyles.value]
3263
+ }, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, themeClasses.value, props.class],
3264
+ "style": [backgroundColorStyles.value, props.style]
3212
3265
  }, {
3213
3266
  default: () => [hasImage && createVNode("div", {
3214
3267
  "key": "image",
@@ -3275,6 +3328,98 @@ const VToolbar = genericComponent()({
3275
3328
 
3276
3329
  // Utilities
3277
3330
 
3331
+ // Types
3332
+
3333
+ // Composables
3334
+ const makeScrollProps = propsFactory({
3335
+ scrollTarget: {
3336
+ type: String
3337
+ },
3338
+ scrollThreshold: {
3339
+ type: [String, Number]
3340
+ }
3341
+ }, 'scroll');
3342
+ function useScroll(props) {
3343
+ let args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3344
+ const {
3345
+ thresholdMetCallback,
3346
+ scrollThreshold,
3347
+ canScroll
3348
+ } = args;
3349
+ let previousScroll = 0;
3350
+ const target = ref(null);
3351
+ const currentScroll = ref(0);
3352
+ const savedScroll = ref(0);
3353
+ const currentThreshold = ref(0);
3354
+ const isScrollActive = ref(false);
3355
+ const isScrollingUp = ref(false);
3356
+ const computedScrollThreshold = computed(() => {
3357
+ return Number(props.scrollThreshold ?? scrollThreshold ?? 300);
3358
+ });
3359
+ const onScroll = () => {
3360
+ const targetEl = target.value;
3361
+ if (!targetEl || canScroll && !canScroll.value) return;
3362
+ previousScroll = currentScroll.value;
3363
+ currentScroll.value = 'window' in targetEl ? targetEl.pageYOffset : targetEl.scrollTop;
3364
+ isScrollingUp.value = currentScroll.value < previousScroll;
3365
+ currentThreshold.value = Math.abs(currentScroll.value - computedScrollThreshold.value);
3366
+ };
3367
+ watch(isScrollingUp, () => {
3368
+ savedScroll.value = savedScroll.value || currentScroll.value;
3369
+ });
3370
+ watch(isScrollActive, () => {
3371
+ savedScroll.value = 0;
3372
+ });
3373
+ onMounted(() => {
3374
+ watch(() => props.scrollTarget, scrollTarget => {
3375
+ const newTarget = scrollTarget ? document.querySelector(scrollTarget) : window;
3376
+ if (!newTarget) {
3377
+ consoleWarn(`Unable to locate element with identifier ${scrollTarget}`, getCurrentInstance$1());
3378
+ return;
3379
+ }
3380
+ if (newTarget === target.value) return;
3381
+ target.value?.removeEventListener('scroll', onScroll);
3382
+ target.value = newTarget;
3383
+ target.value.addEventListener('scroll', onScroll, {
3384
+ passive: true
3385
+ });
3386
+ }, {
3387
+ immediate: true
3388
+ });
3389
+ });
3390
+ onBeforeUnmount(() => {
3391
+ target.value?.removeEventListener('scroll', onScroll);
3392
+ });
3393
+ thresholdMetCallback && watch(() => Math.abs(currentScroll.value - savedScroll.value) > computedScrollThreshold.value, thresholdMet => {
3394
+ thresholdMet && thresholdMetCallback({
3395
+ currentThreshold: currentThreshold.value,
3396
+ isScrollingUp: isScrollingUp.value,
3397
+ savedScroll
3398
+ });
3399
+ }, {
3400
+ immediate: true
3401
+ });
3402
+
3403
+ // Do we need this? If yes - seems that
3404
+ // there's no need to expose onScroll
3405
+ canScroll && watch(canScroll, onScroll, {
3406
+ immediate: true
3407
+ });
3408
+ return {
3409
+ computedScrollThreshold,
3410
+ currentScroll,
3411
+ currentThreshold,
3412
+ isScrollActive,
3413
+ // required only for testing
3414
+ // probably can be removed
3415
+ // later (2 chars chlng)
3416
+ isScrollingUp,
3417
+ savedScroll
3418
+ };
3419
+ }
3420
+
3421
+ // Utilities
3422
+
3278
3423
  // Composables
3279
3424
  function useSsrBoot() {
3280
3425
  const isBooted = ref(false);
@@ -3297,13 +3442,7 @@ function useSsrBoot() {
3297
3442
  const VAppBar = genericComponent()({
3298
3443
  name: 'VAppBar',
3299
3444
  props: {
3300
- // TODO: Implement scrolling techniques
3301
- // hideOnScroll: Boolean
3302
- // invertedScroll: Boolean
3303
- // collapseOnScroll: Boolean
3304
- // elevateOnScroll: Boolean
3305
- // shrinkOnScroll: Boolean
3306
- // fadeImageOnScroll: Boolean
3445
+ scrollBehavior: String,
3307
3446
  modelValue: {
3308
3447
  type: Boolean,
3309
3448
  default: true
@@ -3315,6 +3454,7 @@ const VAppBar = genericComponent()({
3315
3454
  },
3316
3455
  ...makeVToolbarProps(),
3317
3456
  ...makeLayoutItemProps(),
3457
+ ...makeScrollProps(),
3318
3458
  height: {
3319
3459
  type: [Number, String],
3320
3460
  default: 64
@@ -3329,11 +3469,63 @@ const VAppBar = genericComponent()({
3329
3469
  } = _ref;
3330
3470
  const vToolbarRef = ref();
3331
3471
  const isActive = useProxiedModel(props, 'modelValue');
3472
+ const scrollBehavior = computed(() => {
3473
+ const behavior = new Set(props.scrollBehavior?.split(' ') ?? []);
3474
+ return {
3475
+ hide: behavior.has('hide'),
3476
+ // fullyHide: behavior.has('fully-hide'),
3477
+ inverted: behavior.has('inverted'),
3478
+ collapse: behavior.has('collapse'),
3479
+ elevate: behavior.has('elevate'),
3480
+ fadeImage: behavior.has('fade-image')
3481
+ // shrink: behavior.has('shrink'),
3482
+ };
3483
+ });
3484
+
3485
+ const canScroll = computed(() => {
3486
+ const behavior = scrollBehavior.value;
3487
+ return behavior.hide ||
3488
+ // behavior.fullyHide ||
3489
+ behavior.inverted || behavior.collapse || behavior.elevate || behavior.fadeImage ||
3490
+ // behavior.shrink ||
3491
+ !isActive.value;
3492
+ });
3493
+ const {
3494
+ currentScroll,
3495
+ currentThreshold,
3496
+ computedScrollThreshold,
3497
+ isScrollingUp
3498
+ } = useScroll(props, {
3499
+ canScroll
3500
+ });
3501
+ const isCollapsed = computed(() => props.collapse || scrollBehavior.value.collapse && (scrollBehavior.value.inverted ? currentScroll.value < 1 : currentScroll.value > 0));
3502
+ const isFlat = computed(() => props.flat || scrollBehavior.value.elevate && currentScroll.value === (scrollBehavior.value.inverted ? 1 : 0));
3503
+ const scrollRatio = computed(() => Math.min((currentThreshold.value - currentScroll.value) / currentThreshold.value || 1, 1));
3504
+ const opacity = computed(() => scrollBehavior.value.fadeImage ? scrollBehavior.value.inverted ? 1 - scrollRatio.value : scrollRatio.value : undefined);
3332
3505
  const height = computed(() => {
3506
+ if (scrollBehavior.value.hide && scrollBehavior.value.inverted) return 0;
3333
3507
  const height = vToolbarRef.value?.contentHeight ?? 0;
3334
3508
  const extensionHeight = vToolbarRef.value?.extensionHeight ?? 0;
3335
3509
  return height + extensionHeight;
3336
3510
  });
3511
+ function setActive() {
3512
+ const val = currentScroll.value;
3513
+ if (scrollBehavior.value.hide) {
3514
+ if (scrollBehavior.value.inverted) {
3515
+ isActive.value = val > computedScrollThreshold.value;
3516
+ } else {
3517
+ isActive.value = isScrollingUp.value || val < computedScrollThreshold.value;
3518
+ }
3519
+ } else if (scrollBehavior.value.inverted) {
3520
+ isActive.value = currentScroll.value === 0;
3521
+ } else {
3522
+ isActive.value = true;
3523
+ }
3524
+ }
3525
+ watch(currentScroll, setActive, {
3526
+ immediate: true
3527
+ });
3528
+ watch(scrollBehavior, setActive);
3337
3529
  const {
3338
3530
  ssrBootStyles
3339
3531
  } = useSsrBoot();
@@ -3344,7 +3536,7 @@ const VAppBar = genericComponent()({
3344
3536
  order: computed(() => parseInt(props.order, 10)),
3345
3537
  position: toRef(props, 'location'),
3346
3538
  layoutSize: height,
3347
- elementSize: height,
3539
+ elementSize: ref(undefined),
3348
3540
  active: isActive,
3349
3541
  absolute: toRef(props, 'absolute')
3350
3542
  });
@@ -3354,13 +3546,17 @@ const VAppBar = genericComponent()({
3354
3546
  "ref": vToolbarRef,
3355
3547
  "class": ['v-app-bar', {
3356
3548
  'v-app-bar--bottom': props.location === 'bottom'
3357
- }],
3358
- "style": {
3549
+ }, props.class],
3550
+ "style": [{
3359
3551
  ...layoutItemStyles.value,
3552
+ '--v-toolbar-image-opacity': opacity.value,
3360
3553
  height: undefined,
3361
3554
  ...ssrBootStyles.value
3362
- }
3363
- }, toolbarProps), slots);
3555
+ }, props.style]
3556
+ }, toolbarProps, {
3557
+ "collapse": isCollapsed.value,
3558
+ "flat": isFlat.value
3559
+ }), slots);
3364
3560
  });
3365
3561
  return {};
3366
3562
  }
@@ -3443,6 +3639,7 @@ function useVariant(props) {
3443
3639
  const makeVBtnGroupProps = propsFactory({
3444
3640
  divided: Boolean,
3445
3641
  ...makeBorderProps(),
3642
+ ...makeComponentProps(),
3446
3643
  ...makeDensityProps(),
3447
3644
  ...makeElevationProps(),
3448
3645
  ...makeRoundedProps(),
@@ -3485,7 +3682,8 @@ const VBtnGroup = genericComponent()({
3485
3682
  return createVNode(props.tag, {
3486
3683
  "class": ['v-btn-group', {
3487
3684
  'v-btn-group--divided': props.divided
3488
- }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value]
3685
+ }, themeClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
3686
+ "style": props.style
3489
3687
  }, slots);
3490
3688
  });
3491
3689
  }
@@ -3718,8 +3916,10 @@ const VBtnToggle = genericComponent()({
3718
3916
  useRender(() => {
3719
3917
  const [btnGroupProps] = VBtnGroup.filterProps(props);
3720
3918
  return createVNode(VBtnGroup, mergeProps({
3721
- "class": "v-btn-toggle"
3722
- }, btnGroupProps), {
3919
+ "class": ['v-btn-toggle', props.class]
3920
+ }, btnGroupProps, {
3921
+ "style": props.style
3922
+ }), {
3723
3923
  default: () => [slots.default?.({
3724
3924
  isSelected,
3725
3925
  next,
@@ -3790,7 +3990,7 @@ const mdi = {
3790
3990
 
3791
3991
  // Types
3792
3992
 
3793
- const IconValue = [String, Function, Object];
3993
+ const IconValue = [String, Function, Object, Array];
3794
3994
  const IconSymbol = Symbol.for('vuetify:icons');
3795
3995
  const makeIconProps = propsFactory({
3796
3996
  icon: {
@@ -3810,8 +4010,9 @@ const VComponentIcon = genericComponent()({
3810
4010
  slots
3811
4011
  } = _ref;
3812
4012
  return () => {
4013
+ const Icon = props.icon;
3813
4014
  return createVNode(props.tag, null, {
3814
- default: () => [props.icon ? createVNode(props.icon, null, null) : slots.default?.()]
4015
+ default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()]
3815
4016
  });
3816
4017
  };
3817
4018
  }
@@ -3834,7 +4035,12 @@ const VSvgIcon = defineComponent({
3834
4035
  "viewBox": "0 0 24 24",
3835
4036
  "role": "img",
3836
4037
  "aria-hidden": "true"
3837
- }, [createVNode("path", {
4038
+ }, [Array.isArray(props.icon) ? props.icon.map(path => Array.isArray(path) ? createVNode("path", {
4039
+ "d": path[0],
4040
+ "fill-opacity": path[1]
4041
+ }, null) : createVNode("path", {
4042
+ "d": path
4043
+ }, null)) : createVNode("path", {
3838
4044
  "d": props.icon
3839
4045
  }, null)])]
3840
4046
  });
@@ -3899,7 +4105,12 @@ const useIcon = props => {
3899
4105
  }
3900
4106
  }
3901
4107
  if (!icon) throw new Error(`Could not find aliased icon "${iconAlias}"`);
3902
- if (typeof icon !== 'string') {
4108
+ if (Array.isArray(icon)) {
4109
+ return {
4110
+ component: VSvgIcon,
4111
+ icon
4112
+ };
4113
+ } else if (typeof icon !== 'string') {
3903
4114
  return {
3904
4115
  component: VComponentIcon,
3905
4116
  icon
@@ -3956,6 +4167,7 @@ const makeVIconProps = propsFactory({
3956
4167
  start: Boolean,
3957
4168
  end: Boolean,
3958
4169
  icon: IconValue,
4170
+ ...makeComponentProps(),
3959
4171
  ...makeSizeProps(),
3960
4172
  ...makeTagProps({
3961
4173
  tag: 'i'
@@ -3998,12 +4210,12 @@ const VIcon = genericComponent()({
3998
4210
  'v-icon--clickable': !!attrs.onClick,
3999
4211
  'v-icon--start': props.start,
4000
4212
  'v-icon--end': props.end
4001
- }],
4213
+ }, props.class],
4002
4214
  "style": [!sizeClasses.value ? {
4003
4215
  fontSize: convertToUnit(props.size),
4004
4216
  height: convertToUnit(props.size),
4005
4217
  width: convertToUnit(props.size)
4006
- } : undefined, textColorStyles.value],
4218
+ } : undefined, textColorStyles.value, props.style],
4007
4219
  "role": attrs.onClick ? 'button' : undefined,
4008
4220
  "aria-hidden": !attrs.onClick
4009
4221
  }, {
@@ -4014,14 +4226,14 @@ const VIcon = genericComponent()({
4014
4226
  });
4015
4227
 
4016
4228
  // Utilities
4017
- function useIntersectionObserver(callback) {
4229
+ function useIntersectionObserver(callback, options) {
4018
4230
  const intersectionRef = ref();
4019
4231
  const isIntersecting = ref(false);
4020
4232
  if (SUPPORTS_INTERSECTION) {
4021
4233
  const observer = new IntersectionObserver(entries => {
4022
4234
  callback?.(entries, observer);
4023
4235
  isIntersecting.value = !!entries.find(entry => entry.isIntersecting);
4024
- });
4236
+ }, options);
4025
4237
  onBeforeUnmount(() => {
4026
4238
  observer.disconnect();
4027
4239
  });
@@ -4061,6 +4273,7 @@ const VProgressCircular = genericComponent()({
4061
4273
  type: [Number, String],
4062
4274
  default: 4
4063
4275
  },
4276
+ ...makeComponentProps(),
4064
4277
  ...makeSizeProps(),
4065
4278
  ...makeTagProps({
4066
4279
  tag: 'div'
@@ -4116,8 +4329,8 @@ const VProgressCircular = genericComponent()({
4116
4329
  'v-progress-circular--indeterminate': !!props.indeterminate,
4117
4330
  'v-progress-circular--visible': isIntersecting.value,
4118
4331
  'v-progress-circular--disable-shrink': props.indeterminate === 'disable-shrink'
4119
- }, themeClasses.value, sizeClasses.value, textColorClasses.value],
4120
- "style": [sizeStyles.value, textColorStyles.value],
4332
+ }, themeClasses.value, sizeClasses.value, textColorClasses.value, props.class],
4333
+ "style": [sizeStyles.value, textColorStyles.value, props.style],
4121
4334
  "role": "progressbar",
4122
4335
  "aria-valuemin": "0",
4123
4336
  "aria-valuemax": "100",
@@ -4536,6 +4749,7 @@ const VProgressLinear = genericComponent()({
4536
4749
  stream: Boolean,
4537
4750
  striped: Boolean,
4538
4751
  roundedBar: Boolean,
4752
+ ...makeComponentProps(),
4539
4753
  ...makeLocationProps({
4540
4754
  location: 'top'
4541
4755
  }),
@@ -4607,14 +4821,14 @@ const VProgressLinear = genericComponent()({
4607
4821
  'v-progress-linear--rounded': props.rounded,
4608
4822
  'v-progress-linear--rounded-bar': props.roundedBar,
4609
4823
  'v-progress-linear--striped': props.striped
4610
- }, roundedClasses.value, themeClasses.value],
4611
- "style": {
4824
+ }, roundedClasses.value, themeClasses.value, props.class],
4825
+ "style": [{
4612
4826
  bottom: props.location === 'bottom' ? 0 : undefined,
4613
4827
  top: props.location === 'top' ? 0 : undefined,
4614
4828
  height: props.active ? convertToUnit(height.value) : 0,
4615
4829
  '--v-progress-linear-height': convertToUnit(height.value),
4616
4830
  ...locationStyles.value
4617
- },
4831
+ }, props.style],
4618
4832
  "role": "progressbar",
4619
4833
  "aria-hidden": props.active ? 'false' : 'true',
4620
4834
  "aria-valuemin": "0",
@@ -4823,8 +5037,9 @@ const makeVBtnProps = propsFactory({
4823
5037
  type: Boolean,
4824
5038
  default: true
4825
5039
  },
5040
+ text: String,
4826
5041
  ...makeBorderProps(),
4827
- ...makeRoundedProps(),
5042
+ ...makeComponentProps(),
4828
5043
  ...makeDensityProps(),
4829
5044
  ...makeDimensionProps(),
4830
5045
  ...makeElevationProps(),
@@ -4832,6 +5047,7 @@ const makeVBtnProps = propsFactory({
4832
5047
  ...makeLoaderProps(),
4833
5048
  ...makeLocationProps(),
4834
5049
  ...makePositionProps(),
5050
+ ...makeRoundedProps(),
4835
5051
  ...makeRouterProps(),
4836
5052
  ...makeSizeProps(),
4837
5053
  ...makeTagProps({
@@ -4929,8 +5145,8 @@ const VBtn = genericComponent()({
4929
5145
  'v-btn--icon': !!props.icon,
4930
5146
  'v-btn--loading': props.loading,
4931
5147
  'v-btn--stacked': props.stacked
4932
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
4933
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value],
5148
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
5149
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, locationStyles.value, sizeStyles.value, props.style],
4934
5150
  "disabled": isDisabled.value || undefined,
4935
5151
  "href": link.href.value,
4936
5152
  "onClick": e => {
@@ -4968,7 +5184,9 @@ const VBtn = genericComponent()({
4968
5184
  icon: props.icon
4969
5185
  }
4970
5186
  }
4971
- }, slots.default)]), !props.icon && hasAppend && createVNode("span", {
5187
+ }, {
5188
+ default: () => [slots.default?.() ?? props.text]
5189
+ })]), !props.icon && hasAppend && createVNode("span", {
4972
5190
  "key": "append",
4973
5191
  "class": "v-btn__append"
4974
5192
  }, [!slots.append ? createVNode(VIcon, {
@@ -5005,15 +5223,17 @@ const VAppBarNavIcon = genericComponent()({
5005
5223
  icon: {
5006
5224
  type: IconValue,
5007
5225
  default: '$menu'
5008
- }
5226
+ },
5227
+ ...makeComponentProps()
5009
5228
  },
5010
5229
  setup(props, _ref) {
5011
5230
  let {
5012
5231
  slots
5013
5232
  } = _ref;
5014
5233
  useRender(() => createVNode(VBtn, {
5015
- "class": "v-app-bar-nav-icon",
5016
- "icon": props.icon
5234
+ "class": ['v-app-bar-nav-icon', props.class],
5235
+ "icon": props.icon,
5236
+ "style": props.style
5017
5237
  }, slots));
5018
5238
  return {};
5019
5239
  }
@@ -5021,9 +5241,12 @@ const VAppBarNavIcon = genericComponent()({
5021
5241
 
5022
5242
  const VToolbarItems = genericComponent()({
5023
5243
  name: 'VToolbarItems',
5024
- props: makeVariantProps({
5025
- variant: 'text'
5026
- }),
5244
+ props: {
5245
+ ...makeComponentProps(),
5246
+ ...makeVariantProps({
5247
+ variant: 'text'
5248
+ })
5249
+ },
5027
5250
  setup(props, _ref) {
5028
5251
  let {
5029
5252
  slots
@@ -5036,7 +5259,8 @@ const VToolbarItems = genericComponent()({
5036
5259
  }
5037
5260
  });
5038
5261
  useRender(() => createVNode("div", {
5039
- "class": "v-toolbar-items"
5262
+ "class": ['v-toolbar-items', props.class],
5263
+ "style": props.style
5040
5264
  }, [slots.default?.()]));
5041
5265
  return {};
5042
5266
  }
@@ -5098,6 +5322,7 @@ const VAlert = genericComponent()({
5098
5322
  type: String,
5099
5323
  validator: val => allowedTypes.includes(val)
5100
5324
  },
5325
+ ...makeComponentProps(),
5101
5326
  ...makeDensityProps(),
5102
5327
  ...makeDimensionProps(),
5103
5328
  ...makeElevationProps(),
@@ -5180,8 +5405,8 @@ const VAlert = genericComponent()({
5180
5405
  [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true
5181
5406
  }, {
5182
5407
  'v-alert--prominent': props.prominent
5183
- }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
5184
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
5408
+ }, themeClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
5409
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
5185
5410
  "role": "alert"
5186
5411
  }, {
5187
5412
  default: () => [genOverlays(false, 'v-alert'), props.border && createVNode("div", {
@@ -5275,6 +5500,7 @@ const VLabel = genericComponent()({
5275
5500
  props: {
5276
5501
  text: String,
5277
5502
  clickable: Boolean,
5503
+ ...makeComponentProps(),
5278
5504
  ...makeThemeProps()
5279
5505
  },
5280
5506
  setup(props, _ref) {
@@ -5284,7 +5510,8 @@ const VLabel = genericComponent()({
5284
5510
  useRender(() => createVNode("label", {
5285
5511
  "class": ['v-label', {
5286
5512
  'v-label--clickable': props.clickable
5287
- }]
5513
+ }, props.class],
5514
+ "style": props.style
5288
5515
  }, [props.text, slots.default?.()]));
5289
5516
  return {};
5290
5517
  }
@@ -5293,7 +5520,8 @@ const VLabel = genericComponent()({
5293
5520
  const VFieldLabel = genericComponent()({
5294
5521
  name: 'VFieldLabel',
5295
5522
  props: {
5296
- floating: Boolean
5523
+ floating: Boolean,
5524
+ ...makeComponentProps()
5297
5525
  },
5298
5526
  setup(props, _ref) {
5299
5527
  let {
@@ -5302,7 +5530,8 @@ const VFieldLabel = genericComponent()({
5302
5530
  useRender(() => createVNode(VLabel, {
5303
5531
  "class": ['v-field-label', {
5304
5532
  'v-field-label--floating': props.floating
5305
- }],
5533
+ }, props.class],
5534
+ "style": props.style,
5306
5535
  "aria-hidden": props.floating || undefined
5307
5536
  }, slots));
5308
5537
  return {};
@@ -5342,7 +5571,7 @@ function useFocus(props) {
5342
5571
 
5343
5572
  // Types
5344
5573
 
5345
- const allowedVariants$1 = ['underlined', 'outlined', 'filled', 'solo', 'plain'];
5574
+ const allowedVariants$1 = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'];
5346
5575
  const makeVFieldProps = propsFactory({
5347
5576
  appendInnerIcon: IconValue,
5348
5577
  bgColor: String,
@@ -5353,9 +5582,11 @@ const makeVFieldProps = propsFactory({
5353
5582
  },
5354
5583
  active: Boolean,
5355
5584
  color: String,
5585
+ baseColor: String,
5356
5586
  dirty: Boolean,
5357
5587
  disabled: Boolean,
5358
5588
  error: Boolean,
5589
+ flat: Boolean,
5359
5590
  label: String,
5360
5591
  persistentClear: Boolean,
5361
5592
  prependInnerIcon: IconValue,
@@ -5369,8 +5600,10 @@ const makeVFieldProps = propsFactory({
5369
5600
  'onClick:clear': EventProp(),
5370
5601
  'onClick:appendInner': EventProp(),
5371
5602
  'onClick:prependInner': EventProp(),
5372
- ...makeThemeProps(),
5373
- ...makeLoaderProps()
5603
+ ...makeComponentProps(),
5604
+ ...makeLoaderProps(),
5605
+ ...makeRoundedProps(),
5606
+ ...makeThemeProps()
5374
5607
  }, 'v-field');
5375
5608
  const VField = genericComponent()({
5376
5609
  name: 'VField',
@@ -5405,6 +5638,9 @@ const VField = genericComponent()({
5405
5638
  const {
5406
5639
  InputIcon
5407
5640
  } = useInputIcon(props);
5641
+ const {
5642
+ roundedClasses
5643
+ } = useRounded(props);
5408
5644
  const isActive = computed(() => props.dirty || props.active);
5409
5645
  const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label));
5410
5646
  const uid = getUid();
@@ -5421,7 +5657,7 @@ const VField = genericComponent()({
5421
5657
  textColorClasses,
5422
5658
  textColorStyles
5423
5659
  } = useTextColor(computed(() => {
5424
- return isActive.value && isFocused.value && !props.error && !props.disabled ? props.color : undefined;
5660
+ return props.error || props.disabled ? undefined : isActive.value && isFocused.value ? props.color : props.baseColor;
5425
5661
  }));
5426
5662
  watch(isActive, val => {
5427
5663
  if (hasLabel.value) {
@@ -5490,6 +5726,7 @@ const VField = genericComponent()({
5490
5726
  'v-field--disabled': props.disabled,
5491
5727
  'v-field--dirty': props.dirty,
5492
5728
  'v-field--error': props.error,
5729
+ 'v-field--flat': props.flat,
5493
5730
  'v-field--has-background': !!props.bgColor,
5494
5731
  'v-field--persistent-clear': props.persistentClear,
5495
5732
  'v-field--prepended': hasPrepend,
@@ -5497,8 +5734,8 @@ const VField = genericComponent()({
5497
5734
  'v-field--single-line': props.singleLine,
5498
5735
  'v-field--no-label': !label,
5499
5736
  [`v-field--variant-${props.variant}`]: true
5500
- }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value],
5501
- "style": [backgroundColorStyles.value, textColorStyles.value],
5737
+ }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value, roundedClasses.value, props.class],
5738
+ "style": [backgroundColorStyles.value, textColorStyles.value, props.style],
5502
5739
  "onClick": onClick
5503
5740
  }, attrs), [createVNode("div", {
5504
5741
  "class": "v-field__overlay"
@@ -5517,7 +5754,7 @@ const VField = genericComponent()({
5517
5754
  }, null), slots['prepend-inner']?.(slotProps.value)]), createVNode("div", {
5518
5755
  "class": "v-field__field",
5519
5756
  "data-no-activator": ""
5520
- }, [['solo', 'filled'].includes(props.variant) && hasLabel.value && createVNode(VFieldLabel, {
5757
+ }, [['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && createVNode(VFieldLabel, {
5521
5758
  "key": "floating-label",
5522
5759
  "ref": floatingLabelRef,
5523
5760
  "class": [textColorClasses.value],
@@ -5586,7 +5823,7 @@ const VField = genericComponent()({
5586
5823
  });
5587
5824
  // TODO: this is kinda slow, might be better to implicitly inherit props instead
5588
5825
  function filterFieldProps(attrs) {
5589
- const keys = Object.keys(VField.props).filter(k => !isOn(k));
5826
+ const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style');
5590
5827
  return pick(attrs, keys);
5591
5828
  }
5592
5829
 
@@ -5601,6 +5838,7 @@ const VMessages = genericComponent()({
5601
5838
  type: [Array, String],
5602
5839
  default: () => []
5603
5840
  },
5841
+ ...makeComponentProps(),
5604
5842
  ...makeTransitionProps({
5605
5843
  transition: {
5606
5844
  component: VSlideYTransition,
@@ -5621,8 +5859,8 @@ const VMessages = genericComponent()({
5621
5859
  useRender(() => createVNode(MaybeTransition, {
5622
5860
  "transition": props.transition,
5623
5861
  "tag": "div",
5624
- "class": ['v-messages', textColorClasses.value],
5625
- "style": textColorStyles.value,
5862
+ "class": ['v-messages', textColorClasses.value, props.class],
5863
+ "style": [textColorStyles.value, props.style],
5626
5864
  "role": "alert",
5627
5865
  "aria-live": "polite"
5628
5866
  }, {
@@ -5918,6 +6156,7 @@ const makeVInputProps = propsFactory({
5918
6156
  },
5919
6157
  'onClick:prepend': EventProp(),
5920
6158
  'onClick:append': EventProp(),
6159
+ ...makeComponentProps(),
5921
6160
  ...makeDensityProps(),
5922
6161
  ...makeValidationProps()
5923
6162
  }, 'v-input');
@@ -5985,7 +6224,8 @@ const VInput = genericComponent()({
5985
6224
  const hasMessages = messages.value.length > 0;
5986
6225
  const hasDetails = !props.hideDetails || props.hideDetails === 'auto' && (hasMessages || !!slots.details);
5987
6226
  return createVNode("div", {
5988
- "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value]
6227
+ "class": ['v-input', `v-input--${props.direction}`, densityClasses.value, validationClasses.value, props.class],
6228
+ "style": props.style
5989
6229
  }, [hasPrepend && createVNode("div", {
5990
6230
  "key": "prepend",
5991
6231
  "class": "v-input__prepend"
@@ -6028,6 +6268,7 @@ const VCounter = genericComponent()({
6028
6268
  type: [Number, String],
6029
6269
  default: 0
6030
6270
  },
6271
+ ...makeComponentProps(),
6031
6272
  ...makeTransitionProps({
6032
6273
  transition: {
6033
6274
  component: VSlideYTransition
@@ -6045,7 +6286,8 @@ const VCounter = genericComponent()({
6045
6286
  "transition": props.transition
6046
6287
  }, {
6047
6288
  default: () => [withDirectives(createVNode("div", {
6048
- "class": "v-counter"
6289
+ "class": ['v-counter', props.class],
6290
+ "style": props.style
6049
6291
  }, [slots.default ? slots.default({
6050
6292
  counter: counter.value,
6051
6293
  max: props.max,
@@ -6248,7 +6490,8 @@ const VTextField = genericComponent()({
6248
6490
  'v-text-field--prefixed': props.prefix,
6249
6491
  'v-text-field--suffixed': props.suffix,
6250
6492
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
6251
- }]
6493
+ }, props.class],
6494
+ "style": props.style
6252
6495
  }, rootAttrs, inputProps, {
6253
6496
  "focused": isFocused.value
6254
6497
  }), {
@@ -6364,6 +6607,7 @@ const VSelectionControlGroup = genericComponent()({
6364
6607
  type: String,
6365
6608
  default: 'VSelectionControl'
6366
6609
  },
6610
+ ...makeComponentProps(),
6367
6611
  ...makeSelectionControlGroupProps()
6368
6612
  },
6369
6613
  emits: {
@@ -6411,7 +6655,8 @@ const VSelectionControlGroup = genericComponent()({
6411
6655
  useRender(() => createVNode("div", {
6412
6656
  "class": ['v-selection-control-group', {
6413
6657
  'v-selection-control-group--inline': props.inline
6414
- }],
6658
+ }, props.class],
6659
+ "style": props.style,
6415
6660
  "role": props.type === 'radio' ? 'radiogroup' : undefined
6416
6661
  }, [slots.default?.()]));
6417
6662
  return {};
@@ -6425,6 +6670,7 @@ const makeSelectionControlProps = propsFactory({
6425
6670
  trueValue: null,
6426
6671
  falseValue: null,
6427
6672
  value: null,
6673
+ ...makeComponentProps(),
6428
6674
  ...makeSelectionControlGroupProps()
6429
6675
  }, 'v-selection-control');
6430
6676
  function useSelectionControl(props) {
@@ -6539,8 +6785,10 @@ const VSelectionControl = genericComponent()({
6539
6785
  'v-selection-control--focused': isFocused.value,
6540
6786
  'v-selection-control--focus-visible': isFocusVisible.value,
6541
6787
  'v-selection-control--inline': props.inline
6542
- }, densityClasses.value]
6543
- }, rootAttrs), [createVNode("div", {
6788
+ }, densityClasses.value, props.class]
6789
+ }, rootAttrs, {
6790
+ "style": props.style
6791
+ }), [createVNode("div", {
6544
6792
  "class": ['v-selection-control__wrapper', textColorClasses.value],
6545
6793
  "style": textColorStyles.value
6546
6794
  }, [slots.default?.(), withDirectives(createVNode("div", {
@@ -6622,7 +6870,8 @@ const VCheckboxBtn = genericComponent()({
6622
6870
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
6623
6871
  "modelValue": model.value,
6624
6872
  "onUpdate:modelValue": [$event => model.value = $event, onChange],
6625
- "class": "v-checkbox-btn",
6873
+ "class": ['v-checkbox-btn', props.class],
6874
+ "style": props.style,
6626
6875
  "type": "checkbox",
6627
6876
  "inline": true,
6628
6877
  "falseIcon": falseIcon.value,
@@ -6662,10 +6911,11 @@ const VCheckbox = genericComponent()({
6662
6911
  const [inputProps, _1] = VInput.filterProps(props);
6663
6912
  const [checkboxProps, _2] = VCheckboxBtn.filterProps(props);
6664
6913
  return createVNode(VInput, mergeProps({
6665
- "class": "v-checkbox"
6914
+ "class": ['v-checkbox', props.class]
6666
6915
  }, inputAttrs, inputProps, {
6667
6916
  "id": id.value,
6668
- "focused": isFocused.value
6917
+ "focused": isFocused.value,
6918
+ "style": props.style
6669
6919
  }), {
6670
6920
  ...slots,
6671
6921
  default: _ref2 => {
@@ -6696,6 +6946,7 @@ const makeVAvatarProps = propsFactory({
6696
6946
  end: Boolean,
6697
6947
  icon: IconValue,
6698
6948
  image: String,
6949
+ ...makeComponentProps(),
6699
6950
  ...makeDensityProps(),
6700
6951
  ...makeRoundedProps(),
6701
6952
  ...makeSizeProps(),
@@ -6734,8 +6985,8 @@ const VAvatar = genericComponent()({
6734
6985
  "class": ['v-avatar', {
6735
6986
  'v-avatar--start': props.start,
6736
6987
  'v-avatar--end': props.end
6737
- }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value],
6738
- "style": [colorStyles.value, sizeStyles.value]
6988
+ }, themeClasses.value, colorClasses.value, densityClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, props.class],
6989
+ "style": [colorStyles.value, sizeStyles.value, props.style]
6739
6990
  }, {
6740
6991
  default: () => [props.image ? createVNode(VImg, {
6741
6992
  "key": "image",
@@ -6763,6 +7014,7 @@ const VChipGroup = genericComponent()({
6763
7014
  type: Function,
6764
7015
  default: deepEqual
6765
7016
  },
7017
+ ...makeComponentProps(),
6766
7018
  ...makeGroupProps({
6767
7019
  selectedClass: 'v-chip--selected'
6768
7020
  }),
@@ -6800,7 +7052,8 @@ const VChipGroup = genericComponent()({
6800
7052
  useRender(() => createVNode(props.tag, {
6801
7053
  "class": ['v-chip-group', {
6802
7054
  'v-chip-group--column': props.column
6803
- }, themeClasses.value]
7055
+ }, themeClasses.value, props.class],
7056
+ "style": props.style
6804
7057
  }, {
6805
7058
  default: () => [slots.default?.({
6806
7059
  isSelected,
@@ -6814,8 +7067,6 @@ const VChipGroup = genericComponent()({
6814
7067
  }
6815
7068
  });
6816
7069
 
6817
- // Types
6818
-
6819
7070
  const VChip = genericComponent()({
6820
7071
  name: 'VChip',
6821
7072
  directives: {
@@ -6860,6 +7111,7 @@ const VChip = genericComponent()({
6860
7111
  onClick: EventProp(),
6861
7112
  onClickOnce: EventProp(),
6862
7113
  ...makeBorderProps(),
7114
+ ...makeComponentProps(),
6863
7115
  ...makeDensityProps(),
6864
7116
  ...makeElevationProps(),
6865
7117
  ...makeGroupItemProps(),
@@ -6952,8 +7204,8 @@ const VChip = genericComponent()({
6952
7204
  'v-chip--link': isClickable.value,
6953
7205
  'v-chip--filter': hasFilter,
6954
7206
  'v-chip--pill': props.pill
6955
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value],
6956
- "style": [hasColor ? colorStyles.value : undefined],
7207
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, roundedClasses.value, sizeClasses.value, variantClasses.value, group?.selectedClass.value, props.class],
7208
+ "style": [hasColor ? colorStyles.value : undefined, props.style],
6957
7209
  "disabled": props.disabled || undefined,
6958
7210
  "draggable": props.draggable,
6959
7211
  "href": link.href.value,
@@ -7062,6 +7314,7 @@ const VDivider = genericComponent()({
7062
7314
  length: [Number, String],
7063
7315
  thickness: [Number, String],
7064
7316
  vertical: Boolean,
7317
+ ...makeComponentProps(),
7065
7318
  ...makeThemeProps()
7066
7319
  },
7067
7320
  setup(props, _ref) {
@@ -7090,8 +7343,8 @@ const VDivider = genericComponent()({
7090
7343
  'v-divider': true,
7091
7344
  'v-divider--inset': props.inset,
7092
7345
  'v-divider--vertical': props.vertical
7093
- }, themeClasses.value, textColorClasses.value],
7094
- "style": [dividerStyles.value, textColorStyles.value],
7346
+ }, themeClasses.value, textColorClasses.value, props.class],
7347
+ "style": [dividerStyles.value, textColorStyles.value, props.style],
7095
7348
  "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined,
7096
7349
  "role": `${attrs.role || 'separator'}`
7097
7350
  }, null));
@@ -7590,6 +7843,7 @@ const makeVListGroupProps = propsFactory({
7590
7843
  fluid: Boolean,
7591
7844
  subgroup: Boolean,
7592
7845
  value: null,
7846
+ ...makeComponentProps(),
7593
7847
  ...makeTagProps()
7594
7848
  }, 'v-list-group');
7595
7849
  const VListGroup = genericComponent()({
@@ -7638,7 +7892,8 @@ const VListGroup = genericComponent()({
7638
7892
  'v-list-group--fluid': props.fluid,
7639
7893
  'v-list-group--subgroup': props.subgroup,
7640
7894
  'v-list-group--open': isOpen.value
7641
- }]
7895
+ }, props.class],
7896
+ "style": props.style
7642
7897
  }, {
7643
7898
  default: () => [slots.activator && createVNode(VDefaultsProvider, {
7644
7899
  "defaults": activatorDefaults.value
@@ -7705,6 +7960,7 @@ const VListItem = genericComponent()({
7705
7960
  onClick: EventProp(),
7706
7961
  onClickOnce: EventProp(),
7707
7962
  ...makeBorderProps(),
7963
+ ...makeComponentProps(),
7708
7964
  ...makeDensityProps(),
7709
7965
  ...makeDimensionProps(),
7710
7966
  ...makeElevationProps(),
@@ -7815,8 +8071,8 @@ const VListItem = genericComponent()({
7815
8071
  'v-list-item--nav': props.nav,
7816
8072
  'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,
7817
8073
  [`${props.activeClass}`]: props.activeClass && isActive.value
7818
- }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value],
7819
- "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value],
8074
+ }, themeClasses.value, borderClasses.value, hasColor ? colorClasses.value : undefined, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class],
8075
+ "style": [hasColor ? colorStyles.value : undefined, dimensionStyles.value, props.style],
7820
8076
  "href": link.href.value,
7821
8077
  "tabindex": isClickable.value ? 0 : undefined,
7822
8078
  "onClick": onClick,
@@ -7909,6 +8165,7 @@ const VListSubheader = genericComponent()({
7909
8165
  inset: Boolean,
7910
8166
  sticky: Boolean,
7911
8167
  title: String,
8168
+ ...makeComponentProps(),
7912
8169
  ...makeTagProps()
7913
8170
  },
7914
8171
  setup(props, _ref) {
@@ -7925,10 +8182,10 @@ const VListSubheader = genericComponent()({
7925
8182
  "class": ['v-list-subheader', {
7926
8183
  'v-list-subheader--inset': props.inset,
7927
8184
  'v-list-subheader--sticky': props.sticky
7928
- }, textColorClasses.value],
7929
- "style": {
8185
+ }, textColorClasses.value, props.class],
8186
+ "style": [{
7930
8187
  textColorStyles
7931
- }
8188
+ }, props.style]
7932
8189
  }, {
7933
8190
  default: () => [hasText && createVNode("div", {
7934
8191
  "class": "v-list-subheader__text"
@@ -8148,6 +8405,7 @@ const VList = genericComponent()({
8148
8405
  openStrategy: 'list'
8149
8406
  }),
8150
8407
  ...makeBorderProps(),
8408
+ ...makeComponentProps(),
8151
8409
  ...makeDensityProps(),
8152
8410
  ...makeDimensionProps(),
8153
8411
  ...makeElevationProps(),
@@ -8259,8 +8517,8 @@ const VList = genericComponent()({
8259
8517
  "class": ['v-list', {
8260
8518
  'v-list--disabled': props.disabled,
8261
8519
  'v-list--nav': props.nav
8262
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value],
8263
- "style": [backgroundColorStyles.value, dimensionStyles.value],
8520
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class],
8521
+ "style": [backgroundColorStyles.value, dimensionStyles.value, props.style],
8264
8522
  "role": "listbox",
8265
8523
  "aria-activedescendant": undefined,
8266
8524
  "onFocusin": onFocusin,
@@ -8288,6 +8546,7 @@ const VListItemAction = genericComponent()({
8288
8546
  props: {
8289
8547
  start: Boolean,
8290
8548
  end: Boolean,
8549
+ ...makeComponentProps(),
8291
8550
  ...makeTagProps()
8292
8551
  },
8293
8552
  setup(props, _ref) {
@@ -8298,7 +8557,8 @@ const VListItemAction = genericComponent()({
8298
8557
  "class": ['v-list-item-action', {
8299
8558
  'v-list-item-action--start': props.start,
8300
8559
  'v-list-item-action--end': props.end
8301
- }]
8560
+ }, props.class],
8561
+ "style": props.style
8302
8562
  }, slots));
8303
8563
  return {};
8304
8564
  }
@@ -8309,6 +8569,7 @@ const VListItemMedia = genericComponent()({
8309
8569
  props: {
8310
8570
  start: Boolean,
8311
8571
  end: Boolean,
8572
+ ...makeComponentProps(),
8312
8573
  ...makeTagProps()
8313
8574
  },
8314
8575
  setup(props, _ref) {
@@ -8320,7 +8581,8 @@ const VListItemMedia = genericComponent()({
8320
8581
  "class": ['v-list-item-media', {
8321
8582
  'v-list-item-media--start': props.start,
8322
8583
  'v-list-item-media--end': props.end
8323
- }]
8584
+ }, props.class],
8585
+ "style": props.style
8324
8586
  }, slots);
8325
8587
  });
8326
8588
  return {};
@@ -9561,6 +9823,7 @@ const makeVOverlayProps = propsFactory({
9561
9823
  default: 2000
9562
9824
  },
9563
9825
  ...makeActivatorProps(),
9826
+ ...makeComponentProps(),
9564
9827
  ...makeDimensionProps(),
9565
9828
  ...makeLazyProps(),
9566
9829
  ...makeLocationStrategyProps(),
@@ -9728,10 +9991,10 @@ const VOverlay = genericComponent()({
9728
9991
  'v-overlay--absolute': props.absolute || props.contained,
9729
9992
  'v-overlay--active': isActive.value,
9730
9993
  'v-overlay--contained': props.contained
9731
- }, themeClasses.value, rtlClasses.value],
9994
+ }, themeClasses.value, rtlClasses.value, props.class],
9732
9995
  "style": [stackStyles.value, {
9733
9996
  top: convertToUnit(top.value)
9734
- }],
9997
+ }, props.style],
9735
9998
  "ref": root
9736
9999
  }, scopeId, attrs), [createVNode(Scrim, mergeProps({
9737
10000
  "color": scrimColor,
@@ -9837,7 +10100,8 @@ const VMenu = genericComponent()({
9837
10100
  const [overlayProps] = VOverlay.filterProps(props);
9838
10101
  return createVNode(VOverlay, mergeProps({
9839
10102
  "ref": overlay,
9840
- "class": ['v-menu']
10103
+ "class": ['v-menu', props.class],
10104
+ "style": props.style
9841
10105
  }, overlayProps, {
9842
10106
  "modelValue": isActive.value,
9843
10107
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -10056,7 +10320,8 @@ const VSelect = genericComponent()({
10056
10320
  'v-select--chips': !!props.chips,
10057
10321
  [`v-select--${props.multiple ? 'multiple' : 'single'}`]: true,
10058
10322
  'v-select--selected': model.value.length
10059
- }],
10323
+ }, props.class],
10324
+ "style": props.style,
10060
10325
  "appendInnerIcon": props.menuIcon,
10061
10326
  "readonly": true,
10062
10327
  "placeholder": placeholder,
@@ -10499,7 +10764,8 @@ const VAutocomplete = genericComponent()({
10499
10764
  'v-autocomplete--selecting-index': selectionIndex.value > -1,
10500
10765
  [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,
10501
10766
  'v-autocomplete--selection-slot': !!slots.selection
10502
- }],
10767
+ }, props.class],
10768
+ "style": props.style,
10503
10769
  "appendInnerIcon": props.menuIcon,
10504
10770
  "readonly": props.readonly,
10505
10771
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -10613,8 +10879,6 @@ const VAutocomplete = genericComponent()({
10613
10879
  }
10614
10880
  });
10615
10881
 
10616
- // Types
10617
-
10618
10882
  const VBadge = genericComponent()({
10619
10883
  name: 'VBadge',
10620
10884
  inheritAttrs: false,
@@ -10638,6 +10902,7 @@ const VBadge = genericComponent()({
10638
10902
  offsetX: [Number, String],
10639
10903
  offsetY: [Number, String],
10640
10904
  textColor: String,
10905
+ ...makeComponentProps(),
10641
10906
  ...makeLocationProps({
10642
10907
  location: 'top end'
10643
10908
  }),
@@ -10682,8 +10947,10 @@ const VBadge = genericComponent()({
10682
10947
  'v-badge--dot': props.dot,
10683
10948
  'v-badge--floating': props.floating,
10684
10949
  'v-badge--inline': props.inline
10685
- }]
10686
- }, attrs), {
10950
+ }, props.class]
10951
+ }, attrs, {
10952
+ "style": props.style
10953
+ }), {
10687
10954
  default: () => [createVNode("div", {
10688
10955
  "class": "v-badge__wrapper"
10689
10956
  }, [ctx.slots.default?.(), createVNode(MaybeTransition, {
@@ -10710,7 +10977,8 @@ const VBannerActions = genericComponent()({
10710
10977
  name: 'VBannerActions',
10711
10978
  props: {
10712
10979
  color: String,
10713
- density: String
10980
+ density: String,
10981
+ ...makeComponentProps()
10714
10982
  },
10715
10983
  setup(props, _ref) {
10716
10984
  let {
@@ -10724,7 +10992,8 @@ const VBannerActions = genericComponent()({
10724
10992
  }
10725
10993
  });
10726
10994
  useRender(() => createVNode("div", {
10727
- "class": "v-banner-actions"
10995
+ "class": ['v-banner-actions', props.class],
10996
+ "style": props.style
10728
10997
  }, [slots.default?.()]));
10729
10998
  return {};
10730
10999
  }
@@ -10745,6 +11014,7 @@ const VBanner = genericComponent()({
10745
11014
  sticky: Boolean,
10746
11015
  text: String,
10747
11016
  ...makeBorderProps(),
11017
+ ...makeComponentProps(),
10748
11018
  ...makeDensityProps(),
10749
11019
  ...makeDimensionProps(),
10750
11020
  ...makeElevationProps(),
@@ -10802,8 +11072,8 @@ const VBanner = genericComponent()({
10802
11072
  'v-banner--stacked': props.stacked || mobile.value,
10803
11073
  'v-banner--sticky': props.sticky,
10804
11074
  [`v-banner--${props.lines}-line`]: !!props.lines
10805
- }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value],
10806
- "style": [dimensionStyles.value, locationStyles.value],
11075
+ }, borderClasses.value, densityClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, themeClasses.value, props.class],
11076
+ "style": [dimensionStyles.value, locationStyles.value, props.style],
10807
11077
  "role": "banner"
10808
11078
  }, {
10809
11079
  default: () => [hasPrepend && createVNode("div", {
@@ -10859,6 +11129,7 @@ const VBottomNavigation = genericComponent()({
10859
11129
  default: true
10860
11130
  },
10861
11131
  ...makeBorderProps(),
11132
+ ...makeComponentProps(),
10862
11133
  ...makeDensityProps(),
10863
11134
  ...makeElevationProps(),
10864
11135
  ...makeRoundedProps(),
@@ -10933,11 +11204,11 @@ const VBottomNavigation = genericComponent()({
10933
11204
  'v-bottom-navigation--active': isActive.value,
10934
11205
  'v-bottom-navigation--grow': props.grow,
10935
11206
  'v-bottom-navigation--shift': props.mode === 'shift'
10936
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value],
11207
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, roundedClasses.value, props.class],
10937
11208
  "style": [backgroundColorStyles.value, layoutItemStyles.value, {
10938
11209
  height: convertToUnit(height.value),
10939
11210
  transform: `translateY(${convertToUnit(!isActive.value ? 100 : 0, '%')})`
10940
- }, ssrBootStyles.value]
11211
+ }, ssrBootStyles.value, props.style]
10941
11212
  }, {
10942
11213
  default: () => [slots.default && createVNode("div", {
10943
11214
  "class": "v-bottom-navigation__content"
@@ -10951,14 +11222,16 @@ const VBottomNavigation = genericComponent()({
10951
11222
  const VBreadcrumbsDivider = genericComponent()({
10952
11223
  name: 'VBreadcrumbsDivider',
10953
11224
  props: {
10954
- divider: [Number, String]
11225
+ divider: [Number, String],
11226
+ ...makeComponentProps()
10955
11227
  },
10956
11228
  setup(props, _ref) {
10957
11229
  let {
10958
11230
  slots
10959
11231
  } = _ref;
10960
11232
  useRender(() => createVNode("li", {
10961
- "class": "v-breadcrumbs-divider"
11233
+ "class": ['v-breadcrumbs-divider', props.class],
11234
+ "style": props.style
10962
11235
  }, [slots?.default?.() ?? props.divider]));
10963
11236
  return {};
10964
11237
  }
@@ -10973,6 +11246,7 @@ const VBreadcrumbsItem = genericComponent()({
10973
11246
  color: String,
10974
11247
  disabled: Boolean,
10975
11248
  title: String,
11249
+ ...makeComponentProps(),
10976
11250
  ...makeRouterProps(),
10977
11251
  ...makeTagProps({
10978
11252
  tag: 'li'
@@ -10998,8 +11272,8 @@ const VBreadcrumbsItem = genericComponent()({
10998
11272
  'v-breadcrumbs-item--disabled': props.disabled,
10999
11273
  'v-breadcrumbs-item--link': link.isLink.value,
11000
11274
  [`${props.activeClass}`]: isActive.value && props.activeClass
11001
- }, textColorClasses.value],
11002
- "style": [textColorStyles.value],
11275
+ }, textColorClasses.value, props.class],
11276
+ "style": [textColorStyles.value, props.style],
11003
11277
  "href": link.href.value,
11004
11278
  "aria-current": isActive.value ? 'page' : undefined,
11005
11279
  "onClick": link.navigate
@@ -11030,6 +11304,7 @@ const VBreadcrumbs = genericComponent()({
11030
11304
  type: Array,
11031
11305
  default: () => []
11032
11306
  },
11307
+ ...makeComponentProps(),
11033
11308
  ...makeDensityProps(),
11034
11309
  ...makeRoundedProps(),
11035
11310
  ...makeTagProps({
@@ -11075,8 +11350,8 @@ const VBreadcrumbs = genericComponent()({
11075
11350
  useRender(() => {
11076
11351
  const hasPrepend = !!(slots.prepend || props.icon);
11077
11352
  return createVNode(props.tag, {
11078
- "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
11079
- "style": backgroundColorStyles.value
11353
+ "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value, props.class],
11354
+ "style": [backgroundColorStyles.value, props.style]
11080
11355
  }, {
11081
11356
  default: () => [hasPrepend && createVNode("div", {
11082
11357
  "key": "prepend",
@@ -11120,11 +11395,10 @@ const VBreadcrumbs = genericComponent()({
11120
11395
  }
11121
11396
  });
11122
11397
 
11123
- // Types
11124
-
11125
- const VCardActions = defineComponent({
11398
+ const VCardActions = genericComponent()({
11126
11399
  name: 'VCardActions',
11127
- setup(_, _ref) {
11400
+ props: makeComponentProps(),
11401
+ setup(props, _ref) {
11128
11402
  let {
11129
11403
  slots
11130
11404
  } = _ref;
@@ -11134,7 +11408,8 @@ const VCardActions = defineComponent({
11134
11408
  }
11135
11409
  });
11136
11410
  useRender(() => createVNode("div", {
11137
- "class": "v-card-actions"
11411
+ "class": ['v-card-actions', props.class],
11412
+ "style": props.style
11138
11413
  }, [slots.default?.()]));
11139
11414
  return {};
11140
11415
  }
@@ -11144,8 +11419,6 @@ const VCardSubtitle = createSimpleFunctional('v-card-subtitle');
11144
11419
 
11145
11420
  const VCardTitle = createSimpleFunctional('v-card-title');
11146
11421
 
11147
- // Types
11148
-
11149
11422
  const VCardItem = genericComponent()({
11150
11423
  name: 'VCardItem',
11151
11424
  props: {
@@ -11155,6 +11428,7 @@ const VCardItem = genericComponent()({
11155
11428
  prependIcon: IconValue,
11156
11429
  subtitle: String,
11157
11430
  title: String,
11431
+ ...makeComponentProps(),
11158
11432
  ...makeDensityProps()
11159
11433
  },
11160
11434
  setup(props, _ref) {
@@ -11169,7 +11443,8 @@ const VCardItem = genericComponent()({
11169
11443
  const hasTitle = !!(props.title || slots.title);
11170
11444
  const hasSubtitle = !!(props.subtitle || slots.subtitle);
11171
11445
  return createVNode("div", {
11172
- "class": "v-card-item"
11446
+ "class": ['v-card-item', props.class],
11447
+ "style": props.style
11173
11448
  }, [hasPrepend && createVNode("div", {
11174
11449
  "key": "prepend",
11175
11450
  "class": "v-card-item__prepend"
@@ -11251,8 +11526,8 @@ const VCard = genericComponent()({
11251
11526
  subtitle: String,
11252
11527
  text: String,
11253
11528
  title: String,
11254
- ...makeThemeProps(),
11255
11529
  ...makeBorderProps(),
11530
+ ...makeComponentProps(),
11256
11531
  ...makeDensityProps(),
11257
11532
  ...makeDimensionProps(),
11258
11533
  ...makeElevationProps(),
@@ -11262,6 +11537,7 @@ const VCard = genericComponent()({
11262
11537
  ...makeRoundedProps(),
11263
11538
  ...makeRouterProps(),
11264
11539
  ...makeTagProps(),
11540
+ ...makeThemeProps(),
11265
11541
  ...makeVariantProps({
11266
11542
  variant: 'elevated'
11267
11543
  })
@@ -11322,8 +11598,8 @@ const VCard = genericComponent()({
11322
11598
  'v-card--flat': props.flat,
11323
11599
  'v-card--hover': props.hover && !(props.disabled || props.flat),
11324
11600
  'v-card--link': isClickable.value
11325
- }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value],
11326
- "style": [colorStyles.value, dimensionStyles.value, locationStyles.value],
11601
+ }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, loaderClasses.value, positionClasses.value, roundedClasses.value, variantClasses.value, props.class],
11602
+ "style": [colorStyles.value, dimensionStyles.value, locationStyles.value, props.style],
11327
11603
  "href": link.href.value,
11328
11604
  "onClick": isClickable.value && link.navigate,
11329
11605
  "tabindex": props.disabled ? -1 : undefined
@@ -11519,6 +11795,7 @@ const makeVWindowProps = propsFactory({
11519
11795
  mandatory: {
11520
11796
  default: 'force'
11521
11797
  },
11798
+ ...makeComponentProps(),
11522
11799
  ...makeTagProps(),
11523
11800
  ...makeThemeProps()
11524
11801
  }, 'v-window');
@@ -11634,7 +11911,8 @@ const VWindow = genericComponent()({
11634
11911
  "ref": rootRef,
11635
11912
  "class": ['v-window', {
11636
11913
  'v-window--show-arrows-on-hover': props.showArrows === 'hover'
11637
- }, themeClasses.value]
11914
+ }, themeClasses.value, props.class],
11915
+ "style": props.style
11638
11916
  }, {
11639
11917
  default: () => [createVNode("div", {
11640
11918
  "class": "v-window__container",
@@ -11719,10 +11997,10 @@ const VCarousel = genericComponent()({
11719
11997
  "class": ['v-carousel', {
11720
11998
  'v-carousel--hide-delimiter-background': props.hideDelimiterBackground,
11721
11999
  'v-carousel--vertical-delimiters': props.verticalDelimiters
11722
- }],
11723
- "style": {
12000
+ }, props.class],
12001
+ "style": [{
11724
12002
  height: convertToUnit(props.height)
11725
- },
12003
+ }, props.style],
11726
12004
  "continuous": true,
11727
12005
  "mandatory": "force",
11728
12006
  "showArrows": props.showArrows
@@ -11788,6 +12066,7 @@ const VWindowItem = genericComponent()({
11788
12066
  type: [Boolean, String],
11789
12067
  default: undefined
11790
12068
  },
12069
+ ...makeComponentProps(),
11791
12070
  ...makeGroupItemProps(),
11792
12071
  ...makeLazyProps()
11793
12072
  },
@@ -11874,7 +12153,8 @@ const VWindowItem = genericComponent()({
11874
12153
  "disabled": !isBooted.value
11875
12154
  }, {
11876
12155
  default: () => [withDirectives(createVNode("div", {
11877
- "class": ['v-window-item', groupItem.selectedClass.value]
12156
+ "class": ['v-window-item', groupItem.selectedClass.value, props.class],
12157
+ "style": props.style
11878
12158
  }, [hasContent.value && slots.default?.()]), [[vShow, groupItem.isSelected.value]])]
11879
12159
  }));
11880
12160
  return {};
@@ -11887,7 +12167,8 @@ const VCarouselItem = genericComponent()({
11887
12167
  name: 'VCarouselItem',
11888
12168
  inheritAttrs: false,
11889
12169
  props: {
11890
- value: null
12170
+ value: null,
12171
+ ...makeComponentProps()
11891
12172
  },
11892
12173
  setup(props, _ref) {
11893
12174
  let {
@@ -11895,7 +12176,8 @@ const VCarouselItem = genericComponent()({
11895
12176
  attrs
11896
12177
  } = _ref;
11897
12178
  useRender(() => createVNode(VWindowItem, {
11898
- "class": "v-carousel-item",
12179
+ "class": ['v-carousel-item', props.class],
12180
+ "style": props.style,
11899
12181
  "value": props.value
11900
12182
  }, {
11901
12183
  default: () => [createVNode(VImg, attrs, slots)]
@@ -11908,6 +12190,7 @@ const VCode = createSimpleFunctional('v-code');
11908
12190
  const makeVSheetProps = propsFactory({
11909
12191
  color: String,
11910
12192
  ...makeBorderProps(),
12193
+ ...makeComponentProps(),
11911
12194
  ...makeDimensionProps(),
11912
12195
  ...makeElevationProps(),
11913
12196
  ...makeLocationProps(),
@@ -11951,8 +12234,8 @@ const VSheet = genericComponent()({
11951
12234
  roundedClasses
11952
12235
  } = useRounded(props);
11953
12236
  useRender(() => createVNode(props.tag, {
11954
- "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value],
11955
- "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value]
12237
+ "class": ['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class],
12238
+ "style": [backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style]
11956
12239
  }, slots));
11957
12240
  return {};
11958
12241
  }
@@ -11978,7 +12261,8 @@ const VColorPickerCanvas = defineComponent({
11978
12261
  width: {
11979
12262
  type: [Number, String],
11980
12263
  default: 300
11981
- }
12264
+ },
12265
+ ...makeComponentProps()
11982
12266
  },
11983
12267
  emits: {
11984
12268
  'update:color': color => true,
@@ -12123,7 +12407,8 @@ const VColorPickerCanvas = defineComponent({
12123
12407
  onMounted(() => updateCanvas());
12124
12408
  useRender(() => createVNode("div", {
12125
12409
  "ref": resizeRef,
12126
- "class": "v-color-picker-canvas",
12410
+ "class": ['v-color-picker-canvas', props.class],
12411
+ "style": props.style,
12127
12412
  "onClick": handleClick,
12128
12413
  "onMousedown": handleMouseDown,
12129
12414
  "onTouchstart": handleMouseDown
@@ -12356,7 +12641,8 @@ const VColorPickerEdit = defineComponent({
12356
12641
  type: Array,
12357
12642
  default: () => Object.keys(modes),
12358
12643
  validator: v => Array.isArray(v) && v.every(m => Object.keys(modes).includes(m))
12359
- }
12644
+ },
12645
+ ...makeComponentProps()
12360
12646
  },
12361
12647
  emits: {
12362
12648
  'update:color': color => true,
@@ -12396,7 +12682,8 @@ const VColorPickerEdit = defineComponent({
12396
12682
  });
12397
12683
  });
12398
12684
  useRender(() => createVNode("div", {
12399
- "class": "v-color-picker-edit"
12685
+ "class": ['v-color-picker-edit', props.class],
12686
+ "style": props.style
12400
12687
  }, [inputs.value?.map(props => createVNode(VColorPickerInput, props, null)), enabledModes.value.length > 1 && createVNode(VBtn, {
12401
12688
  "icon": "$unfold",
12402
12689
  "size": "x-small",
@@ -12480,11 +12767,33 @@ const makeSliderProps = propsFactory({
12480
12767
  elevation: 2
12481
12768
  })
12482
12769
  }, 'slider');
12770
+ const useSteps = props => {
12771
+ const min = computed(() => parseFloat(props.min));
12772
+ const max = computed(() => parseFloat(props.max));
12773
+ const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
12774
+ const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12775
+ function roundValue(value) {
12776
+ if (step.value <= 0) return value;
12777
+ const clamped = clamp(value, min.value, max.value);
12778
+ const offset = min.value % step.value;
12779
+ const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
12780
+ return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
12781
+ }
12782
+ return {
12783
+ min,
12784
+ max,
12785
+ step,
12786
+ decimals,
12787
+ roundValue
12788
+ };
12789
+ };
12483
12790
  const useSlider = _ref => {
12484
12791
  let {
12485
12792
  props,
12486
- handleSliderMouseUp,
12487
- handleMouseMove,
12793
+ steps,
12794
+ onSliderStart,
12795
+ onSliderMove,
12796
+ onSliderEnd,
12488
12797
  getActiveThumb
12489
12798
  } = _ref;
12490
12799
  const {
@@ -12498,10 +12807,13 @@ const useSlider = _ref => {
12498
12807
  }
12499
12808
  return hd;
12500
12809
  });
12501
- const min = computed(() => parseFloat(props.min));
12502
- const max = computed(() => parseFloat(props.max));
12503
- const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
12504
- const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
12810
+ const {
12811
+ min,
12812
+ max,
12813
+ step,
12814
+ decimals,
12815
+ roundValue
12816
+ } = steps;
12505
12817
  const thumbSize = computed(() => parseInt(props.thumbSize, 10));
12506
12818
  const tickSize = computed(() => parseInt(props.tickSize, 10));
12507
12819
  const trackSize = computed(() => parseInt(props.trackSize, 10));
@@ -12511,17 +12823,10 @@ const useSlider = _ref => {
12511
12823
  const thumbColor = computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
12512
12824
  const trackColor = computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
12513
12825
  const trackFillColor = computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
12514
- const mousePressed = ref(false);
12515
- const startOffset = ref(0);
12516
- const trackContainerRef = ref();
12517
- const activeThumbRef = ref();
12518
- function roundValue(value) {
12519
- if (step.value <= 0) return value;
12520
- const clamped = clamp(value, min.value, max.value);
12521
- const offset = min.value % step.value;
12522
- const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
12523
- return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
12524
- }
12826
+ const mousePressed = ref(false);
12827
+ const startOffset = ref(0);
12828
+ const trackContainerRef = ref();
12829
+ const activeThumbRef = ref();
12525
12830
  function parseMouseMove(e) {
12526
12831
  const vertical = props.direction === 'vertical';
12527
12832
  const start = vertical ? 'top' : 'left';
@@ -12538,14 +12843,11 @@ const useSlider = _ref => {
12538
12843
  if (vertical || horizontalDirection.value === 'rtl') clickPos = 1 - clickPos;
12539
12844
  return roundValue(min.value + clickPos * (max.value - min.value));
12540
12845
  }
12541
- let thumbMoved = false;
12542
12846
  const handleStop = e => {
12543
- if (!thumbMoved) {
12544
- startOffset.value = 0;
12545
- handleSliderMouseUp(parseMouseMove(e));
12546
- }
12847
+ onSliderEnd({
12848
+ value: parseMouseMove(e)
12849
+ });
12547
12850
  mousePressed.value = false;
12548
- thumbMoved = false;
12549
12851
  startOffset.value = 0;
12550
12852
  };
12551
12853
  const handleStart = e => {
@@ -12554,20 +12856,25 @@ const useSlider = _ref => {
12554
12856
  activeThumbRef.value.focus();
12555
12857
  mousePressed.value = true;
12556
12858
  if (activeThumbRef.value.contains(e.target)) {
12557
- thumbMoved = true;
12558
12859
  startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
12559
12860
  } else {
12560
12861
  startOffset.value = 0;
12561
- handleMouseMove(parseMouseMove(e));
12862
+ onSliderMove({
12863
+ value: parseMouseMove(e)
12864
+ });
12562
12865
  }
12866
+ onSliderStart({
12867
+ value: parseMouseMove(e)
12868
+ });
12563
12869
  };
12564
12870
  const moveListenerOptions = {
12565
12871
  passive: true,
12566
12872
  capture: true
12567
12873
  };
12568
12874
  function onMouseMove(e) {
12569
- thumbMoved = true;
12570
- handleMouseMove(parseMouseMove(e));
12875
+ onSliderMove({
12876
+ value: parseMouseMove(e)
12877
+ });
12571
12878
  }
12572
12879
  function onSliderMouseUp(e) {
12573
12880
  e.stopPropagation();
@@ -12695,7 +13002,8 @@ const VSliderThumb = genericComponent()({
12695
13002
  ripple: {
12696
13003
  type: Boolean,
12697
13004
  default: true
12698
- }
13005
+ },
13006
+ ...makeComponentProps()
12699
13007
  },
12700
13008
  emits: {
12701
13009
  'update:modelValue': v => true
@@ -12773,11 +13081,11 @@ const VSliderThumb = genericComponent()({
12773
13081
  "class": ['v-slider-thumb', {
12774
13082
  'v-slider-thumb--focused': props.focused,
12775
13083
  'v-slider-thumb--pressed': props.focused && mousePressed.value
12776
- }],
12777
- "style": {
13084
+ }, props.class],
13085
+ "style": [{
12778
13086
  '--v-slider-thumb-position': positionPercentage,
12779
13087
  '--v-slider-thumb-size': convertToUnit(thumbSize.value)
12780
- },
13088
+ }, props.style],
12781
13089
  "role": "slider",
12782
13090
  "tabindex": disabled.value ? -1 : 0,
12783
13091
  "aria-valuemin": props.min,
@@ -12823,7 +13131,8 @@ const VSliderTrack = genericComponent()({
12823
13131
  stop: {
12824
13132
  type: Number,
12825
13133
  required: true
12826
- }
13134
+ },
13135
+ ...makeComponentProps()
12827
13136
  },
12828
13137
  emits: {},
12829
13138
  setup(props, _ref) {
@@ -12898,12 +13207,12 @@ const VSliderTrack = genericComponent()({
12898
13207
  });
12899
13208
  useRender(() => {
12900
13209
  return createVNode("div", {
12901
- "class": ['v-slider-track', roundedClasses.value],
12902
- "style": {
13210
+ "class": ['v-slider-track', roundedClasses.value, props.class],
13211
+ "style": [{
12903
13212
  '--v-slider-track-size': convertToUnit(trackSize.value),
12904
13213
  '--v-slider-tick-size': convertToUnit(tickSize.value),
12905
13214
  direction: !vertical.value ? horizontalDirection.value : undefined
12906
- }
13215
+ }, props.style]
12907
13216
  }, [createVNode("div", {
12908
13217
  "class": ['v-slider-track__background', trackColorClasses.value, {
12909
13218
  'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
@@ -12943,13 +13252,21 @@ const VSlider = genericComponent()({
12943
13252
  },
12944
13253
  emits: {
12945
13254
  'update:focused': value => true,
12946
- 'update:modelValue': v => true
13255
+ 'update:modelValue': v => true,
13256
+ start: value => true,
13257
+ end: value => true
12947
13258
  },
12948
13259
  setup(props, _ref) {
12949
13260
  let {
12950
- slots
13261
+ slots,
13262
+ emit
12951
13263
  } = _ref;
12952
13264
  const thumbContainerRef = ref();
13265
+ const steps = useSteps(props);
13266
+ const model = useProxiedModel(props, 'modelValue', undefined, v => {
13267
+ const value = typeof v === 'string' ? parseFloat(v) : v == null ? steps.min.value : v;
13268
+ return steps.roundValue(value);
13269
+ });
12953
13270
  const {
12954
13271
  min,
12955
13272
  max,
@@ -12963,16 +13280,26 @@ const VSlider = genericComponent()({
12963
13280
  readonly
12964
13281
  } = useSlider({
12965
13282
  props,
12966
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
12967
- handleSliderMouseUp: newValue => model.value = roundValue(newValue),
12968
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
12969
- handleMouseMove: newValue => model.value = roundValue(newValue),
13283
+ steps,
13284
+ onSliderStart: () => {
13285
+ emit('start', model.value);
13286
+ },
13287
+ onSliderEnd: _ref2 => {
13288
+ let {
13289
+ value
13290
+ } = _ref2;
13291
+ const roundedValue = roundValue(value);
13292
+ model.value = roundedValue;
13293
+ emit('end', roundedValue);
13294
+ },
13295
+ onSliderMove: _ref3 => {
13296
+ let {
13297
+ value
13298
+ } = _ref3;
13299
+ return model.value = roundValue(value);
13300
+ },
12970
13301
  getActiveThumb: () => thumbContainerRef.value?.$el
12971
13302
  });
12972
- const model = useProxiedModel(props, 'modelValue', undefined, v => {
12973
- const value = typeof v === 'string' ? parseFloat(v) : v == null ? min.value : v;
12974
- return roundValue(value);
12975
- });
12976
13303
  const {
12977
13304
  isFocused,
12978
13305
  focus,
@@ -12988,7 +13315,8 @@ const VSlider = genericComponent()({
12988
13315
  'v-slider--focused': isFocused.value,
12989
13316
  'v-slider--pressed': mousePressed.value,
12990
13317
  'v-slider--disabled': props.disabled
12991
- }]
13318
+ }, props.class],
13319
+ "style": props.style
12992
13320
  }, inputProps, {
12993
13321
  "focused": isFocused.value
12994
13322
  }), {
@@ -12998,11 +13326,11 @@ const VSlider = genericComponent()({
12998
13326
  "class": "v-slider__label",
12999
13327
  "text": props.label
13000
13328
  }, null) : undefined, slots.prepend?.(slotProps)]) : undefined,
13001
- default: _ref2 => {
13329
+ default: _ref4 => {
13002
13330
  let {
13003
13331
  id,
13004
13332
  messagesId
13005
- } = _ref2;
13333
+ } = _ref4;
13006
13334
  return createVNode("div", {
13007
13335
  "class": "v-slider__container",
13008
13336
  "onMousedown": !readonly.value ? onSliderMousedown : undefined,
@@ -13051,7 +13379,8 @@ const VColorPickerPreview = defineComponent({
13051
13379
  type: Object
13052
13380
  },
13053
13381
  disabled: Boolean,
13054
- hideAlpha: Boolean
13382
+ hideAlpha: Boolean,
13383
+ ...makeComponentProps()
13055
13384
  },
13056
13385
  emits: {
13057
13386
  'update:color': color => true
@@ -13063,7 +13392,8 @@ const VColorPickerPreview = defineComponent({
13063
13392
  useRender(() => createVNode("div", {
13064
13393
  "class": ['v-color-picker-preview', {
13065
13394
  'v-color-picker-preview--hide-alpha': props.hideAlpha
13066
- }]
13395
+ }, props.class],
13396
+ "style": props.style
13067
13397
  }, [createVNode("div", {
13068
13398
  "class": "v-color-picker-preview__dot"
13069
13399
  }, [createVNode("div", {
@@ -13444,7 +13774,8 @@ const VColorPickerSwatches = defineComponent({
13444
13774
  },
13445
13775
  disabled: Boolean,
13446
13776
  color: Object,
13447
- maxHeight: [Number, String]
13777
+ maxHeight: [Number, String],
13778
+ ...makeComponentProps()
13448
13779
  },
13449
13780
  emits: {
13450
13781
  'update:color': color => true
@@ -13454,10 +13785,10 @@ const VColorPickerSwatches = defineComponent({
13454
13785
  emit
13455
13786
  } = _ref;
13456
13787
  useRender(() => createVNode("div", {
13457
- "class": "v-color-picker-swatches",
13458
- "style": {
13788
+ "class": ['v-color-picker-swatches', props.class],
13789
+ "style": [{
13459
13790
  maxHeight: convertToUnit(props.maxHeight)
13460
- }
13791
+ }, props.style]
13461
13792
  }, [createVNode("div", null, [props.swatches.map(swatch => createVNode("div", {
13462
13793
  "class": "v-color-picker-swatches__swatch"
13463
13794
  }, [swatch.map(color => {
@@ -13561,13 +13892,13 @@ const VColorPicker = defineComponent({
13561
13892
  "rounded": props.rounded,
13562
13893
  "elevation": props.elevation,
13563
13894
  "theme": props.theme,
13564
- "class": ['v-color-picker'],
13565
- "style": {
13895
+ "class": ['v-color-picker', props.class],
13896
+ "style": [{
13566
13897
  '--v-color-picker-color-hsv': HSVtoCSS({
13567
13898
  ...(currentColor.value ?? nullColor),
13568
13899
  a: 1
13569
13900
  })
13570
- }
13901
+ }, props.style]
13571
13902
  }, sheetProps, {
13572
13903
  "maxWidth": props.width
13573
13904
  }), {
@@ -13878,7 +14209,8 @@ const VCombobox = genericComponent()({
13878
14209
  'v-combobox--chips': !!props.chips,
13879
14210
  'v-combobox--selecting-index': selectionIndex.value > -1,
13880
14211
  [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true
13881
- }],
14212
+ }, props.class],
14213
+ "style": props.style,
13882
14214
  "appendInnerIcon": props.items.length ? props.menuIcon : undefined,
13883
14215
  "readonly": props.readonly,
13884
14216
  "placeholder": isDirty ? undefined : props.placeholder,
@@ -14076,7 +14408,8 @@ const VDialog = genericComponent()({
14076
14408
  "class": ['v-dialog', {
14077
14409
  'v-dialog--fullscreen': props.fullscreen,
14078
14410
  'v-dialog--scrollable': props.scrollable
14079
- }]
14411
+ }, props.class],
14412
+ "style": props.style
14080
14413
  }, overlayProps, {
14081
14414
  "modelValue": isActive.value,
14082
14415
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -14115,6 +14448,7 @@ const VExpansionPanels = genericComponent()({
14115
14448
  validator: v => allowedVariants.includes(v)
14116
14449
  },
14117
14450
  readonly: Boolean,
14451
+ ...makeComponentProps(),
14118
14452
  ...makeGroupProps(),
14119
14453
  ...makeTagProps(),
14120
14454
  ...makeThemeProps()
@@ -14140,7 +14474,8 @@ const VExpansionPanels = genericComponent()({
14140
14474
  }
14141
14475
  });
14142
14476
  useRender(() => createVNode(props.tag, {
14143
- "class": ['v-expansion-panels', themeClasses.value, variantClass.value]
14477
+ "class": ['v-expansion-panels', themeClasses.value, variantClass.value, props.class],
14478
+ "style": props.style
14144
14479
  }, slots));
14145
14480
  return {};
14146
14481
  }
@@ -14169,6 +14504,7 @@ const VExpansionPanelTitle = genericComponent()({
14169
14504
  Ripple
14170
14505
  },
14171
14506
  props: {
14507
+ ...makeComponentProps(),
14172
14508
  ...makeVExpansionPanelTitleProps()
14173
14509
  },
14174
14510
  setup(props, _ref) {
@@ -14191,8 +14527,8 @@ const VExpansionPanelTitle = genericComponent()({
14191
14527
  useRender(() => withDirectives(createVNode("button", {
14192
14528
  "class": ['v-expansion-panel-title', {
14193
14529
  'v-expansion-panel-title--active': expansionPanel.isSelected.value
14194
- }, backgroundColorClasses.value],
14195
- "style": backgroundColorStyles.value,
14530
+ }, backgroundColorClasses.value, props.class],
14531
+ "style": [backgroundColorStyles.value, props.style],
14196
14532
  "type": "button",
14197
14533
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
14198
14534
  "disabled": expansionPanel.disabled.value,
@@ -14212,6 +14548,7 @@ const VExpansionPanelTitle = genericComponent()({
14212
14548
  const VExpansionPanelText = genericComponent()({
14213
14549
  name: 'VExpansionPanelText',
14214
14550
  props: {
14551
+ ...makeComponentProps(),
14215
14552
  ...makeLazyProps()
14216
14553
  },
14217
14554
  setup(props, _ref) {
@@ -14228,7 +14565,8 @@ const VExpansionPanelText = genericComponent()({
14228
14565
  "onAfterLeave": onAfterLeave
14229
14566
  }, {
14230
14567
  default: () => [withDirectives(createVNode("div", {
14231
- "class": "v-expansion-panel-text"
14568
+ "class": ['v-expansion-panel-text', props.class],
14569
+ "style": props.style
14232
14570
  }, [slots.default && hasContent.value && createVNode("div", {
14233
14571
  "class": "v-expansion-panel-text__wrapper"
14234
14572
  }, [slots.default?.()])]), [[vShow, expansionPanel.isSelected.value]])]
@@ -14243,6 +14581,7 @@ const VExpansionPanel = genericComponent()({
14243
14581
  title: String,
14244
14582
  text: String,
14245
14583
  bgColor: String,
14584
+ ...makeComponentProps(),
14246
14585
  ...makeElevationProps(),
14247
14586
  ...makeGroupItemProps(),
14248
14587
  ...makeLazyProps(),
@@ -14291,8 +14630,8 @@ const VExpansionPanel = genericComponent()({
14291
14630
  'v-expansion-panel--before-active': isBeforeSelected.value,
14292
14631
  'v-expansion-panel--after-active': isAfterSelected.value,
14293
14632
  'v-expansion-panel--disabled': isDisabled.value
14294
- }, roundedClasses.value, backgroundColorClasses.value],
14295
- "style": backgroundColorStyles.value,
14633
+ }, roundedClasses.value, backgroundColorClasses.value, props.class],
14634
+ "style": [backgroundColorStyles.value, props.style],
14296
14635
  "aria-expanded": groupItem.isSelected.value
14297
14636
  }, {
14298
14637
  default: () => [createVNode("div", {
@@ -14442,7 +14781,8 @@ const VFileInput = genericComponent()({
14442
14781
  "ref": vInputRef,
14443
14782
  "modelValue": model.value,
14444
14783
  "onUpdate:modelValue": $event => model.value = $event,
14445
- "class": "v-file-input",
14784
+ "class": ['v-file-input', props.class],
14785
+ "style": props.style,
14446
14786
  "onClick:prepend": onClickPrepend
14447
14787
  }, rootAttrs, inputProps, {
14448
14788
  "focused": isFocused.value
@@ -14534,6 +14874,7 @@ const VFooter = genericComponent()({
14534
14874
  default: 'auto'
14535
14875
  },
14536
14876
  ...makeBorderProps(),
14877
+ ...makeComponentProps(),
14537
14878
  ...makeElevationProps(),
14538
14879
  ...makeLayoutItemProps(),
14539
14880
  ...makeRoundedProps(),
@@ -14583,8 +14924,8 @@ const VFooter = genericComponent()({
14583
14924
  });
14584
14925
  useRender(() => createVNode(props.tag, {
14585
14926
  "ref": resizeRef,
14586
- "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
14587
- "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined]
14927
+ "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
14928
+ "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : undefined, props.style]
14588
14929
  }, slots));
14589
14930
  return {};
14590
14931
  }
@@ -14595,6 +14936,7 @@ const VFooter = genericComponent()({
14595
14936
  const VForm = genericComponent()({
14596
14937
  name: 'VForm',
14597
14938
  props: {
14939
+ ...makeComponentProps(),
14598
14940
  ...makeFormProps()
14599
14941
  },
14600
14942
  emits: {
@@ -14633,7 +14975,8 @@ const VForm = genericComponent()({
14633
14975
  }
14634
14976
  useRender(() => createVNode("form", {
14635
14977
  "ref": formRef,
14636
- "class": "v-form",
14978
+ "class": ['v-form', props.class],
14979
+ "style": props.style,
14637
14980
  "novalidate": true,
14638
14981
  "onReset": onReset,
14639
14982
  "onSubmit": onSubmit
@@ -14649,6 +14992,7 @@ const VContainer = genericComponent()({
14649
14992
  type: Boolean,
14650
14993
  default: false
14651
14994
  },
14995
+ ...makeComponentProps(),
14652
14996
  ...makeTagProps()
14653
14997
  },
14654
14998
  setup(props, _ref) {
@@ -14658,7 +15002,8 @@ const VContainer = genericComponent()({
14658
15002
  useRender(() => createVNode(props.tag, {
14659
15003
  "class": ['v-container', {
14660
15004
  'v-container--fluid': props.fluid
14661
- }]
15005
+ }, props.class],
15006
+ "style": props.style
14662
15007
  }, slots));
14663
15008
  return {};
14664
15009
  }
@@ -14749,6 +15094,7 @@ const VCol = genericComponent()({
14749
15094
  default: null,
14750
15095
  validator: str => ALIGN_SELF_VALUES.includes(str)
14751
15096
  },
15097
+ ...makeComponentProps(),
14752
15098
  ...makeTagProps()
14753
15099
  },
14754
15100
  setup(props, _ref) {
@@ -14779,7 +15125,8 @@ const VCol = genericComponent()({
14779
15125
  return classList;
14780
15126
  });
14781
15127
  return () => h(props.tag, {
14782
- class: classes.value
15128
+ class: [classes.value, props.class],
15129
+ style: props.style
14783
15130
  }, slots.default?.());
14784
15131
  }
14785
15132
  });
@@ -14865,6 +15212,7 @@ const VRow = genericComponent()({
14865
15212
  validator: alignContentValidator
14866
15213
  },
14867
15214
  ...alignContentProps,
15215
+ ...makeComponentProps(),
14868
15216
  ...makeTagProps()
14869
15217
  },
14870
15218
  setup(props, _ref) {
@@ -14893,7 +15241,8 @@ const VRow = genericComponent()({
14893
15241
  return classList;
14894
15242
  });
14895
15243
  return () => h(props.tag, {
14896
- class: ['v-row', classes.value]
15244
+ class: ['v-row', classes.value, props.class],
15245
+ style: props.style
14897
15246
  }, slots.default?.());
14898
15247
  }
14899
15248
  });
@@ -14937,6 +15286,7 @@ const VItemGroupSymbol = Symbol.for('vuetify:v-item-group');
14937
15286
  const VItemGroup = genericComponent()({
14938
15287
  name: 'VItemGroup',
14939
15288
  props: {
15289
+ ...makeComponentProps(),
14940
15290
  ...makeGroupProps({
14941
15291
  selectedClass: 'v-item--selected'
14942
15292
  }),
@@ -14961,7 +15311,8 @@ const VItemGroup = genericComponent()({
14961
15311
  selected
14962
15312
  } = useGroup(props, VItemGroupSymbol);
14963
15313
  return () => createVNode(props.tag, {
14964
- "class": ['v-item-group', themeClasses.value]
15314
+ "class": ['v-item-group', themeClasses.value, props.class],
15315
+ "style": props.style
14965
15316
  }, {
14966
15317
  default: () => [slots.default?.({
14967
15318
  isSelected,
@@ -15011,7 +15362,10 @@ const VKbd = createSimpleFunctional('v-kbd');
15011
15362
 
15012
15363
  const VLayout = genericComponent()({
15013
15364
  name: 'VLayout',
15014
- props: makeLayoutProps(),
15365
+ props: {
15366
+ ...makeComponentProps(),
15367
+ ...makeLayoutProps()
15368
+ },
15015
15369
  setup(props, _ref) {
15016
15370
  let {
15017
15371
  slots
@@ -15025,8 +15379,8 @@ const VLayout = genericComponent()({
15025
15379
  } = createLayout(props);
15026
15380
  useRender(() => createVNode("div", {
15027
15381
  "ref": layoutRef,
15028
- "class": layoutClasses.value,
15029
- "style": layoutStyles.value
15382
+ "class": [layoutClasses.value, props.class],
15383
+ "style": [layoutStyles.value, props.style]
15030
15384
  }, [slots.default?.()]));
15031
15385
  return {
15032
15386
  getLayoutItem,
@@ -15049,6 +15403,7 @@ const VLayoutItem = genericComponent()({
15049
15403
  default: 300
15050
15404
  },
15051
15405
  modelValue: Boolean,
15406
+ ...makeComponentProps(),
15052
15407
  ...makeLayoutItemProps()
15053
15408
  },
15054
15409
  setup(props, _ref) {
@@ -15067,8 +15422,8 @@ const VLayoutItem = genericComponent()({
15067
15422
  absolute: toRef(props, 'absolute')
15068
15423
  });
15069
15424
  return () => createVNode("div", {
15070
- "class": ['v-layout-item'],
15071
- "style": layoutItemStyles.value
15425
+ "class": ['v-layout-item', props.class],
15426
+ "style": [layoutItemStyles.value, props.style]
15072
15427
  }, [slots.default?.()]);
15073
15428
  }
15074
15429
  });
@@ -15092,6 +15447,7 @@ const VLazy = genericComponent()({
15092
15447
  threshold: undefined
15093
15448
  })
15094
15449
  },
15450
+ ...makeComponentProps(),
15095
15451
  ...makeDimensionProps(),
15096
15452
  ...makeTagProps(),
15097
15453
  ...makeTransitionProps({
@@ -15114,8 +15470,8 @@ const VLazy = genericComponent()({
15114
15470
  isActive.value = isIntersecting;
15115
15471
  }
15116
15472
  useRender(() => withDirectives(createVNode(props.tag, {
15117
- "class": "v-lazy",
15118
- "style": dimensionStyles.value
15473
+ "class": ['v-lazy', props.class],
15474
+ "style": [dimensionStyles.value, props.style]
15119
15475
  }, {
15120
15476
  default: () => [isActive.value && createVNode(MaybeTransition, {
15121
15477
  "transition": props.transition,
@@ -15140,7 +15496,8 @@ const VLocaleProvider = genericComponent()({
15140
15496
  rtl: {
15141
15497
  type: Boolean,
15142
15498
  default: undefined
15143
- }
15499
+ },
15500
+ ...makeComponentProps()
15144
15501
  },
15145
15502
  setup(props, _ref) {
15146
15503
  let {
@@ -15150,7 +15507,8 @@ const VLocaleProvider = genericComponent()({
15150
15507
  rtlClasses
15151
15508
  } = provideLocale(props);
15152
15509
  useRender(() => createVNode("div", {
15153
- "class": ['v-locale-provider', rtlClasses.value]
15510
+ "class": ['v-locale-provider', rtlClasses.value, props.class],
15511
+ "style": props.style
15154
15512
  }, [slots.default?.()]));
15155
15513
  return {};
15156
15514
  }
@@ -15160,6 +15518,7 @@ const VMain = genericComponent()({
15160
15518
  name: 'VMain',
15161
15519
  props: {
15162
15520
  scrollable: Boolean,
15521
+ ...makeComponentProps(),
15163
15522
  ...makeTagProps({
15164
15523
  tag: 'main'
15165
15524
  })
@@ -15177,8 +15536,8 @@ const VMain = genericComponent()({
15177
15536
  useRender(() => createVNode(props.tag, {
15178
15537
  "class": ['v-main', {
15179
15538
  'v-main--scrollable': props.scrollable
15180
- }],
15181
- "style": [mainStyles.value, ssrBootStyles.value]
15539
+ }, props.class],
15540
+ "style": [mainStyles.value, ssrBootStyles.value, props.style]
15182
15541
  }, {
15183
15542
  default: () => [props.scrollable ? createVNode("div", {
15184
15543
  "class": "v-main__scroller"
@@ -15524,6 +15883,7 @@ const VNavigationDrawer = genericComponent()({
15524
15883
  },
15525
15884
  sticky: Boolean,
15526
15885
  ...makeBorderProps(),
15886
+ ...makeComponentProps(),
15527
15887
  ...makeElevationProps(),
15528
15888
  ...makeLayoutItemProps(),
15529
15889
  ...makeRoundedProps(),
@@ -15675,8 +16035,8 @@ const VNavigationDrawer = genericComponent()({
15675
16035
  'v-navigation-drawer--temporary': isTemporary.value,
15676
16036
  'v-navigation-drawer--active': isActive.value,
15677
16037
  'v-navigation-drawer--sticky': isSticky.value
15678
- }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value],
15679
- "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value]
16038
+ }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class],
16039
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, dragStyles.value, ssrBootStyles.value, stickyStyles.value, props.style]
15680
16040
  }, attrs), {
15681
16041
  default: () => [hasImage && createVNode("div", {
15682
16042
  "key": "image",
@@ -15805,6 +16165,7 @@ const VPagination = genericComponent()({
15805
16165
  },
15806
16166
  showFirstLastPage: Boolean,
15807
16167
  ...makeBorderProps(),
16168
+ ...makeComponentProps(),
15808
16169
  ...makeDensityProps(),
15809
16170
  ...makeElevationProps(),
15810
16171
  ...makeRoundedProps(),
@@ -16001,7 +16362,8 @@ const VPagination = genericComponent()({
16001
16362
  }
16002
16363
  useRender(() => createVNode(props.tag, {
16003
16364
  "ref": resizeRef,
16004
- "class": ['v-pagination', themeClasses.value],
16365
+ "class": ['v-pagination', themeClasses.value, props.class],
16366
+ "style": props.style,
16005
16367
  "role": "navigation",
16006
16368
  "aria-label": t(props.ariaLabel),
16007
16369
  "onKeydown": onKeydown,
@@ -16060,7 +16422,8 @@ const VParallax = genericComponent()({
16060
16422
  scale: {
16061
16423
  type: [Number, String],
16062
16424
  default: 0.5
16063
- }
16425
+ },
16426
+ ...makeComponentProps()
16064
16427
  },
16065
16428
  setup(props, _ref) {
16066
16429
  let {
@@ -16122,7 +16485,8 @@ const VParallax = genericComponent()({
16122
16485
  useRender(() => createVNode(VImg, {
16123
16486
  "class": ['v-parallax', {
16124
16487
  'v-parallax--active': isIntersecting.value
16125
- }],
16488
+ }, props.class],
16489
+ "style": props.style,
16126
16490
  "ref": root,
16127
16491
  "cover": true,
16128
16492
  "onLoadstart": onScroll,
@@ -16147,7 +16511,8 @@ const VRadio = genericComponent()({
16147
16511
  slots
16148
16512
  } = _ref;
16149
16513
  useRender(() => createVNode(VSelectionControl, mergeProps(props, {
16150
- "class": "v-radio",
16514
+ "class": ['v-radio', props.class],
16515
+ "style": props.style,
16151
16516
  "type": "radio"
16152
16517
  }), slots));
16153
16518
  return {};
@@ -16201,7 +16566,8 @@ const VRadioGroup = genericComponent()({
16201
16566
  }
16202
16567
  }) : props.label;
16203
16568
  return createVNode(VInput, mergeProps({
16204
- "class": "v-radio-group"
16569
+ "class": ['v-radio-group', props.class],
16570
+ "style": props.style
16205
16571
  }, inputAttrs, inputProps, {
16206
16572
  "modelValue": model.value,
16207
16573
  "onUpdate:modelValue": $event => model.value = $event,
@@ -16257,11 +16623,14 @@ const VRangeSlider = genericComponent()({
16257
16623
  },
16258
16624
  emits: {
16259
16625
  'update:focused': value => true,
16260
- 'update:modelValue': value => true
16626
+ 'update:modelValue': value => true,
16627
+ end: value => true,
16628
+ start: value => true
16261
16629
  },
16262
16630
  setup(props, _ref) {
16263
16631
  let {
16264
- slots
16632
+ slots,
16633
+ emit
16265
16634
  } = _ref;
16266
16635
  const startThumbRef = ref();
16267
16636
  const stopThumbRef = ref();
@@ -16274,6 +16643,11 @@ const VRangeSlider = genericComponent()({
16274
16643
  const b = Math.abs(stopOffset);
16275
16644
  return a < b || a === b && startOffset < 0 ? startThumbRef.value.$el : stopThumbRef.value.$el;
16276
16645
  }
16646
+ const steps = useSteps(props);
16647
+ const model = useProxiedModel(props, 'modelValue', undefined, arr => {
16648
+ if (!arr?.length) return [0, 0];
16649
+ return arr.map(value => steps.roundValue(value));
16650
+ });
16277
16651
  const {
16278
16652
  activeThumbRef,
16279
16653
  hasLabels,
@@ -16283,34 +16657,37 @@ const VRangeSlider = genericComponent()({
16283
16657
  onSliderMousedown,
16284
16658
  onSliderTouchstart,
16285
16659
  position,
16286
- roundValue,
16287
16660
  trackContainerRef
16288
16661
  } = useSlider({
16289
- /* eslint-disable @typescript-eslint/no-use-before-define */
16290
16662
  props,
16291
- handleSliderMouseUp: newValue => {
16292
- model.value = activeThumbRef.value === startThumbRef.value?.$el ? [newValue, model.value[1]] : [model.value[0], newValue];
16663
+ steps,
16664
+ onSliderStart: () => {
16665
+ emit('start', model.value);
16666
+ },
16667
+ onSliderEnd: _ref2 => {
16668
+ let {
16669
+ value
16670
+ } = _ref2;
16671
+ const newValue = activeThumbRef.value === startThumbRef.value?.$el ? [value, model.value[1]] : [model.value[0], value];
16672
+ model.value = newValue;
16673
+ emit('end', newValue);
16293
16674
  },
16294
- handleMouseMove: newValue => {
16675
+ onSliderMove: _ref3 => {
16676
+ let {
16677
+ value
16678
+ } = _ref3;
16295
16679
  const [start, stop] = model.value;
16296
16680
  if (!props.strict && start === stop && start !== min.value) {
16297
- activeThumbRef.value = newValue > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;
16681
+ activeThumbRef.value = value > start ? stopThumbRef.value?.$el : startThumbRef.value?.$el;
16298
16682
  activeThumbRef.value?.focus();
16299
16683
  }
16300
16684
  if (activeThumbRef.value === startThumbRef.value?.$el) {
16301
- model.value = [Math.min(newValue, stop), stop];
16685
+ model.value = [Math.min(value, stop), stop];
16302
16686
  } else {
16303
- model.value = [start, Math.max(start, newValue)];
16687
+ model.value = [start, Math.max(start, value)];
16304
16688
  }
16305
16689
  },
16306
16690
  getActiveThumb
16307
- /* eslint-enable @typescript-eslint/no-use-before-define */
16308
- });
16309
-
16310
- const model = useProxiedModel(props, 'modelValue', undefined, arr => {
16311
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain
16312
- if (!arr || !arr.length) return [0, 0];
16313
- return arr.map(value => roundValue(value));
16314
16691
  });
16315
16692
  const {
16316
16693
  isFocused,
@@ -16328,7 +16705,8 @@ const VRangeSlider = genericComponent()({
16328
16705
  'v-slider--focused': isFocused.value,
16329
16706
  'v-slider--pressed': mousePressed.value,
16330
16707
  'v-slider--disabled': props.disabled
16331
- }],
16708
+ }, props.class],
16709
+ "style": props.style,
16332
16710
  "ref": inputRef
16333
16711
  }, inputProps, {
16334
16712
  "focused": isFocused.value
@@ -16338,11 +16716,11 @@ const VRangeSlider = genericComponent()({
16338
16716
  "class": "v-slider__label",
16339
16717
  "text": props.label
16340
16718
  }, null) : undefined, slots.prepend?.(slotProps)]) : undefined,
16341
- default: _ref2 => {
16719
+ default: _ref4 => {
16342
16720
  let {
16343
16721
  id,
16344
16722
  messagesId
16345
- } = _ref2;
16723
+ } = _ref4;
16346
16724
  return createVNode("div", {
16347
16725
  "class": "v-slider__container",
16348
16726
  "onMousedown": onSliderMousedown,
@@ -16471,6 +16849,7 @@ const VRating = genericComponent()({
16471
16849
  validator: v => ['top', 'bottom'].includes(v)
16472
16850
  },
16473
16851
  ripple: Boolean,
16852
+ ...makeComponentProps(),
16474
16853
  ...makeDensityProps(),
16475
16854
  ...makeSizeProps(),
16476
16855
  ...makeTagProps(),
@@ -16494,9 +16873,6 @@ const VRating = genericComponent()({
16494
16873
  const range = computed(() => createRange(Number(props.length), 1));
16495
16874
  const increments = computed(() => range.value.flatMap(v => props.halfIncrements ? [v - 0.5, v] : [v]));
16496
16875
  const hoverIndex = ref(-1);
16497
- const focusIndex = ref(-1);
16498
- const firstRef = ref();
16499
- let isClicking = false;
16500
16876
  const itemState = computed(() => increments.value.map(value => {
16501
16877
  const isHovering = props.hover && hoverIndex.value > -1;
16502
16878
  const isFilled = normalizedValue.value >= value;
@@ -16519,16 +16895,6 @@ const VRating = genericComponent()({
16519
16895
  function onMouseleave() {
16520
16896
  hoverIndex.value = -1;
16521
16897
  }
16522
- function onFocus() {
16523
- if (value === 0 && normalizedValue.value === 0) {
16524
- firstRef.value?.focus();
16525
- } else {
16526
- focusIndex.value = value;
16527
- }
16528
- }
16529
- function onBlur() {
16530
- if (!isClicking) focusIndex.value = -1;
16531
- }
16532
16898
  function onClick() {
16533
16899
  if (props.disabled || props.readonly) return;
16534
16900
  rating.value = normalizedValue.value === value && props.clearable ? 0 : value;
@@ -16536,17 +16902,9 @@ const VRating = genericComponent()({
16536
16902
  return {
16537
16903
  onMouseenter: props.hover ? onMouseenter : undefined,
16538
16904
  onMouseleave: props.hover ? onMouseleave : undefined,
16539
- onFocus,
16540
- onBlur,
16541
16905
  onClick
16542
16906
  };
16543
16907
  }));
16544
- function onMousedown() {
16545
- isClicking = true;
16546
- }
16547
- function onMouseup() {
16548
- isClicking = false;
16549
- }
16550
16908
  const name = computed(() => props.name ?? `v-rating-${getUid()}`);
16551
16909
  function VRatingItem(_ref2) {
16552
16910
  let {
@@ -16557,8 +16915,6 @@ const VRating = genericComponent()({
16557
16915
  const {
16558
16916
  onMouseenter,
16559
16917
  onMouseleave,
16560
- onFocus,
16561
- onBlur,
16562
16918
  onClick
16563
16919
  } = eventState.value[index + 1];
16564
16920
  const id = `${name.value}-${String(value).replace('.', '-')}`;
@@ -16569,7 +16925,6 @@ const VRating = genericComponent()({
16569
16925
  icon: itemState.value[index]?.icon,
16570
16926
  ripple: props.ripple,
16571
16927
  size: props.size,
16572
- tag: 'span',
16573
16928
  variant: 'plain'
16574
16929
  };
16575
16930
  return createVNode(Fragment, null, [createVNode("label", {
@@ -16578,17 +16933,17 @@ const VRating = genericComponent()({
16578
16933
  'v-rating__item--half': props.halfIncrements && value % 1 > 0,
16579
16934
  'v-rating__item--full': props.halfIncrements && value % 1 === 0
16580
16935
  },
16581
- "onMousedown": onMousedown,
16582
- "onMouseup": onMouseup,
16583
16936
  "onMouseenter": onMouseenter,
16584
- "onMouseleave": onMouseleave
16937
+ "onMouseleave": onMouseleave,
16938
+ "onClick": onClick
16585
16939
  }, [createVNode("span", {
16586
16940
  "class": "v-rating__hidden"
16587
16941
  }, [t(props.itemAriaLabel, value, props.length)]), !showStar ? undefined : slots.item ? slots.item({
16588
16942
  ...itemState.value[index],
16589
16943
  props: btnProps,
16590
16944
  value,
16591
- index
16945
+ index,
16946
+ rating: normalizedValue.value
16592
16947
  }) : createVNode(VBtn, btnProps, null)]), createVNode("input", {
16593
16948
  "class": "v-rating__hidden",
16594
16949
  "name": name.value,
@@ -16596,10 +16951,7 @@ const VRating = genericComponent()({
16596
16951
  "type": "radio",
16597
16952
  "value": value,
16598
16953
  "checked": normalizedValue.value === value,
16599
- "onClick": onClick,
16600
- "onFocus": onFocus,
16601
- "onBlur": onBlur,
16602
- "ref": index === 0 ? firstRef : undefined,
16954
+ "tabindex": -1,
16603
16955
  "readonly": props.readonly,
16604
16956
  "disabled": props.disabled
16605
16957
  }, null)]);
@@ -16615,7 +16967,8 @@ const VRating = genericComponent()({
16615
16967
  "class": ['v-rating', {
16616
16968
  'v-rating--hover': props.hover,
16617
16969
  'v-rating--readonly': props.readonly
16618
- }, themeClasses.value]
16970
+ }, themeClasses.value, props.class],
16971
+ "style": props.style
16619
16972
  }, {
16620
16973
  default: () => [createVNode(VRatingItem, {
16621
16974
  "value": 0,
@@ -16628,9 +16981,7 @@ const VRating = genericComponent()({
16628
16981
  index: i,
16629
16982
  label: props.itemLabels?.[i]
16630
16983
  }) : undefined, createVNode("div", {
16631
- "class": ['v-rating__item', {
16632
- 'v-rating__item--focused': Math.ceil(focusIndex.value) === value
16633
- }]
16984
+ "class": "v-rating__item"
16634
16985
  }, [props.halfIncrements ? createVNode(Fragment, null, [createVNode(VRatingItem, {
16635
16986
  "value": value - 0.5,
16636
16987
  "index": i * 2
@@ -16717,6 +17068,7 @@ const makeVSlideGroupProps = propsFactory({
16717
17068
  type: [Boolean, String],
16718
17069
  validator: v => typeof v === 'boolean' || ['always', 'desktop', 'mobile'].includes(v)
16719
17070
  },
17071
+ ...makeComponentProps(),
16720
17072
  ...makeTagProps(),
16721
17073
  ...makeGroupProps({
16722
17074
  selectedClass: 'v-slide-group-item--active'
@@ -16957,7 +17309,8 @@ const VSlideGroup = genericComponent()({
16957
17309
  'v-slide-group--vertical': !isHorizontal.value,
16958
17310
  'v-slide-group--has-affixes': hasAffixes.value,
16959
17311
  'v-slide-group--is-overflowing': isOverflowing.value
16960
- }],
17312
+ }, props.class],
17313
+ "style": props.style,
16961
17314
  "tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
16962
17315
  "onFocus": onFocus
16963
17316
  }, {
@@ -17107,7 +17460,8 @@ const VSnackbar = genericComponent()({
17107
17460
  'v-snackbar--active': isActive.value,
17108
17461
  'v-snackbar--multi-line': props.multiLine && !props.vertical,
17109
17462
  'v-snackbar--vertical': props.vertical
17110
- }, positionClasses.value]
17463
+ }, positionClasses.value, props.class],
17464
+ "style": props.style
17111
17465
  }, overlayProps, {
17112
17466
  "modelValue": isActive.value,
17113
17467
  "onUpdate:modelValue": $event => isActive.value = $event,
@@ -17207,7 +17561,8 @@ const VSwitch = genericComponent()({
17207
17561
  'v-switch--inset': props.inset
17208
17562
  }, {
17209
17563
  'v-switch--indeterminate': indeterminate.value
17210
- }, loaderClasses.value]
17564
+ }, loaderClasses.value, props.class],
17565
+ "style": props.style
17211
17566
  }, inputAttrs, inputProps, {
17212
17567
  "id": id.value,
17213
17568
  "focused": isFocused.value
@@ -17276,6 +17631,7 @@ const VSystemBar = genericComponent()({
17276
17631
  color: String,
17277
17632
  height: [Number, String],
17278
17633
  window: Boolean,
17634
+ ...makeComponentProps(),
17279
17635
  ...makeElevationProps(),
17280
17636
  ...makeLayoutItemProps(),
17281
17637
  ...makeRoundedProps(),
@@ -17317,8 +17673,8 @@ const VSystemBar = genericComponent()({
17317
17673
  useRender(() => createVNode(props.tag, {
17318
17674
  "class": ['v-system-bar', {
17319
17675
  'v-system-bar--window': props.window
17320
- }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value],
17321
- "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value]
17676
+ }, themeClasses.value, backgroundColorClasses.value, elevationClasses.value, roundedClasses.value, props.class],
17677
+ "style": [backgroundColorStyles.value, layoutItemStyles.value, ssrBootStyles.value, props.style]
17322
17678
  }, slots));
17323
17679
  return {};
17324
17680
  }
@@ -17330,7 +17686,6 @@ const VTab = genericComponent()({
17330
17686
  name: 'VTab',
17331
17687
  props: {
17332
17688
  fixed: Boolean,
17333
- title: String,
17334
17689
  sliderColor: String,
17335
17690
  hideSlider: Boolean,
17336
17691
  direction: {
@@ -17392,10 +17747,10 @@ const VTab = genericComponent()({
17392
17747
  useRender(() => {
17393
17748
  const [btnProps] = VBtn.filterProps(props);
17394
17749
  return createVNode(VBtn, mergeProps({
17395
- "_as": "VTab",
17396
17750
  "symbol": VTabsSymbol,
17397
17751
  "ref": rootEl,
17398
- "class": ['v-tab'],
17752
+ "class": ['v-tab', props.class],
17753
+ "style": props.style,
17399
17754
  "tabindex": isSelected.value ? 0 : -1,
17400
17755
  "role": "tab",
17401
17756
  "aria-selected": String(isSelected.value),
@@ -17406,7 +17761,7 @@ const VTab = genericComponent()({
17406
17761
  }, btnProps, attrs, {
17407
17762
  "onGroup:selected": updateSlider
17408
17763
  }), {
17409
- default: () => [slots.default ? slots.default() : props.title, !props.hideSlider && createVNode("div", {
17764
+ default: () => [slots.default?.() ?? props.text, !props.hideSlider && createVNode("div", {
17410
17765
  "ref": sliderEl,
17411
17766
  "class": ['v-tab__slider', sliderColorClasses.value],
17412
17767
  "style": sliderColorStyles.value
@@ -17490,10 +17845,10 @@ const VTabs = genericComponent()({
17490
17845
  'v-tabs--fixed-tabs': props.fixedTabs,
17491
17846
  'v-tabs--grow': props.grow,
17492
17847
  'v-tabs--stacked': props.stacked
17493
- }, densityClasses.value, backgroundColorClasses.value],
17848
+ }, densityClasses.value, backgroundColorClasses.value, props.class],
17494
17849
  "style": [{
17495
17850
  '--v-tabs-height': convertToUnit(props.height)
17496
- }, backgroundColorStyles.value],
17851
+ }, backgroundColorStyles.value, props.style],
17497
17852
  "role": "tablist",
17498
17853
  "symbol": VTabsSymbol
17499
17854
  }), {
@@ -17513,6 +17868,7 @@ const VTable = genericComponent()({
17513
17868
  fixedFooter: Boolean,
17514
17869
  height: [Number, String],
17515
17870
  hover: Boolean,
17871
+ ...makeComponentProps(),
17516
17872
  ...makeDensityProps(),
17517
17873
  ...makeTagProps(),
17518
17874
  ...makeThemeProps()
@@ -17535,7 +17891,8 @@ const VTable = genericComponent()({
17535
17891
  'v-table--has-top': !!slots.top,
17536
17892
  'v-table--has-bottom': !!slots.bottom,
17537
17893
  'v-table--hover': props.hover
17538
- }, themeClasses.value, densityClasses.value]
17894
+ }, themeClasses.value, densityClasses.value, props.class],
17895
+ "style": props.style
17539
17896
  }, {
17540
17897
  default: () => [slots.top?.(), slots.default ? createVNode("div", {
17541
17898
  "class": "v-table__wrapper",
@@ -17700,7 +18057,8 @@ const VTextarea = genericComponent()({
17700
18057
  'v-textarea--auto-grow': props.autoGrow,
17701
18058
  'v-textarea--no-resize': props.noResize || props.autoGrow,
17702
18059
  'v-text-field--flush-details': ['plain', 'underlined'].includes(props.variant)
17703
- }]
18060
+ }, props.class],
18061
+ "style": props.style
17704
18062
  }, rootAttrs, inputProps, {
17705
18063
  "focused": isFocused.value
17706
18064
  }), {
@@ -17784,6 +18142,7 @@ const VThemeProvider = genericComponent()({
17784
18142
  name: 'VThemeProvider',
17785
18143
  props: {
17786
18144
  withBackground: Boolean,
18145
+ ...makeComponentProps(),
17787
18146
  ...makeThemeProps(),
17788
18147
  ...makeTagProps()
17789
18148
  },
@@ -17797,7 +18156,8 @@ const VThemeProvider = genericComponent()({
17797
18156
  return () => {
17798
18157
  if (!props.withBackground) return slots.default?.();
17799
18158
  return createVNode(props.tag, {
17800
- "class": ['v-theme-provider', themeClasses.value]
18159
+ "class": ['v-theme-provider', themeClasses.value, props.class],
18160
+ "style": props.style
17801
18161
  }, {
17802
18162
  default: () => [slots.default?.()]
17803
18163
  });
@@ -17842,6 +18202,7 @@ const VTimeline = genericComponent()({
17842
18202
  type: String,
17843
18203
  validator: v => ['start', 'end', 'both'].includes(v)
17844
18204
  },
18205
+ ...makeComponentProps(),
17845
18206
  ...makeDensityProps(),
17846
18207
  ...makeTagProps(),
17847
18208
  ...makeThemeProps()
@@ -17885,10 +18246,10 @@ const VTimeline = genericComponent()({
17885
18246
  useRender(() => createVNode(props.tag, {
17886
18247
  "class": ['v-timeline', `v-timeline--${props.direction}`, `v-timeline--align-${props.align}`, `v-timeline--justify-${props.justify}`, truncateClasses.value, {
17887
18248
  'v-timeline--inset-line': !!props.lineInset
17888
- }, themeClasses.value, densityClasses.value, sideClasses.value],
17889
- "style": {
18249
+ }, themeClasses.value, densityClasses.value, sideClasses.value, props.class],
18250
+ "style": [{
17890
18251
  '--v-timeline-line-thickness': convertToUnit(props.lineThickness)
17891
- }
18252
+ }, props.style]
17892
18253
  }, slots));
17893
18254
  return {};
17894
18255
  }
@@ -17903,6 +18264,7 @@ const VTimelineDivider = genericComponent()({
17903
18264
  icon: IconValue,
17904
18265
  iconColor: String,
17905
18266
  lineColor: String,
18267
+ ...makeComponentProps(),
17906
18268
  ...makeRoundedProps(),
17907
18269
  ...makeSizeProps(),
17908
18270
  ...makeElevationProps()
@@ -17932,7 +18294,8 @@ const VTimelineDivider = genericComponent()({
17932
18294
  useRender(() => createVNode("div", {
17933
18295
  "class": ['v-timeline-divider', {
17934
18296
  'v-timeline-divider--fill-dot': props.fillDot
17935
- }]
18297
+ }, props.class],
18298
+ "style": props.style
17936
18299
  }, [createVNode("div", {
17937
18300
  "class": ['v-timeline-divider__before', lineColorClasses.value],
17938
18301
  "style": lineColorStyles.value
@@ -17982,11 +18345,12 @@ const VTimelineItem = genericComponent()({
17982
18345
  icon: IconValue,
17983
18346
  iconColor: String,
17984
18347
  lineInset: [Number, String],
17985
- ...makeRoundedProps(),
18348
+ ...makeComponentProps(),
18349
+ ...makeDimensionProps(),
17986
18350
  ...makeElevationProps(),
18351
+ ...makeRoundedProps(),
17987
18352
  ...makeSizeProps(),
17988
- ...makeTagProps(),
17989
- ...makeDimensionProps()
18353
+ ...makeTagProps()
17990
18354
  },
17991
18355
  setup(props, _ref) {
17992
18356
  let {
@@ -18006,11 +18370,11 @@ const VTimelineItem = genericComponent()({
18006
18370
  useRender(() => createVNode("div", {
18007
18371
  "class": ['v-timeline-item', {
18008
18372
  'v-timeline-item--fill-dot': props.fillDot
18009
- }],
18010
- "style": {
18373
+ }, props.class],
18374
+ "style": [{
18011
18375
  '--v-timeline-dot-size': convertToUnit(dotSize.value),
18012
18376
  '--v-timeline-line-inset': props.lineInset ? `calc(var(--v-timeline-dot-size) / 2 + ${convertToUnit(props.lineInset)})` : convertToUnit(0)
18013
- }
18377
+ }, props.style]
18014
18378
  }, [createVNode("div", {
18015
18379
  "class": "v-timeline-item__body",
18016
18380
  "style": dimensionStyles.value
@@ -18044,6 +18408,7 @@ const VTooltip = genericComponent()({
18044
18408
  closeOnBack: false,
18045
18409
  location: 'end',
18046
18410
  locationStrategy: 'connected',
18411
+ eager: true,
18047
18412
  minWidth: 0,
18048
18413
  offset: 10,
18049
18414
  openOnClick: false,
@@ -18052,7 +18417,7 @@ const VTooltip = genericComponent()({
18052
18417
  scrim: false,
18053
18418
  scrollStrategy: 'reposition',
18054
18419
  transition: false
18055
- }), ['absolute', 'persistent', 'eager'])
18420
+ }), ['absolute', 'persistent'])
18056
18421
  },
18057
18422
  emits: {
18058
18423
  'update:modelValue': value => true
@@ -18085,7 +18450,8 @@ const VTooltip = genericComponent()({
18085
18450
  const [overlayProps] = VOverlay.filterProps(props);
18086
18451
  return createVNode(VOverlay, mergeProps({
18087
18452
  "ref": overlay,
18088
- "class": ['v-tooltip'],
18453
+ "class": ['v-tooltip', props.class],
18454
+ "style": props.style,
18089
18455
  "id": id.value
18090
18456
  }, overlayProps, {
18091
18457
  "modelValue": isActive.value,
@@ -18096,7 +18462,6 @@ const VTooltip = genericComponent()({
18096
18462
  "origin": origin.value,
18097
18463
  "persistent": true,
18098
18464
  "role": "tooltip",
18099
- "eager": true,
18100
18465
  "activatorProps": activatorProps.value,
18101
18466
  "_disableGlobalStack": true
18102
18467
  }, scopeId), {
@@ -18131,6 +18496,176 @@ const VValidation = genericComponent()({
18131
18496
  }
18132
18497
  });
18133
18498
 
18499
+ const VVirtualScrollItem = genericComponent()({
18500
+ name: 'VVirtualScrollItem',
18501
+ props: {
18502
+ dynamicHeight: Boolean,
18503
+ ...makeComponentProps()
18504
+ },
18505
+ emits: {
18506
+ 'update:height': height => true
18507
+ },
18508
+ setup(props, _ref) {
18509
+ let {
18510
+ emit,
18511
+ slots
18512
+ } = _ref;
18513
+ const {
18514
+ resizeRef,
18515
+ contentRect
18516
+ } = useResizeObserver();
18517
+ useToggleScope(() => props.dynamicHeight, () => {
18518
+ watch(() => contentRect.value?.height, height => {
18519
+ if (height != null) emit('update:height', height);
18520
+ });
18521
+ });
18522
+ function updateHeight() {
18523
+ if (props.dynamicHeight && contentRect.value) {
18524
+ emit('update:height', contentRect.value.height);
18525
+ }
18526
+ }
18527
+ onUpdated(updateHeight);
18528
+ useRender(() => createVNode("div", {
18529
+ "ref": props.dynamicHeight ? resizeRef : undefined,
18530
+ "class": ['v-virtual-scroll__item', props.class],
18531
+ "style": props.style
18532
+ }, [slots.default?.()]));
18533
+ }
18534
+ });
18535
+
18536
+ // Types
18537
+
18538
+ const UP = -1;
18539
+ const DOWN = 1;
18540
+ const VVirtualScroll = genericComponent()({
18541
+ name: 'VVirtualScroll',
18542
+ props: {
18543
+ items: {
18544
+ type: Array,
18545
+ default: () => []
18546
+ },
18547
+ itemHeight: [Number, String],
18548
+ ...makeComponentProps(),
18549
+ ...makeDimensionProps()
18550
+ },
18551
+ setup(props, _ref) {
18552
+ let {
18553
+ slots
18554
+ } = _ref;
18555
+ const first = ref(0);
18556
+ const baseItemHeight = ref(props.itemHeight);
18557
+ const itemHeight = computed({
18558
+ get: () => parseInt(baseItemHeight.value ?? 0, 10),
18559
+ set(val) {
18560
+ baseItemHeight.value = val;
18561
+ }
18562
+ });
18563
+ const rootEl = ref();
18564
+ const {
18565
+ resizeRef,
18566
+ contentRect
18567
+ } = useResizeObserver();
18568
+ watchEffect(() => {
18569
+ resizeRef.value = rootEl.value;
18570
+ });
18571
+ const display = useDisplay();
18572
+ const sizeMap = new Map();
18573
+ let sizes = createRange(props.items.length).map(() => itemHeight.value);
18574
+ const visibleItems = computed(() => {
18575
+ return Math.max(12, Math.ceil((contentRect.value?.height ?? display.height.value) / itemHeight.value * 1.7 + 1));
18576
+ });
18577
+ function handleItemResize(index, height) {
18578
+ itemHeight.value = Math.max(itemHeight.value, height);
18579
+ sizes[index] = height;
18580
+ sizeMap.set(props.items[index], height);
18581
+ }
18582
+ function calculateOffset(index) {
18583
+ return sizes.slice(0, index).reduce((curr, value) => curr + (value || itemHeight.value), 0);
18584
+ }
18585
+ function calculateMidPointIndex(scrollTop) {
18586
+ const end = props.items.length;
18587
+ let middle = 0;
18588
+ let middleOffset = 0;
18589
+ while (middleOffset < scrollTop && middle < end) {
18590
+ middleOffset += sizes[middle++] || itemHeight.value;
18591
+ }
18592
+ return middle - 1;
18593
+ }
18594
+ let lastScrollTop = 0;
18595
+ function handleScroll() {
18596
+ if (!rootEl.value || !contentRect.value) return;
18597
+ const height = contentRect.value.height;
18598
+ const scrollTop = rootEl.value.scrollTop;
18599
+ const direction = scrollTop < lastScrollTop ? UP : DOWN;
18600
+ const midPointIndex = calculateMidPointIndex(scrollTop + height / 2);
18601
+ const buffer = Math.round(visibleItems.value / 3);
18602
+ if (direction === UP && midPointIndex <= first.value + buffer * 2 - 1) {
18603
+ first.value = clamp(midPointIndex - buffer, 0, props.items.length);
18604
+ } else if (direction === DOWN && midPointIndex >= first.value + buffer * 2 - 1) {
18605
+ first.value = clamp(midPointIndex - buffer, 0, props.items.length - visibleItems.value);
18606
+ }
18607
+ lastScrollTop = rootEl.value.scrollTop;
18608
+ }
18609
+ function scrollToIndex(index) {
18610
+ if (!rootEl.value) return;
18611
+ const offset = calculateOffset(index);
18612
+ rootEl.value.scrollTop = offset;
18613
+ }
18614
+ const items = computed(() => props.items.map((item, index) => ({
18615
+ raw: item,
18616
+ index
18617
+ })));
18618
+ const last = computed(() => Math.min(props.items.length, first.value + visibleItems.value));
18619
+ const computedItems = computed(() => items.value.slice(first.value, last.value));
18620
+ const paddingTop = computed(() => calculateOffset(first.value));
18621
+ const paddingBottom = computed(() => calculateOffset(props.items.length) - calculateOffset(last.value));
18622
+ const {
18623
+ dimensionStyles
18624
+ } = useDimension(props);
18625
+ onMounted(() => {
18626
+ if (!itemHeight.value) {
18627
+ // If itemHeight prop is not set, then calculate an estimated height from the average of inital items
18628
+ itemHeight.value = sizes.slice(first.value, last.value).reduce((curr, height) => curr + height, 0) / visibleItems.value;
18629
+ }
18630
+ });
18631
+ watch(() => props.items.length, () => {
18632
+ sizes = createRange(props.items.length).map(() => itemHeight.value);
18633
+ sizeMap.forEach((height, item) => {
18634
+ const index = props.items.indexOf(item);
18635
+ if (index === -1) {
18636
+ sizeMap.delete(item);
18637
+ } else {
18638
+ sizes[index] = height;
18639
+ }
18640
+ });
18641
+ });
18642
+ useRender(() => createVNode("div", {
18643
+ "ref": rootEl,
18644
+ "class": ['v-virtual-scroll', props.class],
18645
+ "onScroll": handleScroll,
18646
+ "style": [dimensionStyles.value, props.style]
18647
+ }, [createVNode("div", {
18648
+ "class": "v-virtual-scroll__container",
18649
+ "style": {
18650
+ paddingTop: convertToUnit(paddingTop.value),
18651
+ paddingBottom: convertToUnit(paddingBottom.value)
18652
+ }
18653
+ }, [computedItems.value.map(item => createVNode(VVirtualScrollItem, {
18654
+ "key": item.index,
18655
+ "dynamicHeight": !props.itemHeight,
18656
+ "onUpdate:height": height => handleItemResize(item.index, height)
18657
+ }, {
18658
+ default: () => [slots.default?.({
18659
+ item: item.raw,
18660
+ index: item.index
18661
+ })]
18662
+ }))])]));
18663
+ return {
18664
+ scrollToIndex
18665
+ };
18666
+ }
18667
+ });
18668
+
18134
18669
  var components = /*#__PURE__*/Object.freeze({
18135
18670
  __proto__: null,
18136
18671
  VAlert: VAlert,
@@ -18263,6 +18798,7 @@ var components = /*#__PURE__*/Object.freeze({
18263
18798
  VToolbarTitle: VToolbarTitle,
18264
18799
  VTooltip: VTooltip,
18265
18800
  VValidation: VValidation,
18801
+ VVirtualScroll: VVirtualScroll,
18266
18802
  VWindow: VWindow,
18267
18803
  VWindowItem: VWindowItem
18268
18804
  });
@@ -18394,6 +18930,418 @@ var directives = /*#__PURE__*/Object.freeze({
18394
18930
  Touch: Touch
18395
18931
  });
18396
18932
 
18933
+ // Utilities
18934
+
18935
+ // Types
18936
+
18937
+ function getWeekArray(date) {
18938
+ let currentWeek = [];
18939
+ const weeks = [];
18940
+ const firstDayOfMonth = startOfMonth(date);
18941
+ const lastDayOfMonth = endOfMonth(date);
18942
+ for (let i = 0; i < firstDayOfMonth.getDay(); i++) {
18943
+ currentWeek.push(null);
18944
+ }
18945
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
18946
+ const day = new Date(date.getFullYear(), date.getMonth(), i);
18947
+
18948
+ // Add the day to the current week
18949
+ currentWeek.push(day);
18950
+
18951
+ // If the current week has 7 days, add it to the weeks array and start a new week
18952
+ if (currentWeek.length === 7) {
18953
+ weeks.push(currentWeek);
18954
+ currentWeek = [];
18955
+ }
18956
+ }
18957
+ for (let i = currentWeek.length; i < 7; i++) {
18958
+ currentWeek.push(null);
18959
+ }
18960
+ weeks.push(currentWeek);
18961
+ return weeks;
18962
+ }
18963
+ function startOfMonth(date) {
18964
+ return new Date(date.getFullYear(), date.getMonth(), 1);
18965
+ }
18966
+ function endOfMonth(date) {
18967
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
18968
+ }
18969
+ function date(value) {
18970
+ if (value == null) return null;
18971
+ if (value instanceof Date) return value;
18972
+ if (typeof value === 'string') {
18973
+ const parsed = Date.parse(value);
18974
+ if (!isNaN(parsed)) return new Date(parsed);
18975
+ }
18976
+ return null;
18977
+ }
18978
+ const firstDay = {
18979
+ '001': 1,
18980
+ AD: 1,
18981
+ AE: 6,
18982
+ AF: 6,
18983
+ AG: 0,
18984
+ AI: 1,
18985
+ AL: 1,
18986
+ AM: 1,
18987
+ AN: 1,
18988
+ AR: 1,
18989
+ AS: 0,
18990
+ AT: 1,
18991
+ AU: 0,
18992
+ AX: 1,
18993
+ AZ: 1,
18994
+ BA: 1,
18995
+ BD: 0,
18996
+ BE: 1,
18997
+ BG: 1,
18998
+ BH: 6,
18999
+ BM: 1,
19000
+ BN: 1,
19001
+ BR: 0,
19002
+ BS: 0,
19003
+ BT: 0,
19004
+ BW: 0,
19005
+ BY: 1,
19006
+ BZ: 0,
19007
+ CA: 0,
19008
+ CH: 1,
19009
+ CL: 1,
19010
+ CM: 1,
19011
+ CN: 0,
19012
+ CO: 0,
19013
+ CR: 1,
19014
+ CY: 1,
19015
+ CZ: 1,
19016
+ DE: 1,
19017
+ DJ: 6,
19018
+ DK: 1,
19019
+ DM: 0,
19020
+ DO: 0,
19021
+ DZ: 6,
19022
+ EC: 1,
19023
+ EE: 1,
19024
+ EG: 6,
19025
+ ES: 1,
19026
+ ET: 0,
19027
+ FI: 1,
19028
+ FJ: 1,
19029
+ FO: 1,
19030
+ FR: 1,
19031
+ GB: 1,
19032
+ 'GB-alt-variant': 0,
19033
+ GE: 1,
19034
+ GF: 1,
19035
+ GP: 1,
19036
+ GR: 1,
19037
+ GT: 0,
19038
+ GU: 0,
19039
+ HK: 0,
19040
+ HN: 0,
19041
+ HR: 1,
19042
+ HU: 1,
19043
+ ID: 0,
19044
+ IE: 1,
19045
+ IL: 0,
19046
+ IN: 0,
19047
+ IQ: 6,
19048
+ IR: 6,
19049
+ IS: 1,
19050
+ IT: 1,
19051
+ JM: 0,
19052
+ JO: 6,
19053
+ JP: 0,
19054
+ KE: 0,
19055
+ KG: 1,
19056
+ KH: 0,
19057
+ KR: 0,
19058
+ KW: 6,
19059
+ KZ: 1,
19060
+ LA: 0,
19061
+ LB: 1,
19062
+ LI: 1,
19063
+ LK: 1,
19064
+ LT: 1,
19065
+ LU: 1,
19066
+ LV: 1,
19067
+ LY: 6,
19068
+ MC: 1,
19069
+ MD: 1,
19070
+ ME: 1,
19071
+ MH: 0,
19072
+ MK: 1,
19073
+ MM: 0,
19074
+ MN: 1,
19075
+ MO: 0,
19076
+ MQ: 1,
19077
+ MT: 0,
19078
+ MV: 5,
19079
+ MX: 0,
19080
+ MY: 1,
19081
+ MZ: 0,
19082
+ NI: 0,
19083
+ NL: 1,
19084
+ NO: 1,
19085
+ NP: 0,
19086
+ NZ: 1,
19087
+ OM: 6,
19088
+ PA: 0,
19089
+ PE: 0,
19090
+ PH: 0,
19091
+ PK: 0,
19092
+ PL: 1,
19093
+ PR: 0,
19094
+ PT: 0,
19095
+ PY: 0,
19096
+ QA: 6,
19097
+ RE: 1,
19098
+ RO: 1,
19099
+ RS: 1,
19100
+ RU: 1,
19101
+ SA: 0,
19102
+ SD: 6,
19103
+ SE: 1,
19104
+ SG: 0,
19105
+ SI: 1,
19106
+ SK: 1,
19107
+ SM: 1,
19108
+ SV: 0,
19109
+ SY: 6,
19110
+ TH: 0,
19111
+ TJ: 1,
19112
+ TM: 1,
19113
+ TR: 1,
19114
+ TT: 0,
19115
+ TW: 0,
19116
+ UA: 1,
19117
+ UM: 0,
19118
+ US: 0,
19119
+ UY: 1,
19120
+ UZ: 1,
19121
+ VA: 1,
19122
+ VE: 0,
19123
+ VI: 0,
19124
+ VN: 1,
19125
+ WS: 0,
19126
+ XK: 1,
19127
+ YE: 0,
19128
+ ZA: 0,
19129
+ ZW: 0
19130
+ };
19131
+ const sundayJanuarySecond2000 = new Date(2000, 0, 2);
19132
+ function getWeekdays(locale) {
19133
+ const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
19134
+ return createRange(7).map(i => {
19135
+ const weekday = new Date(sundayJanuarySecond2000);
19136
+ weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
19137
+ return new Intl.DateTimeFormat(locale, {
19138
+ weekday: 'long'
19139
+ }).format(weekday);
19140
+ });
19141
+ }
19142
+ function format(value, formatString, locale) {
19143
+ const date = new Date(value);
19144
+ let options = {};
19145
+ switch (formatString) {
19146
+ case 'fullDateWithWeekday':
19147
+ options = {
19148
+ weekday: 'long',
19149
+ day: 'numeric',
19150
+ month: 'long',
19151
+ year: 'numeric'
19152
+ };
19153
+ break;
19154
+ case 'normalDateWithWeekday':
19155
+ options = {
19156
+ weekday: 'short',
19157
+ day: 'numeric',
19158
+ month: 'short',
19159
+ year: 'numeric'
19160
+ };
19161
+ break;
19162
+ case 'keyboardDate':
19163
+ options = {};
19164
+ break;
19165
+ case 'monthAndDate':
19166
+ options = {
19167
+ month: 'long',
19168
+ day: 'numeric'
19169
+ };
19170
+ break;
19171
+ case 'monthAndYear':
19172
+ options = {
19173
+ month: 'long',
19174
+ year: 'numeric'
19175
+ };
19176
+ break;
19177
+ default:
19178
+ options = {
19179
+ timeZone: 'UTC',
19180
+ timeZoneName: 'short'
19181
+ };
19182
+ }
19183
+ return new Intl.DateTimeFormat(locale, options).format(date);
19184
+ }
19185
+ function addDays(date, amount) {
19186
+ const d = new Date(date);
19187
+ d.setDate(d.getDate() + amount);
19188
+ return d;
19189
+ }
19190
+ function addMonths(date, amount) {
19191
+ const d = new Date(date);
19192
+ d.setMonth(d.getMonth() + amount);
19193
+ return d;
19194
+ }
19195
+ function getYear(date) {
19196
+ return date.getFullYear();
19197
+ }
19198
+ function getMonth(date) {
19199
+ return date.getMonth();
19200
+ }
19201
+ function startOfYear(date) {
19202
+ return new Date(date.getFullYear(), 0, 1);
19203
+ }
19204
+ function endOfYear(date) {
19205
+ return new Date(date.getFullYear(), 11, 31);
19206
+ }
19207
+ function getMondayOfFirstWeekOfYear(year) {
19208
+ return new Date(year, 0, 1);
19209
+ }
19210
+
19211
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
19212
+ function getWeek(date) {
19213
+ let year = date.getFullYear();
19214
+ let d1w1 = getMondayOfFirstWeekOfYear(year);
19215
+ if (date < d1w1) {
19216
+ year = year - 1;
19217
+ d1w1 = getMondayOfFirstWeekOfYear(year);
19218
+ } else {
19219
+ const tv = getMondayOfFirstWeekOfYear(year + 1);
19220
+ if (date >= tv) {
19221
+ year = year + 1;
19222
+ d1w1 = tv;
19223
+ }
19224
+ }
19225
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
19226
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
19227
+ return Math.floor(diffDays / 7) + 1;
19228
+ }
19229
+ function isWithinRange(date, range) {
19230
+ return isAfter(date, range[0]) && isBefore(date, range[1]);
19231
+ }
19232
+ function isValid(date) {
19233
+ const d = new Date(date);
19234
+ return d instanceof Date && !isNaN(d.getTime());
19235
+ }
19236
+ function isAfter(date, comparing) {
19237
+ return date.getTime() > comparing.getTime();
19238
+ }
19239
+ function isBefore(date, comparing) {
19240
+ return date.getTime() < comparing.getTime();
19241
+ }
19242
+ function isEqual(date, comparing) {
19243
+ return date.getTime() === comparing.getTime();
19244
+ }
19245
+ function isSameDay(date, comparing) {
19246
+ return date.getDate() === comparing.getDate() && date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19247
+ }
19248
+ function isSameMonth(date, comparing) {
19249
+ return date.getMonth() === comparing.getMonth() && date.getFullYear() === comparing.getFullYear();
19250
+ }
19251
+ function getDiff(date, comparing, unit) {
19252
+ const d = new Date(date);
19253
+ const c = new Date(comparing);
19254
+ if (unit === 'month') {
19255
+ return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12;
19256
+ }
19257
+ return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24));
19258
+ }
19259
+ function setYear(date, year) {
19260
+ const d = new Date(date);
19261
+ d.setFullYear(year);
19262
+ return d;
19263
+ }
19264
+ class VuetifyDateAdapter {
19265
+ constructor() {
19266
+ let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
19267
+ this.locale = locale;
19268
+ }
19269
+ date(value) {
19270
+ return date(value);
19271
+ }
19272
+ addDays(date, amount) {
19273
+ return addDays(date, amount);
19274
+ }
19275
+ addMonths(date, amount) {
19276
+ return addMonths(date, amount);
19277
+ }
19278
+ getWeekArray(date) {
19279
+ return getWeekArray(date);
19280
+ }
19281
+ startOfMonth(date) {
19282
+ return startOfMonth(date);
19283
+ }
19284
+ endOfMonth(date) {
19285
+ return endOfMonth(date);
19286
+ }
19287
+ format(date, formatString) {
19288
+ return format(date, formatString, this.locale);
19289
+ }
19290
+ isEqual(date, comparing) {
19291
+ return isEqual(date, comparing);
19292
+ }
19293
+ isValid(date) {
19294
+ return isValid(date);
19295
+ }
19296
+ isWithinRange(date, range) {
19297
+ return isWithinRange(date, range);
19298
+ }
19299
+ isAfter(date, comparing) {
19300
+ return isAfter(date, comparing);
19301
+ }
19302
+ isSameDay(date, comparing) {
19303
+ return isSameDay(date, comparing);
19304
+ }
19305
+ isSameMonth(date, comparing) {
19306
+ return isSameMonth(date, comparing);
19307
+ }
19308
+ setYear(date, year) {
19309
+ return setYear(date, year);
19310
+ }
19311
+ getDiff(date, comparing, unit) {
19312
+ return getDiff(date, comparing, unit);
19313
+ }
19314
+ getWeek(date) {
19315
+ return getWeek(date);
19316
+ }
19317
+ getWeekdays() {
19318
+ return getWeekdays(this.locale);
19319
+ }
19320
+ getYear(date) {
19321
+ return getYear(date);
19322
+ }
19323
+ getMonth(date) {
19324
+ return getMonth(date);
19325
+ }
19326
+ startOfYear(date) {
19327
+ return startOfYear(date);
19328
+ }
19329
+ endOfYear(date) {
19330
+ return endOfYear(date);
19331
+ }
19332
+ }
19333
+
19334
+ // Composables
19335
+
19336
+ // Types
19337
+
19338
+ const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
19339
+ function createDate(options) {
19340
+ return options ?? {
19341
+ adapter: VuetifyDateAdapter
19342
+ };
19343
+ }
19344
+
18397
19345
  // Composables
18398
19346
  function createVuetify$1() {
18399
19347
  let vuetify = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -18412,6 +19360,7 @@ function createVuetify$1() {
18412
19360
  const theme = createTheme(options.theme);
18413
19361
  const icons = createIcons(options.icons);
18414
19362
  const locale = createLocale(options.locale);
19363
+ const date = createDate(options.date);
18415
19364
  const install = app => {
18416
19365
  for (const key in directives) {
18417
19366
  app.directive(key, directives[key]);
@@ -18432,6 +19381,7 @@ function createVuetify$1() {
18432
19381
  app.provide(ThemeSymbol, theme);
18433
19382
  app.provide(IconSymbol, icons);
18434
19383
  app.provide(LocaleSymbol, locale);
19384
+ app.provide(DateAdapterSymbol, date);
18435
19385
  if (IN_BROWSER && options.ssr) {
18436
19386
  if (app.$nuxt) {
18437
19387
  app.$nuxt.hook('app:suspense:resolve', () => {
@@ -18459,7 +19409,8 @@ function createVuetify$1() {
18459
19409
  display: inject.call(this, DisplaySymbol),
18460
19410
  theme: inject.call(this, ThemeSymbol),
18461
19411
  icons: inject.call(this, IconSymbol),
18462
- locale: inject.call(this, LocaleSymbol)
19412
+ locale: inject.call(this, LocaleSymbol),
19413
+ date: inject.call(this, DateAdapterSymbol)
18463
19414
  });
18464
19415
  }
18465
19416
  }
@@ -18472,10 +19423,11 @@ function createVuetify$1() {
18472
19423
  display,
18473
19424
  theme,
18474
19425
  icons,
18475
- locale
19426
+ locale,
19427
+ date
18476
19428
  };
18477
19429
  }
18478
- const version$1 = "3.1.16";
19430
+ const version$1 = "3.2.1";
18479
19431
  createVuetify$1.version = version$1;
18480
19432
 
18481
19433
  // Vue's inject() can only be used in setup
@@ -18495,8 +19447,8 @@ const createVuetify = function () {
18495
19447
  ...options
18496
19448
  });
18497
19449
  };
18498
- const version = "3.1.16";
19450
+ const version = "3.2.1";
18499
19451
  createVuetify.version = version;
18500
19452
 
18501
- export { components, createVuetify, directives, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
19453
+ export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
18502
19454
  //# sourceMappingURL=vuetify.esm.js.map