diff --git a/apps/marketing/src/layouts/BlogPostLayout.astro b/apps/marketing/src/layouts/BlogPostLayout.astro index 6a244d6fff..11b5f8e9a0 100644 --- a/apps/marketing/src/layouts/BlogPostLayout.astro +++ b/apps/marketing/src/layouts/BlogPostLayout.astro @@ -1,5 +1,5 @@ --- -import Layout from "./Layout.astro"; +import RailLayout from "./RailLayout.astro"; interface Props { title: string; @@ -11,17 +11,9 @@ interface Props { authorAvatar: string; } -const { - title, - description, - date, - author, - authorHandle, - authorRole, - authorAvatar, -} = Astro.props; +const { title, description, date, author, authorHandle, authorRole, authorAvatar } = + Astro.props; -const GH = "https://github.com/UsefulSoftwareCo/executor"; const authorX = `https://x.com/${authorHandle}`; const formattedDate = date.toLocaleDateString("en-US", { @@ -36,147 +28,29 @@ const formattedDate = date.toLocaleDateString("en-US", { const isoDate = date.toISOString(); --- - -
- {/* Graph-paper pattern + fade behind the header, matching the homepage */} -
+ +
+
+ ← Writing +

{title}

+

{description}

+ + + + {author} + {authorRole} · + + +
+ +
+
-
-
- -
- {/* ─── NAV ─── */} - - - {/* ─── HEADER ─── */} -
-
- ← Blog -

- {title} -

-

- {description} -

-
- - {author} - -
- {author} -
- {authorRole} · -
-
-
-
-
- {/* ─── ARTICLE ─── */} -
-
- -
-
- - {/* ─── BOTTOM CTA ─── */} -
-
-

- Connect any agent to everything. -

- -
-
- - {/* ─── FOOTER ─── */} - -
-
-
+
+

+ More writing · Back to Executor +

+
+ + diff --git a/apps/marketing/src/layouts/RailLayout.astro b/apps/marketing/src/layouts/RailLayout.astro new file mode 100644 index 0000000000..71a32b1e61 --- /dev/null +++ b/apps/marketing/src/layouts/RailLayout.astro @@ -0,0 +1,49 @@ +--- +// The site shell: sticky rail on the left, one centred frame, footer at the +// bottom of the body column. The homepage, pricing, and blog all use it. +// Prerendered pages resolve the star count once at build time. +import Layout from "./Layout.astro"; +import RailB from "../components/variants/rail-b.astro"; +import { getStars, formatStars } from "../lib/github"; +import "../styles/variants/doc.css"; + +interface Props { + title: string; + description: string; + current?: "home" | "pricing" | "blog"; +} +const { title, description, current = "home" } = Astro.props; + +const GH = "https://github.com/UsefulSoftwareCo/executor"; +const stars = await getStars(); +--- + + +
+
+
+ +
+
+ + + +
+
+
+
diff --git a/apps/marketing/src/pages/blog/index.astro b/apps/marketing/src/pages/blog/index.astro index 1549b9e799..a81839b878 100644 --- a/apps/marketing/src/pages/blog/index.astro +++ b/apps/marketing/src/pages/blog/index.astro @@ -1,10 +1,8 @@ --- export const prerender = true; -import Layout from "../../layouts/Layout.astro"; +import RailLayout from "../../layouts/RailLayout.astro"; import { getCollection } from "astro:content"; -const GH = "https://github.com/UsefulSoftwareCo/executor"; - const posts = (await getCollection("blog", ({ data }) => !data.draft)).sort( (a, b) => b.data.date.getTime() - a.data.date.getTime(), ); @@ -20,126 +18,29 @@ const fmt = (date: Date) => }); --- - -
-
-
-
-
- -
- {/* ─── NAV ─── */} - - - {/* ─── HEADER ─── */} -
-
-

- Blog -

-

- Latest news and updates from Executor -

-
-
- - {/* ─── POST LIST ─── */} -
-
- { - posts.length === 0 ? ( -

No posts yet. Check back soon.

- ) : ( - - ) - } -
-
- - {/* ─── FOOTER ─── */} - -
-
-
+ +
+
+

Writing

+

Notes from building Executor.

+
+ + { + posts.length === 0 ? ( +

No posts yet. Check back soon.

+ ) : ( + + ) + } +
+
diff --git a/apps/marketing/src/pages/index.astro b/apps/marketing/src/pages/index.astro index 6000f5db44..22b6cbe2e7 100644 --- a/apps/marketing/src/pages/index.astro +++ b/apps/marketing/src/pages/index.astro @@ -1,10 +1,8 @@ --- -import Layout from "../layouts/Layout.astro"; +import RailLayout from "../layouts/RailLayout.astro"; // Imported so Vite emits it as a hashed build asset (served from /_astro/...); // the deploy pipeline does not pick up newly added /public files. -import { getStars, formatStars } from "../lib/github"; import { setupPrompt } from "../content/site-copy"; -import RailB from "../components/variants/rail-b.astro"; import DocBody from "../components/variants/doc-body.astro"; const GH = "https://github.com/UsefulSoftwareCo/executor"; @@ -12,57 +10,16 @@ const GH = "https://github.com/UsefulSoftwareCo/executor"; // /api/* is app-owned (apps/cloud/src/app-paths.ts), so this hits the WorkOS // login flow directly. Returning users land here; new users use Get started. const SIGN_IN = "/api/auth/login"; -const stars = await getStars(); --- - -
- {/* Graph-paper hero texture: grayscale (ink-masked), faded into the surface - at the bottom. Part of the registry-grade language, not a colored effect. */} -
-
-
-
+ + + -
-
-
- - - - {/* ─── FOOTER ─── */} - -
-
-
-