~james/core

core/web/src/lib/components/ui/TimeAgo.svelte -rw-r--r-- 566 bytes
452f17b7 — james chore(import): snapshot james.dad.town/core at f70c71c7696a 16 hours ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script lang="ts">
	import { compactRelativeTime, formatDateTime, relativeTime } from "#lib/format.ts";

	interface Props {
		value: string | Date;
		variant?: "compact" | "full";
		class?: string;
	}

	let { value, variant = "compact", class: className }: Props = $props();

	const text = $derived(variant === "compact" ? compactRelativeTime(value) : relativeTime(value));
	const iso = $derived(typeof value === "string" ? value : value.toISOString());
</script>

{#if text}
	<time datetime={iso} title={formatDateTime(value)} class={className}>{text}</time>
{/if}