Nuxt/examples/composables/use-cookie/app.vue

47 lines
1.2 KiB
Vue

<script setup lang="ts">
const user = useCookie<{ name: string }>('user')
const logins = useCookie<number>('logins')
const name = ref('')
const login = () => {
logins.value = (logins.value || 0) + 1
user.value = { name: name.value }
}
const logout = () => {
user.value = null
}
</script>
<template>
<NuxtExampleLayout class="h-50" example="composables/use-cookie">
<template v-if="user">
<h1 class="text-3xl mb-3">
Welcome, {{ user.name }}! 👋
</h1>
<div>
<NTip n="green6" icon="carbon:idea" class="inline-flex">
You have logged in <b>{{ logins }} times</b>!
</NTip>
</div>
<div class="mt-3">
<NButton n="red" icon="carbon:logout" @click="logout">
Log out
</NButton>
</div>
</template>
<template v-else>
<h1 class="text-3xl mb-3">
Login
</h1>
<NTextInput v-model="name" n="lg" class="w-100 m-auto" placeholder="Enter your name..." @keypress.enter="login()" />
<div class="mt-3">
<NButton icon="carbon:user" :disabled="!name" @click="login">
Log in
</NButton>
</div>
</template>
</NuxtExampleLayout>
</template>