vuetify 3.4.9 → 3.4.11

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 (178) hide show
  1. package/dist/json/attributes.json +17 -9
  2. package/dist/json/importMap-labs.json +8 -8
  3. package/dist/json/importMap.json +106 -106
  4. package/dist/json/tags.json +2 -0
  5. package/dist/json/web-types.json +2541 -2499
  6. package/dist/vuetify-labs.css +2049 -2017
  7. package/dist/vuetify-labs.d.ts +1325 -142
  8. package/dist/vuetify-labs.esm.js +354 -298
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +354 -298
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +909 -900
  13. package/dist/vuetify.d.ts +1303 -120
  14. package/dist/vuetify.esm.js +351 -287
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +351 -287
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +765 -767
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/VAlert.css +2 -2
  22. package/lib/components/VAppBar/VAppBar.css +1 -1
  23. package/lib/components/VAppBar/VAppBar.mjs +0 -1
  24. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  25. package/lib/components/VAutocomplete/VAutocomplete.css +2 -2
  26. package/lib/components/VAutocomplete/VAutocomplete.mjs +15 -2
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  28. package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
  29. package/lib/components/VAutocomplete/_variables.scss +1 -0
  30. package/lib/components/VAvatar/VAvatar.css +2 -2
  31. package/lib/components/VBanner/VBanner.css +1 -1
  32. package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -1
  33. package/lib/components/VBottomSheet/VBottomSheet.css +1 -1
  34. package/lib/components/VBtn/VBtn.css +4 -4
  35. package/lib/components/VBtn/VBtn.mjs +3 -1
  36. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  37. package/lib/components/VBtn/index.d.mts +21 -5
  38. package/lib/components/VBtnGroup/VBtnGroup.css +1 -1
  39. package/lib/components/VCard/VCard.css +5 -5
  40. package/lib/components/VCarousel/index.d.mts +5 -5
  41. package/lib/components/VChip/VChip.css +2 -2
  42. package/lib/components/VChip/VChip.mjs +2 -1
  43. package/lib/components/VChip/VChip.mjs.map +1 -1
  44. package/lib/components/VColorPicker/VColorPicker.css +3 -3
  45. package/lib/components/VCombobox/VCombobox.css +2 -2
  46. package/lib/components/VCombobox/VCombobox.mjs +15 -5
  47. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  48. package/lib/components/VCombobox/VCombobox.sass +2 -2
  49. package/lib/components/VCombobox/_variables.scss +2 -0
  50. package/lib/components/VDataIterator/VDataIterator.mjs +2 -1
  51. package/lib/components/VDataIterator/VDataIterator.mjs.map +1 -1
  52. package/lib/components/VDataIterator/index.d.mts +7 -1
  53. package/lib/components/VDataTable/VDataTable.css +1 -1
  54. package/lib/components/VDataTable/VDataTable.mjs +2 -1
  55. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  56. package/lib/components/VDataTable/VDataTable.sass +1 -1
  57. package/lib/components/VDataTable/VDataTableFooter.css +9 -4
  58. package/lib/components/VDataTable/VDataTableFooter.mjs +33 -30
  59. package/lib/components/VDataTable/VDataTableFooter.mjs.map +1 -1
  60. package/lib/components/VDataTable/VDataTableFooter.sass +9 -4
  61. package/lib/components/VDataTable/VDataTableHeaders.mjs +2 -1
  62. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  63. package/lib/components/VDataTable/_variables.scss +5 -0
  64. package/lib/components/VDataTable/composables/paginate.mjs +6 -2
  65. package/lib/components/VDataTable/composables/paginate.mjs.map +1 -1
  66. package/lib/components/VDataTable/index.d.mts +7 -1
  67. package/lib/components/VDatePicker/VDatePicker.mjs +1 -1
  68. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  69. package/lib/components/VDatePicker/index.d.mts +82 -0
  70. package/lib/components/VDialog/VDialog.css +1 -1
  71. package/lib/components/VDialog/index.d.mts +3 -3
  72. package/lib/components/VExpansionPanel/VExpansionPanel.css +1 -1
  73. package/lib/components/VField/VField.css +2 -2
  74. package/lib/components/VFileInput/index.d.mts +3 -3
  75. package/lib/components/VFooter/VFooter.css +1 -1
  76. package/lib/components/VForm/index.d.mts +21 -21
  77. package/lib/components/VImg/index.d.mts +6 -6
  78. package/lib/components/VKbd/VKbd.css +1 -1
  79. package/lib/components/VList/VList.css +1 -1
  80. package/lib/components/VList/VList.mjs +7 -2
  81. package/lib/components/VList/VList.mjs.map +1 -1
  82. package/lib/components/VList/VListItem.css +6 -2
  83. package/lib/components/VList/VListItem.sass +4 -0
  84. package/lib/components/VList/_variables.scss +2 -0
  85. package/lib/components/VMenu/VMenu.css +1 -1
  86. package/lib/components/VMenu/index.d.mts +6 -6
  87. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +2 -2
  88. package/lib/components/VNavigationDrawer/index.d.mts +3 -3
  89. package/lib/components/VOverflowBtn/VOverflowBtn.mjs +0 -1
  90. package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
  91. package/lib/components/VOverlay/VOverlay.mjs +2 -2
  92. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  93. package/lib/components/VOverlay/locationStrategies.mjs +1 -4
  94. package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
  95. package/lib/components/VPagination/VPagination.mjs +10 -10
  96. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  97. package/lib/components/VPagination/index.d.mts +2 -2
  98. package/lib/components/VSelect/VSelect.css +1 -1
  99. package/lib/components/VSelect/VSelect.mjs +15 -3
  100. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  101. package/lib/components/VSelectionControl/VSelectionControl.mjs +6 -3
  102. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  103. package/lib/components/VSelectionControl/index.d.mts +3 -3
  104. package/lib/components/VSheet/VSheet.css +1 -1
  105. package/lib/components/VSlideGroup/index.d.mts +3 -3
  106. package/lib/components/VSlider/VSliderThumb.mjs +4 -3
  107. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  108. package/lib/components/VSnackbar/VSnackbar.css +2 -2
  109. package/lib/components/VSnackbar/index.d.mts +3 -3
  110. package/lib/components/VStepper/VStepper.css +3 -3
  111. package/lib/components/VSwitch/VSwitch.css +2 -2
  112. package/lib/components/VSystemBar/VSystemBar.css +1 -1
  113. package/lib/components/VTabs/VTab.css +2 -2
  114. package/lib/components/VTabs/VTab.mjs +6 -6
  115. package/lib/components/VTabs/VTab.mjs.map +1 -1
  116. package/lib/components/VTabs/VTab.sass +2 -2
  117. package/lib/components/VTabs/index.d.mts +1102 -3
  118. package/lib/components/VTextField/index.d.mts +6 -6
  119. package/lib/components/VTextarea/index.d.mts +3 -3
  120. package/lib/components/VTimeline/VTimeline.css +1 -1
  121. package/lib/components/VToolbar/VToolbar.css +2 -2
  122. package/lib/components/VTooltip/index.d.mts +3 -3
  123. package/lib/components/VTreeview/VTreeview.mjs +0 -1
  124. package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
  125. package/lib/components/VTreeview/VTreeviewNode.mjs +0 -1
  126. package/lib/components/VTreeview/VTreeviewNode.mjs.map +1 -1
  127. package/lib/components/VValidation/index.d.mts +6 -6
  128. package/lib/components/VWindow/VWindow.mjs +2 -2
  129. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  130. package/lib/components/VWindow/VWindowItem.mjs +0 -1
  131. package/lib/components/VWindow/VWindowItem.mjs.map +1 -1
  132. package/lib/components/VWindow/index.d.mts +1 -1
  133. package/lib/components/index.d.mts +1268 -85
  134. package/lib/composables/calendar.mjs +10 -4
  135. package/lib/composables/calendar.mjs.map +1 -1
  136. package/lib/composables/date/adapters/vuetify.mjs +1 -2
  137. package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
  138. package/lib/composables/date/date.mjs +4 -8
  139. package/lib/composables/date/date.mjs.map +1 -1
  140. package/lib/composables/delay.mjs +19 -18
  141. package/lib/composables/delay.mjs.map +1 -1
  142. package/lib/composables/density.mjs +1 -0
  143. package/lib/composables/density.mjs.map +1 -1
  144. package/lib/composables/locale.mjs +46 -2
  145. package/lib/composables/locale.mjs.map +1 -1
  146. package/lib/entry-bundler.mjs +1 -1
  147. package/lib/entry-bundler.mjs.map +1 -1
  148. package/lib/framework.mjs +1 -1
  149. package/lib/framework.mjs.map +1 -1
  150. package/lib/index.d.mts +35 -35
  151. package/lib/labs/VCalendar/VCalendar.mjs +4 -8
  152. package/lib/labs/VCalendar/VCalendar.mjs.map +1 -1
  153. package/lib/labs/VCalendar/VCalendarDay.css +23 -0
  154. package/lib/labs/VCalendar/VCalendarDay.sass +24 -1
  155. package/lib/labs/VCalendar/index.d.mts +11 -11
  156. package/lib/labs/VPicker/VPicker.css +1 -1
  157. package/lib/labs/components.d.mts +11 -11
  158. package/lib/locale/cs.mjs +1 -1
  159. package/lib/locale/cs.mjs.map +1 -1
  160. package/lib/locale/index.d.mts +1 -45
  161. package/lib/locale/index.mjs +0 -43
  162. package/lib/locale/index.mjs.map +1 -1
  163. package/lib/locale/nl.mjs +2 -2
  164. package/lib/locale/nl.mjs.map +1 -1
  165. package/lib/locale/pt.mjs +17 -17
  166. package/lib/locale/pt.mjs.map +1 -1
  167. package/lib/locale/sk.mjs +22 -22
  168. package/lib/locale/sk.mjs.map +1 -1
  169. package/lib/styles/main.css +103 -103
  170. package/lib/styles/settings/_elevations.scss +1 -1
  171. package/lib/styles/settings/_utilities.scss +1 -0
  172. package/lib/util/helpers.mjs +9 -43
  173. package/lib/util/helpers.mjs.map +1 -1
  174. package/package.json +13 -12
  175. package/lib/components/VDatePicker/utils.mjs +0 -69
  176. package/lib/components/VDatePicker/utils.mjs.map +0 -1
  177. package/lib/util/dateTimeUtils.mjs +0 -115
  178. package/lib/util/dateTimeUtils.mjs.map +0 -1
