# Modals Sooooo for Modals (popups, dialogs, whatever...lets use Modals), I think VueFinalModal supports what we need? You put a component at the top level App.vue ```html <template> <RouterView /> <ModalsContainer /> </template> <script setup lang="ts"> import { RouterView } from "vue-router"; import { ModalsContainer } from "vue-final-modal"; </script> ``` Then we'd have a ModalComponent in Nostra that looks pretty: ```html <vue-final-modal v-slot="{ close }" v-bind="$attrs" > <button class="modal__close" @click="close">X</button> <slot name="content" </vue-final-modal> </template> ``` Then in our app we can do: ```typescript $vfm.show({ component: NostraModal, bind: { title: 'Note', // Props for Nostra Modal }, slots: { content: { component: ModalContents } }, // Props etc can go here too (or even { content: '<p>Content</p>' } is valid) }); ``` ModalContents would have emits etc to pass data up, and you can only ever have 1 dialog as the go in the same DOM hole. ModalComponent could listen for modal:close events from it's slot too, as well as the regular close button. I don't think the parent calling $vfm.show cares about the modal state, so we don't need showPopupX everywhere? I _think_ it'll work with more complex setups, but it works with my simple Vault sample