--- import { getCollection } from 'astro:content'; import FrontCard from '../components/FrontCard.astro'; import BaseLayout from '../layouts/BaseLayout.astro'; import { site } from '../site.config'; interface FrontPageItem { kind: string; title: string; description: string; href: string; date?: Date; meta?: string; image?: string; imageAlt?: string; tone: 'paper' | 'blue' | 'ink' | 'soft' | 'amend'; } const stories = (await getCollection('stories', ({ data }) => !data.draft)) .sort((a, b) => a.data.editorialOrder - b.data.editorialOrder); const toneCycle = ['blue', 'paper', 'ink', 'soft', 'amend', 'paper'] as const; const frontPageItems: FrontPageItem[] = stories .filter(({ data }) => data.homepage) .slice(0, 9) .map((entry, index) => ({ kind: entry.data.section, title: entry.data.title, description: entry.data.description, href: `/stories/${entry.id}`, date: index === 0 ? entry.data.published : undefined, meta: entry.data.tags.slice(0, 2).join(' ยท '), image: entry.data.image, imageAlt: entry.data.imageAlt, tone: entry.data.frontTone ?? (entry.data.image ? 'paper' : toneCycle[index % toneCycle.length]), })); const sizeCycle = ['wide', 'standard', 'compact', 'compact', 'compact'] as const; ---

{site.title}

{frontPageItems.map((item, index) => ( ))}