1
0
mirror of https://github.com/elk-zone/elk synced 2024-11-27 14:28:10 +09:00
elk/components/nav/NavSideItem.vue

39 lines
868 B
Vue
Raw Normal View History

2022-11-27 11:35:26 +09:00
<script setup lang="ts">
const props = defineProps<{
2022-11-28 01:59:33 +09:00
text?: string
2022-11-27 11:35:26 +09:00
icon: string
to: string | Record<string, string>
2022-11-27 11:35:26 +09:00
}>()
2022-11-28 01:59:33 +09:00
defineSlots<{
icon: {}
default: {}
}>()
const router = useRouter()
useCommand({
scope: 'Navigation',
2022-12-01 22:45:13 +09:00
name: () => props.text ?? (typeof props.to === 'string' ? props.to as string : props.to.name),
icon: () => props.icon,
onActivate() {
router.push(props.to)
},
})
2022-11-27 11:35:26 +09:00
</script>
<template>
2022-11-30 05:15:53 +09:00
<NuxtLink :to="to" active-class="text-primary" group focus:outline-none @click="$scrollToTop">
<div flex w-fit px5 py2 md:gap2 gap4 items-center transition-100 rounded-full group-hover:bg-active group-focus-visible:ring="2 current">
2022-11-27 11:35:26 +09:00
<slot name="icon">
<div :class="icon" md:text-size-inherit text-xl />
2022-11-27 11:35:26 +09:00
</slot>
2022-11-28 01:59:33 +09:00
<slot>
<span>{{ text }}</span>
</slot>
2022-11-27 11:35:26 +09:00
</div>
</NuxtLink>
</template>