mirror of
https://github.com/ArthurDanjou/website-old.git
synced 2026-01-20 15:01:47 +01:00
84 lines
2.1 KiB
Vue
Executable File
84 lines
2.1 KiB
Vue
Executable File
<template>
|
|
<nuxt-link :to="`/blog/${slug}`">
|
|
<div class="h-full rounded-lg dark:shadow-white shadow-xl w-full bg-gray-100 dark:bg-gray-800 transform hover:-translate-y-2 duration-300">
|
|
<div class="max-w-full">
|
|
<img class="max-w-full rounded-t-lg" :src="`https://athena.arthurdanjou.fr/files/${cover}`" alt="Post Cover" />
|
|
</div>
|
|
<div class="px-8 py-4 flex flex-col justify-between">
|
|
<div>
|
|
<div class="flex space-x-2 mb-2">
|
|
<div v-for="tag in tags">
|
|
<Tag :content="tag" :pill="true"/>
|
|
</div>
|
|
</div>
|
|
<h1 class="text-2xl font-bold">{{ $t(title) }}</h1>
|
|
<p class="text-base mt-3 text-gray-700 dark:text-gray-400 text-justify">{{ $t(description) }}</p>
|
|
</div>
|
|
<div class="flex justify-between">
|
|
<h5 class="text-base text-gray-700 dark:text-gray-400">{{ formatDate }}</h5>
|
|
<h5 class="text-base text-gray-700 dark:text-gray-400">{{ reading_time }} min.</h5>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nuxt-link>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import {computed, defineComponent, useContext} from "@nuxtjs/composition-api";
|
|
|
|
interface PostProps {
|
|
title: string,
|
|
description: string,
|
|
date: string,
|
|
cover: string,
|
|
slug: string,
|
|
tags: Array<string>,
|
|
reading_time: number
|
|
}
|
|
|
|
export default defineComponent({
|
|
name: "Post",
|
|
props: {
|
|
title: {
|
|
type: String,
|
|
default: "Title"
|
|
},
|
|
description: {
|
|
type: String,
|
|
default: "Description"
|
|
},
|
|
date: {
|
|
type: String,
|
|
default: "Date"
|
|
},
|
|
cover: {
|
|
type: String,
|
|
default: "string"
|
|
},
|
|
slug: {
|
|
type: String,
|
|
default: "slug"
|
|
},
|
|
tags: {
|
|
type: Array,
|
|
default: () => ["Tag1", "Tag2", "Tag3"],
|
|
},
|
|
reading_time: {
|
|
type: Number,
|
|
default: 0
|
|
}
|
|
},
|
|
setup(props: PostProps) {
|
|
const { i18n } = useContext()
|
|
const formatDate = computed(() => {
|
|
const [first, second, third]: any = props.date.split('-')
|
|
return `${first} ${i18n.t(`month.${second}`)} ${third}`
|
|
})
|
|
|
|
return {
|
|
formatDate
|
|
}
|
|
}
|
|
})
|
|
</script>
|