page.tsx 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import type { Metadata } from "next";
  2. import Link from "next/link";
  3. import { ArrowRightIcon } from "@/components/icons/arrow-right";
  4. import { PageHero } from "@/components/marketing/page-hero";
  5. import { buttonVariants } from "@/components/ui/button";
  6. import { cn } from "@/lib/utils";
  7. export const metadata: Metadata = {
  8. title: "For developers",
  9. description:
  10. "Build on krypco — docs, architecture, and a portal to follow hybrid transactions.",
  11. };
  12. const LINKS = [
  13. {
  14. href: "/portal/docs",
  15. title: "Docs",
  16. body: "SDK and API stubs as the surface solidifies.",
  17. },
  18. {
  19. href: "/portal/architecture",
  20. title: "Architecture",
  21. body: "Layers, relayer, and how anchors relate to private blocks.",
  22. },
  23. {
  24. href: "/portal/explorer",
  25. title: "Explorer",
  26. body: "Follow private execution → public anchor in the portal.",
  27. },
  28. ] as const;
  29. export default function DevelopersPage() {
  30. return (
  31. <>
  32. <PageHero
  33. eyebrow="For developers"
  34. title="Build on the hybrid path"
  35. description="The portal and docs are the working surface: understand the private and public layers, then follow real transaction lifecycle states as the network comes online."
  36. >
  37. <div className="flex flex-wrap gap-3">
  38. <Link
  39. href="/portal/docs"
  40. className={cn(buttonVariants({ size: "lg" }), "gap-2")}
  41. >
  42. Open docs
  43. <ArrowRightIcon size={15} />
  44. </Link>
  45. <Link
  46. href="/portal"
  47. className={cn(buttonVariants({ variant: "outline", size: "lg" }))}
  48. >
  49. Open portal
  50. </Link>
  51. </div>
  52. </PageHero>
  53. <section className="section-pad">
  54. <div className="mx-auto max-w-6xl px-5 lg:px-8">
  55. <ul className="divide-y divide-border rounded-2xl border border-border bg-card">
  56. {LINKS.map((item) => (
  57. <li key={item.href}>
  58. <Link
  59. href={item.href}
  60. className="flex flex-col gap-1 px-6 py-6 transition-colors hover:bg-muted/50 sm:flex-row sm:items-center sm:justify-between sm:gap-8"
  61. >
  62. <div>
  63. <p className="font-display text-lg font-semibold">
  64. {item.title}
  65. </p>
  66. <p className="mt-1 text-sm text-muted-foreground">
  67. {item.body}
  68. </p>
  69. </div>
  70. <ArrowRightIcon
  71. size={16}
  72. className="shrink-0 text-muted-foreground"
  73. />
  74. </Link>
  75. </li>
  76. ))}
  77. </ul>
  78. </div>
  79. </section>
  80. </>
  81. );
  82. }