vue-website/components/ProjectCardContent.vue

69 lines
1.4 KiB
Vue
Raw Permalink Normal View History

2025-04-23 21:32:06 +10:00
<template>
<div>
<!-- <button @click="$emit('close')"> Close </button> -->
<img src="/public\img\close.png" class="close-button" @click="$emit('close')">
2025-04-23 21:32:06 +10:00
<h2>{{title}}</h2>
<p>{{description}}</p>
<br>
<!-- <ClientOnly> -->
<div class="badges-container">
<Badge v-for="(data, i) of badges" :key="i" :id="data" />
</div>
2025-04-23 21:32:06 +10:00
<div class="buttons">
<SmallButton v-for="(data, i) of buttons" :key="i" class="button" :text="data.text"
:href="data.link" />
</div>
<!-- </ClientOnly> -->
<br>
<p class="multiline-css-fix">{{longDescription}}</p>
</div>
</template>
<script lang="ts" setup>
import {defineProps, defineEmits} from 'vue'
import type { BadgeData } from './ProjectCardV2.vue';
2025-04-23 21:32:06 +10:00
export interface ButtonData {
text: string,
link: string,
}
const props = defineProps<{
title: string,
description: string,
longDescription?: string,
buttons?: Array<ButtonData>,
badges?: Array<string>,
2025-04-23 21:32:06 +10:00
}>();
defineEmits("close")
</script>
<style scoped>
.close-button{
float:right;
/* display: block; */
/* margin-left: auto; */
width: 32px;
&:hover{
filter: invert();
}
}
.multiline-css-fix{
white-space: pre-wrap;
}
.badges-container{
display: flex;
flex-direction: row;
gap: 5px;
flex-wrap: wrap;
margin-bottom: 10px;
}
2025-04-23 21:32:06 +10:00
</style>