263 lines · 9.7 KB
/**
 * Marketing copy for the dedicated feature pages. One entry per `/features/<slug>` page; the landing
 * page, the features index and the footer all derive their links from this list.
 */

import type { SnippetLanguage } from "~/lib/snippet-highlight";

export type DemoKey = "review" | "workflow" | "ai" | "editor" | "security" | "hosting";

export type FeatureDetail = {
  title: string;
  body: string;
  code?: { title: string; language: SnippetLanguage; source: string };
};

export type FeaturePage = {
  slug: string;
  /** Short name for links and navigation. */
  nav: string;
  /** Page headline: says what the feature is, plainly. */
  title: string;
  /** One or two sentences on what it does. Also the meta description. */
  lede: string;
  demo: DemoKey;
  highlights: ReadonlyArray<{ title: string; body: string }>;
  details: ReadonlyArray<FeatureDetail>;
};

const WORKFLOW_YAML = `name: CI
on:
  push:
    branches: [main]
  pull_request:
jobs:
  test:
    runs-on: cloudflare
    strategy:
      matrix:
        node: [22, 24]
    steps: