@vuetify/nightly 3.8.1-master.2025-04-16 → 3.8.1-next.2025-04-18

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 (220) hide show
  1. package/CHANGELOG.md +36 -32
  2. package/dist/json/attributes.json +2908 -2908
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +176 -176
  5. package/dist/json/web-types.json +5479 -5439
  6. package/dist/vuetify-labs.cjs +346 -197
  7. package/dist/vuetify-labs.css +26018 -27768
  8. package/dist/vuetify-labs.d.ts +243 -646
  9. package/dist/vuetify-labs.esm.js +347 -198
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +346 -197
  12. package/dist/vuetify-labs.min.css +3 -4
  13. package/dist/vuetify.cjs +328 -173
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +22735 -24481
  16. package/dist/vuetify.d.ts +281 -684
  17. package/dist/vuetify.esm.js +329 -174
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +328 -173
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +3 -4
  22. package/dist/vuetify.min.js +1152 -1161
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/blueprints/md3.js +5 -18
  25. package/lib/blueprints/md3.js.map +1 -1
  26. package/lib/components/VAlert/VAlert.css +207 -215
  27. package/lib/components/VApp/VApp.css +16 -15
  28. package/lib/components/VAppBar/VAppBar.css +14 -12
  29. package/lib/components/VAutocomplete/VAutocomplete.css +85 -84
  30. package/lib/components/VAutocomplete/VAutocomplete.d.ts +18 -9
  31. package/lib/components/VAutocomplete/VAutocomplete.js +6 -3
  32. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  33. package/lib/components/VAvatar/VAvatar.css +108 -106
  34. package/lib/components/VBadge/VBadge.css +77 -77
  35. package/lib/components/VBanner/VBanner.css +161 -166
  36. package/lib/components/VBottomNavigation/VBottomNavigation.css +65 -64
  37. package/lib/components/VBottomSheet/VBottomSheet.css +34 -31
  38. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +54 -57
  39. package/lib/components/VBtn/VBtn.css +372 -408
  40. package/lib/components/VBtn/VBtn.sass +10 -23
  41. package/lib/components/VBtn/_variables.scss +1 -1
  42. package/lib/components/VBtnGroup/VBtnGroup.css +63 -64
  43. package/lib/components/VBtnToggle/VBtnToggle.css +16 -14
  44. package/lib/components/VCard/VCard.css +294 -302
  45. package/lib/components/VCarousel/VCarousel.css +63 -65
  46. package/lib/components/VCarousel/VCarousel.sass +1 -1
  47. package/lib/components/VCheckbox/VCheckbox.css +7 -5
  48. package/lib/components/VChip/VChip.css +378 -411
  49. package/lib/components/VChipGroup/VChipGroup.css +19 -18
  50. package/lib/components/VCode/VCode.css +10 -11
  51. package/lib/components/VCode/VCode.sass +0 -3
  52. package/lib/components/VColorPicker/VColorPicker.css +23 -23
  53. package/lib/components/VColorPicker/VColorPickerCanvas.css +24 -22
  54. package/lib/components/VColorPicker/VColorPickerEdit.css +29 -28
  55. package/lib/components/VColorPicker/VColorPickerPreview.css +69 -67
  56. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -2
  57. package/lib/components/VColorPicker/VColorPickerSwatches.css +34 -34
  58. package/lib/components/VCombobox/VCombobox.css +85 -84
  59. package/lib/components/VCombobox/VCombobox.d.ts +18 -9
  60. package/lib/components/VCombobox/VCombobox.js +6 -3
  61. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  62. package/lib/components/VCounter/VCounter.css +7 -5
  63. package/lib/components/VDataTable/VDataTable.css +189 -186
  64. package/lib/components/VDataTable/VDataTable.sass +21 -11
  65. package/lib/components/VDataTable/VDataTableFooter.css +33 -31
  66. package/lib/components/VDatePicker/VDatePicker.css +8 -6
  67. package/lib/components/VDatePicker/VDatePicker.d.ts +7 -7
  68. package/lib/components/VDatePicker/VDatePickerControls.css +55 -57
  69. package/lib/components/VDatePicker/VDatePickerHeader.css +56 -60
  70. package/lib/components/VDatePicker/VDatePickerMonth.css +51 -55
  71. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +7 -7
  72. package/lib/components/VDatePicker/VDatePickerMonths.css +20 -19
  73. package/lib/components/VDatePicker/VDatePickerYears.css +16 -15
  74. package/lib/components/VDialog/VDialog.css +98 -98
  75. package/lib/components/VDivider/VDivider.css +52 -52
  76. package/lib/components/VEmptyState/VEmptyState.css +62 -67
  77. package/lib/components/VExpansionPanel/VExpansionPanel.css +203 -209
  78. package/lib/components/VExpansionPanel/VExpansionPanel.sass +27 -25
  79. package/lib/components/VFab/VFab.css +78 -73
  80. package/lib/components/VFab/VFab.sass +5 -4
  81. package/lib/components/VField/VField.css +541 -589
  82. package/lib/components/VField/VField.sass +4 -11
  83. package/lib/components/VField/_variables.scss +1 -1
  84. package/lib/components/VFileInput/VFileInput.css +30 -28
  85. package/lib/components/VFooter/VFooter.css +38 -36
  86. package/lib/components/VForm/VForm.d.ts +111 -531
  87. package/lib/components/VForm/VForm.js +11 -1
  88. package/lib/components/VForm/VForm.js.map +1 -1
  89. package/lib/components/VGrid/VGrid.css +565 -592
  90. package/lib/components/VIcon/VIcon.css +52 -53
  91. package/lib/components/VImg/VImg.css +50 -51
  92. package/lib/components/VInfiniteScroll/VInfiniteScroll.css +36 -37
  93. package/lib/components/VInput/VInput.css +136 -147
  94. package/lib/components/VItemGroup/VItemGroup.css +7 -5
  95. package/lib/components/VKbd/VKbd.css +13 -11
  96. package/lib/components/VLabel/VLabel.css +16 -15
  97. package/lib/components/VLayout/VLayout.css +10 -8
  98. package/lib/components/VLayout/VLayoutItem.css +8 -7
  99. package/lib/components/VList/VList.css +104 -108
  100. package/lib/components/VList/VList.sass +1 -1
  101. package/lib/components/VList/VListItem.css +440 -452
  102. package/lib/components/VList/VListItem.sass +2 -1
  103. package/lib/components/VLocaleProvider/VLocaleProvider.css +4 -2
  104. package/lib/components/VMain/VMain.css +32 -30
  105. package/lib/components/VMenu/VMenu.css +21 -19
  106. package/lib/components/VMessages/VMessages.css +17 -15
  107. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +102 -104
  108. package/lib/components/VNumberInput/VNumberInput.css +48 -46
  109. package/lib/components/VOtpInput/VOtpInput.css +56 -58
  110. package/lib/components/VOverlay/VOverlay.css +61 -64
  111. package/lib/components/VOverlay/VOverlay.sass +14 -13
  112. package/lib/components/VPagination/VPagination.css +10 -8
  113. package/lib/components/VParallax/VParallax.css +8 -6
  114. package/lib/components/VProgressCircular/VProgressCircular.css +95 -101
  115. package/lib/components/VProgressLinear/VProgressLinear.css +209 -222
  116. package/lib/components/VRadioGroup/VRadioGroup.css +14 -12
  117. package/lib/components/VRating/VRating.css +52 -53
  118. package/lib/components/VResponsive/VResponsive.css +25 -26
  119. package/lib/components/VSelect/VSelect.css +53 -51
  120. package/lib/components/VSelect/VSelect.d.ts +18 -9
  121. package/lib/components/VSelect/VSelect.js +6 -3
  122. package/lib/components/VSelect/VSelect.js.map +1 -1
  123. package/lib/components/VSelectionControl/VSelectionControl.css +98 -100
  124. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +10 -8
  125. package/lib/components/VSheet/VSheet.css +38 -36
  126. package/lib/components/VSkeletonLoader/VSkeletonLoader.css +225 -224
  127. package/lib/components/VSlideGroup/VSlideGroup.css +53 -55
  128. package/lib/components/VSlider/VSlider.css +53 -57
  129. package/lib/components/VSlider/VSliderThumb.css +142 -153
  130. package/lib/components/VSlider/VSliderTrack.css +155 -174
  131. package/lib/components/VSnackbar/VSnackbar.css +140 -140
  132. package/lib/components/VSpeedDial/VSpeedDial.css +43 -41
  133. package/lib/components/VStepper/VStepper.css +55 -56
  134. package/lib/components/VStepper/VStepperItem.css +112 -115
  135. package/lib/components/VSwitch/VSwitch.css +129 -139
  136. package/lib/components/VSystemBar/VSystemBar.css +45 -43
  137. package/lib/components/VTable/VTable.css +140 -141
  138. package/lib/components/VTable/VTable.sass +4 -2
  139. package/lib/components/VTabs/VTab.css +30 -29
  140. package/lib/components/VTabs/VTabs.css +59 -65
  141. package/lib/components/VTextField/VTextField.css +77 -85
  142. package/lib/components/VTextarea/VTextarea.css +48 -40
  143. package/lib/components/VTextarea/VTextarea.sass +4 -2
  144. package/lib/components/VThemeProvider/VThemeProvider.css +5 -3
  145. package/lib/components/VTimeline/VTimeline.css +388 -427
  146. package/lib/components/VToolbar/VToolbar.css +137 -144
  147. package/lib/components/VTooltip/VTooltip.css +27 -23
  148. package/lib/components/VTooltip/VTooltip.sass +8 -6
  149. package/lib/components/VVirtualScroll/VVirtualScroll.css +11 -9
  150. package/lib/components/VWindow/VWindow.css +73 -70
  151. package/lib/composables/calendar.d.ts +2 -2
  152. package/lib/composables/calendar.js +7 -5
  153. package/lib/composables/calendar.js.map +1 -1
  154. package/lib/composables/date/DateAdapter.d.ts +0 -1
  155. package/lib/composables/date/DateAdapter.js.map +1 -1
  156. package/lib/composables/date/adapters/vuetify.d.ts +0 -1
  157. package/lib/composables/date/adapters/vuetify.js +160 -101
  158. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  159. package/lib/composables/date/date.d.ts +1 -1
  160. package/lib/composables/date/date.js +20 -0
  161. package/lib/composables/date/date.js.map +1 -1
  162. package/lib/composables/filter.js +1 -2
  163. package/lib/composables/filter.js.map +1 -1
  164. package/lib/composables/theme.d.ts +6 -1
  165. package/lib/composables/theme.js +98 -30
  166. package/lib/composables/theme.js.map +1 -1
  167. package/lib/composables/validation.js +0 -5
  168. package/lib/composables/validation.js.map +1 -1
  169. package/lib/composables/virtual.js +6 -1
  170. package/lib/composables/virtual.js.map +1 -1
  171. package/lib/directives/ripple/VRipple.css +38 -36
  172. package/lib/entry-bundler.d.ts +0 -1
  173. package/lib/entry-bundler.js +1 -1
  174. package/lib/entry-bundler.js.map +1 -1
  175. package/lib/framework.d.ts +70 -68
  176. package/lib/framework.js +1 -1
  177. package/lib/framework.js.map +1 -1
  178. package/lib/labs/VCalendar/VCalendar.css +219 -225
  179. package/lib/labs/VCalendar/VCalendar.d.ts +7 -7
  180. package/lib/labs/VCalendar/VCalendarDay.css +33 -32
  181. package/lib/labs/VCalendar/VCalendarHeader.css +13 -13
  182. package/lib/labs/VCalendar/VCalendarInterval.css +43 -42
  183. package/lib/labs/VCalendar/VCalendarInterval.js +19 -25
  184. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  185. package/lib/labs/VCalendar/VCalendarIntervalEvent.css +7 -5
  186. package/lib/labs/VCalendar/VCalendarMonthDay.css +61 -58
  187. package/lib/labs/VCalendar/VCalendarMonthDay.sass +3 -2
  188. package/lib/labs/VDateInput/VDateInput.d.ts +7 -7
  189. package/lib/labs/VFileUpload/VFileUpload.css +74 -77
  190. package/lib/labs/VIconBtn/VIconBtn.css +162 -164
  191. package/lib/labs/VPicker/VPicker.css +58 -63
  192. package/lib/labs/VTimePicker/VTimePicker.css +9 -7
  193. package/lib/labs/VTimePicker/VTimePickerClock.css +126 -129
  194. package/lib/labs/VTimePicker/VTimePickerControls.css +102 -103
  195. package/lib/labs/VTreeview/VTreeviewItem.css +30 -28
  196. package/lib/labs/VTreeview/VTreeviewItem.sass +3 -2
  197. package/lib/labs/entry-bundler.d.ts +0 -1
  198. package/lib/styles/elements/_global.sass +1 -1
  199. package/lib/styles/generic/_colors.scss +3 -3
  200. package/lib/styles/generic/_layers.scss +13 -1
  201. package/lib/styles/generic/_reset.scss +0 -1
  202. package/lib/styles/generic/_transitions.scss +32 -32
  203. package/lib/styles/main.css +14668 -16143
  204. package/lib/styles/settings/_utilities.scss +0 -5
  205. package/lib/styles/settings/_variables.scss +2 -3
  206. package/lib/styles/tools/_border.sass +4 -4
  207. package/lib/styles/tools/_display.sass +0 -10
  208. package/lib/styles/tools/_elevation.sass +2 -2
  209. package/lib/styles/tools/_index.sass +0 -2
  210. package/lib/styles/tools/_layer.scss +4 -2
  211. package/lib/styles/tools/_position.sass +2 -2
  212. package/lib/styles/tools/_rounded.sass +2 -2
  213. package/lib/styles/tools/_utilities.sass +1 -5
  214. package/lib/styles/utilities/_elevation.scss +1 -1
  215. package/lib/util/globals.d.ts +1 -0
  216. package/lib/util/globals.js +1 -0
  217. package/lib/util/globals.js.map +1 -1
  218. package/package.json +45 -46
  219. package/lib/styles/tools/_bootable.sass +0 -3
  220. package/lib/styles/tools/_radius.sass +0 -10
