hybrid-journey.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const STEPS = [
  2. {
  3. n: "01",
  4. title: "Private execution",
  5. body: "Transactions run on a permissioned layer — fast finality, controlled access, confidential data where it belongs.",
  6. },
  7. {
  8. n: "02",
  9. title: "Commitment",
  10. body: "A relayer posts cryptographic commitments: state roots that prove what happened without exposing private detail.",
  11. },
  12. {
  13. n: "03",
  14. title: "Public anchor",
  15. body: "The public chain holds the proof. Anyone can verify the anchor; only permitted parties see the private payload.",
  16. },
  17. ] as const;
  18. export function HybridJourney() {
  19. return (
  20. <div>
  21. <div className="mb-10 h-px w-full journey-line opacity-70" aria-hidden />
  22. <ol className="grid gap-8 md:grid-cols-3 md:gap-6">
  23. {STEPS.map((step, i) => (
  24. <li key={step.n} className="relative">
  25. <p className="font-mono text-xs tabular-nums tracking-wider text-muted-foreground">
  26. {step.n}
  27. </p>
  28. <h3 className="font-display mt-3 text-xl font-semibold tracking-tight">
  29. {step.title}
  30. </h3>
  31. <p className="mt-2 text-sm leading-relaxed text-muted-foreground">
  32. {step.body}
  33. </p>
  34. {i < STEPS.length - 1 ? (
  35. <span
  36. aria-hidden
  37. className="absolute -right-3 top-8 hidden h-px w-6 journey-line md:block"
  38. />
  39. ) : null}
  40. </li>
  41. ))}
  42. </ol>
  43. </div>
  44. );
  45. }