page.tsx 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import type { Metadata } from "next";
  2. import Link from "next/link";
  3. import { PageHero } from "@/components/marketing/page-hero";
  4. import { PlaceholderNotice } from "@/components/marketing/placeholder-notice";
  5. import { buttonVariants } from "@/components/ui/button";
  6. import { cn } from "@/lib/utils";
  7. export const metadata: Metadata = {
  8. title: "Pricing",
  9. description: "krypco pricing — structure preview; final numbers coming later.",
  10. };
  11. const TIERS = [
  12. {
  13. name: "Explorer",
  14. price: "Free",
  15. note: "Preview",
  16. items: ["Public portal access", "Read explorer data", "Docs & architecture"],
  17. },
  18. {
  19. name: "Builder",
  20. price: "TBD",
  21. note: "Coming soon",
  22. items: ["API / SDK access", "Higher rate limits", "Support channel"],
  23. },
  24. {
  25. name: "Enterprise",
  26. price: "Custom",
  27. note: "Talk to us",
  28. items: ["Permissioned membership", "SLA & onboarding", "Dedicated path"],
  29. },
  30. ] as const;
  31. export default function PricingPage() {
  32. return (
  33. <>
  34. <PageHero
  35. eyebrow="Pricing"
  36. title="Clear structure. Honest placeholders."
  37. description="Final fees and packages are not published yet. This layout shows how pricing will be presented — without inventing numbers."
  38. />
  39. <section className="section-pad">
  40. <div className="mx-auto max-w-6xl px-5 lg:px-8">
  41. <PlaceholderNotice className="mb-10">
  42. Preview only — not live commercial offers. Contact us for early
  43. access conversations.
  44. </PlaceholderNotice>
  45. <div className="grid gap-5 md:grid-cols-3">
  46. {TIERS.map((tier) => (
  47. <article
  48. key={tier.name}
  49. className="flex flex-col rounded-2xl border border-border bg-card p-7"
  50. >
  51. <p className="text-xs font-medium uppercase tracking-[0.14em] text-muted-foreground">
  52. {tier.note}
  53. </p>
  54. <h2 className="font-display mt-2 text-2xl font-semibold">
  55. {tier.name}
  56. </h2>
  57. <p className="font-display mt-4 text-3xl font-semibold tabular-nums">
  58. {tier.price}
  59. </p>
  60. <ul className="mt-6 flex flex-1 flex-col gap-2.5 text-sm text-muted-foreground">
  61. {tier.items.map((item) => (
  62. <li key={item} className="flex gap-2">
  63. <span className="text-proof" aria-hidden>
  64. ·
  65. </span>
  66. {item}
  67. </li>
  68. ))}
  69. </ul>
  70. </article>
  71. ))}
  72. </div>
  73. <div className="mt-12 text-center">
  74. <Link href="/contact" className={cn(buttonVariants({ size: "lg" }))}>
  75. Ask about access
  76. </Link>
  77. </div>
  78. </div>
  79. </section>
  80. </>
  81. );
  82. }