package/dist/vuetify.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.1-master.2025-04-16
2
+ * Vuetify v3.8.1-next.2025-04-18
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -14,6 +14,7 @@
14
14
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
15
15
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
16
16
  const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
17
+ const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
17
18
 
18
19
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
19
20
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -1940,7 +1941,7 @@
1940
1941
  flat: true
1941
1942
  },
1942
1943
  VAutocomplete: {
1943
- variant: 'outlined'
1944
+ variant: 'filled'
1944
1945
  },
1945
1946
  VBanner: {
1946
1947
  color: 'primary'
@@ -1969,10 +1970,7 @@
1969
1970
  rounded: 'sm'
1970
1971
  },
1971
1972
  VCombobox: {
1972
- variant: 'outlined'
1973
- },
1974
- VDateInput: {
1975
- variant: 'outlined'
1973
+ variant: 'filled'
1976
1974
  },
1977
1975
  VDatePicker: {
1978
1976
  controlHeight: 48,
@@ -1986,9 +1984,6 @@
1986
1984
  rounded: 'circle'
1987
1985
  }
1988
1986
  },
1989
- VFileInput: {
1990
- variant: 'outlined'
1991
- },
1992
1987
  VNavigationDrawer: {
1993
1988
  // VList: {
1994
1989
  // nav: true,
@@ -1997,15 +1992,8 @@
1997
1992
  // },
1998
1993
  // },
1999
1994
  },
