7 lines
677 B
Vue
7 lines
677 B
Vue
<script setup lang="ts">
|
|
import type { UiTabItem } from '../contracts'
|
|
withDefaults(defineProps<{ modelValue: string; items: UiTabItem[]; ariaLabel?: string }>(), { ariaLabel: '탭' })
|
|
const emit = defineEmits<{ 'update:modelValue': [value: string] }>()
|
|
</script>
|
|
<template><div><div class="ks-tabs" role="tablist" :aria-label="ariaLabel"><button v-for="item in items" :key="item.id" type="button" role="tab" :aria-selected="modelValue === item.id" :disabled="item.disabled" @click="emit('update:modelValue', item.id)">{{ item.label }}<small v-if="item.badge"> {{ item.badge }}</small></button></div><div role="tabpanel"><slot :active-id="modelValue" /></div></div></template>
|