46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Vue
		
	
	
	
| <template>
 | |
|     <div class="fixed z-40 top-0 left-0 w-full h-full flex items-center justify-center p-6 bg-black/60 backdrop-blur-sm">
 | |
|         <div
 | |
|             class="relative rounded-lg p-8 bg-zinc-800 shadow-2xl shadow-black border border-zinc-700 border-solid w-full max-h-full flex flex-col overflow-auto"
 | |
|             :class="full ? 'h-full' : innerWidth"
 | |
|         >
 | |
|             <div class="absolute top-0 right-0 mt-6 mr-6 flex space-x-6">
 | |
|                 <slot name="actions"></slot>
 | |
|                 <a href="#" @click.prevent="$emit('close')">
 | |
|                     <ui-sprite src="close" class="text-zinc-400 w-6 h-6"></ui-sprite>
 | |
|                 </a>
 | |
|             </div>
 | |
|             <h3 v-if="heading" class="font-semibold text-primary-200 text-xl" v-html="heading"></h3>
 | |
|             <div class="text-primary-100 group is-popup grow flex flex-col">
 | |
|                 <suspense>
 | |
|                     <div>
 | |
|                         <slot></slot>
 | |
|                     </div>
 | |
|                     <template #fallback>
 | |
|                         <ui-loading></ui-loading>
 | |
|                     </template>
 | |
|                 </suspense>
 | |
|             </div>
 | |
|         </div>
 | |
|     </div>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| export default {
 | |
|     props: {
 | |
|         heading: {
 | |
|             type: String,
 | |
|             default: () => '',
 | |
|         },
 | |
|         innerWidth: {
 | |
|             default: () => 'max-w-xl',
 | |
|             type: String,
 | |
|         },
 | |
|         full: {
 | |
|             type: Boolean,
 | |
|             default: () => false,
 | |
|         },
 | |
|     },
 | |
| };
 | |
| </script>
 |