Files
martials.no/src/components/projects/ProjectPage.astro

70 lines
1.6 KiB
Plaintext
Raw Normal View History

2024-09-25 22:20:47 +02:00
---
import * as m from "@/paraglide/messages"
import Layout from "@/layouts/Layout.astro"
import BadgeList from "@/components/badge/BadgeList.astro"
import GiteaLink from "@/components/links/GiteaLink.astro"
import { languageTag } from "@/paraglide/runtime"
import { getEntry, render } from "astro:content"
import { Image } from "astro:assets"
import dayjs from "dayjs"
import "@/styles/global.css"
2024-09-25 22:20:47 +02:00
interface Props {
project: string // TODO typeof project slug
}
const { project } = Astro.props
const entry = await getEntry("projects", project)
2025-01-19 20:07:26 +01:00
const { Content } = await render(entry!)
2024-09-25 22:20:47 +02:00
const {
lang,
2024-09-25 22:20:47 +02:00
title,
description,
tags,
keywords,
2024-09-25 22:20:47 +02:00
heroImage,
heroImageAlt,
source,
createdAt,
updatedAt,
2024-09-25 22:20:47 +02:00
} = entry!.data
function localeDateString(isoString: string): string {
if (languageTag() === "nb") {
return dayjs(isoString).locale(languageTag()).format("DD/MM/YYYY")
}
return dayjs(isoString).locale(languageTag()).format("DD-MM-YYYY")
}
2024-09-25 22:20:47 +02:00
---
<Layout
title={title}
class="mx-auto max-w-[750px]"
description={description}
keywords={keywords}
>
2024-09-25 22:20:47 +02:00
<div class="flex justify-between my-2">
<div>
<h2>{title}</h2>
2024-09-25 22:20:47 +02:00
<BadgeList tags={tags} />
</div>
<div class="flex flex-col items-end">
<p>
{m.createdAt()}: {localeDateString(createdAt)}
2024-09-25 22:20:47 +02:00
</p>
<p>
{m.updatedAt()}: {localeDateString(updatedAt)}
2024-09-25 22:20:47 +02:00
</p>
</div>
</div>
<Image src={heroImage} alt={heroImageAlt} class="m-auto" />
2024-09-25 22:20:47 +02:00
<GiteaLink href={source} class="my-2" />
2024-09-25 22:20:47 +02:00
<p class="my-2">{description}</p>
<div lang={lang}>
<Content />
</div>
2024-09-25 22:20:47 +02:00
</Layout>