2000
- VNumberInput: {
2001
- variant: 'outlined',
2002
- VBtn: {
2003
- color: undefined,
2004
- rounded: undefined
2005
- }
2006
- },
2007
1995
  VSelect: {
2008
- variant: 'outlined'
1996
+ variant: 'filled'
2009
1997
  },
2010
1998
  VSlider: {
2011
1999
  color: 'primary'
@@ -2014,10 +2002,10 @@
2014
2002
  color: 'primary'
2015
2003
  },
2016
2004
  VTextarea: {
2017
- variant: 'outlined'
2005
+ variant: 'filled'
2018
2006
  },
2019
2007
  VTextField: {
2020
- variant: 'outlined'
2008
+ variant: 'filled'
2021
2009
  },
2022
2010
  VToolbar: {
2023
2011
  VBtn: {
@@ -2770,7 +2758,8 @@
2770
2758
  }, 'theme');
2771
2759
  function genDefaults$1() {
2772
2760
  return {
2773
- defaultTheme: 'light',
2761
+ defaultTheme: 'system',
2762
+ prefix: 'v-',
2774
2763
  variations: {
2775
2764
  colors: [],
2776
2765
  lighten: 0,
@@ -2821,8 +2810,8 @@
2821
2810
  surface: '#212121',
2822
2811
  'surface-bright': '#ccbfd6',
2823
2812
  'surface-light': '#424242',
2824
- 'surface-variant': '#c8c8c8',
2825
- 'on-surface-variant': '#000000',
2813
+ 'surface-variant': '#a3a3a3',
2814
+ 'on-surface-variant': '#424242',
2826
2815
  primary: '#2196F3',
2827
2816
  'primary-darken-1': '#277CC1',
2828
2817
  secondary: '#54B6B2',
@@ -2852,7 +2841,10 @@
2852
2841
  }
2853
2842
  }
2854
2843
  },
