Files
website-astro-stefanimhoff.de/src/pages/index.astro
2026-01-29 20:58:57 +01:00

86 lines
2.9 KiB
Plaintext

---
import type { CollectionEntry } from 'astro:content';
type JournalType = CollectionEntry<'journal'>;
import { getCollection } from 'astro:content';
import { formatPosts, isProduction, sortMarkdownByDate } from '../utils';
import { site } from '../data/site';
import GridLayout from '../layouts/GridLayout.astro';
import PageTitle from '../components/PageTitle.astro';
import Image from '../components/Image.astro';
import JournalList from '../components/JournalList.astro';
import Headline from '../components/Headline.astro';
import MoreLink from '../components/MoreLink.astro';
import { Content as AboutMe } from '../text/homepage/about-me.mdx';
import { Content as WhatIDo } from '../text/homepage/what-i-do.mdx';
import { Content as Journal } from '../text/homepage/journal.mdx';
import { mapping } from '../mdx-components';
const allPosts = await getCollection('journal', ({ data }: JournalType) => !data.draft);
const formattedLatest = formatPosts(allPosts, { limit: 6 });
const title = 'Stefan Imhoff';
const description = 'Web Developer from Hamburg, Germany';
const rssPosts = await Astro.glob('../content/journal/**/*.mdx');
rssPosts.sort(sortMarkdownByDate);
---
<GridLayout title={title} description={description} grid="fullsize" class="grid" innerGrid>
<PageTitle class="!text-6 sm:!text-7">
{site.title}
</PageTitle>
<div
class="col-start-1 col-end-19 md:col-start-3 md:col-end-10 xl:col-end-12 [&_div]:!border-x-0 [&_div]:!mbe-0 [&_div]:md:!border-s-0"
>
<Image
alt="Bonsai"
class="[&_img]:rounded-none md:[&_img]:rounded-2"
loading="eager"
role="presentation"
src="/assets/images/cover/bonsai.webp"
fullHeight
/>
</div>
<article
class="col-start-2 col-end-18 row-start-3 self-center md:col-start-11 md:col-end-17 md:row-start-2 xl:col-start-13 xl:col-end-17"
>
<Headline>About Me</Headline>
<AboutMe components={mapping} />
<MoreLink href="/about/" text="Read more about me" />
</article>
<article
class="col-start-2 col-end-18 row-start-4 md:col-start-3 md:col-end-17 md:row-start-3 xl:col-start-5 xl:col-end-15"
>
<Headline>What I Do</Headline>
<div class="columns-1 gap-[2.775vw] mbe-10 md:columns-2 [&_p:last-of-type]:mbe-0">
<WhatIDo components={mapping} />
</div>
<MoreLink href="/projects/" text="See what I do" />
</article>
<article
class="col-start-2 col-end-18 md:col-start-6 md:col-end-14 xl:col-start-7 xl:col-end-13"
>
<Headline>Journal</Headline>
<Journal components={mapping} />
<MoreLink href="/journal/" text="See all Journal Entries" />
</article>
<article
class="min-[1794px]:[&_li:block col-start-2 col-end-18 grid w-full grid-cols-18 gap-y-gap mbe-12 min-[1097px]:[&_li:nth-child(n+5)]:hidden min-[1410px]:[&_li:nth-child(n+5)]:block min-[1411px]:[&_li:nth-child(n+6)]:hidden min-[1793px]:[&_li:nth-child(n+6)]:block"
data-pagefind-ignore
aria-label="Latest essays"
>
<JournalList entries={formattedLatest} />
</article>
</GridLayout>