mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-24 14:45:15 +00:00
47 lines
1.2 KiB
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>
|