--- import MarketingLayout from "../layouts/MarketingLayout.astro"; import Hero from "../components/Hero.astro"; import FAQ from "../components/FAQ.astro"; import CTA from "../components/CTA.astro"; import { getCollection, type CollectionEntry } from "astro:content"; import { FeatureTabs, StackMarquee, Credibility, LighthouseScores, } from "../components/landing/index"; import { t } from "../i18n/ui"; const stackEntries = (await getCollection("stack")) .sort( (a: CollectionEntry<"stack">, b: CollectionEntry<"stack">) => a.data.order - b.data.order, ) .map((entry: CollectionEntry<"stack">) => entry.data); const locale = (Astro.currentLocale || "en") as "en"; const tabs = [ { id: "performance", icon: "zap", heading: "Performance", description: "A lightweight, static-first stack that ships minimal JavaScript and renders from Cloudflare's edge network.", points: [ "Static-first rendering by default", "Zero-JS islands architecture", "Edge delivery with smart caching", ], visual: "$ npm run build\n✓ 25 pages built in 6.4s\n→ Deployed to the edge", }, { id: "content", icon: "pen-line", heading: "Content", description: "Author in Markdown with a Git-based workflow. Blog, docs, and services are type-safe content collections.", points: [ "Type-safe Markdown collections", "Versioned and reviewed in Git", "Blog, docs, and service pages", ], visual: "src/content/\n├─ blog/\n├─ docs/\n├─ services/\n└─ pages/", }, { id: "growth", icon: "trending-up", heading: "Growth", description: "Everything search engines and social platforms need is generated for you on every build.", points: [ "Sitemap, RSS, and robots.txt", "Canonical URLs and JSON-LD", "Dynamic Open Graph images", ], visual: "\n\n