{"version":3,"file":"VTabs.mjs","names":["VSlideGroup","VTab","makeDensityProps","useDensity","makeTagProps","provideDefaults","useBackgroundColor","useProxiedModel","computed","toRef","convertToUnit","genericComponent","useRender","VTabsSymbol","parseItems","items","map","item","title","value","VTabs","name","props","alignTabs","type","String","default","color","direction","fixedTabs","Boolean","Array","stacked","bgColor","grow","height","Number","undefined","hideSlider","sliderColor","modelValue","mandatory","emits","v","setup","slots","model","parsedItems","densityClasses","backgroundColorClasses","backgroundColorStyles","fixed"],"sources":["../../../src/components/VTabs/VTabs.tsx"],"sourcesContent":["// Styles\nimport './VTabs.sass'\n\n// Components\nimport { VSlideGroup } from '@/components/VSlideGroup'\nimport { VTab } from './VTab'\n\n// Composables\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeTagProps } from '@/composables/tag'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { convertToUnit, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport { VTabsSymbol } from './shared'\n\nexport type TabItem = string | Record<string, any>\n\nfunction parseItems (items: TabItem[] | undefined) {\n  if (!items) return []\n\n  return items.map(item => {\n    if (typeof item === 'string') return { title: item, value: item }\n\n    return item\n  })\n}\n\nexport const VTabs = genericComponent()({\n  name: 'VTabs',\n\n  props: {\n    alignTabs: {\n      type: String as PropType<'start' | 'title' | 'center' | 'end'>,\n      default: 'start',\n    },\n    color: String,\n    direction: {\n      type: String as PropType<'horizontal' | 'vertical'>,\n      default: 'horizontal',\n    },\n    fixedTabs: Boolean,\n    items: {\n      type: Array as PropType<TabItem[]>,\n      default: () => ([]),\n    },\n    stacked: Boolean,\n    bgColor: String,\n    grow: Boolean,\n    height: {\n      type: [Number, String],\n      default: undefined,\n    },\n    hideSlider: Boolean,\n    sliderColor: String,\n    modelValue: null,\n    mandatory: {\n      type: [Boolean, String] as PropType<boolean | 'force'>,\n      default: 'force',\n    },\n\n    ...makeDensityProps(),\n    ...makeTagProps(),\n  },\n\n  emits: {\n    'update:modelValue': (v: unknown) => true,\n  },\n\n  setup (props, { slots }) {\n    const model = useProxiedModel(props, 'modelValue')\n    const parsedItems = computed(() => parseItems(props.items))\n    const { densityClasses } = useDensity(props)\n    const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n\n    provideDefaults({\n      VTab: {\n        color: toRef(props, 'color'),\n        direction: toRef(props, 'direction'),\n        stacked: toRef(props, 'stacked'),\n        fixed: toRef(props, 'fixedTabs'),\n        sliderColor: toRef(props, 'sliderColor'),\n        hideSlider: toRef(props, 'hideSlider'),\n      },\n    })\n\n    useRender(() => (\n      <VSlideGroup\n        v-model={ model.value }\n        class={[\n          'v-tabs',\n          `v-tabs--${props.direction}`,\n          `v-tabs--align-tabs-${props.alignTabs}`,\n          {\n            'v-tabs--fixed-tabs': props.fixedTabs,\n            'v-tabs--grow': props.grow,\n            'v-tabs--stacked': props.stacked,\n          },\n          densityClasses.value,\n          backgroundColorClasses.value,\n        ]}\n        style={[\n          { '--v-tabs-height': convertToUnit(props.height) },\n          backgroundColorStyles.value,\n        ]}\n        role=\"tablist\"\n        symbol={ VTabsSymbol }\n        mandatory={ props.mandatory }\n        direction={ props.direction }\n      >\n        { slots.default ? slots.default() : parsedItems.value.map(item => (\n          <VTab { ...item } key={ item.title } />\n        )) }\n      </VSlideGroup>\n    ))\n\n    return {}\n  },\n})\n\nexport type VTabs = InstanceType<typeof VTabs>\n"],"mappings":"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"}