mirror of
				https://github.com/creativetimofficial/vue-material-kit.git
				synced 2025-10-31 13:15:39 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <script setup>
 | |
| import MaterialBadge from "../../../components/MaterialBadge.vue";
 | |
| defineProps({
 | |
|   color: {
 | |
|     type: String,
 | |
|     default: "",
 | |
|   },
 | |
|   badge: {
 | |
|     type: Object,
 | |
|     color: String,
 | |
|     label: String,
 | |
|     required: true,
 | |
|   },
 | |
|   price: {
 | |
|     type: Object,
 | |
|     currency: String,
 | |
|     amount: String,
 | |
|     charged: String,
 | |
|     required: true,
 | |
|   },
 | |
|   specifications: {
 | |
|     type: Array,
 | |
|     label: String,
 | |
|     includes: Boolean,
 | |
|     required: true,
 | |
|   },
 | |
|   action: {
 | |
|     type: Object,
 | |
|     route: String,
 | |
|     label: String,
 | |
|     color: String,
 | |
|     default: () => ({
 | |
|       route: "/",
 | |
|       label: "Join",
 | |
|       color: "success",
 | |
|     }),
 | |
|   },
 | |
|   colored: {
 | |
|     type: Boolean,
 | |
|     default: false,
 | |
|   },
 | |
| });
 | |
| </script>
 | |
| <template>
 | |
|   <div class="card shadow-lg" :class="`bg-gradient-${color}`">
 | |
|     <MaterialBadge
 | |
|       :class="[
 | |
|         ` w-30 mt-n2 mx-auto bg-${badge.color}`,
 | |
|         colored ? 'text-white' : 'text-dark',
 | |
|       ]"
 | |
|       :color="badge.color"
 | |
|       rounded
 | |
|       >{{ badge.label }}</MaterialBadge
 | |
|     >
 | |
|     <div class="card-header text-center pt-4 pb-3 bg-transparent">
 | |
|       <h1
 | |
|         class="font-weight-bold mt-2"
 | |
|         :class="colored ? 'text-white' : 'text-dark'"
 | |
|       >
 | |
|         <small class="text-lg align-top me-1">{{ price.currency }}</small
 | |
|         >{{ price.amount }}<small class="text-lg">/{{ price.charged }}</small>
 | |
|       </h1>
 | |
|     </div>
 | |
|     <div
 | |
|       class="card-body text-lg-start text-center pt-0"
 | |
|       :class="colored ? 'text-white' : 'text-dark'"
 | |
|     >
 | |
|       <div
 | |
|         class="d-flex justify-content-lg-start justify-content-center p-2"
 | |
|         v-for="({ label, includes }, index) of specifications"
 | |
|         :key="index"
 | |
|       >
 | |
|         <i class="material-icons my-auto">{{
 | |
|           includes === true ? "done" : "remove"
 | |
|         }}</i>
 | |
|         <span class="ps-3">{{ label }}</span>
 | |
|       </div>
 | |
| 
 | |
|       <a
 | |
|         :href="action.route"
 | |
|         class="btn btn-icon d-lg-block mt-3 mb-0"
 | |
|         :class="`bg-gradient-${action.color}`"
 | |
|       >
 | |
|         {{ action.label }}
 | |
|         <i class="fas fa-arrow-right ms-1"></i>
 | |
|       </a>
 | |
|     </div>
 | |
|   </div>
 | |
| </template>
 | 
