···33 import { quintOut } from "svelte/easing";
44 import MonthSection from "./MonthSection.svelte";
55 import { calculateTotalReadTime, calculateTotalWordCount, formatReadTime } from "$utils/tally";
66- import StatsDisplay from "./StatsDisplay.svelte";
7687 export const year: number = 0;
98 export let months: Record<string, any[]>;
···2524 out:fade={{ duration: 200 }}
2625 class="year-content"
2726>
2828- <StatsDisplay totalReadTime={yearlyTotalReadTime} totalWordCount={yearlyTotalWordCount} />
29273028 {#each Object.entries(months) as [monthName, postsInMonth], monthIndex}
3129 <MonthSection
+1-1
src/lib/components/archive/index.ts
···22export { default as YearContent } from "./YearContent.svelte";
33export { default as MonthSection } from "./MonthSection.svelte";
44export { default as ArchiveCard } from "./ArchiveCard.svelte";
55-export { default as StatsDisplay } from "./StatsDisplay.svelte";
55+export { default as ArchiveHeader } from "./ArchiveHeader.svelte";
+5-2
src/routes/blog/+page.svelte
···11<script lang="ts">
22 import { onMount } from "svelte";
33- import YearTabs from "$components/archive/YearTabs.svelte";
44- import YearContent from "$components/archive/YearContent.svelte";
33+ import { YearContent, YearTabs, ArchiveHeader } from "$components/archive";
54 import { getStores } from "$app/stores";
65 const { page } = getStores();
76 const { data } = $props();
···184183 <p class="mt-2 text-sm">Posts were found but none have valid content, titles, and dates.</p>
185184 </div>
186185{:else}
186186+187187+ <!-- Archive header with stats -->
188188+ <ArchiveHeader {groupedByYear} />
189189+187190 <!-- Year tabs with animated indicator -->
188191 <YearTabs {groupedByYear} bind:activeYear />
189192