@@ -4,8 +4,9 @@ import "./VTab.css";
4
4
 
5
5
  // Components
6
6
  import { makeVBtnProps, VBtn } from "../VBtn/VBtn.mjs"; // Composables
7
- import { useTextColor } from "../../composables/color.mjs"; // Utilities
8
- import { computed, ref, shallowRef } from 'vue';
7
+ import { useTextColor } from "../../composables/color.mjs";
8
+ import { forwardRefs } from "../../composables/forwardRefs.mjs"; // Utilities
9
+ import { computed, ref } from 'vue';
9
10
  import { VTabsSymbol } from "./shared.mjs";
10
11
  import { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from "../../util/index.mjs"; // Types
11
12
  export const makeVTabProps = propsFactory({
@@ -33,15 +34,14 @@ export const VTab = genericComponent()({
33
34
  textColorClasses: sliderColorClasses,
34
35
  textColorStyles: sliderColorStyles
35
36
  } = useTextColor(props, 'sliderColor');
36
- const isHorizontal = computed(() => props.direction === 'horizontal');
37
- const isSelected = shallowRef(false);
38
37
  const rootEl = ref();
39
38
  const sliderEl = ref();
39
+ const isHorizontal = computed(() => props.direction === 'horizontal');
40
+ const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false);
40
41
  function updateSlider(_ref2) {
41
42
  let {
42
43
  value
43
44
  } = _ref2;
44
- isSelected.value = value;
45
45
  if (value) {
46
46
  const prevEl = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider');
47
47
  const nextEl = sliderEl.value;
@@ -95,7 +95,7 @@ export const VTab = genericComponent()({
95
95
  }, null)])
96
96
  });
97
97
  });