2855
- stylesheetId: 'vuetify-theme-stylesheet'
2844
+ stylesheetId: 'vuetify-theme-stylesheet',
2845
+ scoped: false,
2846
+ unimportant: true,
2847
+ utilities: true
2856
2848
  };
2857
2849
  }
2858
2850
  function parseThemeOptions() {
@@ -2875,21 +2867,21 @@
2875
2867
  function createCssClass(lines, selector, content, scope) {
2876
2868
  lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2877
2869
  }
2878
- function genCssVariables(theme) {
2870
+ function genCssVariables(theme, prefix) {
2879
2871
  const lightOverlay = theme.dark ? 2 : 1;
2880
2872
  const darkOverlay = theme.dark ? 1 : 2;
2881
2873
  const variables = [];
2882
2874
  for (const [key, value] of Object.entries(theme.colors)) {
2883
2875
  const rgb = parseColor(value);
2884
- variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2876
+ variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2885
2877
  if (!key.startsWith('on-')) {
2886
- variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2878
+ variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2887
2879
  }
2888
2880
  }
2889
2881
  for (const [key, value] of Object.entries(theme.variables)) {
2890
2882
  const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2891
2883
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2892
- variables.push(`--v-${key}: ${rgb ?? value}`);
2884
+ variables.push(`--${prefix}${key}: ${rgb ?? value}`);
2893
2885
  }
2894
2886
  return variables;
2895
2887
  }
@@ -2933,7 +2925,8 @@
2933
2925
  const scopeSelector = `:where(${scope})`;
2934
2926
  return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
2935
2927
  }
2936
- function upsertStyles(styleEl, styles) {
2928
+ function upsertStyles(id, cspNonce, styles) {
2929
+ const styleEl = getOrCreateStyleElement(id, cspNonce);
2937
2930
  if (!styleEl) return;
2938
2931
  styleEl.innerHTML = styles;
2939
2932
  }
@@ -2953,8 +2946,17 @@
2953
2946
  // Composables
2954
2947
  function createTheme(options) {
2955
2948
  const parsedOptions = parseThemeOptions(options);
2956
- const name = vue.shallowRef(parsedOptions.defaultTheme);
2949
+ const _name = vue.shallowRef(parsedOptions.defaultTheme);
2957
2950
  const themes = vue.ref(parsedOptions.themes);
2951
+ const systemName = vue.shallowRef('light');
2952
+ const name = vue.computed({
2953
+ get() {
2954
+ return _name.value === 'system' ? systemName.value : _name.value;
2955
+ },
2956
+ set(val) {
2957
+ _name.value = val;
2958
+ }
2959
+ });
2958
2960
  const computedThemes = vue.computed(() => {
2959
2961
  const acc = {};
2960
2962
  for (const [name, original] of Object.entries(themes.value)) {
@@ -2975,28 +2977,49 @@
2975
2977
  const current = vue.computed(() => computedThemes.value[name.value]);
2976
2978
  const styles = vue.computed(() => {
2977
2979
  const lines = [];
2980
+ const important = parsedOptions.unimportant ? '' : ' !important';
2981
+ const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
2978
2982
  if (current.value?.dark) {
2979
2983
  createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
2980
2984
  }
2981
- createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
2985
+ createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
2982
2986
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
2983
- createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
2984
- }
2985
- const bgLines = [];
2986
- const fgLines = [];
2987
- const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2988
- for (const key of colors) {
2989
- if (key.startsWith('on-')) {
2990
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2991
- } else {
2992
- createCssClass(bgLines, `.bg-${key}`, [`--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--v-theme-${key})) !important`, `color: rgb(var(--v-theme-on-${key})) !important`], parsedOptions.scope);
2993
- createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2994
- createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
2987
+ createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
2988
+ }
2989
+ if (parsedOptions.utilities) {
2990
+ const bgLines = [];
2991
+ const fgLines = [];
2992
+ const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2993
+ for (const key of colors) {
2994
+ if (key.startsWith('on-')) {
2995
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
2996
+ } else {
2997
+ createCssClass(bgLines, `.${scoped}bg-${key}`, [`--${parsedOptions.prefix}theme-overlay-multiplier: var(--${parsedOptions.prefix}theme-${key}-overlay-multiplier)`, `background-color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`, `color: rgb(var(--${parsedOptions.prefix}theme-on-${key}))${important}`], parsedOptions.scope);
2998
+ createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
2999
+ createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
3000
+ }
2995
3001
  }
3002
+ lines.push(...bgLines, ...fgLines);
2996
3003
  }
2997
- lines.push(...bgLines, ...fgLines);
2998
- return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
3004
+ return '@layer vuetify.theme {\n' + lines.map(v => ` ${v}`).join('') + '\n}';
2999
3005
  });
3006
+ const themeClasses = vue.computed(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
3007
+ const themeNames = vue.computed(() => Object.keys(computedThemes.value));
3008
+ if (SUPPORTS_MATCH_MEDIA) {
3009
+ const media = window.matchMedia('(prefers-color-scheme: dark)');
3010
+ function updateSystemName() {
3011
+ systemName.value = media.matches ? 'dark' : 'light';
3012
+ }
3013
+ updateSystemName();
3014
+ media.addEventListener('change', updateSystemName, {
3015
+ passive: true
3016
+ });
3017
+ if (vue.getCurrentScope()) {
3018
+ vue.onScopeDispose(() => {
3019
+ media.removeEventListener('change', updateSystemName);
3020
+ });
3021
+ }
3022
+ }
3000
3023
  function install(app) {
3001
3024
  if (parsedOptions.isDisabled) return;
3002
3025
  const head = app._context.provides.usehead;
@@ -3034,22 +3057,55 @@
3034
3057
  updateStyles();
3035
3058
  }
3036
3059
  function updateStyles() {
3037
- upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
3060
+ upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
3038
3061
  }
3039
3062
  }
3040
3063
  }
3041
- const themeClasses = vue.computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
3064
+ function change(themeName) {
3065
+ if (!themeNames.value.includes(themeName)) {
3066
+ consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
3067
+ return;
3068
+ }
3069
+ name.value = themeName;
3070
+ }
3071
+ function cycle() {
3072
+ let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
3073
+ const currentIndex = themeArray.indexOf(name.value);
3074
+ const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
3075
+ change(themeArray[nextIndex]);
3076
+ }
3077
+ function toggle() {
3078
+ let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
3079
+ cycle(themeArray);
3080
+ }
3081
+ const globalName = new Proxy(name, {
3082
+ get(target, prop) {
3083
+ return target[prop];
3084
+ },
3085
+ set(target, prop, val) {
3086
+ if (prop === 'value') {
3087
+ deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
3088
+ }
3089
+ // @ts-expect-error
3090
+ target[prop] = val;
3091
+ return true;
3092
+ }
3093
+ });
3042
3094
  return {
3043
3095
  install,
3096
+ change,
3097
+ cycle,
3098
+ toggle,
3044
3099
  isDisabled: parsedOptions.isDisabled,
3045
3100
  name,
3046
3101
  themes,
3047
3102
  current,
3048
3103
  computedThemes,
3104
+ prefix: parsedOptions.prefix,
3049
3105
  themeClasses,
3050
3106
  styles,
3051
3107
  global: {
3052
- name,
3108
+ name: globalName,
3053
3109
  current
3054
3110
  }
3055
3111
  };
@@ -3060,7 +3116,7 @@
3060
3116
  if (!theme) throw new Error('Could not find Vuetify theme injection');
3061
3117
  const name = vue.computed(() => props.theme ?? theme.name.value);
3062
3118
  const current = vue.computed(() => theme.themes.value[name.value]);
3063
- const themeClasses = vue.computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
3119
+ const themeClasses = vue.computed(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
3064
3120
  const newTheme = {
3065
3121
  ...theme,
3066
3122
  name,
@@ -7176,11 +7232,6 @@
7176
7232
  }
7177
7233
  async function validate() {
7178
7234
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
7179
- if (props.disabled || props.readonly) {
7180
- internalErrorMessages.value = [];
7181
- isValidating.value = false;
7182
- return internalErrorMessages.value;
7183
- }
7184
7235
  const results = [];
7185
7236
  isValidating.value = true;
7186
7237
  for (const rule of props.rules) {
@@ -12590,7 +12641,12 @@
12590
12641
  }
12591
12642
  function calculateOffset(index) {
12592
12643
  index = clamp(index, 0, items.value.length - 1);
12593
- return offsets[index] || 0;
12644
+ const whole = Math.floor(index);
12645
+ const fraction = index % 1;
12646
+ const next = whole + 1;
12647
+ const wholeOffset = offsets[whole] || 0;
12648
+ const nextOffset = offsets[next] || wholeOffset;
12649
+ return wholeOffset + (nextOffset - wholeOffset) * fraction;
12594
12650
  }
12595
12651
  function calculateIndex(scrollTop) {
12596
12652
  return binaryClosest(offsets, scrollTop);
@@ -13219,7 +13275,8 @@
13219
13275
  onClick: () => select(item, null)
13220
13276
  });
13221
13277
  return slots.item?.({
13222
- item,
13278
+ item: item.raw,
13279
+ internalItem: item,
13223
13280
  index,
13224
13281
  props: itemProps
13225
13282
  }) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
@@ -13267,11 +13324,13 @@
13267
13324
  };
13268
13325
  const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
13269
13326
  const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
13270
- item,
13327
+ item: item.raw,
13328
+ internalItem: item,
13271
13329
  index,
13272
13330
  props: slotProps
13273
13331
  }) : slots.selection({
13274
- item,
13332
+ item: item.raw,
13333
+ internalItem: item,
13275
13334
  index
13276
13335
  })) : undefined;
13277
13336
  if (hasSlot && !slotContent) return undefined;
@@ -13337,7 +13396,6 @@
13337
13396
  // Composables
13338
13397
  const defaultFilter = (value, query, item) => {
13339
13398
  if (value == null || query == null) return -1;
13340
- if (!query.length) return 0;
13341
13399
  value = value.toString().toLocaleLowerCase();
13342
13400
  query = query.toString().toLocaleLowerCase();
13343
13401
  const result = [];
@@ -13350,7 +13408,7 @@
13350
13408
  };
13351
13409
  function normaliseMatch(match, query) {
13352
13410
  if (match == null || typeof match === 'boolean' || match === -1) return;
13353
- if (typeof match === 'number') return [[match, match + query.length]];
13411
+ if (typeof match === 'number') return [[match, query.length]];
13354
13412
  if (Array.isArray(match[0])) return match;
13355
13413
  return [match];
13356
13414
  }
@@ -13818,7 +13876,8 @@
13818
13876
  onClick: () => select(item, null)
13819
13877
  });
