@vuetify/nightly 3.9.2-master.2025-07-28 → 3.9.3-master.2025-07-30

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 (186) hide show
  1. package/CHANGELOG.md +9 -51
  2. package/dist/json/attributes.json +3076 -3076
  3. package/dist/json/importMap-labs.json +30 -30
  4. package/dist/json/importMap.json +154 -154
  5. package/dist/json/web-types.json +5573 -5573
  6. package/dist/vuetify-labs.cjs +91 -35
  7. package/dist/vuetify-labs.css +4963 -4960
  8. package/dist/vuetify-labs.d.ts +60 -59
  9. package/dist/vuetify-labs.esm.js +91 -35
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +91 -35
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +59 -20
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4049 -4046
  16. package/dist/vuetify.d.ts +60 -59
  17. package/dist/vuetify.esm.js +59 -20
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +59 -20
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +200 -198
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VCombobox/VCombobox.js +10 -6
  25. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  26. package/lib/components/VDatePicker/VDatePickerControls.js +8 -1
  27. package/lib/components/VDatePicker/VDatePickerControls.js.map +1 -1
  28. package/lib/components/VDatePicker/VDatePickerMonth.js +11 -0
  29. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  30. package/lib/components/VDatePicker/VDatePickerMonths.js +3 -0
  31. package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
  32. package/lib/components/VList/VListChildren.js +3 -4
  33. package/lib/components/VList/VListChildren.js.map +1 -1
  34. package/lib/components/VSlider/VSliderThumb.css +9 -14
  35. package/lib/components/VSlider/VSliderThumb.js +13 -7
  36. package/lib/components/VSlider/VSliderThumb.js.map +1 -1
  37. package/lib/components/VSlider/VSliderThumb.sass +9 -14
  38. package/lib/components/VSlider/slider.d.ts +1 -0
  39. package/lib/components/VSlider/slider.js +2 -0
  40. package/lib/components/VSlider/slider.js.map +1 -1
  41. package/lib/components/VWindow/VWindow.css +8 -0
  42. package/lib/components/VWindow/VWindow.sass +9 -0
  43. package/lib/composables/theme.d.ts +1 -0
  44. package/lib/composables/theme.js +3 -1
  45. package/lib/composables/theme.js.map +1 -1
  46. package/lib/directives/ripple/index.js +2 -2
  47. package/lib/directives/ripple/index.js.map +1 -1
  48. package/lib/entry-bundler.js +1 -1
  49. package/lib/framework.d.ts +60 -59
  50. package/lib/framework.js +1 -1
  51. package/lib/labs/VVideo/VVideo.css +1 -1
  52. package/lib/labs/VVideo/VVideo.js +2 -2
  53. package/lib/labs/VVideo/VVideo.js.map +1 -1
  54. package/lib/labs/VVideo/VVideo.sass +2 -0
  55. package/lib/labs/VVideo/VVideoControls.js +32 -15
  56. package/lib/labs/VVideo/VVideoControls.js.map +1 -1
  57. package/lib/locale/af.d.ts +7 -0
  58. package/lib/locale/af.js +7 -0
  59. package/lib/locale/af.js.map +1 -1
  60. package/lib/locale/ar.d.ts +7 -0
  61. package/lib/locale/ar.js +13 -6
  62. package/lib/locale/ar.js.map +1 -1
  63. package/lib/locale/az.d.ts +7 -0
  64. package/lib/locale/az.js +7 -0
  65. package/lib/locale/az.js.map +1 -1
  66. package/lib/locale/bg.d.ts +7 -0
  67. package/lib/locale/bg.js +7 -0
  68. package/lib/locale/bg.js.map +1 -1
  69. package/lib/locale/ca.d.ts +7 -0
  70. package/lib/locale/ca.js +7 -0
  71. package/lib/locale/ca.js.map +1 -1
  72. package/lib/locale/ckb.d.ts +7 -0
  73. package/lib/locale/ckb.js +7 -0
  74. package/lib/locale/ckb.js.map +1 -1
  75. package/lib/locale/cs.d.ts +7 -0
  76. package/lib/locale/cs.js +7 -0
  77. package/lib/locale/cs.js.map +1 -1
  78. package/lib/locale/da.d.ts +7 -0
  79. package/lib/locale/da.js +7 -0
  80. package/lib/locale/da.js.map +1 -1
  81. package/lib/locale/de.d.ts +7 -0
  82. package/lib/locale/de.js +7 -0
  83. package/lib/locale/de.js.map +1 -1
  84. package/lib/locale/el.d.ts +7 -0
  85. package/lib/locale/el.js +7 -0
  86. package/lib/locale/el.js.map +1 -1
  87. package/lib/locale/en.d.ts +7 -0
  88. package/lib/locale/en.js +8 -0
  89. package/lib/locale/en.js.map +1 -1
  90. package/lib/locale/es.d.ts +7 -0
  91. package/lib/locale/es.js +7 -0
  92. package/lib/locale/es.js.map +1 -1
  93. package/lib/locale/et.d.ts +7 -0
  94. package/lib/locale/et.js +7 -0
  95. package/lib/locale/et.js.map +1 -1
  96. package/lib/locale/fa.d.ts +7 -0
  97. package/lib/locale/fa.js +7 -0
  98. package/lib/locale/fa.js.map +1 -1
  99. package/lib/locale/fi.d.ts +7 -0
  100. package/lib/locale/fi.js +7 -0
  101. package/lib/locale/fi.js.map +1 -1
  102. package/lib/locale/fr.d.ts +7 -0
  103. package/lib/locale/fr.js +7 -0
  104. package/lib/locale/fr.js.map +1 -1
  105. package/lib/locale/he.d.ts +7 -0
  106. package/lib/locale/he.js +7 -0
  107. package/lib/locale/he.js.map +1 -1
  108. package/lib/locale/hr.d.ts +7 -0
  109. package/lib/locale/hr.js +7 -0
  110. package/lib/locale/hr.js.map +1 -1
  111. package/lib/locale/hu.d.ts +7 -0
  112. package/lib/locale/hu.js +7 -0
  113. package/lib/locale/hu.js.map +1 -1
  114. package/lib/locale/id.d.ts +7 -0
  115. package/lib/locale/id.js +7 -0
  116. package/lib/locale/id.js.map +1 -1
  117. package/lib/locale/it.d.ts +7 -0
  118. package/lib/locale/it.js +7 -0
  119. package/lib/locale/it.js.map +1 -1
  120. package/lib/locale/ja.d.ts +7 -0
  121. package/lib/locale/ja.js +7 -0
  122. package/lib/locale/ja.js.map +1 -1
  123. package/lib/locale/km.d.ts +7 -0
  124. package/lib/locale/km.js +7 -0
  125. package/lib/locale/km.js.map +1 -1
  126. package/lib/locale/ko.d.ts +7 -0
  127. package/lib/locale/ko.js +7 -0
  128. package/lib/locale/ko.js.map +1 -1
  129. package/lib/locale/lt.d.ts +7 -0
  130. package/lib/locale/lt.js +7 -0
  131. package/lib/locale/lt.js.map +1 -1
  132. package/lib/locale/lv.d.ts +7 -0
  133. package/lib/locale/lv.js +7 -0
  134. package/lib/locale/lv.js.map +1 -1
  135. package/lib/locale/nl.d.ts +7 -0
  136. package/lib/locale/nl.js +7 -0
  137. package/lib/locale/nl.js.map +1 -1
  138. package/lib/locale/no.d.ts +7 -0
  139. package/lib/locale/no.js +7 -0
  140. package/lib/locale/no.js.map +1 -1
  141. package/lib/locale/pl.d.ts +7 -0
  142. package/lib/locale/pl.js +7 -0
  143. package/lib/locale/pl.js.map +1 -1
  144. package/lib/locale/pt.d.ts +7 -0
  145. package/lib/locale/pt.js +7 -0
  146. package/lib/locale/pt.js.map +1 -1
  147. package/lib/locale/ro.d.ts +7 -0
  148. package/lib/locale/ro.js +7 -0
  149. package/lib/locale/ro.js.map +1 -1
  150. package/lib/locale/ru.d.ts +7 -0
  151. package/lib/locale/ru.js +7 -0
  152. package/lib/locale/ru.js.map +1 -1
  153. package/lib/locale/sk.d.ts +7 -0
  154. package/lib/locale/sk.js +7 -0
  155. package/lib/locale/sk.js.map +1 -1
  156. package/lib/locale/sl.d.ts +7 -0
  157. package/lib/locale/sl.js +7 -0
  158. package/lib/locale/sl.js.map +1 -1
  159. package/lib/locale/sr-Cyrl.d.ts +7 -0
  160. package/lib/locale/sr-Cyrl.js +7 -0
  161. package/lib/locale/sr-Cyrl.js.map +1 -1
  162. package/lib/locale/sr-Latn.d.ts +7 -0
  163. package/lib/locale/sr-Latn.js +7 -0
  164. package/lib/locale/sr-Latn.js.map +1 -1
  165. package/lib/locale/sv.d.ts +7 -0
  166. package/lib/locale/sv.js +7 -0
  167. package/lib/locale/sv.js.map +1 -1
  168. package/lib/locale/th.d.ts +7 -0
  169. package/lib/locale/th.js +7 -0
  170. package/lib/locale/th.js.map +1 -1
  171. package/lib/locale/tr.d.ts +7 -0
  172. package/lib/locale/tr.js +7 -0
  173. package/lib/locale/tr.js.map +1 -1
  174. package/lib/locale/uk.d.ts +7 -0
  175. package/lib/locale/uk.js +7 -0
  176. package/lib/locale/uk.js.map +1 -1
  177. package/lib/locale/vi.d.ts +7 -0
  178. package/lib/locale/vi.js +7 -0
  179. package/lib/locale/vi.js.map +1 -1
  180. package/lib/locale/zh-Hans.d.ts +7 -0
  181. package/lib/locale/zh-Hans.js +7 -0
  182. package/lib/locale/zh-Hans.js.map +1 -1
  183. package/lib/locale/zh-Hant.d.ts +7 -0
  184. package/lib/locale/zh-Hant.js +7 -0
  185. package/lib/locale/zh-Hant.js.map +1 -1
  186. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.9.2-master.2025-07-28