98
- return {};
98
+ return forwardRefs({}, rootEl);
99
99
  }
100
100
  });
101
101
  //# sourceMappingURL=VTab.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"VTab.mjs","names":["makeVBtnProps","VBtn","useTextColor","computed","ref","shallowRef","VTabsSymbol","animate","genericComponent","omit","propsFactory","standardEasing","useRender","makeVTabProps","fixed","Boolean","sliderColor","String","hideSlider","direction","type","default","selectedClass","variant","VTab","name","props","setup","_ref","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","isHorizontal","isSelected","rootEl","sliderEl","updateSlider","_ref2","value","prevEl","$el","parentElement","querySelector","nextEl","color","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","filterProps","_createVNode","_mergeProps","class","style","undefined","_Fragment","text"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'VTab')\n\nexport const VTab = genericComponent<VBtnSlots>()({\n name: 'VTab',\n\n props: makeVTabProps(),\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = shallowRef(false)\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n function updateSlider ({ value }: { value: boolean }) {\n isSelected.value = value\n\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0\n\n const sigma = 1.5\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n 'none',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n ]}\n style={ props.style }\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n { ...btnProps }\n { ...attrs }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n onGroup:selected={ updateSlider }\n >\n {{\n ...slots,\n default: () => (\n <>\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n )}\n </>\n ),\n }}\n </VBtn>\n )\n })\n\n return {}\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VTab.mjs","names":["makeVBtnProps","VBtn","useTextColor","forwardRefs","computed","ref","VTabsSymbol","animate","genericComponent","omit","propsFactory","standardEasing","useRender","makeVTabProps","fixed","Boolean","sliderColor","String","hideSlider","direction","type","default","selectedClass","variant","VTab","name","props","setup","_ref","slots","attrs","textColorClasses","sliderColorClasses","textColorStyles","sliderColorStyles","rootEl","sliderEl","isHorizontal","isSelected","value","group","updateSlider","_ref2","prevEl","$el","parentElement","querySelector","nextEl","color","getComputedStyle","prevBox","getBoundingClientRect","nextBox","xy","XY","rightBottom","widthHeight","prevPos","nextPos","delta","origin","Math","sign","size","abs","scale","max","initialScale","sigma","backgroundColor","transform","transformOrigin","Array","fill","duration","easing","btnProps","filterProps","_createVNode","_mergeProps","class","style","undefined","_Fragment","text"],"sources":["../../../src/components/VTabs/VTab.tsx"],"sourcesContent":["// Styles\nimport './VTab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { VTabsSymbol } from './shared'\nimport { animate, genericComponent, omit, propsFactory, standardEasing, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VBtnSlots } from '@/components/VBtn/VBtn'\n\nexport const makeVTabProps = propsFactory({\n fixed: Boolean,\n\n sliderColor: String,\n hideSlider: Boolean,\n\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n ...omit(makeVBtnProps({\n selectedClass: 'v-tab--selected',\n variant: 'text' as const,\n }), [\n 'active',\n 'block',\n 'flat',\n 'location',\n 'position',\n 'symbol',\n ]),\n}, 'VTab')\n\nexport const VTab = genericComponent<VBtnSlots>()({\n name: 'VTab',\n\n props: makeVTabProps(),\n\n setup (props, { slots, attrs }) {\n const { textColorClasses: sliderColorClasses, textColorStyles: sliderColorStyles } = useTextColor(props, 'sliderColor')\n\n const rootEl = ref<VBtn>()\n const sliderEl = ref<HTMLElement>()\n\n const isHorizontal = computed(() => props.direction === 'horizontal')\n const isSelected = computed(() => rootEl.value?.group?.isSelected.value ?? false)\n\n function updateSlider ({ value }: { value: boolean }) {\n if (value) {\n const prevEl: HTMLElement | undefined = rootEl.value?.$el.parentElement?.querySelector('.v-tab--selected .v-tab__slider')\n const nextEl = sliderEl.value\n\n if (!prevEl || !nextEl) return\n\n const color = getComputedStyle(prevEl).color\n\n const prevBox = prevEl.getBoundingClientRect()\n const nextBox = nextEl.getBoundingClientRect()\n\n const xy = isHorizontal.value ? 'x' : 'y'\n const XY = isHorizontal.value ? 'X' : 'Y'\n const rightBottom = isHorizontal.value ? 'right' : 'bottom'\n const widthHeight = isHorizontal.value ? 'width' : 'height'\n\n const prevPos = prevBox[xy]\n const nextPos = nextBox[xy]\n const delta = prevPos > nextPos\n ? prevBox[rightBottom] - nextBox[rightBottom]\n : prevBox[xy] - nextBox[xy]\n const origin =\n Math.sign(delta) > 0 ? (isHorizontal.value ? 'right' : 'bottom')\n : Math.sign(delta) < 0 ? (isHorizontal.value ? 'left' : 'top')\n : 'center'\n const size = Math.abs(delta) + (Math.sign(delta) < 0 ? prevBox[widthHeight] : nextBox[widthHeight])\n const scale = size / Math.max(prevBox[widthHeight], nextBox[widthHeight]) || 0\n const initialScale = prevBox[widthHeight] / nextBox[widthHeight] || 0\n\n const sigma = 1.5\n animate(nextEl, {\n backgroundColor: [color, 'currentcolor'],\n transform: [\n `translate${XY}(${delta}px) scale${XY}(${initialScale})`,\n `translate${XY}(${delta / sigma}px) scale${XY}(${(scale - 1) / sigma + 1})`,\n 'none',\n ],\n transformOrigin: Array(3).fill(origin),\n }, {\n duration: 225,\n easing: standardEasing,\n })\n }\n }\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n <VBtn\n symbol={ VTabsSymbol }\n ref={ rootEl }\n class={[\n 'v-tab',\n props.class,\n ]}\n style={ props.style }\n tabindex={ isSelected.value ? 0 : -1 }\n role=\"tab\"\n aria-selected={ String(isSelected.value) }\n active={ false }\n { ...btnProps }\n { ...attrs }\n block={ props.fixed }\n maxWidth={ props.fixed ? 300 : undefined }\n onGroup:selected={ updateSlider }\n >\n {{\n ...slots,\n default: () => (\n <>\n { slots.default?.() ?? props.text }\n\n { !props.hideSlider && (\n <div\n ref={ sliderEl }\n class={[\n 'v-tab__slider',\n sliderColorClasses.value,\n ]}\n style={ sliderColorStyles.value }\n />\n )}\n </>\n ),\n }}\n </VBtn>\n )\n })\n\n return forwardRefs({}, rootEl)\n },\n})\n\nexport type VTab = InstanceType<typeof VTab>\n"],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  .v-tab
4
4
  // override v-btn size specificity
5
- &.v-tab
6
- --v-btn-height: var(--v-tabs-height)
5
+ &.v-tab.v-btn
6
+ height: var(--v-tabs-height)
7
7
  border-radius: $tab-border-radius
8
8
  min-width: $tab-min-width
9
9