@vuetify/nightly 3.8.0-master.2025-04-04 → 3.8.1-dev.2025-04-07

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.
@@ -96780,45 +96780,40 @@ declare module 'vue' {
96780
96780
  $children?: VNodeChild
96781
96781
  }
96782
96782
  export interface GlobalComponents {
96783
- VAutocomplete: VAutocomplete
96783
+ VApp: VApp
96784
96784
  VAppBar: VAppBar
96785
96785
  VAppBarNavIcon: VAppBarNavIcon
96786
96786
  VAppBarTitle: VAppBarTitle
96787
96787
  VAvatar: VAvatar
96788
- VApp: VApp
96788
+ VAlert: VAlert
96789
+ VAlertTitle: VAlertTitle
96790
+ VAutocomplete: VAutocomplete
96789
96791
  VBadge: VBadge
96790
96792
  VBanner: VBanner
96791
96793
  VBannerActions: VBannerActions
96792
96794
  VBannerText: VBannerText
96793
- VAlert: VAlert
96794
- VAlertTitle: VAlertTitle
96795
- VBtn: VBtn
96796
96795
  VBreadcrumbs: VBreadcrumbs
96797
96796
  VBreadcrumbsItem: VBreadcrumbsItem
96798
96797
  VBreadcrumbsDivider: VBreadcrumbsDivider
96798
+ VBottomSheet: VBottomSheet
96799
+ VBottomNavigation: VBottomNavigation
96800
+ VBtnGroup: VBtnGroup
96801
+ VBtn: VBtn
96802
+ VCheckbox: VCheckbox
96803
+ VCheckboxBtn: VCheckboxBtn
96799
96804
  VCard: VCard
96800
96805
  VCardActions: VCardActions
96801
96806
  VCardItem: VCardItem
96802
96807
  VCardSubtitle: VCardSubtitle
96803
96808
  VCardText: VCardText
96804
96809
  VCardTitle: VCardTitle
96805
- VCheckbox: VCheckbox
96806
- VCheckboxBtn: VCheckboxBtn
96807
- VBottomNavigation: VBottomNavigation
96808
96810
  VBtnToggle: VBtnToggle
96811
+ VChipGroup: VChipGroup
96809
96812
  VCarousel: VCarousel
96810
96813
  VCarouselItem: VCarouselItem
96811
- VBottomSheet: VBottomSheet
96812
- VChip: VChip
96813
- VBtnGroup: VBtnGroup
96814
- VChipGroup: VChipGroup
96815
96814
  VColorPicker: VColorPicker
96816
- VDatePicker: VDatePicker
96817
- VDatePickerControls: VDatePickerControls
96818
- VDatePickerHeader: VDatePickerHeader
96819
- VDatePickerMonth: VDatePickerMonth
96820
- VDatePickerMonths: VDatePickerMonths
96821
- VDatePickerYears: VDatePickerYears
96815
+ VCode: VCode
96816
+ VCombobox: VCombobox
96822
96817
  VDataTable: VDataTable
96823
96818
  VDataTableHeaders: VDataTableHeaders
96824
96819
  VDataTableFooter: VDataTableFooter
@@ -96826,31 +96821,38 @@ declare module 'vue' {
96826
96821
  VDataTableRow: VDataTableRow
96827
96822
  VDataTableVirtual: VDataTableVirtual
96828
96823
  VDataTableServer: VDataTableServer
96829
- VCode: VCode
96824
+ VDatePicker: VDatePicker
96825
+ VDatePickerControls: VDatePickerControls
96826
+ VDatePickerHeader: VDatePickerHeader
96827
+ VDatePickerMonth: VDatePickerMonth
96828
+ VDatePickerMonths: VDatePickerMonths
96829
+ VDatePickerYears: VDatePickerYears
96830
96830
  VCounter: VCounter
96831
- VDialog: VDialog
96832
- VCombobox: VCombobox
96833
- VDivider: VDivider
96834
- VFileInput: VFileInput
96835
- VFab: VFab
96831
+ VChip: VChip
96836
96832
  VEmptyState: VEmptyState
96833
+ VDivider: VDivider
96837
96834
  VExpansionPanels: VExpansionPanels
96838
96835
  VExpansionPanel: VExpansionPanel
96839
96836
  VExpansionPanelText: VExpansionPanelText
96840
96837
  VExpansionPanelTitle: VExpansionPanelTitle
96838
+ VDialog: VDialog
96839
+ VFab: VFab
96841
96840
  VField: VField
96842
96841
  VFieldLabel: VFieldLabel
96843
96842
  VFooter: VFooter
96843
+ VFileInput: VFileInput
96844
96844
  VIcon: VIcon
96845
96845
  VComponentIcon: VComponentIcon
96846
96846
  VSvgIcon: VSvgIcon
96847
96847
  VLigatureIcon: VLigatureIcon
96848
96848
  VClassIcon: VClassIcon
96849
- VImg: VImg
96849
+ VInput: VInput
96850
+ VLabel: VLabel
96851
+ VInfiniteScroll: VInfiniteScroll
96850
96852
  VItemGroup: VItemGroup
96851
96853
  VItem: VItem
96852
- VInput: VInput
96853
96854
  VKbd: VKbd
96855
+ VImg: VImg
96854
96856
  VList: VList
96855
96857
  VListGroup: VListGroup
96856
96858
  VListImg: VListImg
@@ -96860,35 +96862,33 @@ declare module 'vue' {
96860
96862
  VListItemSubtitle: VListItemSubtitle
96861
96863
  VListItemTitle: VListItemTitle
96862
96864
  VListSubheader: VListSubheader
96863
- VInfiniteScroll: VInfiniteScroll
96864
- VLabel: VLabel
96865
- VMenu: VMenu
96866
- VNumberInput: VNumberInput
96867
96865
  VMain: VMain
96868
96866
  VNavigationDrawer: VNavigationDrawer
96869
- VPagination: VPagination
96867
+ VMenu: VMenu
96870
96868
  VOtpInput: VOtpInput
96871
96869
  VOverlay: VOverlay
96872
- VProgressCircular: VProgressCircular
96873
- VProgressLinear: VProgressLinear
96874
96870
  VMessages: VMessages
96871
+ VNumberInput: VNumberInput
96872
+ VPagination: VPagination
96873
+ VProgressLinear: VProgressLinear
96875
96874
  VRadioGroup: VRadioGroup
96875
+ VProgressCircular: VProgressCircular
96876
+ VSelect: VSelect
96876
96877
  VRating: VRating
96877
96878
  VSelectionControl: VSelectionControl
96878
96879
  VSelectionControlGroup: VSelectionControlGroup
96879
- VSkeletonLoader: VSkeletonLoader
96880
- VSelect: VSelect
96881
96880
  VSlideGroup: VSlideGroup
96882
96881
  VSlideGroupItem: VSlideGroupItem
96882
+ VSnackbar: VSnackbar
96883
96883
  VSheet: VSheet
96884
+ VSkeletonLoader: VSkeletonLoader
96884
96885
  VSlider: VSlider
96885
- VSnackbar: VSnackbar
96886
96886
  VSwitch: VSwitch
96887
- VSystemBar: VSystemBar
96888
96887
  VTab: VTab
96889
96888
  VTabs: VTabs
96890
96889
  VTabsWindow: VTabsWindow
96891
96890
  VTabsWindowItem: VTabsWindowItem
96891
+ VSystemBar: VSystemBar
96892
96892
  VStepper: VStepper
96893
96893
  VStepperActions: VStepperActions
96894
96894
  VStepperHeader: VStepperHeader
@@ -96896,34 +96896,34 @@ declare module 'vue' {
96896
96896
  VStepperWindow: VStepperWindow
96897
96897
  VStepperWindowItem: VStepperWindowItem
96898
96898
  VTextarea: VTextarea
96899
+ VTable: VTable
96899
96900
  VToolbar: VToolbar
96900
96901
  VToolbarTitle: VToolbarTitle
96901
96902
  VToolbarItems: VToolbarItems
96902
- VTable: VTable
96903
+ VTextField: VTextField
96903
96904
  VTimeline: VTimeline
96904
96905
  VTimelineItem: VTimelineItem
96905
- VTooltip: VTooltip
96906
96906
  VWindow: VWindow
96907
96907
  VWindowItem: VWindowItem
96908
- VTextField: VTextField
96908
+ VTooltip: VTooltip
96909
96909
  VConfirmEdit: VConfirmEdit
96910
96910
  VDataIterator: VDataIterator
96911
- VHover: VHover
96912
96911
  VDefaultsProvider: VDefaultsProvider
96912
+ VForm: VForm
96913
+ VHover: VHover
96913
96914
  VContainer: VContainer
96914
96915
  VCol: VCol
96915
96916
  VRow: VRow
96916
96917
  VSpacer: VSpacer
96917
- VForm: VForm
96918
- VLazy: VLazy
96919
96918
  VLayout: VLayout
96920
96919
  VLayoutItem: VLayoutItem
96920
+ VLazy: VLazy
96921
96921
  VLocaleProvider: VLocaleProvider
96922
96922
  VNoSsr: VNoSsr
96923
96923
  VParallax: VParallax
96924
96924
  VRadio: VRadio
96925
- VResponsive: VResponsive
96926
96925
  VRangeSlider: VRangeSlider
96926
+ VResponsive: VResponsive
96927
96927
  VSnackbarQueue: VSnackbarQueue
96928
96928
  VSparkline: VSparkline
96929
96929
  VSpeedDial: VSpeedDial
@@ -96948,6 +96948,9 @@ declare module 'vue' {
96948
96948
  VDialogTransition: VDialogTransition
96949
96949
  VFileUpload: VFileUpload
96950
96950
  VFileUploadItem: VFileUploadItem
96951
+ VStepperVertical: VStepperVertical
96952
+ VStepperVerticalItem: VStepperVerticalItem
96953
+ VStepperVerticalActions: VStepperVerticalActions
96951
96954
  VCalendar: VCalendar
96952
96955
  VCalendarDay: VCalendarDay
96953
96956
  VCalendarHeader: VCalendarHeader
@@ -96955,18 +96958,15 @@ declare module 'vue' {
96955
96958
  VCalendarIntervalEvent: VCalendarIntervalEvent
96956
96959
  VCalendarMonthDay: VCalendarMonthDay
96957
96960
  VIconBtn: VIconBtn
96958
- VTreeview: VTreeview
96959
- VTreeviewItem: VTreeviewItem
96960
- VTreeviewGroup: VTreeviewGroup
96961
+ VPicker: VPicker
96962
+ VPickerTitle: VPickerTitle
96961
96963
  VTimePicker: VTimePicker
96962
96964
  VTimePickerClock: VTimePickerClock
96963
96965
  VTimePickerControls: VTimePickerControls
96964
- VPicker: VPicker
96965
- VPickerTitle: VPickerTitle
96966
- VStepperVertical: VStepperVertical
96967
- VStepperVerticalItem: VStepperVerticalItem
96968
- VStepperVerticalActions: VStepperVerticalActions
96969
- VPullToRefresh: VPullToRefresh
96966
+ VTreeview: VTreeview
96967
+ VTreeviewItem: VTreeviewItem
96968
+ VTreeviewGroup: VTreeviewGroup
96970
96969
  VDateInput: VDateInput
96970
+ VPullToRefresh: VPullToRefresh
96971
96971
  }
96972
96972
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Vuetify v3.8.0-master.2025-04-04
2
+ * Vuetify v3.8.1-dev.2025-04-07
3
3
  * Forged by John Leider
4
4
  * Released under the MIT License.
5
5
  */
@@ -2382,93 +2382,144 @@ function parseThemeOptions() {
2382
2382
  themes
2383
2383
  });
2384
2384
  }
2385
+ function createCssClass(lines, selector, content, scope) {
2386
+ lines.push(`${getScopedSelector(selector, scope)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2387
+ }
2388
+ function genCssVariables(theme) {
2389
+ const lightOverlay = theme.dark ? 2 : 1;
2390
+ const darkOverlay = theme.dark ? 1 : 2;
2391
+ const variables = [];
2392
+ for (const [key, value] of Object.entries(theme.colors)) {
2393
+ const rgb = parseColor(value);
2394
+ variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2395
+ if (!key.startsWith('on-')) {
2396
+ variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2397
+ }
2398
+ }
2399
+ for (const [key, value] of Object.entries(theme.variables)) {
2400
+ const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2401
+ const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2402
+ variables.push(`--v-${key}: ${rgb ?? value}`);
2403
+ }
2404
+ return variables;
2405
+ }
2406
+ function genVariation(name, color, variations) {
2407
+ const object = {};
2408
+ if (variations) {
2409
+ for (const variation of ['lighten', 'darken']) {
2410
+ const fn = variation === 'lighten' ? lighten : darken;
2411
+ for (const amount of createRange(variations[variation], 1)) {
2412
+ object[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
2413
+ }
2414
+ }
2415
+ }
2416
+ return object;
2417
+ }
2418
+ function genVariations(colors, variations) {
2419
+ if (!variations) return {};
2420
+ let variationColors = {};
2421
+ for (const name of variations.colors) {
2422
+ const color = colors[name];
2423
+ if (!color) continue;
2424
+ variationColors = {
2425
+ ...variationColors,
2426
+ ...genVariation(name, color, variations)
2427
+ };
2428
+ }
2429
+ return variationColors;
2430
+ }
2431
+ function genOnColors(colors) {
2432
+ const onColors = {};
2433
+ for (const color of Object.keys(colors)) {
2434
+ if (color.startsWith('on-') || colors[`on-${color}`]) continue;
2435
+ const onColor = `on-${color}`;
2436
+ const colorVal = parseColor(colors[color]);
2437
+ onColors[onColor] = getForeground(colorVal);
2438
+ }
2439
+ return onColors;
2440
+ }
2441
+ function getScopedSelector(selector, scope) {
2442
+ if (!scope) return selector;
2443
+ const scopeSelector = `:where(${scope})`;
2444
+ return selector === ':root' ? scopeSelector : `${scopeSelector} ${selector}`;
2445
+ }
2446
+ function upsertStyles(styleEl, styles) {
2447
+ if (!styleEl) return;
2448
+ styleEl.innerHTML = styles;
2449
+ }
2450
+ function getOrCreateStyleElement(id, cspNonce) {
2451
+ if (!IN_BROWSER) return null;
2452
+ let style = document.getElementById(id);
2453
+ if (!style) {
2454
+ style = document.createElement('style');
2455
+ style.id = id;
2456
+ style.type = 'text/css';
2457
+ if (cspNonce) style.setAttribute('nonce', cspNonce);
2458
+ document.head.appendChild(style);
2459
+ }
2460
+ return style;
2461
+ }
2385
2462
 
2386
2463
  // Composables
2387
2464
  function createTheme(options) {
2388
2465
  const parsedOptions = parseThemeOptions(options);
2389
- const name = ref(parsedOptions.defaultTheme);
2466
+ const name = shallowRef(parsedOptions.defaultTheme);
2390
2467
  const themes = ref(parsedOptions.themes);
2391
2468
  const computedThemes = computed(() => {
2392
2469
  const acc = {};
2393
2470
  for (const [name, original] of Object.entries(themes.value)) {
2394
- const theme = acc[name] = {
2471
+ const colors = {
2472
+ ...original.colors,
2473
+ ...genVariations(original.colors, parsedOptions.variations)
2474
+ };
2475
+ acc[name] = {
2395
2476
  ...original,
2396
2477
  colors: {
2397
- ...original.colors
2478
+ ...colors,
2479
+ ...genOnColors(colors)
2398
2480
  }
2399
2481
  };
2400
- if (parsedOptions.variations) {
2401
- for (const name of parsedOptions.variations.colors) {
2402
- const color = theme.colors[name];
2403
- if (!color) continue;
2404
- for (const variation of ['lighten', 'darken']) {
2405
- const fn = variation === 'lighten' ? lighten : darken;
2406
- for (const amount of createRange(parsedOptions.variations[variation], 1)) {
2407
- theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount));
2408
- }
2409
- }
2410
- }
2411
- }
2412
- for (const color of Object.keys(theme.colors)) {
2413
- if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
2414
- const onColor = `on-${color}`;
2415
- const colorVal = parseColor(theme.colors[color]);
2416
- theme.colors[onColor] = getForeground(colorVal);
2417
- }
2418
2482
  }
2419
2483
  return acc;
2420
2484
  });
2421
2485
  const current = computed(() => computedThemes.value[name.value]);
2422
- function createCssClass(lines, selector, content) {
2423
- lines.push(`${getScopedSelector(selector)} {\n`, ...content.map(line => ` ${line};\n`), '}\n');
2424
- }
2425
- function getScopedSelector(selector) {
2426
- if (!parsedOptions.scope) {
2427
- return selector;
2428
- }
2429
- const scopeSelector = `:where(${parsedOptions.scope})`;
2430
- if (selector === ':root') {
2431
- return scopeSelector;
2432
- }
2433
- return `${scopeSelector} ${selector}`;
2434
- }
2435
2486
  const styles = computed(() => {
2436
2487
  const lines = [];
2437
2488
  if (current.value?.dark) {
2438
- createCssClass(lines, ':root', ['color-scheme: dark']);
2489
+ createCssClass(lines, ':root', ['color-scheme: dark'], parsedOptions.scope);
2439
2490
  }
2440
- createCssClass(lines, ':root', genCssVariables(current.value));
2491
+ createCssClass(lines, ':root', genCssVariables(current.value), parsedOptions.scope);
2441
2492
  for (const [themeName, theme] of Object.entries(computedThemes.value)) {
2442
- createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)]);
2493
+ createCssClass(lines, `.v-theme--${themeName}`, [`color-scheme: ${theme.dark ? 'dark' : 'normal'}`, ...genCssVariables(theme)], parsedOptions.scope);
2443
2494
  }
2444
2495
  const bgLines = [];
2445
2496
  const fgLines = [];
2446
2497
  const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)));
2447
2498
  for (const key of colors) {
2448
- if (/^on-[a-z]/.test(key)) {
2449
- createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
2499
+ if (key.startsWith('on-')) {
2500
+ createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2450
2501
  } else {
2451
- 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`]);
2452
- createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`]);
2453
- createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`]);
2502
+ 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);
2503
+ createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`], parsedOptions.scope);
2504
+ createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`], parsedOptions.scope);
2454
2505
  }
