@@ -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,32 @@ export const Step2 = () => {
1231
1332 return (
1433 < OnboardingContainer >
15- < h2 className = "text-2xl font-semibold tracking-tight" > Step 2</ h2 >
34+ < p className = "text-base text-muted-foreground" >
35+ A quick look at what Cosmo does and why it matters for your team.
36+ </ p >
37+
38+ < div className = "grid w-full grid-cols-1 gap-4 text-left sm:grid-cols-2" >
39+ < FeatureCard icon = { < Component1Icon className = "size-5 text-primary" /> } title = "Many services. One graph." >
40+ GraphQL Federation lets separate services feel like one API. With Cosmo, developers get one place to query
41+ data instead of stitching together calls across many backends.
42+ </ FeatureCard >
43+
44+ < FeatureCard icon = { < RocketIcon className = "size-5 text-primary" /> } title = "Teams move without bottlenecks." >
45+ Each team can own and evolve its part of the graph on its own schedule. Cosmo is built so service teams can
46+ ship independently while platform teams keep visibility and control.
47+ </ FeatureCard >
48+
49+ < FeatureCard icon = { < CheckCircledIcon className = "size-5 text-primary" /> } title = "Changes stay safe." >
50+ Cosmo helps catch unsafe schema changes before they reach production. That means teams can iterate faster
51+ without surprising the apps and clients that rely on the graph.
52+ </ FeatureCard >
53+
54+ < FeatureCard icon = { < ActivityLogIcon className = "size-5 text-primary" /> } title = "See what's happening." >
55+ Built-in metrics and OpenTelemetry tracing show how requests move through the graph and its services. When
56+ something slows down or fails, you can find it quickly and improve with confidence.
57+ </ FeatureCard >
58+ </ div >
59+
1660 < OnboardingNavigation onSkip = { setSkipped } backHref = "/onboarding/1" forward = { { href : '/onboarding/3' } } />
1761 </ OnboardingContainer >
1862 ) ;
0 commit comments