2024-06-29 20:23:56 +02:00
|
|
|
<script lang="ts">
|
2024-07-21 11:42:48 +02:00
|
|
|
import Skeleton from "$components/misc/Skeleton.svelte";
|
2024-07-21 19:26:21 +02:00
|
|
|
import type { Optional } from "$lib/types/generic";
|
2024-07-23 13:42:13 +02:00
|
|
|
import { onMount } from "svelte";
|
2024-07-21 11:42:48 +02:00
|
|
|
|
2024-06-29 20:23:56 +02:00
|
|
|
export let version: string;
|
|
|
|
export let title: string;
|
2024-07-21 13:30:06 +02:00
|
|
|
export let date: string;
|
2024-07-21 19:26:21 +02:00
|
|
|
export let banner: Optional<{ file: string; alt: string }>;
|
2024-07-17 11:07:25 +02:00
|
|
|
|
2024-07-21 11:42:48 +02:00
|
|
|
let bannerLoaded = false;
|
|
|
|
|
2024-07-17 11:07:25 +02:00
|
|
|
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-07-23 13:42:13 +02:00
|
|
|
|
|
|
|
onMount(() => {
|
|
|
|
const to_focus: HTMLElement | null =
|
|
|
|
document.querySelector("[data-first-focus]");
|
|
|
|
to_focus?.focus();
|
|
|
|
});
|
2024-06-29 20:23:56 +02:00
|
|
|
</script>
|
2024-07-17 09:32:07 +02:00
|
|
|
|
|
|
|
<main>
|
2024-07-21 10:45:24 +02:00
|
|
|
<div id="changelog-header" class:no-padding={!banner}>
|
2024-07-17 10:04:53 +02:00
|
|
|
<div class="changelog-info">
|
2024-07-23 14:18:18 +02:00
|
|
|
<div
|
|
|
|
class="changelog-version"
|
|
|
|
data-first-focus
|
|
|
|
data-focus-ring-hidden
|
|
|
|
tabindex="-1"
|
|
|
|
>{version}</div>
|
2024-07-21 13:31:55 +02:00
|
|
|
<div class="changelog-date">{formatDate(date)}</div>
|
2024-07-17 10:04:53 +02:00
|
|
|
</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}
|
2024-07-21 11:42:48 +02:00
|
|
|
class:loading={!bannerLoaded}
|
|
|
|
on:load={() => bannerLoaded = true}
|
2024-07-17 09:32:07 +02:00
|
|
|
class="changelog-banner"
|
|
|
|
/>
|
2024-07-21 11:42:48 +02:00
|
|
|
|
|
|
|
<Skeleton
|
|
|
|
class="big changelog-banner"
|
|
|
|
hidden={bannerLoaded}
|
|
|
|
/>
|
2024-07-17 09:32:07 +02:00
|
|
|
{/if}
|
|
|
|
<div class="contents">
|
|
|
|
<slot></slot>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</main>
|
|
|
|
|
2024-07-21 12:06:43 +02:00
|
|
|
<style src="./ChangelogEntry.css"></style>
|