PluginProbe
Hostinger Tools / 3.0.48
Hostinger Tools v3.0.48
3.0.77 3.0.76 3.0.75 3.0.74 3.0.73 3.0.72 3.0.71 3.0.70 3.0.69 3.0.68 3.0.67 3.0.66 1.8.1 1.8.2 1.8.3 1.9.1 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.4 All 108 releases
hostinger / vue-frontend / src / components / Card.vue

Card.vue in Hostinger Tools 3.0.48, at vue-frontend/src/components/Card.vue

68 lines 1.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <script setup lang="ts">
2 import { defineProps, defineEmits, withDefaults, useSlots } from "vue";
3
4 interface Props {
5 header?: string;
6 }
7
8 type Emits = {
9 (eventName: "click"): void;
10 };
11
12 withDefaults(defineProps<Props>(), {});
13 const emit = defineEmits<Emits>();
14 const slots = useSlots();
15 </script>
16
17 <template>
18 <div class="card" @click="emit('click')">
19 <div class="card__header">
20 <slot v-if="slots.header" name="header" />
21 <h2 class="h-m-0" v-else-if="header">{{ header }}</h2>
22 </div>
23 <div class="card__body">
24 <slot v-if="slots.default" />
25 </div>
26
27 <div class="card__footer" v-if="slots.footer">
28 <slot name="footer" />
29 </div>
30 </div>
31 </template>
32
33 <style lang="scss" scoped>
34 .card {
35 border-radius: 16px;
36 border: 1px solid var(--gray-border);
37 background: var(--light);
38 display: flex;
39 padding: 24px;
40 flex-direction: column;
41 align-items: center;
42 gap: 16px;
43 align-self: stretch;
44 text-align: left;
45 max-width: unset;
46 width: 100%;
47
48 &__header,
49 &__body,
50 &__footer {
51 display: flex;
52 width: 100%;
53 }
54
55 &__body {
56 display: flex;
57 flex-direction: column;
58 flex-grow: 1;
59 }
60
61 &__footer {
62 padding: 16px;
63 cursor: pointer;
64 text-align: right;
65 }
66 }
67 </style>
68