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

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 (215) hide show
  1. package/CHANGELOG.md +33 -32
  2. package/dist/json/attributes.json +3374 -3374
  3. package/dist/json/importMap-labs.json +20 -20
  4. package/dist/json/importMap.json +218 -218
  5. package/dist/json/web-types.json +5962 -5922
  6. package/dist/vuetify-labs.cjs +341 -179
  7. package/dist/vuetify-labs.css +26033 -27763
  8. package/dist/vuetify-labs.d.ts +253 -656
  9. package/dist/vuetify-labs.esm.js +342 -180
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +341 -179
  12. package/dist/vuetify-labs.min.css +3 -4
  13. package/dist/vuetify.cjs +323 -155
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +22790 -24516
  16. package/dist/vuetify.d.ts +278 -681
  17. package/dist/vuetify.esm.js +324 -156
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +323 -155
  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/components/VAlert/VAlert.css +207 -215
  25. package/lib/components/VApp/VApp.css +16 -15
  26. package/lib/components/VAppBar/VAppBar.css +14 -12
  27. package/lib/components/VAutocomplete/VAutocomplete.css +85 -84
  28. package/lib/components/VAutocomplete/VAutocomplete.d.ts +18 -9
  29. package/lib/components/VAutocomplete/VAutocomplete.js +6 -3
  30. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  31. package/lib/components/VAvatar/VAvatar.css +108 -106
  32. package/lib/components/VBadge/VBadge.css +77 -77
  33. package/lib/components/VBanner/VBanner.css +161 -166
  34. package/lib/components/VBottomNavigation/VBottomNavigation.css +65 -64
  35. package/lib/components/VBottomSheet/VBottomSheet.css +34 -31
  36. package/lib/components/VBreadcrumbs/VBreadcrumbs.css +54 -57
  37. package/lib/components/VBtn/VBtn.css +385 -408
  38. package/lib/components/VBtn/VBtn.sass +4 -4
  39. package/lib/components/VBtnGroup/VBtnGroup.css +63 -64
  40. package/lib/components/VBtnToggle/VBtnToggle.css +16 -14
  41. package/lib/components/VCard/VCard.css +294 -302
  42. package/lib/components/VCarousel/VCarousel.css +63 -65
  43. package/lib/components/VCarousel/VCarousel.sass +1 -1
  44. package/lib/components/VCheckbox/VCheckbox.css +7 -5
  45. package/lib/components/VChip/VChip.css +378 -411
  46. package/lib/components/VChipGroup/VChipGroup.css +19 -18
  47. package/lib/components/VCode/VCode.css +10 -11
  48. package/lib/components/VCode/VCode.sass +0 -3
  49. package/lib/components/VColorPicker/VColorPicker.css +23 -23
  50. package/lib/components/VColorPicker/VColorPickerCanvas.css +24 -22
  51. package/lib/components/VColorPicker/VColorPickerEdit.css +29 -28
  52. package/lib/components/VColorPicker/VColorPickerPreview.css +69 -67
  53. package/lib/components/VColorPicker/VColorPickerPreview.sass +4 -2
  54. package/lib/components/VColorPicker/VColorPickerSwatches.css +34 -34
  55. package/lib/components/VCombobox/VCombobox.css +85 -84
  56. package/lib/components/VCombobox/VCombobox.d.ts +18 -9
  57. package/lib/components/VCombobox/VCombobox.js +6 -3
  58. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  59. package/lib/components/VCounter/VCounter.css +7 -5
  60. package/lib/components/VDataTable/VDataTable.css +189 -186
  61. package/lib/components/VDataTable/VDataTable.sass +21 -11
  62. package/lib/components/VDataTable/VDataTableFooter.css +33 -31
  63. package/lib/components/VDatePicker/VDatePicker.css +8 -6
  64. package/lib/components/VDatePicker/VDatePicker.d.ts +7 -7
  65. package/lib/components/VDatePicker/VDatePickerControls.css +55 -57
  66. package/lib/components/VDatePicker/VDatePickerHeader.css +56 -60
  67. package/lib/components/VDatePicker/VDatePickerMonth.css +51 -55
  68. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +7 -7
  69. package/lib/components/VDatePicker/VDatePickerMonths.css +20 -19
  70. package/lib/components/VDatePicker/VDatePickerYears.css +16 -15
  71. package/lib/components/VDialog/VDialog.css +98 -98
  72. package/lib/components/VDivider/VDivider.css +52 -52
  73. package/lib/components/VEmptyState/VEmptyState.css +62 -67
  74. package/lib/components/VExpansionPanel/VExpansionPanel.css +203 -209
  75. package/lib/components/VExpansionPanel/VExpansionPanel.sass +27 -25
  76. package/lib/components/VFab/VFab.css +78 -73
  77. package/lib/components/VFab/VFab.sass +5 -4
  78. package/lib/components/VField/VField.css +548 -589
  79. package/lib/components/VFileInput/VFileInput.css +30 -28
  80. package/lib/components/VFooter/VFooter.css +38 -36
  81. package/lib/components/VForm/VForm.d.ts +111 -531
  82. package/lib/components/VForm/VForm.js +11 -1
  83. package/lib/components/VForm/VForm.js.map +1 -1
  84. package/lib/components/VGrid/VGrid.css +565 -592
  85. package/lib/components/VIcon/VIcon.css +52 -53
  86. package/lib/components/VImg/VImg.css +50 -51
  87. package/lib/components/VInfiniteScroll/VInfiniteScroll.css +36 -37
  88. package/lib/components/VInput/VInput.css +136 -147
  89. package/lib/components/VItemGroup/VItemGroup.css +7 -5
  90. package/lib/components/VKbd/VKbd.css +13 -11
  91. package/lib/components/VLabel/VLabel.css +16 -15
  92. package/lib/components/VLayout/VLayout.css +10 -8
  93. package/lib/components/VLayout/VLayoutItem.css +8 -7
  94. package/lib/components/VList/VList.css +104 -108
  95. package/lib/components/VList/VList.sass +1 -1
  96. package/lib/components/VList/VListItem.css +440 -452
  97. package/lib/components/VList/VListItem.sass +2 -1
  98. package/lib/components/VLocaleProvider/VLocaleProvider.css +4 -2
  99. package/lib/components/VMain/VMain.css +32 -30
  100. package/lib/components/VMenu/VMenu.css +21 -19
  101. package/lib/components/VMessages/VMessages.css +17 -15
  102. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +102 -104
  103. package/lib/components/VNumberInput/VNumberInput.css +48 -46
  104. package/lib/components/VOtpInput/VOtpInput.css +56 -58
  105. package/lib/components/VOverlay/VOverlay.css +61 -64
  106. package/lib/components/VOverlay/VOverlay.sass +14 -13
  107. package/lib/components/VPagination/VPagination.css +10 -8
  108. package/lib/components/VParallax/VParallax.css +8 -6
  109. package/lib/components/VProgressCircular/VProgressCircular.css +95 -101
  110. package/lib/components/VProgressLinear/VProgressLinear.css +209 -222
  111. package/lib/components/VRadioGroup/VRadioGroup.css +14 -12
  112. package/lib/components/VRating/VRating.css +52 -53
  113. package/lib/components/VResponsive/VResponsive.css +25 -26
  114. package/lib/components/VSelect/VSelect.css +53 -51
  115. package/lib/components/VSelect/VSelect.d.ts +18 -9
  116. package/lib/components/VSelect/VSelect.js +6 -3
  117. package/lib/components/VSelect/VSelect.js.map +1 -1
  118. package/lib/components/VSelectionControl/VSelectionControl.css +98 -100
  119. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +10 -8
  120. package/lib/components/VSheet/VSheet.css +38 -36
  121. package/lib/components/VSkeletonLoader/VSkeletonLoader.css +225 -224
  122. package/lib/components/VSlideGroup/VSlideGroup.css +53 -55
  123. package/lib/components/VSlider/VSlider.css +53 -57
  124. package/lib/components/VSlider/VSliderThumb.css +142 -153
  125. package/lib/components/VSlider/VSliderTrack.css +155 -174
  126. package/lib/components/VSnackbar/VSnackbar.css +140 -140
  127. package/lib/components/VSpeedDial/VSpeedDial.css +43 -41
  128. package/lib/components/VStepper/VStepper.css +55 -56
  129. package/lib/components/VStepper/VStepperItem.css +112 -115
  130. package/lib/components/VSwitch/VSwitch.css +129 -139
  131. package/lib/components/VSystemBar/VSystemBar.css +45 -43
  132. package/lib/components/VTable/VTable.css +140 -141
  133. package/lib/components/VTable/VTable.sass +4 -2
  134. package/lib/components/VTabs/VTab.css +30 -29
  135. package/lib/components/VTabs/VTabs.css +59 -65
  136. package/lib/components/VTextField/VTextField.css +77 -85
  137. package/lib/components/VTextarea/VTextarea.css +48 -40
  138. package/lib/components/VTextarea/VTextarea.sass +4 -2
  139. package/lib/components/VThemeProvider/VThemeProvider.css +5 -3
  140. package/lib/components/VTimeline/VTimeline.css +388 -427
  141. package/lib/components/VToolbar/VToolbar.css +137 -144
  142. package/lib/components/VTooltip/VTooltip.css +27 -23
  143. package/lib/components/VTooltip/VTooltip.sass +8 -6
  144. package/lib/components/VVirtualScroll/VVirtualScroll.css +11 -9
  145. package/lib/components/VWindow/VWindow.css +73 -70
  146. package/lib/composables/calendar.d.ts +2 -3
  147. package/lib/composables/calendar.js +7 -5
  148. package/lib/composables/calendar.js.map +1 -1
  149. package/lib/composables/date/DateAdapter.d.ts +0 -1
  150. package/lib/composables/date/DateAdapter.js.map +1 -1
  151. package/lib/composables/date/adapters/vuetify.d.ts +0 -1
  152. package/lib/composables/date/adapters/vuetify.js +160 -101
  153. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  154. package/lib/composables/date/date.d.ts +1 -1
  155. package/lib/composables/date/date.js +20 -0
  156. package/lib/composables/date/date.js.map +1 -1
  157. package/lib/composables/filter.js +1 -2
  158. package/lib/composables/filter.js.map +1 -1
  159. package/lib/composables/theme.d.ts +6 -1
  160. package/lib/composables/theme.js +98 -30
  161. package/lib/composables/theme.js.map +1 -1
  162. package/lib/composables/validation.js +0 -5
  163. package/lib/composables/validation.js.map +1 -1
  164. package/lib/composables/virtual.js +6 -1
  165. package/lib/composables/virtual.js.map +1 -1
  166. package/lib/directives/ripple/VRipple.css +38 -36
  167. package/lib/entry-bundler.d.ts +0 -1
  168. package/lib/entry-bundler.js +1 -1
  169. package/lib/entry-bundler.js.map +1 -1
  170. package/lib/framework.d.ts +80 -78
  171. package/lib/framework.js +1 -1
  172. package/lib/framework.js.map +1 -1
  173. package/lib/labs/VCalendar/VCalendar.css +219 -225
  174. package/lib/labs/VCalendar/VCalendar.d.ts +7 -7
  175. package/lib/labs/VCalendar/VCalendarDay.css +33 -32
  176. package/lib/labs/VCalendar/VCalendarHeader.css +13 -13
  177. package/lib/labs/VCalendar/VCalendarInterval.css +43 -42
  178. package/lib/labs/VCalendar/VCalendarInterval.js +19 -25
  179. package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
  180. package/lib/labs/VCalendar/VCalendarIntervalEvent.css +7 -5
  181. package/lib/labs/VCalendar/VCalendarMonthDay.css +61 -58
  182. package/lib/labs/VCalendar/VCalendarMonthDay.sass +3 -2
  183. package/lib/labs/VDateInput/VDateInput.d.ts +7 -7
  184. package/lib/labs/VFileUpload/VFileUpload.css +74 -77
  185. package/lib/labs/VIconBtn/VIconBtn.css +162 -164
  186. package/lib/labs/VPicker/VPicker.css +58 -63
  187. package/lib/labs/VTimePicker/VTimePicker.css +9 -7
  188. package/lib/labs/VTimePicker/VTimePickerClock.css +126 -129
  189. package/lib/labs/VTimePicker/VTimePickerControls.css +102 -103
  190. package/lib/labs/VTreeview/VTreeviewItem.css +30 -28
  191. package/lib/labs/VTreeview/VTreeviewItem.sass +3 -2
  192. package/lib/labs/entry-bundler.d.ts +0 -1
  193. package/lib/styles/elements/_global.sass +1 -1
  194. package/lib/styles/generic/_colors.scss +3 -3
  195. package/lib/styles/generic/_layers.scss +13 -1
  196. package/lib/styles/generic/_reset.scss +0 -1
  197. package/lib/styles/generic/_transitions.scss +32 -32
  198. package/lib/styles/main.css +14668 -16143
  199. package/lib/styles/settings/_utilities.scss +0 -5
  200. package/lib/styles/settings/_variables.scss +1 -2
  201. package/lib/styles/tools/_border.sass +4 -4
  202. package/lib/styles/tools/_display.sass +0 -10
  203. package/lib/styles/tools/_elevation.sass +2 -2
  204. package/lib/styles/tools/_index.sass +0 -2
  205. package/lib/styles/tools/_layer.scss +4 -2
  206. package/lib/styles/tools/_position.sass +2 -2
  207. package/lib/styles/tools/_rounded.sass +2 -2
  208. package/lib/styles/tools/_utilities.sass +1 -5
  209. package/lib/styles/utilities/_elevation.scss +1 -1
  210. package/lib/util/globals.d.ts +1 -0
  211. package/lib/util/globals.js +1 -0
  212. package/lib/util/globals.js.map +1 -1
  213. package/package.json +45 -46
  214. package/lib/styles/tools/_bootable.sass +0 -3
  215. package/lib/styles/tools/_radius.sass +0 -10
