Use o composable useTour, importado automaticamente, para conduzir um tour guiado com um único Popover cuja âncora se move entre as etapas. O composable controla o estado das etapas e resolve o target de cada etapa em uma reference que você vincula ao <NPopover>, enquanto você mantém controle total sobre o conteúdo e a navegação.
Dashboard
Overview of your workspace.
Profile
Manage your account.
Settings
Configure your preferences.
Cada etapa exige um target no qual o popover se ancora. Ele aceita um seletor CSS, um elemento, um elemento virtual (qualquer coisa com getBoundingClientRect) ou um ref/getter que retorne um deles. Passe null para ancorar a etapa no centro da viewport. Qualquer outro campo de uma etapa (title, body, side, …) é repassado sem alterações e fica disponível via current.
<script setup lang="ts">
const card = useTemplateRef('card')
const tour = useTour([
{ target: '#cta', title: 'Get started' },
{ target: () => card.value, title: 'Profile', side: 'right' },
{ target: null, title: 'All set' }
])
</script>
<template>
<NButton @click="tour.start()">Start tour</NButton>
<NPopover :open="tour.open.value" :reference="tour.reference.value" :dismissible="false">
<template #content>
<!-- your content + buttons -->
<NButton :disabled="!tour.hasPrev.value" @click="tour.prev()">Back</NButton>
<NButton @click="tour.next()">{{ tour.hasNext.value ? 'Next' : 'Finish' }}</NButton>
</template>
</NPopover>
</template>
reference prop, so the popover smoothly repositions when the active step changes.useTour(steps, options?)
ref, or a getter for reactive steps.'#id', '.class', or a bare id resolved as #id), an element, a virtual element, or a ref/getter returning one. Use null to center the step in the viewport.title, body, side, …) are passed through and available via current.undefined when there are no steps.<NPopover :reference>.loop option.