cobalt/web/src/components/changelog/ChangelogEntry.svelte

56 lines
1.6 KiB
Svelte
Raw Normal View History

2024-06-29 20:23:56 +02:00
<script lang="ts">
import Skeleton from "$components/misc/Skeleton.svelte";
2024-07-21 19:26:21 +02:00
import type { Optional } from "$lib/types/generic";
2024-06-29 20:23:56 +02:00
export let version: string;
export let title: string;
export let date: string;
2024-07-21 19:26:21 +02:00
export let banner: Optional<{ file: string; alt: string }>;
let bannerLoaded = false;
const formatDate = (dateString: string) => {
const date = new Date(dateString);
const months = ['January', 'February', 'March', 'April', 'May',
'June', 'July', 'August', 'September', 'October',
'November', 'December'];
return [
months[date.getUTCMonth()],
(date.getUTCDate() + 1) + ',',
date.getUTCFullYear()
].join(' ');
}
2024-06-29 20:23:56 +02:00
</script>
2024-07-17 09:32:07 +02:00
<main>
<div id="changelog-header" class:no-padding={!banner}>
<div class="changelog-info">
<div class="changelog-version">{version}</div>
<div class="changelog-date">{formatDate(date)}</div>
</div>
<h1 class="changelog-title">{title}</h1>
</div>
2024-07-17 09:32:07 +02:00
<div class="changelog-content">
{#if banner}
<img
src={`/update-banners/${banner.file}`}
alt={banner.alt}
class:loading={!bannerLoaded}
on:load={() => bannerLoaded = true}
2024-07-17 09:32:07 +02:00
class="changelog-banner"
/>
<Skeleton
class="big changelog-banner"
hidden={bannerLoaded}
/>
2024-07-17 09:32:07 +02:00
{/if}
<div class="contents">
<slot></slot>
</div>
</div>
</main>
<style src="./ChangelogEntry.css"></style>