2455
2506
  }
2456
2507
  lines.push(...bgLines, ...fgLines);
2457
2508
  return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
2458
2509
  });
2459
- function getHead() {
2460
- return {
2461
- style: [{
2462
- textContent: styles.value,
2463
- id: parsedOptions.stylesheetId,
2464
- nonce: parsedOptions.cspNonce || false
2465
- }]
2466
- };
2467
- }
2468
2510
  function install(app) {
2469
2511
  if (parsedOptions.isDisabled) return;
2470
2512
  const head = app._context.provides.usehead;
2471
2513
  if (head) {
2514
+ function getHead() {
2515
+ return {
2516
+ style: [{
2517
+ textContent: styles.value,
2518
+ id: parsedOptions.stylesheetId,
2519
+ nonce: parsedOptions.cspNonce || false
2520
+ }]
2521
+ };
2522
+ }
2472
2523
  if (head.push) {
2473
2524
  const entry = head.push(getHead);
2474
2525
  if (IN_BROWSER) {
@@ -2485,7 +2536,6 @@ function createTheme(options) {
2485
2536
  }
2486
2537
  }
2487
2538
  } else {
2488
- let styleEl = IN_BROWSER ? document.getElementById(parsedOptions.stylesheetId) : null;
2489
2539
  if (IN_BROWSER) {
2490
2540
  watch(styles, updateStyles, {
2491
2541
  immediate: true
@@ -2494,15 +2544,7 @@ function createTheme(options) {
2494
2544
  updateStyles();
2495
2545
  }
2496
2546
  function updateStyles() {
2497
- if (typeof document !== 'undefined' && !styleEl) {
2498
- const el = document.createElement('style');
2499
- el.type = 'text/css';
2500
- el.id = parsedOptions.stylesheetId;
2501
- if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce);
2502
- styleEl = el;
2503
- document.head.appendChild(styleEl);
2504
- }
2505
- if (styleEl) styleEl.innerHTML = styles.value;
2547
+ upsertStyles(getOrCreateStyleElement(parsedOptions.stylesheetId, parsedOptions.cspNonce), styles.value);
2506
2548
  }
2507
2549
  }
2508
2550
  }
@@ -2526,9 +2568,7 @@ function provideTheme(props) {
2526
2568
  getCurrentInstance('provideTheme');
2527
2569
  const theme = inject$1(ThemeSymbol, null);
2528
2570
  if (!theme) throw new Error('Could not find Vuetify theme injection');
2529
- const name = computed(() => {
2530
- return props.theme ?? theme.name.value;
2531
- });
2571
+ const name = computed(() => props.theme ?? theme.name.value);
2532
2572
  const current = computed(() => theme.themes.value[name.value]);
2533
2573
  const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`);
2534
2574
  const newTheme = {
@@ -2546,24 +2586,6 @@ function useTheme() {
2546
2586
  if (!theme) throw new Error('Could not find Vuetify theme injection');
2547
2587
  return theme;
2548
2588
  }
2549
- function genCssVariables(theme) {
2550
- const lightOverlay = theme.dark ? 2 : 1;
2551
- const darkOverlay = theme.dark ? 1 : 2;
2552
- const variables = [];
2553
- for (const [key, value] of Object.entries(theme.colors)) {
2554
- const rgb = parseColor(value);
2555
- variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`);
2556
- if (!key.startsWith('on-')) {
2557
- variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`);
2558
- }
2559
- }
2560
- for (const [key, value] of Object.entries(theme.variables)) {
2561
- const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined;
2562
- const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined;
2563
- variables.push(`--v-${key}: ${rgb ?? value}`);
2564
- }
2565
- return variables;
2566
- }
2567
2589
 
2568
2590
  const makeVAppProps = propsFactory({
2569
2591
  ...makeComponentProps(),
@@ -12281,7 +12303,12 @@ function useVirtual(props, items) {
12281
12303
  }
12282
12304
  function calculateOffset(index) {
12283
12305
  index = clamp(index, 0, items.value.length - 1);
12284
- return offsets[index] || 0;
12306
+ const whole = Math.floor(index);
12307
+ const fraction = index % 1;
12308
+ const next = whole + 1;
12309
+ const wholeOffset = offsets[whole] || 0;
12310
+ const nextOffset = offsets[next] || wholeOffset;
12311
+ return wholeOffset + (nextOffset - wholeOffset) * fraction;
12285
12312
  }
12286
12313
  function calculateIndex(scrollTop) {
12287
12314
  return binaryClosest(offsets, scrollTop);
@@ -31538,7 +31565,7 @@ function createVuetify$1() {
31538
31565
  };
31539
31566
  });
31540
31567
  }
31541
- const version$1 = "3.8.0-master.2025-04-04";
31568
+ const version$1 = "3.8.1-dev.2025-04-07";
31542
31569
  createVuetify$1.version = version$1;
31543
31570
 
31544
31571
  // Vue's inject() can only be used in setup
@@ -31823,7 +31850,7 @@ var index = /*#__PURE__*/Object.freeze({
31823
31850
 
31824
31851
  /* eslint-disable local-rules/sort-imports */
31825
31852
 
31826
- const version = "3.8.0-master.2025-04-04";
31853
+ const version = "3.8.1-dev.2025-04-07";
31827
31854
 
31828
31855
  /* eslint-disable local-rules/sort-imports */
31829
31856