13820
13878
  return slots.item?.({
13821
- item,
13879
+ item: item.raw,
13880
+ internalItem: item,
13822
13881
  index,
13823
13882
  props: itemProps
13824
13883
  }) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
@@ -13869,11 +13928,13 @@
13869
13928
  };
13870
13929
  const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
13871
13930
  const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
13872
- item,
13931
+ item: item.raw,
13932
+ internalItem: item,
13873
13933
  index,
13874
13934
  props: slotProps
13875
13935
  }) : slots.selection({
13876
- item,
13936
+ item: item.raw,
13937
+ internalItem: item,
13877
13938
  index
13878
13939
  })) : undefined;
13879
13940
  if (hasSlot && !slotContent) return undefined;
@@ -17265,81 +17326,165 @@
17265
17326
 
17266
17327
  // Types
17267
17328
 
17268
- function weekInfo(locale) {
17269
- // https://simplelocalize.io/data/locales/
17270
- // then `new Intl.Locale(...).getWeekInfo()`
17271
- const code = locale.slice(-2).toUpperCase();
17272
- switch (true) {
17273
- case locale === 'GB-alt-variant':
17274
- {
17275
- return {
17276
- firstDay: 0,
17277
- firstWeekSize: 4
17278
- };
17279
- }
17280
- case locale === '001':
17281
- {
17282
- return {
17283
- firstDay: 1,
17284
- firstWeekSize: 1
17285
- };
17286
- }
17287
- case `AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE
17288
- KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PY SA SG SV TH TT TW UM US
17289
- VE VI WS YE ZA ZW`.includes(code):
17290
- {
17291
- return {
17292
- firstDay: 0,
17293
- firstWeekSize: 1
17294
- };
17295
- }
17296
- case `AI AL AM AR AU AZ BA BM BN BY CL CM CN CR CY EC GE HR KG KZ LB LK LV
17297
- MD ME MK MN MY NZ RO RS SI TJ TM TR UA UY UZ VN XK`.includes(code):
17298
- {
17299
- return {
17300
- firstDay: 1,
17301
- firstWeekSize: 1
17302
- };
17303
- }
17304
- case `AD AN AT AX BE BG CH CZ DE DK EE ES FI FJ FO FR GB GF GP GR HU IE IS
17305
- IT LI LT LU MC MQ NL NO PL RE RU SE SK SM VA`.includes(code):
17306
- {
17307
- return {
17308
- firstDay: 1,
17309
- firstWeekSize: 4
17310
- };
17311
- }
17312
- case `AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY`.includes(code):
17313
- {
17314
- return {
17315
- firstDay: 6,
17316
- firstWeekSize: 1
17317
- };
17318
- }
17319
- case code === 'MV':
17320
- {
17321
- return {
17322
- firstDay: 5,
17323
- firstWeekSize: 1
17324
- };
17325
- }
17326
- case code === 'PT':
17327
- {
17328
- return {
17329
- firstDay: 0,
17330
- firstWeekSize: 4
17331
- };
17332
- }
17333
- default:
17334
- return null;
17335
- }
17336
- }
17329
+ const firstDay = {
17330
+ '001': 1,
17331
+ AD: 1,
17332
+ AE: 6,
17333
+ AF: 6,
17334
+ AG: 0,
17335
+ AI: 1,
17336
+ AL: 1,
17337
+ AM: 1,
17338
+ AN: 1,
17339
+ AR: 1,
17340
+ AS: 0,
17341
+ AT: 1,
17342
+ AU: 1,
17343
+ AX: 1,
17344
+ AZ: 1,
17345
+ BA: 1,
17346
+ BD: 0,
17347
+ BE: 1,
17348
+ BG: 1,
17349
+ BH: 6,
17350
+ BM: 1,
17351
+ BN: 1,
17352
+ BR: 0,
17353
+ BS: 0,
17354
+ BT: 0,
17355
+ BW: 0,
17356
+ BY: 1,
17357
+ BZ: 0,
17358
+ CA: 0,
17359
+ CH: 1,
17360
+ CL: 1,
17361
+ CM: 1,
17362
+ CN: 1,
17363
+ CO: 0,
17364
+ CR: 1,
17365
+ CY: 1,
17366
+ CZ: 1,
17367
+ DE: 1,
17368
+ DJ: 6,
17369
+ DK: 1,
17370
+ DM: 0,
17371
+ DO: 0,
17372
+ DZ: 6,
17373
+ EC: 1,
17374
+ EE: 1,
17375
+ EG: 6,
17376
+ ES: 1,
17377
+ ET: 0,
17378
+ FI: 1,
17379
+ FJ: 1,
17380
+ FO: 1,
17381
+ FR: 1,
17382
+ GB: 1,
17383
+ 'GB-alt-variant': 0,
17384
+ GE: 1,
17385
+ GF: 1,
17386
+ GP: 1,
17387
+ GR: 1,
17388
+ GT: 0,
17389
+ GU: 0,
17390
+ HK: 0,
17391
+ HN: 0,
17392
+ HR: 1,
17393
+ HU: 1,
17394
+ ID: 0,
17395
+ IE: 1,
17396
+ IL: 0,
17397
+ IN: 0,
17398
+ IQ: 6,
17399
+ IR: 6,
17400
+ IS: 1,
17401
+ IT: 1,
17402
+ JM: 0,
17403
+ JO: 6,
17404
+ JP: 0,
17405
+ KE: 0,
17406
+ KG: 1,
17407
+ KH: 0,
17408
+ KR: 0,
17409
+ KW: 6,
17410
+ KZ: 1,
17411
+ LA: 0,
17412
+ LB: 1,
17413
+ LI: 1,
17414
+ LK: 1,
17415
+ LT: 1,
17416
+ LU: 1,
17417
+ LV: 1,
17418
+ LY: 6,
17419
+ MC: 1,
17420
+ MD: 1,
17421
+ ME: 1,
17422
+ MH: 0,
17423
+ MK: 1,
17424
+ MM: 0,
17425
+ MN: 1,
17426
+ MO: 0,
17427
+ MQ: 1,
17428
+ MT: 0,
17429
+ MV: 5,
17430
+ MX: 0,
17431
+ MY: 1,
17432
+ MZ: 0,
17433
+ NI: 0,
17434
+ NL: 1,
17435
+ NO: 1,
17436
+ NP: 0,
17437
+ NZ: 1,
17438
+ OM: 6,
17439
+ PA: 0,
17440
+ PE: 0,
17441
+ PH: 0,
17442
+ PK: 0,
17443
+ PL: 1,
17444
+ PR: 0,
17445
+ PT: 0,
17446
+ PY: 0,
17447
+ QA: 6,
17448
+ RE: 1,
17449
+ RO: 1,
17450
+ RS: 1,
17451
+ RU: 1,
17452
+ SA: 0,
17453
+ SD: 6,
17454
+ SE: 1,
17455
+ SG: 0,
17456
+ SI: 1,
17457
+ SK: 1,
17458
+ SM: 1,
17459
+ SV: 0,
17460
+ SY: 6,
17461
+ TH: 0,
17462
+ TJ: 1,
17463
+ TM: 1,
17464
+ TR: 1,
17465
+ TT: 0,
17466
+ TW: 0,
17467
+ UA: 1,
17468
+ UM: 0,
17469
+ US: 0,
17470
+ UY: 1,
17471
+ UZ: 1,
17472
+ VA: 1,
17473
+ VE: 0,
17474
+ VI: 0,
17475
+ VN: 1,
17476
+ WS: 0,
17477
+ XK: 1,
17478
+ YE: 0,
17479
+ ZA: 0,
17480
+ ZW: 0
17481
+ };
17337
17482
  function getWeekArray(date, locale, firstDayOfWeek) {
17338
17483
  const weeks = [];
17339
17484
  let currentWeek = [];
17340
17485
  const firstDayOfMonth = startOfMonth(date);
17341
17486
  const lastDayOfMonth = endOfMonth(date);
17342
- const first = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17487
+ const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17343
17488
  const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7;
17344
17489
  const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7;
17345
17490
  for (let i = 0; i < firstDayWeekIndex; i++) {
@@ -17370,7 +17515,7 @@
17370
17515
  return weeks;
17371
17516
  }
17372
17517
  function startOfWeek(date, locale, firstDayOfWeek) {
17373
- const day = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17518
+ const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17374
17519
  const d = new Date(date);
17375
17520
  while (d.getDay() !== day) {
17376
17521
  d.setDate(d.getDate() - 1);
@@ -17379,7 +17524,7 @@
17379
17524
  }
17380
17525
  function endOfWeek(date, locale) {
17381
17526
  const d = new Date(date);
17382
- const lastDay = ((weekInfo(locale)?.firstDay ?? 0) + 6) % 7;
17527
+ const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;
17383
17528
  while (d.getDay() !== lastDay) {
17384
17529
  d.setDate(d.getDate() + 1);
17385
17530
  }
@@ -17414,7 +17559,7 @@
17414
17559
  }
17415
17560
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
17416
17561
  function getWeekdays(locale, firstDayOfWeek) {
17417
- const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17562
+ const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17418
17563
  return createRange(7).map(i => {
17419
17564
  const weekday = new Date(sundayJanuarySecond2000);
17420
17565
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
@@ -17662,24 +17807,6 @@
17662
17807
  function getMonth(date) {
17663
17808
  return date.getMonth();
17664
17809
  }
17665
- function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
17666
- const weekInfoFromLocale = weekInfo(locale);
17667
- const weekStart = firstDayOfWeek ?? weekInfoFromLocale?.firstDay ?? 0;
17668
- const minWeekSize = firstWeekMinSize ?? weekInfoFromLocale?.firstWeekSize ?? 1;
17669
- function firstWeekSize(year) {
17670
- const yearStart = new Date(year, 0, 1);
17671
- return 7 - getDiff(yearStart, startOfWeek(yearStart, locale, weekStart), 'days');
17672
- }
17673
- let year = getYear(date);
17674
- const currentWeekEnd = addDays(startOfWeek(date, locale, weekStart), 6);
17675
- if (year < getYear(currentWeekEnd) && firstWeekSize(year + 1) >= minWeekSize) {
17676
- year++;
17677
- }
17678
- const yearStart = new Date(year, 0, 1);
17679
- const size = firstWeekSize(year);
17680
- const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
17681
- return 1 + getDiff(date, d1w1, 'weeks');
17682
- }
17683
17810
  function getDate(date) {
17684
17811
  return date.getDate();
17685
17812
  }
@@ -17819,12 +17946,10 @@
17819
17946
  return addMonths(date, amount);
17820
17947
  }
17821
17948
  getWeekArray(date, firstDayOfWeek) {
17822
- const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17823
- return getWeekArray(date, this.locale, firstDay);
17949
+ return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17824
17950
  }
17825
17951
  startOfWeek(date, firstDayOfWeek) {
17826
- const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17827
- return startOfWeek(date, this.locale, firstDay);
17952
+ return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17828
17953
  }
17829
17954
  endOfWeek(date) {
17830
17955
  return endOfWeek(date, this.locale);
@@ -17884,8 +18009,7 @@
17884
18009
  return getDiff(date, comparing, unit);
17885
18010
  }
17886
18011
  getWeekdays(firstDayOfWeek) {
17887
- const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17888
- return getWeekdays(this.locale, firstDay);
18012
+ return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17889
18013
  }
17890
18014
  getYear(date) {
17891
18015
  return getYear(date);
@@ -17893,10 +18017,6 @@
17893
18017
  getMonth(date) {
17894
18018
  return getMonth(date);
17895
18019
  }
17896
- getWeek(date, firstDayOfWeek, firstWeekMinSize) {
17897
- const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17898
- return getWeek(date, this.locale, firstDay, firstWeekMinSize);
17899
- }
17900
18020
  getDate(date) {
17901
18021
  return getDate(date);
17902
18022
  }
@@ -18000,6 +18120,26 @@
18000
18120
  return createInstance(options, locale);
18001
18121
  }
18002
18122
 
18123
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
18124
+ function getWeek(adapter, value) {
18125
+ const date = adapter.toJsDate(value);
18126
+ let year = date.getFullYear();
18127
+ let d1w1 = new Date(year, 0, 1);
18128
+ if (date < d1w1) {
18129
+ year = year - 1;
18130
+ d1w1 = new Date(year, 0, 1);
18131
+ } else {
18132
+ const tv = new Date(year + 1, 0, 1);
18133
+ if (date >= tv) {
18134
+ year = year + 1;
18135
+ d1w1 = tv;
18136
+ }
18137
+ }
18138
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
18139
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
18140
+ return Math.floor(diffDays / 7) + 1;
18141
+ }
18142
+
18003
18143
  // Types
18004
18144
 
18005
18145
  const makeVColorPickerProps = propsFactory({
@@ -18546,7 +18686,8 @@
18546
18686
  onClick: () => select(item, null)
18547
18687
  });
18548
18688
  return slots.item?.({
18549
- item,
18689
+ item: item.raw,
18690
+ internalItem: item,
18550
18691
  index,
18551
18692
  props: itemProps
18552
18693
  }) ?? vue.createVNode(VListItem, vue.mergeProps(itemProps, {
@@ -18597,11 +18738,13 @@
18597
18738
  };
18598
18739
  const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
18599
18740
  const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
18600
- item,
18741
+ item: item.raw,
18742
+ internalItem: item,
18601
18743
  index,
18602
18744
  props: slotProps
18603
18745
  }) : slots.selection({
18604
- item,
18746
+ item: item.raw,
18747
+ internalItem: item,
18605
18748
  index
18606
18749
  })) : undefined;
18607
18750
  if (hasSlot && !slotContent) return undefined;
@@ -22188,7 +22331,7 @@
22188
22331
  },
22189
22332
  firstDayOfWeek: {
22190
22333
  type: [Number, String],
22191
- default: undefined
22334
+ default: 0
22192
22335
  }
22193
22336
  }, 'calendar');
