fix: show date on herocard closes #2

This commit is contained in:
Max Richter
2025-10-22 16:39:23 +02:00
parent d9a2f63865
commit 3a120e32fc
3 changed files with 37 additions and 8 deletions

View File

@@ -15,7 +15,7 @@ interface Props {
}
const {
data: { title, cover, icon },
data: { title, cover, icon, date },
collection,
body,
id,
@@ -30,6 +30,7 @@ const link = translatePath(`/${collection}/${id.split("/")[0]}`);
<Card
classes={`grid gradient border-1 border-neutral overflow-hidden ${cover ? "grid-rows-[200px_1fr] xs:grid-rows-none xs:grid-cols-[1fr_200px]" : ""}`}>
<Card.Content classes="px-8 py-7 order-last xs:order-first">
{date && (<Card.Metadata date={date} />)}
<Card.Title classes="text-4xl flex items-center gap-2">
{
icon &&

View File

@@ -0,0 +1,25 @@
<script lang="ts">
export let date: string | Date;
const toDate = (d: string | Date) =>
typeof d === "string" ? new Date(d) : d;
const iso = (d: string | Date) => {
const v = toDate(d);
return isNaN(v.getTime()) ? "" : v.toISOString();
};
const formatDate = (d: string | Date) =>
new Intl.DateTimeFormat("de-DE", {
day: "2-digit",
month: "long",
year: "numeric",
}).format(toDate(d));
</script>
<div class="flex gap-5">
{#if date}
<time class="text-sm text-neutral" datetime={iso(date)}
>{formatDate(date)}</time>
{/if}
</div>

View File

@@ -1,19 +1,22 @@
import Wrapper from './Wrapper.svelte';
import Image from './Image.svelte';
import Content from './Content.svelte';
import Title from './Title.svelte';
import Description from './Description.svelte';
import ReadMoreButton from './ReadMoreButton.svelte';
import Wrapper from "./Wrapper.svelte";
import Image from "./Image.svelte";
import Content from "./Content.svelte";
import Title from "./Title.svelte";
import Description from "./Description.svelte";
import ReadMoreButton from "./ReadMoreButton.svelte";
import Metadata from "./Metadata.svelte";
const Card = Wrapper as typeof Wrapper & {
Image: typeof Image;
Metadata: typeof Metadata;
Content: typeof Content;
Title: typeof Title;
Description: typeof Description;
ReadMoreButton: typeof ReadMoreButton;
}
};
Card.Image = Image;
Card.Metadata = Metadata;
Card.Content = Content;
Card.Title = Title;
Card.Description = Description;