<template>
    <Component :is="'button'"
        class="inline-flex gap-0.5 justify-center overflow-hidden text-sm font-medium transition"
        :class="[ variantStyles[ variant ] ]">
            <IconsArrow 
                v-if="arrow === 'left'"
                class="mt-0.5 h-5 w-5"
                :class="{
                    'relative top-px': variant === 'text',
                    '-ml-1 rotate-180': arrow === 'left',
                    '-mr-1': arrow === 'right'
                }"/>
            <slot/>
            <IconsArrow 
                v-if="arrow === 'right'"
                class="mt-0.5 h-5 w-5"
                :class="{
                    'relative top-px': variant === 'text',
                    '-ml-1 rotate-180': arrow === 'left',
                    '-mr-1': arrow === 'right'
                }"/>
    </Component>
</template>

<script setup>
const props = defineProps({
    variant: {
        default: 'primary'
    },
    arrow: {
        default: ''
    },
    href: {
        default: ''
    }
})

const variantStyles = ref({
    primary: 'rounded-full py-1 px-3 bg-emerald-400/10 text-emerald-400 ring-1 ring-inset ring-emerald-400/20 hover:bg-emerald-400/10 hover:text-emerald-300 hover:ring-emerald-300',
    secondary: 'rounded-full py-1 px-3 ring-1 ring-inset ring-zinc-800 hover:bg-zinc-800 hover:text-zinc-300',
    filled: 'rounded-full py-1 px-3 text-white bg-emerald-500 hover:bg-emerald-400',
    outline: 'rounded-full py-1 px-3 ring-1 ring-inset text-zinc-400 ring-white/10 hover:bg-white/5 hover:text-white',
    text: 'text-emerald-400 hover:text-emerald-500',
})
</script>