179 lines · 6.9 KB
import { createFileRoute, Link, useNavigate } from "@tanstack/react-router";
import { dismissProNudge, getProPitch } from "~/fns/pro";
import { useAction } from "~/hooks/use-action";
import { MarketingHero } from "~/components/marketing/MarketingHero";
import { DisplayTitle } from "~/components/marketing/DisplayTitle";
import { ProBadge } from "~/components/billing/ProBadge";
import { PageContainer } from "~/ui/PageContainer";
import { buttonClass } from "~/ui/Button";
import { formatQuantity, meterDef } from "~/lib/meters";
import type { MeterId } from "~/lib/meters";
import { seo } from "~/utils/seo";

export const Route = createFileRoute("/pricing")({
  loader: () => getProPitch(),
  head: ({ match }) => ({
    meta: seo({
      origin: match.context.publicUrl,
      path: "/pricing",
      title: "gitfor Pro",
      description: "More CI, more storage, hourly mirroring and AI merge fixes, and a forge that stays independent.",
    }),
  }),
  component: PricingPage,
});

type Perk = { title: string; body: string; meters: MeterId[] };

const PERKS: Perk[] = [
  {
    title: "CI that keeps up",
    body: "More cloud runner hours, plus bigger standard-2 runners for the builds that need them, and a roomier Actions cache so warm builds stay warm.",
    meters: ["compute.runner", "compute.runner_large", "storage.ci_cache"],
  },
  {
    title: "Room for the big repos",
    body: "Generous repository and LFS storage, so the monorepo, the design assets and the test fixtures can all move in.",
    meters: ["storage.artifacts", "storage.lfs", "network.lfs"],
  },
  {
    title: "A browser editor you can live in",