@@ -2,6 +2,25 @@ import { useEffect } from 'react';
22import { useOnboarding } from '@/hooks/use-onboarding' ;
33import { OnboardingContainer } from './onboarding-container' ;
44import { OnboardingNavigation } from './onboarding-navigation' ;
5+ import { ActivityLogIcon , CheckCircledIcon , Component1Icon , RocketIcon } from '@radix-ui/react-icons' ;
6+
7+ const FeatureCard = ( {
8+ icon,
9+ title,
10+ children,
11+ } : {
12+ icon : React . ReactNode ;
13+ title : string ;
14+ children : React . ReactNode ;
15+ } ) => {
16+ return (
17+ < div className = "flex flex-col gap-3 rounded-lg border bg-card/50 p-5" >
18+ < div className = "flex size-9 items-center justify-center rounded-md bg-primary/10" > { icon } </ div >
19+ < h3 className = "text-sm font-semibold" > { title } </ h3 >
20+ < p className = "text-[0.8rem] leading-relaxed text-muted-foreground" > { children } </ p >
21+ </ div >
22+ ) ;
23+ } ;
524
625export const Step2 = ( ) => {
726 const { setStep, setSkipped } = useOnboarding ( ) ;
@@ -12,7 +31,30 @@ export const Step2 = () => {
1231
1332 return (
1433 < OnboardingContainer >
15- < h2 className = "text-2xl font-semibold tracking-tight" > Step 2</ h2 >
34+ < p className = "text-sm text-muted-foreground" > A quick look at what Cosmo does and why it matters for your team.</ p >
35+
36+ < div className = "grid w-full grid-cols-1 gap-4 text-left sm:grid-cols-2" >
37+ < FeatureCard icon = { < Component1Icon className = "size-5 text-primary" /> } title = "Many services. One graph." >
38+ GraphQL Federation lets separate services feel like one API. With Cosmo, developers get one place to query
39+ data instead of stitching together calls across many backends.
40+ </ FeatureCard >
41+
42+ < FeatureCard icon = { < RocketIcon className = "size-5 text-primary" /> } title = "Teams move without bottlenecks." >
43+ Each team can own and evolve its part of the graph on its own schedule. Cosmo is built so service teams can
44+ ship independently while platform teams keep visibility and control.
45+ </ FeatureCard >
46+
47+ < FeatureCard icon = { < CheckCircledIcon className = "size-5 text-primary" /> } title = "Changes stay safe." >
48+ Cosmo helps catch unsafe schema changes before they reach production. That means teams can iterate faster
49+ without surprising the apps and clients that rely on the graph.
50+ </ FeatureCard >
51+
52+ < FeatureCard icon = { < ActivityLogIcon className = "size-5 text-primary" /> } title = "See what's happening." >
53+ Built-in metrics and OpenTelemetry tracing show how requests move through the graph and its services. When
54+ something slows down or fails, you can find it quickly and improve with confidence.
55+ </ FeatureCard >
56+ </ div >
57+
1658 < OnboardingNavigation onSkip = { setSkipped } backHref = "/onboarding/1" forward = { { href : '/onboarding/3' } } />
1759 </ OnboardingContainer >
1860 ) ;
0 commit comments