Imperative API
Call summon(Component, props) from event handlers, stores, routers — even outside component setup.
Imperatively render dialogs, toasts and modals in Vue 3 — no template clutter, results delivered as Promises.
<script setup lang="ts">
import { useSummoned } from 'vue-summon'
const { resolve } = useSummoned<boolean>()
</script>
<template>
<div class="overlay">
<div class="dialog">
<p>Delete this file?</p>
<button @click="resolve(false)">Cancel</button>
<button @click="resolve(true)">Delete</button>
</div>
</div>
</template>import { summon } from 'vue-summon'
import ConfirmDialog from './ConfirmDialog.vue'
const confirmed = await summon(ConfirmDialog)
if (confirmed) {
await deleteFile()
}That is the whole mental model: summon a component, await its answer. No v-model:visible, no teleport targets to manage, no event plumbing through three layers of parents.