@@ -1,15 +1,16 @@
1
1
  /*!
2
- * Vuetify v3.8.1-master.2025-04-15
2
+ * Vuetify v3.8.1-next.2025-04-15
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
- import { shallowRef, reactive, computed, watchEffect, toRefs, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, createVNode, mergeProps, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, TransitionGroup, Transition, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
7
+ import { shallowRef, reactive, computed, watchEffect, toRefs, capitalize, unref, Fragment, isVNode, Comment, warn, getCurrentInstance as getCurrentInstance$1, ref, provide, inject as inject$1, defineComponent as defineComponent$1, h, camelize, createVNode, mergeProps, onBeforeUnmount, watch, readonly, onMounted, useId, onDeactivated, onActivated, onScopeDispose, effectScope, toRaw, getCurrentScope, TransitionGroup, Transition, isRef, toRef, onBeforeMount, nextTick, withDirectives, resolveDirective, vShow, onUpdated, Text, resolveDynamicComponent, toDisplayString, markRaw, Teleport, cloneVNode, createTextVNode, onUnmounted, onBeforeUpdate, withModifiers, vModelText, resolveComponent, render } from 'vue';
8
8
 
9
9
  const IN_BROWSER = typeof window !== 'undefined';
10
10
  const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
11
11
  const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
12
12
  const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
13
+ const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
13
14
 
14
15
  function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
15
16
  function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
@@ -2753,7 +2754,8 @@ const makeThemeProps = propsFactory({
2753
2754
  }, 'theme');
2754
2755
  function genDefaults$1() {
2755
2756
  return {
2756
- defaultTheme: 'light',
2757
+ defaultTheme: 'system',
2758
+ prefix: 'v-',
2757
2759
  variations: {
2758
2760
  colors: [],
2759
2761
  lighten: 0,
@@ -2804,8 +2806,8 @@ function genDefaults$1() {
2804
2806
  surface: '#212121',
2805
2807
  'surface-bright': '#ccbfd6',
2806
2808
  'surface-light': '#424242',
2807
- 'surface-variant': '#c8c8c8',
2808
- 'on-surface-variant': '#000000',
2809
+ 'surface-variant': '#a3a3a3',
2810
+ 'on-surface-variant': '#424242',
2809
2811
  primary: '#2196F3',
2810
2812
  'primary-darken-1': '#277CC1',
2811
2813
  secondary: '#54B6B2',
@@ -2835,7 +2837,10 @@ function genDefaults$1() {
2835
2837
  }
2836
2838
  }
2837
2839
  },
2838
- stylesheetId: 'vuetify-theme-stylesheet'
2840
+ stylesheetId: 'vuetify-theme-stylesheet',
2841
+ scoped: false,
2842
+ unimportant: true,
2843
+ utilities: true
2839
2844
  };
2840
2845
  }
2841
2846
  function parseThemeOptions() {
@@ -2858,21 +2863,21 @@ function parseThemeOptions() {
2858
2863
  function createCssClass(lines, selector, content, scope) {
2859
2864
  lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2860
2865
  }
2861
- function genCssVariables(theme) {
2866
+ function genCssVariables(theme, prefix) {
2862
2867
  const lightOverlay = theme.dark ? 2 : 1;
2863
2868
  const darkOverlay = theme.dark ? 1 : 2;
2864
2869
  const variables = [];
2865
2870
  for (const [key, value] of Object.entries(theme.colors)) {
2866
2871
  const rgb = parseColor(value);
2867
- variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2872
+ variables.push(`--${prefix}theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2868
2873
  if (!key.startsWith('on-')) {
2869
- variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2874
+ variables.push(`--${prefix}theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2870
2875
  }
2871
2876
  }
2872
2877
  for (const [key, value] of Object.entries(theme.variables)) {
2873
2878
  const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2874
2879
  const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2875
- variables.push(`--v-${key}: ${rgb ?? value}`);
2880
+ variables.push(`--${prefix}${key}: ${rgb ?? value}`);
2876
2881
  }
2877
2882
  return variables;
2878
2883
  }
@@ -2916,7 +2921,8 @@ function getScopedSelector(selector, scope) {
2916
2921
  const scopeSelector = `:where(${scope})`;
2917
2922
  return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
2918
2923
  }
2919
- function upsertStyles(styleEl, styles) {
2924
+ function upsertStyles(id, cspNonce, styles) {
2925
+ const styleEl = getOrCreateStyleElement(id, cspNonce);
2920
2926
  if (!styleEl) return;
2921
2927
  styleEl.innerHTML = styles;
2922
2928
  }
@@ -2936,8 +2942,17 @@ function getOrCreateStyleElement(id, cspNonce) {
2936
2942
  // Composables
2937
2943
  function createTheme(options) {
2938
2944
  const parsedOptions = parseThemeOptions(options);
2939
- const name = shallowRef(parsedOptions.defaultTheme);
2945
+ const _name = shallowRef(parsedOptions.defaultTheme);
2940
2946
  const themes = ref(parsedOptions.themes);
2947
+ const systemName = shallowRef('light');
2948
+ const name = computed({
2949
+ get() {
2950
+ return _name.value === 'system' ? systemName.value : _name.value;
2951
+ },
2952
+ set(val) {
2953
+ _name.value = val;
2954
+ }
2955
+ });
2941
2956
  const computedThemes = computed(() => {
2942
2957
  const acc = {};
2943
2958
  for (const [name, original] of Object.entries(themes.value)) {
@@ -2958,28 +2973,49 @@ function createTheme(options) {
2958
2973
  const current = computed(() => computedThemes.value[name.value]);
2959
2974
  const styles = computed(() => {
2960
2975
  const lines = [];
2976
+ const important = parsedOptions.unimportant ? '' : ' !important';
2977
+ const scoped = parsedOptions.scoped ? parsedOptions.prefix : '';
2961
2978
  if (current.value?.dark) {
2962
2979
  createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
2963
2980
  }
2964
- createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
2981
+ createCssClass(lines, ':root', genCssVariables(current.value, parsedOptions.prefix), parsedOptions.scope);
2965
2982
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
2966
- createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
2967
- }
2968
- const bgLines = [];
2969
- const fgLines = [];
2970
- const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2971
- for (const key of colors) {
2972
- if (key.startsWith('on-')) {
2973
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2974
- } else {
2975
- 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);
2976
- createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2977
- createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
2983
+ createCssClass(lines, `.${parsedOptions.prefix}theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme, parsedOptions.prefix)], parsedOptions.scope);
2984
+ }
2985
+ if (parsedOptions.utilities) {
2986
+ const bgLines = [];
2987
+ const fgLines = [];
2988
+ const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2989
+ for (const key of colors) {
2990
+ if (key.startsWith('on-')) {
2991
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
2992
+ } else {
2993
+ 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);
2994
+ createCssClass(fgLines, `.${scoped}text-${key}`, [`color: rgb(var(--${parsedOptions.prefix}theme-${key}))${important}`], parsedOptions.scope);
2995
+ createCssClass(fgLines, `.${scoped}border-${key}`, [`--${parsedOptions.prefix}border-color: var(--${parsedOptions.prefix}theme-${key})`], parsedOptions.scope);
2996
+ }
2978
2997
  }
2998
+ lines.push(...bgLines, ...fgLines);
2979
2999
  }
2980
- lines.push(...bgLines, ...fgLines);
2981
- return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
3000
+ return '@layer vuetify.theme {\n' + lines.map(v => ` ${v}`).join('') + '\n}';
2982
3001
  });
3002
+ const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `${parsedOptions.prefix}theme--${name.value}`);
3003
+ const themeNames = computed(() => Object.keys(computedThemes.value));
3004
+ if (SUPPORTS_MATCH_MEDIA) {
3005
+ const media = window.matchMedia('(prefers-color-scheme: dark)');
3006
+ function updateSystemName() {
3007
+ systemName.value = media.matches ? 'dark' : 'light';
3008
+ }
3009
+ updateSystemName();
3010
+ media.addEventListener('change', updateSystemName, {
3011
+ passive: true
3012
+ });
3013
+ if (getCurrentScope()) {
3014
+ onScopeDispose(() => {
3015
+ media.removeEventListener('change', updateSystemName);
3016
+ });
3017
+ }
3018
+ }
2983
3019
  function install(app) {
2984
3020
  if (parsedOptions.isDisabled) return;
2985
3021
  const head = app._context.provides.usehead;
@@ -3017,22 +3053,55 @@ function createTheme(options) {
3017
3053
  updateStyles();
3018
3054
  }
3019
3055
  function updateStyles() {
3020
- upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
3056
+ upsertStyles(parsedOptions.stylesheetId, parsedOptions.cspNonce, styles.value);
3021
3057
  }
3022
3058
  }
3023
3059
  }
3024
- const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`);
3060
+ function change(themeName) {
3061
+ if (!themeNames.value.includes(themeName)) {
3062
+ consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
3063
+ return;
3064
+ }
3065
+ name.value = themeName;
3066
+ }
3067
+ function cycle() {
3068
+ let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : themeNames.value;
3069
+ const currentIndex = themeArray.indexOf(name.value);
3070
+ const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % themeArray.length;
3071
+ change(themeArray[nextIndex]);
3072
+ }
3073
+ function toggle() {
3074
+ let themeArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['light', 'dark'];
3075
+ cycle(themeArray);
3076
+ }
3077
+ const globalName = new Proxy(name, {
3078
+ get(target, prop) {
3079
+ return target[prop];
3080
+ },
3081
+ set(target, prop, val) {
3082
+ if (prop === 'value') {
3083
+ deprecate(`theme.global.name.value = ${val}`, `theme.change('${val}')`);
3084
+ }
3085
+ // @ts-expect-error
3086
+ target[prop] = val;
3087
+ return true;
3088
+ }
3089
+ });
3025
3090
  return {
3026
3091
  install,
3092
+ change,
3093
+ cycle,
3094
+ toggle,
3027
3095
  isDisabled: parsedOptions.isDisabled,
3028
3096
  name,
3029
3097
  themes,
3030
3098
  current,
3031
3099
  computedThemes,
3100
+ prefix: parsedOptions.prefix,
3032
3101
  themeClasses,
3033
3102
  styles,
3034
3103
  global: {
3035
- name,
3104
+ name: globalName,
3036
3105
  current
3037
3106
  }
3038
3107
  };
@@ -3043,7 +3112,7 @@ function provideTheme(props) {
3043
3112
  if (!theme) throw new Error('Could not find Vuetify theme injection');
3044
3113
  const name = computed(() => props.theme ?? theme.name.value);
3045
3114
  const current = computed(() => theme.themes.value[name.value]);
3046
- const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
3115
+ const themeClasses = computed(() => theme.isDisabled ? undefined : `${theme.prefix}theme--${name.value}`);
3047
3116
  const newTheme = {
3048
3117
  ...theme,
3049
3118
  name,
@@ -7159,11 +7228,6 @@ function useValidation(props) {
7159
7228
  }
7160
7229
  async function validate() {
7161
7230
  let silent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
7162
- if (props.disabled || props.readonly) {
7163
- internalErrorMessages.value = [];
7164
- isValidating.value = false;
7165
- return internalErrorMessages.value;
7166
- }
7167
7231
  const results = [];
7168
7232
  isValidating.value = true;
7169
7233
  for (const rule of props.rules) {
@@ -12573,7 +12637,12 @@ function useVirtual(props, items) {
12573
12637
  }
12574
12638
  function calculateOffset(index) {
12575
12639
  index = clamp(index, 0, items.value.length - 1);
12576
- return offsets[index] || 0;
12640
+ const whole = Math.floor(index);
12641
+ const fraction = index % 1;
12642
+ const next = whole + 1;
12643
+ const wholeOffset = offsets[whole] || 0;
12644
+ const nextOffset = offsets[next] || wholeOffset;
12645
+ return wholeOffset + (nextOffset - wholeOffset) * fraction;
12577
12646
  }
12578
12647
  function calculateIndex(scrollTop) {
12579
12648
  return binaryClosest(offsets, scrollTop);
@@ -13202,7 +13271,8 @@ const VSelect = genericComponent()({
13202
13271
  onClick: () => select(item, null)
13203
13272
  });
13204
13273
  return slots.item?.({
13205
- item,
13274
+ item: item.raw,
13275
+ internalItem: item,
13206
13276
  index,
13207
13277
  props: itemProps
13208
13278
  }) ?? createVNode(VListItem, mergeProps(itemProps, {
@@ -13250,11 +13320,13 @@ const VSelect = genericComponent()({
13250
13320
  };
13251
13321
  const hasSlot = hasChips ? !!slots.chip : !!slots.selection;
13252
13322
  const slotContent = hasSlot ? ensureValidVNode(hasChips ? slots.chip({
13253
- item,
13323
+ item: item.raw,
13324
+ internalItem: item,
13254
13325
  index,
13255
13326
  props: slotProps
13256
13327
  }) : slots.selection({
13257
- item,
13328
+ item: item.raw,
13329
+ internalItem: item,
13258
13330
  index
13259
13331
  })) : undefined;
13260
13332
  if (hasSlot && !slotContent) return undefined;
@@ -13320,7 +13392,6 @@ const VSelect = genericComponent()({
13320
13392
  // Composables
13321
13393
  const defaultFilter = (value, query, item) => {
13322
13394
  if (value == null || query == null) return -1;
13323
- if (!query.length) return 0;
13324
13395
  value = value.toString().toLocaleLowerCase();
13325
13396
  query = query.toString().toLocaleLowerCase();
13326
13397
  const result = [];
@@ -13333,7 +13404,7 @@ const defaultFilter = (value, query, item) => {
13333
13404
  };
13334
13405
  function normaliseMatch(match, query) {
13335
13406
  if (match == null || typeof match === 'boolean' || match === -1) return;
13336
- if (typeof match === 'number') return [[match, match + query.length]];
13407
+ if (typeof match === 'number') return [[match, query.length]];
13337
13408
  if (Array.isArray(match[0])) return match;
13338
13409
  return [match];
13339
13410
  }
@@ -13801,7 +13872,8 @@ const VAutocomplete = genericComponent()({
13801
13872
  onClick: () => select(item, null)
13802
13873
  });
13803
13874
  return slots.item?.({
13804
- item,
13875
+ item: item.raw,
13876
+ internalItem: item,
13805
13877
  index,
13806
13878
  props: itemProps
13807
13879
  }) ?? createVNode(VListItem, mergeProps(itemProps, {
@@ -13852,11 +13924,13 @@ const VAutocomplete = genericComponent()({
13852
13924
  };
13853
13925
  const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
13854
13926
  const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
13855
- item,
13927
+ item: item.raw,
13928
+ internalItem: item,
13856
13929
  index,
13857
13930
  props: slotProps
13858
13931
  }) : slots.selection({
13859
- item,
13932
+ item: item.raw,
13933
+ internalItem: item,
13860
13934
  index
13861
13935
  })) : undefined;
13862
13936
  if (hasSlot && !slotContent) return undefined;
@@ -17248,81 +17322,165 @@ const VPicker = genericComponent()({
17248
17322
 
17249
17323
  // Types
17250
17324
 
17251
- function weekInfo(locale) {
17252
- // https://simplelocalize.io/data/locales/
17253
- // then `new Intl.Locale(...).getWeekInfo()`
17254
- const code = locale.slice(-2).toUpperCase();
17255
- switch (true) {
17256
- case locale === 'GB-alt-variant':
17257
- {
17258
- return {
17259
- firstDay: 0,
17260
- firstWeekSize: 4
17261
- };
17262
- }
17263
- case locale === '001':
17264
- {
17265
- return {
17266
- firstDay: 1,
17267
- firstWeekSize: 1
17268
- };
17269
- }
17270
- case `AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE
17271
- 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
17272
- VE VI WS YE ZA ZW`.includes(code):
17273
- {
17274
- return {
17275
- firstDay: 0,
17276
- firstWeekSize: 1
17277
- };
17278
- }
17279
- case `AI AL AM AR AU AZ BA BM BN BY CL CM CN CR CY EC GE HR KG KZ LB LK LV
17280
- MD ME MK MN MY NZ RO RS SI TJ TM TR UA UY UZ VN XK`.includes(code):
17281
- {
17282
- return {
17283
- firstDay: 1,
17284
- firstWeekSize: 1
17285
- };
17286
- }
17287
- case `AD AN AT AX BE BG CH CZ DE DK EE ES FI FJ FO FR GB GF GP GR HU IE IS
17288
- IT LI LT LU MC MQ NL NO PL RE RU SE SK SM VA`.includes(code):
17289
- {
17290
- return {
17291
- firstDay: 1,
17292
- firstWeekSize: 4
17293
- };
17294
- }
17295
- case `AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY`.includes(code):
17296
- {
17297
- return {
17298
- firstDay: 6,
17299
- firstWeekSize: 1
17300
- };
17301
- }
17302
- case code === 'MV':
17303
- {
17304
- return {
17305
- firstDay: 5,
17306
- firstWeekSize: 1
17307
- };
17308
- }
17309
- case code === 'PT':
17310
- {
17311
- return {
17312
- firstDay: 0,
17313
- firstWeekSize: 4
17314
- };
17315
- }
17316
- default:
17317
- return null;
17318
- }
17319
- }
17325
+ const firstDay = {
17326
+ '001': 1,
17327
+ AD: 1,
17328
+ AE: 6,
17329
+ AF: 6,
17330
+ AG: 0,
17331
+ AI: 1,
17332
+ AL: 1,
17333
+ AM: 1,
17334
+ AN: 1,
17335
+ AR: 1,
17336
+ AS: 0,
17337
+ AT: 1,
17338
+ AU: 1,
17339
+ AX: 1,
17340
+ AZ: 1,
17341
+ BA: 1,
17342
+ BD: 0,
17343
+ BE: 1,
17344
+ BG: 1,
17345
+ BH: 6,
17346
+ BM: 1,
17347
+ BN: 1,
17348
+ BR: 0,
17349
+ BS: 0,
17350
+ BT: 0,
17351
+ BW: 0,
17352
+ BY: 1,
17353
+ BZ: 0,
17354
+ CA: 0,
17355
+ CH: 1,
17356
+ CL: 1,
17357
+ CM: 1,
17358
+ CN: 1,
17359
+ CO: 0,
17360
+ CR: 1,
17361
+ CY: 1,
17362
+ CZ: 1,
17363
+ DE: 1,
17364
+ DJ: 6,
17365
+ DK: 1,
17366
+ DM: 0,
17367
+ DO: 0,
17368
+ DZ: 6,
17369
+ EC: 1,
17370
+ EE: 1,
17371
+ EG: 6,
17372
+ ES: 1,
17373
+ ET: 0,
17374
+ FI: 1,
17375
+ FJ: 1,
17376
+ FO: 1,
17377
+ FR: 1,
17378
+ GB: 1,
17379
+ 'GB-alt-variant': 0,
17380
+ GE: 1,
17381
+ GF: 1,
17382
+ GP: 1,
17383
+ GR: 1,
17384
+ GT: 0,
17385
+ GU: 0,
17386
+ HK: 0,
17387
+ HN: 0,
17388
+ HR: 1,
17389
+ HU: 1,
17390
+ ID: 0,
17391
+ IE: 1,
17392
+ IL: 0,
17393
+ IN: 0,
17394
+ IQ: 6,
17395
+ IR: 6,
17396
+ IS: 1,
17397
+ IT: 1,
17398
+ JM: 0,
17399
+ JO: 6,
17400
+ JP: 0,
17401
+ KE: 0,
17402
+ KG: 1,
17403
+ KH: 0,
17404
+ KR: 0,
17405
+ KW: 6,
17406
+ KZ: 1,
17407
+ LA: 0,
17408
+ LB: 1,
17409
+ LI: 1,
17410
+ LK: 1,
17411
+ LT: 1,
17412
+ LU: 1,
17413
+ LV: 1,
17414
+ LY: 6,
17415
+ MC: 1,
17416
+ MD: 1,
17417
+ ME: 1,
17418
+ MH: 0,
17419
+ MK: 1,
17420
+ MM: 0,
17421
+ MN: 1,
17422
+ MO: 0,
17423
+ MQ: 1,
17424
+ MT: 0,
17425
+ MV: 5,
17426
+ MX: 0,
17427
+ MY: 1,
17428
+ MZ: 0,
17429
+ NI: 0,
17430
+ NL: 1,
17431
+ NO: 1,
17432
+ NP: 0,
17433
+ NZ: 1,
17434
+ OM: 6,
17435
+ PA: 0,
17436
+ PE: 0,
17437
+ PH: 0,
17438
+ PK: 0,
17439
+ PL: 1,
17440
+ PR: 0,
17441
+ PT: 0,
17442
+ PY: 0,
17443
+ QA: 6,
17444
+ RE: 1,
17445
+ RO: 1,
17446
+ RS: 1,
17447
+ RU: 1,
17448
+ SA: 0,
17449
+ SD: 6,
17450
+ SE: 1,
17451
+ SG: 0,
17452
+ SI: 1,
17453
+ SK: 1,
17454
+ SM: 1,
17455
+ SV: 0,
17456
+ SY: 6,
17457
+ TH: 0,
17458
+ TJ: 1,
17459
+ TM: 1,
17460
+ TR: 1,
17461
+ TT: 0,
17462
+ TW: 0,
17463
+ UA: 1,
17464
+ UM: 0,
17465
+ US: 0,
17466
+ UY: 1,
17467
+ UZ: 1,
17468
+ VA: 1,
17469
+ VE: 0,
17470
+ VI: 0,
17471
+ VN: 1,
17472
+ WS: 0,
17473
+ XK: 1,
17474
+ YE: 0,
17475
+ ZA: 0,
17476
+ ZW: 0
17477
+ };
17320
17478
  function getWeekArray(date, locale, firstDayOfWeek) {
17321
17479
  const weeks = [];
17322
17480
  let currentWeek = [];
17323
17481
  const firstDayOfMonth = startOfMonth(date);
17324
17482
  const lastDayOfMonth = endOfMonth(date);
17325
- const first = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17483
+ const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17326
17484
  const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7;
17327
17485
  const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7;
17328
17486
  for (let i = 0; i < firstDayWeekIndex; i++) {
@@ -17353,7 +17511,7 @@ function getWeekArray(date, locale, firstDayOfWeek) {
17353
17511
  return weeks;
17354
17512
  }
17355
17513
  function startOfWeek(date, locale, firstDayOfWeek) {
17356
- const day = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17514
+ const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17357
17515
  const d = new Date(date);
17358
17516
  while (d.getDay() !== day) {
17359
17517
  d.setDate(d.getDate() - 1);
@@ -17362,7 +17520,7 @@ function startOfWeek(date, locale, firstDayOfWeek) {
17362
17520
  }
17363
17521
  function endOfWeek(date, locale) {
17364
17522
  const d = new Date(date);
17365
- const lastDay = ((weekInfo(locale)?.firstDay ?? 0) + 6) % 7;
17523
+ const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;
17366
17524
  while (d.getDay() !== lastDay) {
17367
17525
  d.setDate(d.getDate() + 1);
17368
17526
  }
@@ -17397,7 +17555,7 @@ function date(value) {
17397
17555
  }
17398
17556
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
17399
17557
  function getWeekdays(locale, firstDayOfWeek) {
17400
- const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
17558
+ const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
17401
17559
  return createRange(7).map(i => {
17402
17560
  const weekday = new Date(sundayJanuarySecond2000);
17403
17561
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
@@ -17645,24 +17803,6 @@ function getYear(date) {
17645
17803
  function getMonth(date) {
17646
17804
  return date.getMonth();
17647
17805
  }
17648
- function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
17649
- const weekInfoFromLocale = weekInfo(locale);
17650
- const weekStart = firstDayOfWeek ?? weekInfoFromLocale?.firstDay ?? 0;
17651
- const minWeekSize = firstWeekMinSize ?? weekInfoFromLocale?.firstWeekSize ?? 1;
17652
- function firstWeekSize(year) {
17653
- const yearStart = new Date(year, 0, 1);
17654
- return 7 - getDiff(yearStart, startOfWeek(yearStart, locale, weekStart), 'days');
17655
- }
17656
- let year = getYear(date);
17657
- const currentWeekEnd = addDays(startOfWeek(date, locale, weekStart), 6);
17658
- if (year < getYear(currentWeekEnd) && firstWeekSize(year + 1) >= minWeekSize) {
17659
- year++;
17660
- }
17661
- const yearStart = new Date(year, 0, 1);
17662
- const size = firstWeekSize(year);
17663
- const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
17664
- return 1 + getDiff(date, d1w1, 'weeks');
17665
- }
17666
17806
  function getDate(date) {
17667
17807
  return date.getDate();
17668
17808
  }
@@ -17802,12 +17942,10 @@ class VuetifyDateAdapter {
17802
17942
  return addMonths(date, amount);
17803
17943
  }
17804
17944
  getWeekArray(date, firstDayOfWeek) {
17805
- const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17806
- return getWeekArray(date, this.locale, firstDay);
17945
+ return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17807
17946
  }
17808
17947
  startOfWeek(date, firstDayOfWeek) {
17809
- const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17810
- return startOfWeek(date, this.locale, firstDay);
17948
+ return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17811
17949
  }
17812
17950
  endOfWeek(date) {
17813
17951
  return endOfWeek(date, this.locale);
@@ -17867,8 +18005,7 @@ class VuetifyDateAdapter {
17867
18005
  return getDiff(date, comparing, unit);
17868
18006
  }
17869
18007
  getWeekdays(firstDayOfWeek) {
17870
- const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17871
- return getWeekdays(this.locale, firstDay);
18008
+ return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
17872
18009
  }
17873
18010
  getYear(date) {
17874
18011
  return getYear(date);
@@ -17876,10 +18013,6 @@ class VuetifyDateAdapter {
17876
18013
  getMonth(date) {
17877
18014
  return getMonth(date);
17878
18015
  }
17879
- getWeek(date, firstDayOfWeek, firstWeekMinSize) {
17880
- const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
17881
- return getWeek(date, this.locale, firstDay, firstWeekMinSize);
17882
- }
17883
18016
  getDate(date) {
17884
18017
  return getDate(date);
17885
18018
  }
@@ -17983,6 +18116,26 @@ function useDate() {
17983
18116
  return createInstance(options, locale);
17984
18117
  }
17985
18118
 
18119
+ // https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
18120
+ function getWeek(adapter, value) {
18121
+ const date = adapter.toJsDate(value);
18122
+ let year = date.getFullYear();
18123
+ let d1w1 = new Date(year, 0, 1);
18124
+ if (date < d1w1) {
18125
+ year = year - 1;
18126
+ d1w1 = new Date(year, 0, 1);
18127
+ } else {
18128
+ const tv = new Date(year + 1, 0, 1);
18129
+ if (date >= tv) {
18130
+ year = year + 1;
18131
+ d1w1 = tv;
18132
+ }
18133
+ }
18134
+ const diffTime = Math.abs(date.getTime() - d1w1.getTime());
18135
+ const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
18136
+ return Math.floor(diffDays / 7) + 1;
18137
+ }
18138
+
17986
18139
  // Types
17987
18140
 
17988
18141
  const makeVColorPickerProps = propsFactory({
@@ -18529,7 +18682,8 @@ const VCombobox = genericComponent()({
18529
18682
  onClick: () => select(item, null)
18530
18683
  });
18531
18684
  return slots.item?.({
18532
- item,
18685
+ item: item.raw,
18686
+ internalItem: item,
18533
18687
  index,
18534
18688
  props: itemProps
18535
18689
  }) ?? createVNode(VListItem, mergeProps(itemProps, {
@@ -18580,11 +18734,13 @@ const VCombobox = genericComponent()({
18580
18734
  };
18581
18735
  const hasSlot = hasChips.value ? !!slots.chip : !!slots.selection;
18582
18736
  const slotContent = hasSlot ? ensureValidVNode(hasChips.value ? slots.chip({
18583
- item,
18737
+ item: item.raw,
18738
+ internalItem: item,
18584
18739
  index,
18585
18740
  props: slotProps
18586
18741
  }) : slots.selection({
18587
- item,
18742
+ item: item.raw,
18743
+ internalItem: item,
18588
18744
  index
18589
18745
  })) : undefined;
18590
18746
  if (hasSlot && !slotContent) return undefined;
@@ -22171,7 +22327,7 @@ const makeCalendarProps = propsFactory({
22171
22327
  },
22172
22328
  firstDayOfWeek: {
22173
22329
  type: [Number, String],
22174
- default: undefined
22330
+ default: 0
22175
22331
  }
22176
22332
  }, 'calendar');
22177
22333
  function useCalendar(props) {
@@ -22194,12 +22350,14 @@ function useCalendar(props) {
22194
22350
  return adapter.setMonth(date, value);
22195
22351
  }, v => adapter.getMonth(v));
22196
22352
  const weekDays = computed(() => {
22197
- const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
22353
+ const firstDayOfWeek = Number(props.firstDayOfWeek);
22354
+
22198
22355
  // Always generate all days, regardless of props.weekdays
22199
22356
  return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
22200
22357
  });
22201
22358
  const weeksInMonth = computed(() => {
22202
- const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
22359
+ const firstDayOfWeek = Number(props.firstDayOfWeek);
22360
+ const weeks = adapter.getWeekArray(month.value, firstDayOfWeek);
22203
22361
  const days = weeks.flat();
22204
22362
 
22205
22363
  // Make sure there's always 6 weeks in month (6 * 7 days)
@@ -22263,7 +22421,7 @@ function useCalendar(props) {
22263
22421
  });
22264
22422
  const weekNumbers = computed(() => {
22265
22423
  return weeksInMonth.value.map(week => {
22266
- return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null;
22424
+ return week.length ? getWeek(adapter, week[0]) : null;
22267
22425
  });
22268
22426
  });
22269
22427
  function isDisabled(value) {
@@ -23752,7 +23910,17 @@ const VForm = genericComponent()({
23752
23910
  "novalidate": true,
23753
23911
  "onReset": onReset,
23754
23912
  "onSubmit": onSubmit
23755
- }, [slots.default?.(form)]));
23913
+ }, [slots.default?.({
23914
+ errors: form.errors.value,
23915
+ isDisabled: form.isDisabled.value,
23916
+ isReadonly: form.isReadonly.value,
23917
+ isValidating: form.isValidating.value,
23918
+ isValid: form.isValid.value,
23919
+ items: form.items.value,
23920
+ validate: form.validate,
23921
+ reset: form.reset,
23922
+ resetValidation: form.resetValidation
23923
+ })]));
23756
23924
  return forwardRefs(form, formRef);
23757
23925
  }
23758
23926
  });
@@ -29161,7 +29329,7 @@ function createVuetify$1() {
29161
29329
  };
29162
29330
  });
29163
29331
  }
29164
- const version$1 = "3.8.1-master.2025-04-15";
29332
+ const version$1 = "3.8.1-next.2025-04-15";
29165
29333
  createVuetify$1.version = version$1;
29166
29334
 
29167
29335
  // Vue's inject() can only be used in setup
@@ -29186,7 +29354,7 @@ const createVuetify = function () {
29186
29354
  ...options
29187
29355
  });
29188
29356
  };
29189
- const version = "3.8.1-master.2025-04-15";
29357
+ const version = "3.8.1-next.2025-04-15";
29190
29358
  createVuetify.version = version;
29191
29359
 
29192
29360
  export { index as blueprints, components, createVuetify, directives, useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, version };