summaryrefslogtreecommitdiffstats
path: root/src/pages/index.tsx
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2026-07-22 19:40:59 +0200
committerVolpeon <git@volpeon.ink>2026-07-22 19:40:59 +0200
commitc1e28224aa2e1450031669d9a7e359b63e04687d (patch)
tree68f3d8905c763a91f68001d868197effa92adafa /src/pages/index.tsx
downloadcorvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.gz
corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.bz2
corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.zip
Init
Diffstat (limited to 'src/pages/index.tsx')
-rw-r--r--src/pages/index.tsx64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
new file mode 100644
index 0000000..b1581b7
--- /dev/null
+++ b/src/pages/index.tsx
@@ -0,0 +1,64 @@
1import { BaseLayout } from "$/ui/base/BaseLayout.tsx";
2import { ReleaseCard } from "$/ui/components/ReleaseCard.tsx";
3import { SiteHeader } from "$/ui/components/SiteHeader.tsx";
4import { CardList } from "$/ui/layouts/CardList.tsx";
5import { Container } from "$/ui/layouts/Container.tsx";
6import { Button } from "$/ui/objects/Button.tsx";
7import { Divider } from "$/ui/objects/Divider.tsx";
8import { Heading } from "$/ui/objects/Heading.tsx";
9import { Icon } from "$/ui/objects/Icon.tsx";
10import site from "@/corvos.config.ts";
11
12export const template = site.$.template({ type: "home" }, (page, pages) => {
13 const query = site.$.query(pages);
14 const releasesIndex = query.type(".html").match({ type: "releases-index" }).one();
15 const releases = query.type(".html").match({ type: "release" }).many().toArray();
16
17 return (
18 <BaseLayout page={page}>
19 <SiteHeader
20 url={page.url}
21 sm={
22 <div class="l-media__block l-media__block--main">
23 <Heading class="u-mbs-0 u-elp">{page.data.title}</Heading>
24 </div>
25 }
26 />
27
28 <Container fixed="150" pad-inline pad-block class="c-home-banner">
29 <Heading as="h1" class="c-home-banner__intro">
30 <strong class="o-heading__highlight">
31 <a class="p-name u-url u-uid" href={site.$.url("", true)}>
32 Corvos
33 </a>
34 </strong>{" "}
35 &ndash; A static site generator for Deno.
36 </Heading>
37
38 <div class="u-mbs-400 c-subtitle">{{ __html: page.content }}</div>
39
40 <div class="u-mbs-700">
41 <Button
42 href={releasesIndex.url}
43 post={<Icon icon="arrow-right" variant="bold" />}
44 size="xl"
45 variant="primary"
46 wide
47 >
48 Releases
49 </Button>
50 </div>
51 </Container>
52
53 <Divider level="faint" />
54
55 <Container class="u-mbs-neutralize" fixed="150" pad-block pad-inline>
56 <CardList keyboard-nav>
57 {releases.map((page) => (
58 <ReleaseCard page={page} heading-level="h3" list />
59 ))}
60 </CardList>
61 </Container>
62 </BaseLayout>
63 );
64});