summaryrefslogtreecommitdiff
path: root/src/layouts
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-07-21 21:56:55 +0300
committerDawid Rycerz <dawid@rycerz.xyz>2025-07-21 21:56:55 +0300
commitc735556726e75428550a3d28a2cf58e2c8490b7d (patch)
treefd0ae29d1636b825abeedff6b99d3376bb383135 /src/layouts
Initial template
Diffstat (limited to 'src/layouts')
-rw-r--r--src/layouts/LandingLayout.astro35
-rw-r--r--src/layouts/Layout.astro48
-rw-r--r--src/layouts/MarkdownLayout.astro28
-rw-r--r--src/layouts/PageLayout.astro31
4 files changed, 142 insertions, 0 deletions
diff --git a/src/layouts/LandingLayout.astro b/src/layouts/LandingLayout.astro
new file mode 100644
index 0000000..0554afa
--- /dev/null
+++ b/src/layouts/LandingLayout.astro
@@ -0,0 +1,35 @@
+---
+import PageLayout from '~/layouts/PageLayout.astro';
+import Header from '~/components/widgets/Header.astro';
+
+import { headerData } from '~/navigation';
+import type { MetaData } from '~/types';
+
+export interface Props {
+ metadata?: MetaData;
+}
+
+const { metadata } = Astro.props;
+---
+
+<PageLayout metadata={metadata}>
+ <Fragment slot="announcement">
+ <slot name="announcement" />
+ </Fragment>
+ <Fragment slot="header">
+ <slot name="header">
+ <Header
+ links={headerData?.links[2] ? [headerData.links[2]] : undefined}
+ actions={[
+ {
+ text: 'Download',
+ href: 'https://github.com/onwidget/astrowind',
+ },
+ ]}
+ showToggleTheme
+ position="right"
+ />
+ </slot>
+ </Fragment>
+ <slot />
+</PageLayout>
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
new file mode 100644
index 0000000..524a26f
--- /dev/null
+++ b/src/layouts/Layout.astro
@@ -0,0 +1,48 @@
+---
+import '~/assets/styles/tailwind.css';
+
+import { I18N } from 'astrowind:config';
+
+import CommonMeta from '~/components/common/CommonMeta.astro';
+import Favicons from '~/components/Favicons.astro';
+import CustomStyles from '~/components/CustomStyles.astro';
+import ApplyColorMode from '~/components/common/ApplyColorMode.astro';
+import Metadata from '~/components/common/Metadata.astro';
+import SiteVerification from '~/components/common/SiteVerification.astro';
+import Analytics from '~/components/common/Analytics.astro';
+import BasicScripts from '~/components/common/BasicScripts.astro';
+
+// Comment the line below to disable View Transitions
+import { ClientRouter } from 'astro:transitions';
+
+import type { MetaData as MetaDataType } from '~/types';
+
+export interface Props {
+ metadata?: MetaDataType;
+}
+
+const { metadata = {} } = Astro.props;
+const { language, textDirection } = I18N;
+---
+
+<!doctype html>
+<html lang={language} dir={textDirection} class="2xl:text-[20px]">
+ <head>
+ <CommonMeta />
+ <Favicons />
+ <CustomStyles />
+ <ApplyColorMode />
+ <Metadata {...metadata} />
+ <SiteVerification />
+ <Analytics />
+
+ <!-- Comment the line below to disable View Transitions -->
+ <ClientRouter fallback="swap" />
+ </head>
+
+ <body class="antialiased text-default bg-page tracking-tight">
+ <slot />
+
+ <BasicScripts />
+ </body>
+</html>
diff --git a/src/layouts/MarkdownLayout.astro b/src/layouts/MarkdownLayout.astro
new file mode 100644
index 0000000..ae6e9b0
--- /dev/null
+++ b/src/layouts/MarkdownLayout.astro
@@ -0,0 +1,28 @@
+---
+import Layout from '~/layouts/PageLayout.astro';
+
+import type { MetaData } from '~/types';
+
+export interface Props {
+ frontmatter: {
+ title?: string;
+ };
+}
+
+const { frontmatter } = Astro.props;
+
+const metadata: MetaData = {
+ title: frontmatter?.title,
+};
+---
+
+<Layout metadata={metadata}>
+ <section class="px-4 py-16 sm:px-6 mx-auto lg:px-8 lg:py-20 max-w-4xl">
+ <h1 class="font-bold font-heading text-4xl md:text-5xl leading-tighter tracking-tighter">{frontmatter.title}</h1>
+ <div
+ class="mx-auto prose prose-lg max-w-4xl dark:prose-invert dark:prose-headings:text-slate-300 prose-md prose-headings:font-heading prose-headings:leading-tighter prose-headings:tracking-tighter prose-headings:font-bold prose-a:text-blue-600 dark:prose-a:text-blue-400 prose-img:rounded-md prose-img:shadow-lg mt-8"
+ >
+ <slot />
+ </div>
+ </section>
+</Layout>
diff --git a/src/layouts/PageLayout.astro b/src/layouts/PageLayout.astro
new file mode 100644
index 0000000..e3bc4da
--- /dev/null
+++ b/src/layouts/PageLayout.astro
@@ -0,0 +1,31 @@
+---
+import Layout from '~/layouts/Layout.astro';
+import Header from '~/components/widgets/Header.astro';
+import Footer from '~/components/widgets/Footer.astro';
+import Announcement from '~/components/widgets/Announcement.astro';
+
+import { headerData, footerData } from '~/navigation';
+
+import type { MetaData } from '~/types';
+
+export interface Props {
+ metadata?: MetaData;
+}
+
+const { metadata } = Astro.props;
+---
+
+<Layout metadata={metadata}>
+ <slot name="announcement">
+ <Announcement />
+ </slot>
+ <slot name="header">
+ <Header {...headerData} isSticky showRssFeed showToggleTheme />
+ </slot>
+ <main>
+ <slot />
+ </main>
+ <slot name="footer">
+ <Footer {...footerData} />
+ </slot>
+</Layout>