2
+ * Vuetify v3.9.3-master.2025-07-30
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2149,6 +2149,14 @@
2149
2149
  header: 'Enter date',
2150
2150
  input: {
2151
2151
  placeholder: 'Enter date'
2152
+ },
2153
+ ariaLabel: {
2154
+ previousMonth: 'Previous month',
2155
+ nextMonth: 'Next month',
2156
+ selectYear: 'Select year',
2157
+ selectDate: '{0}',
2158
+ // Full date format
2159
+ currentDate: 'Today, {0}'
2152
2160
  }
2153
2161
  },
2154
2162
  noDataText: 'No data available',
@@ -2687,6 +2695,7 @@
2687
2695
  return acc;
2688
2696
  });
2689
2697
  const current = vue.toRef(() => computedThemes.value[name.value]);
2698
+ const isSystem = vue.toRef(() => _name.value === 'system');
2690
2699
  const styles = vue.computed(() => {
2691
2700
  const lines = [];
2692
2701
  const important = parsedOptions.unimportant ? '' : ' !important';
@@ -2774,7 +2783,7 @@
2774
2783
  }
2775
2784
  }
2776
2785
  function change(themeName) {
2777
- if (!themeNames.value.includes(themeName)) {
2786
+ if (themeName !== 'system' && !themeNames.value.includes(themeName)) {
2778
2787
  consoleWarn(`Theme "${themeName}" not found on the Vuetify theme instance`);
2779
2788
  return;
2780
2789
  }
@@ -2807,6 +2816,7 @@
2807
2816
  cycle,
2808
2817
  toggle,
2809
2818
  isDisabled: parsedOptions.isDisabled,
2819
+ isSystem,
2810
2820
  name,
2811
2821
  themes,
2812
2822
  current,
@@ -5687,8 +5697,8 @@
5687
5697
  if (!el?._ripple?.enabled) return;
5688
5698
  const ripples = el.getElementsByClassName('v-ripple__animation');
5689
5699
  if (ripples.length === 0) return;
5690
- const animation = ripples[ripples.length - 1];
5691
- if (animation.dataset.isHiding) return;else animation.dataset.isHiding = 'true';
5700
+ const animation = Array.from(ripples).findLast(ripple => !ripple.dataset.isHiding);
5701
+ if (!animation) return;else animation.dataset.isHiding = 'true';
5692
5702
  const diff = performance.now() - Number(animation.dataset.activated);
5693
5703
  const delay = Math.max(250 - diff, 0);
5694
5704
  setTimeout(() => {
@@ -9906,11 +9916,9 @@
9906
9916
  let {
9907
9917
  props: activatorProps
9908
9918
  } = _ref3;
9909
- const listItemProps = {
9910
- ...itemProps,
9911
- ...activatorProps,
9919
+ const listItemProps = vue.mergeProps(itemProps, activatorProps, {
9912
9920
  value: props.returnObject ? item : itemProps.value
9913
- };
9921
+ });
9914
9922
  return slots.header ? slots.header({
9915
9923
  props: listItemProps
9916
9924
  }) : vue.createVNode(VListItem, listItemProps, slotsWithItem);
@@ -16314,6 +16322,7 @@
16314
16322
  const numTicks = vue.computed(() => (max.value - min.value) / step.value);
16315
16323
  const disabled = vue.toRef(() => props.disabled);
16316
16324
  const thumbColor = vue.computed(() => props.error || props.disabled ? undefined : props.thumbColor ?? props.color);
16325
+ const thumbLabelColor = vue.computed(() => props.error || props.disabled ? undefined : props.thumbColor);
16317
16326
  const trackColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackColor ?? props.color);
16318
16327
  const trackFillColor = vue.computed(() => props.error || props.disabled ? undefined : props.trackFillColor ?? props.color);
16319
16328
  const mousePressed = vue.shallowRef(false);
@@ -16471,6 +16480,7 @@
16471
16480
  step,
16472
16481
  thumbSize,
16473
16482
  thumbColor,
16483
+ thumbLabelColor,
16474
16484
  thumbLabel: vue.toRef(() => props.thumbLabel),
16475
16485
  ticks: vue.toRef(() => props.ticks),
16476
16486
  tickSize,
@@ -16536,6 +16546,7 @@
16536
16546
  min,
16537
16547
  max,
16538
16548
  thumbColor,
16549
+ thumbLabelColor,
16539
16550
  step,
16540
16551
  disabled,
16541
16552
  thumbSize,
@@ -16557,6 +16568,10 @@
16557
16568
  textColorClasses,
16558
16569
  textColorStyles
16559
16570
  } = useTextColor(thumbColor);
16571
+ const {
16572
+ backgroundColorClasses,
16573
+ backgroundColorStyles
16574
+ } = useBackgroundColor(thumbLabelColor);
16560
16575
  const {
16561
16576
  pageup,
16562
16577
  pagedown,
@@ -16622,9 +16637,7 @@
16622
16637
  "onKeydown": !readonly.value ? onKeydown : undefined
16623
16638
  }, [vue.createElementVNode("div", {
16624
16639
  "class": vue.normalizeClass(['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value]),
16625
- "style": {
16626
- ...textColorStyles.value
16627
- }
16640
+ "style": vue.normalizeStyle(textColorStyles.value)
16628
16641
  }, null), vue.withDirectives(vue.createElementVNode("div", {
16629
16642
  "class": vue.normalizeClass(['v-slider-thumb__ripple', textColorClasses.value]),
16630
16643
  "style": vue.normalizeStyle(textColorStyles.value)
@@ -16637,10 +16650,13 @@
16637
16650
  default: () => [vue.withDirectives(vue.createElementVNode("div", {
16638
16651
  "class": "v-slider-thumb__label-container"
16639
16652
  }, [vue.createElementVNode("div", {
16640
- "class": vue.normalizeClass(['v-slider-thumb__label', textColorClasses.value])
16653
+ "class": vue.normalizeClass(['v-slider-thumb__label', backgroundColorClasses.value]),
16654
+ "style": vue.normalizeStyle(backgroundColorStyles.value)
16641
16655
  }, [vue.createElementVNode("div", null, [slots['thumb-label']?.({
16642
16656
  modelValue: props.modelValue
16643
- }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vue.vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
16657
+ }) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)]), vue.createElementVNode("div", {
16658
+ "class": "v-slider-thumb__label-wedge"
16659
+ }, null)])]), [[vue.vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
16644
16660
  })]);
16645
16661
  });
16646
16662
  return {};
@@ -18787,19 +18803,23 @@
18787
18803
  get: () => {
18788
18804
  return _search.value;
18789
18805
  },
18790
- set: val => {
18806
+ set: async val => {
18791
18807
  _search.value = val ?? '';
18792
18808
  if (!props.multiple && !hasSelectionSlot.value) {
18793
18809
  model.value = [transformItem$3(props, val)];
18794
18810
  vue.nextTick(() => vVirtualScrollRef.value?.scrollToIndex(0));
18795
18811
  }
18796
18812
  if (val && props.multiple && props.delimiters?.length) {
18797
- const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`));
18813
+ const signsToMatch = props.delimiters.map(escapeForRegex).join('|');
18814
+ const values = val.split(new RegExp(`(?:${signsToMatch})+`));
18798
18815
  if (values.length > 1) {
18799
- values.forEach(v => {
18816
+ for (let v of values) {
18800
18817
  v = v.trim();
18801
- if (v) select(transformItem$3(props, v));
18802
- });
18818
+ if (v) {
18819
+ select(transformItem$3(props, v));
18820
+ await vue.nextTick();
18821
+ }
18822
+ }
18803
18823
  _search.value = '';
18804
18824
  }
18805
18825
  }
@@ -22654,6 +22674,9 @@
22654
22674
  let {
22655
22675
  emit
22656
22676
  } = _ref;
22677
+ const {
22678
+ t
22679
+ } = useLocale();
22657
22680
  const disableMonth = vue.computed(() => {
22658
22681
  return Array.isArray(props.disabled) ? props.disabled.includes('text') : !!props.disabled;
22659
22682
  });
@@ -22700,6 +22723,7 @@
22700
22723
  "density": "comfortable",
22701
22724
  "icon": props.modeIcon,
22702
22725
  "variant": "text",
22726
+ "aria-label": t('$vuetify.datePicker.ariaLabel.selectYear'),
22703
22727
  "onClick": onClickYear
22704
22728
  }, null), vue.createVNode(VSpacer, null, null), vue.createElementVNode("div", {
22705
22729
  "class": "v-date-picker-controls__month"
@@ -22709,6 +22733,7 @@
22709
22733
  "density": "comfortable",
22710
22734
  "icon": props.prevIcon,
22711
22735
  "variant": "text",
22736
+ "aria-label": t('$vuetify.datePicker.ariaLabel.previousMonth'),
22712
22737
  "onClick": onClickPrev
22713
22738
  }, null), vue.createVNode(VBtn, {
22714
22739
  "data-testid": "next-month",
@@ -22716,6 +22741,7 @@
22716
22741
  "icon": props.nextIcon,
22717
22742
  "density": "comfortable",
22718
22743
  "variant": "text",
22744
+ "aria-label": t('$vuetify.datePicker.ariaLabel.nextMonth'),
22719
22745
  "onClick": onClickNext
22720
22746
  }, null)])]);
22721
22747
  });
@@ -22980,6 +23006,9 @@
22980
23006
  slots
22981
23007
  } = _ref;
22982
23008
  const daysRef = vue.ref();
23009
+ const {
23010
+ t
23011
+ } = useLocale();
22983
23012
  const {
22984
23013
  daysInMonth,
22985
23014
  model,
@@ -23036,6 +23065,11 @@
23036
23065
  model.value = [rangeStart.value];
23037
23066
  }
23038
23067
  }
23068
+ function getDateAriaLabel(item) {
23069
+ const fullDate = adapter.format(item.date, 'fullDateWithWeekday');
23070
+ const localeKey = item.isToday ? 'currentDate' : 'selectDate';
23071
+ return t(`$vuetify.datePicker.ariaLabel.${localeKey}`, fullDate);
23072
+ }
23039
23073
  function onMultipleClick(value) {
23040
23074
  const index = model.value.findIndex(selection => adapter.isSameDay(selection, value));
23041
23075
  if (index === -1) {
@@ -23087,6 +23121,8 @@
23087
23121
  ripple: false,
23088
23122
  text: item.localized,
23089
23123
  variant: item.isSelected ? 'flat' : item.isToday ? 'outlined' : 'text',
23124
+ 'aria-label': getDateAriaLabel(item),
23125
+ 'aria-current': item.isToday ? 'date' : undefined,
23090
23126
  onClick: () => onClick(item.date)
23091
23127
  },
23092
23128
  item,
@@ -23141,11 +23177,13 @@
23141
23177
  }
23142
23178
  return createRange(12).map(i => {
23143
23179
  const text = adapter.format(date, 'monthShort');
23180
+ const label = adapter.format(date, 'month');
23144
23181
  const isDisabled = !!(!isMonthAllowed(i) || props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
23145
23182
  date = adapter.getNextMonth(date);
23146
23183
  return {
23147
23184
  isDisabled,
23148
23185
  text,
23186
+ label,
23149
23187
  value: i
23150
23188
  };
23151
23189
  });
@@ -23172,6 +23210,7 @@
23172
23210
  }, [months.value.map((month, i) => {
23173
23211
  const btnProps = {
23174
23212
  active: model.value === i,
23213
+ ariaLabel: month.label,
23175
23214
  color: model.value === i ? props.color : undefined,
23176
23215
  disabled: month.isDisabled,
23177
23216
  rounded: true,
@@ -34106,7 +34145,8 @@
34106
34145
  t
34107
34146
  } = useLocale();
34108
34147
  const {
34109
- themeClasses
34148
+ themeClasses,
34149
+ current: currentTheme
34110
34150
  } = provideTheme(props);
34111
34151
  const {
34112
34152
  densityClasses
@@ -34121,6 +34161,13 @@
34121
34161
  const fallbackBackground = props.detached ? 'surface' : undefined;
34122
34162
  return props.backgroundColor ?? fallbackBackground;
34123
34163
  });
34164
+ const trackColor = vue.toRef(() => {
34165
+ if (props.trackColor) {
34166
+ return props.trackColor;
34167
+ }
34168
+ const fallback = currentTheme.value.dark || !props.pills ? undefined : 'surface';
34169
+ return (props.pills ? props.backgroundColor : props.color) ?? fallback;
34170
+ });
34124
34171
  const playing = useProxiedModel(props, 'playing');
34125
34172
  const progress = useProxiedModel(props, 'progress');
34126
34173
  const volume = useProxiedModel(props, 'volume', 0, v => Number(v ?? 0));
@@ -34181,7 +34228,8 @@
34181
34228
  };
34182
34229
  const regularBtnSize = innerDefaults.VIconBtn.size;
34183
34230
  const playBtnSize = props.pills ? regularBtnSize + 8 : regularBtnSize;
34184
- const pillClasses = ['v-video-control__pill', props.pills ? elevationClasses.value : []];
34231
+ const pillClasses = ['v-video-control__pill', props.pills ? elevationClasses.value : [], props.pills ? backgroundColorClasses.value : []];
34232
+ const pillStyles = props.pills ? backgroundColorStyles.value : [];
34185
34233
  const slotProps = {
34186
34234
  play,
34187
34235
  pause,
@@ -34204,30 +34252,34 @@
34204
34252
  'v-video-controls--floating': props.floating
34205
34253
  }, {
34206
34254
  'v-video-controls--split-time': props.splitTime
34207
- }, backgroundColorClasses.value, props.detached && !props.pills ? elevationClasses.value : [], densityClasses.value, themeClasses.value]),
34208
- "style": vue.normalizeStyle([backgroundColorStyles.value, {
34255
+ }, !props.pills ? backgroundColorClasses.value : [], props.detached && !props.pills ? elevationClasses.value : [], densityClasses.value, themeClasses.value]),
34256
+ "style": vue.normalizeStyle([!props.pills ? backgroundColorStyles.value : [], {
34209
34257
  '--v-video-controls-pill-height': `${regularBtnSize}px`
34210
34258
  }])
34211
34259
  }, [vue.createVNode(VDefaultsProvider, {
34212
34260
  "defaults": innerDefaults
34213
34261
  }, {
34214
34262
  default: () => [slots.default?.(slotProps) ?? vue.createElementVNode(vue.Fragment, null, [props.variant !== 'mini' && vue.createElementVNode(vue.Fragment, null, [!props.hidePlay && vue.createElementVNode("div", {
34215
- "class": vue.normalizeClass([pillClasses, 'v-video__action-play'])
34263
+ "class": vue.normalizeClass([pillClasses, 'v-video__action-play']),
34264
+ "style": vue.normalizeStyle(pillStyles)
34216
34265
  }, [vue.withDirectives(vue.createVNode(VIconBtn, {
34217
34266
  "icon": playing.value ? '$pause' : '$play',
34218
34267
  "size": playBtnSize,
34219
34268
  "aria-label": labels.value.playAction,
34220
34269
  "onClick": () => playing.value = !playing.value
34221
34270
  }, null), [[Tooltip, labels.value.playAction, 'top']])]), slots.prepend && vue.createElementVNode("div", {
34222
- "class": vue.normalizeClass(pillClasses)
34271
+ "class": vue.normalizeClass(pillClasses),
34272
+ "style": vue.normalizeStyle(pillStyles)
34223
34273
  }, [slots.prepend(slotProps)]), props.splitTime ? vue.createElementVNode("span", {
34224
- "class": vue.normalizeClass([pillClasses, 'v-video__time'])
34274
+ "class": vue.normalizeClass([pillClasses, 'v-video__time']),
34275
+ "style": vue.normalizeStyle(pillStyles)
34225
34276
  }, [currentTime.value.elapsed]) : props.variant !== 'default' ? vue.createElementVNode("span", {
34226
- "class": vue.normalizeClass([pillClasses, 'v-video__time'])
34277
+ "class": vue.normalizeClass([pillClasses, 'v-video__time']),
34278
+ "style": vue.normalizeStyle(pillStyles)
34227
34279
  }, [currentTime.value.elapsed, vue.createTextVNode(" / "), currentTime.value.total]) : '', vue.createVNode(VSlider, {
34228
34280
  "modelValue": props.progress,
34229
34281
  "noKeyboard": true,
34230
- "color": props.trackColor ?? props.color,
34282
+ "color": trackColor.value ?? 'surface-variant',
34231
34283
  "trackColor": props.variant === 'tube' ? 'white' : undefined,
34232
34284
  "class": "v-video__track",
34233
34285
  "thumbLabel": "always",
@@ -34236,18 +34288,22 @@
34236
34288
  }, {
34237
34289
  'thumb-label': () => currentTime.value.elapsed
34238
34290
  }), props.variant === 'tube' && vue.createVNode(VSpacer, null, null), props.splitTime ? vue.createElementVNode("span", {
34239
- "class": vue.normalizeClass([pillClasses, 'v-video__time'])
34291
+ "class": vue.normalizeClass([pillClasses, 'v-video__time']),
34292
+ "style": vue.normalizeStyle(pillStyles)
34240
34293
  }, [currentTime.value.remaining]) : '']), props.variant === 'mini' && vue.createElementVNode(vue.Fragment, null, [vue.createVNode(VSpacer, null, null), slots.prepend && vue.createElementVNode("div", {
34241
- "class": vue.normalizeClass(pillClasses)
34294
+ "class": vue.normalizeClass(pillClasses),
34295
+ "style": vue.normalizeStyle(pillStyles)
34242
34296
  }, [slots.prepend(slotProps)]), !props.hidePlay && vue.createElementVNode("div", {
34243
- "class": vue.normalizeClass([pillClasses, 'v-video__action-play'])
34297
+ "class": vue.normalizeClass([pillClasses, 'v-video__action-play']),
34298
+ "style": vue.normalizeStyle(pillStyles)
34244
34299
  }, [vue.withDirectives(vue.createVNode(VIconBtn, {
34245
34300
  "icon": playing.value ? '$pause' : '$play',
34246
34301
  "size": playBtnSize,
34247
34302
  "aria-label": labels.value.playAction,
34248
34303
  "onClick": () => playing.value = !playing.value
34249
34304
  }, null), [[Tooltip, labels.value.playAction, 'top']])])]), (!props.hideVolume || !props.hideFullscreen || slots.append) && vue.createElementVNode("div", {
34250
- "class": vue.normalizeClass(pillClasses)
34305
+ "class": vue.normalizeClass(pillClasses),
34306
+ "style": vue.normalizeStyle(pillStyles)
34251
34307
  }, [!props.hideVolume && vue.createVNode(VVideoVolume, vue.mergeProps({
34252
34308
  "key": "volume-control",
34253
34309
  "sliderProps": {
@@ -34640,9 +34696,9 @@
34640
34696
  }, {
34641
34697
  default: () => [vue.createElementVNode("div", {
34642
34698
  "class": vue.normalizeClass(['v-video__overlay-fill', ...roundedContainerClasses.value])
34643
- }, [overlayPlayIcon])]
34699
+ }, [props.variant === 'player' && overlayPlayIcon])]
34644
34700
  })]
34645
- }), vue.createVNode(VOverlay, vue.mergeProps({
34701
+ }), props.variant === 'player' && vue.createVNode(VOverlay, vue.mergeProps({
34646
34702
  "key": "loading-overlay",
34647
34703
  "modelValue": state.value === 'loading' || waiting.value,
34648
34704
  "opacity": ".1"
@@ -35104,7 +35160,7 @@
35104
35160
  };
35105
35161
  });
35106
35162
  }
35107
- const version$1 = "3.9.2-master.2025-07-28";
35163
+ const version$1 = "3.9.3-master.2025-07-30";
35108
35164
  createVuetify$1.version = version$1;
35109
35165
 
35110
35166
  // Vue's inject() can only be used in setup
@@ -35402,7 +35458,7 @@
35402
35458
 
35403
35459
  /* eslint-disable local-rules/sort-imports */
35404
35460
 
35405
- const version = "3.9.2-master.2025-07-28";
35461
+ const version = "3.9.3-master.2025-07-30";
35406
35462
 
35407
35463
  /* eslint-disable local-rules/sort-imports */
35408
35464