22194
22337
  function useCalendar(props) {
@@ -22211,12 +22354,14 @@
22211
22354
  return adapter.setMonth(date, value);
22212
22355
  }, v => adapter.getMonth(v));
22213
22356
  const weekDays = vue.computed(() => {
22214
- const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22357
+ const firstDayOfWeek = Number(props.firstDayOfWeek);
22358
+
22215
22359
  // Always generate all days, regardless of props.weekdays
22216
22360
  return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22217
22361
  });
22218
22362
  const weeksInMonth = vue.computed(() => {
22219
- const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
22363
+ const firstDayOfWeek = Number(props.firstDayOfWeek);
22364
+ const weeks = adapter.getWeekArray(month.value, firstDayOfWeek);
22220
22365
  const days = weeks.flat();
22221
22366
 
22222
22367
  // Make sure there's always 6 weeks in month (6 * 7 days)
@@ -22280,7 +22425,7 @@
22280
22425
  });
22281
22426
  const weekNumbers = vue.computed(() => {
22282
22427
  return weeksInMonth.value.map(week => {
22283
- return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null;
22428
+ return week.length ? getWeek(adapter, week[0]) : null;
22284
22429
  });
22285
22430
  });
22286
22431
  function isDisabled(value) {
@@ -23769,7 +23914,17 @@
23769
23914
  "novalidate": true,
23770
23915
  "onReset": onReset,
23771
23916
  "onSubmit": onSubmit
23772
- }, [slots.default?.(form)]));
23917
+ }, [slots.default?.({
23918
+ errors: form.errors.value,
23919
+ isDisabled: form.isDisabled.value,
23920
+ isReadonly: form.isReadonly.value,
23921
+ isValidating: form.isValidating.value,
23922
+ isValid: form.isValid.value,
23923
+ items: form.items.value,
23924
+ validate: form.validate,
23925
+ reset: form.reset,
23926
+ resetValidation: form.resetValidation
23927
+ })]));
23773
23928
  return forwardRefs(form, formRef);
23774
23929
  }
23775
23930
  });
@@ -29178,7 +29333,7 @@
29178
29333
  };
29179
29334
  });
29180
29335
  }
29181
- const version$1 = "3.8.1-master.2025-04-16";
29336
+ const version$1 = "3.8.1-next.2025-04-18";
29182
29337
  createVuetify$1.version = version$1;
29183
29338
 
29184
29339
  // Vue's inject() can only be used in setup
@@ -29203,7 +29358,7 @@
29203
29358
  ...options
29204
29359
  });
29205
29360
  };
29206
- const version = "3.8.1-master.2025-04-16";
29361
+ const version = "3.8.1-next.2025-04-18";
29207
29362
  createVuetify.version = version;
29208
29363
 
29209
29364
  exports.blueprints = index;