Docs
Installation
A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its badge, button, media-slot dependencies and any missing npm packages, and installs them straight into your project.
npx shadcn add https://staaarter.com/r/study-abroad-hero.jsonPrefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/education/education9.tsx instead.
Usage
The file also exports education9Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.
import { Education9, education9Demo } from "@/components/blocks/education/education9"; export default function Page() { return <Education9 {...education9Demo} />; }
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| badge | { label: string; variant?: BadgeVariant } | none | Pill above the heading; only rendered when badge is truthy. |
| heading | ReactNode | none | Hero heading. |
| description | string | undefined | Supporting copy under the heading. |
| highlights | HighlightItem[] | [] | Icon + label row rendered below the destination cards. |
| destinations | DestinationCard[] | none | Destination cards, each with a photo, city/country, and duration badge. |
| buttons | ButtonItem[] | [] | CTA buttons under the heading. |
| className | string | none | Extra classes for the outer section element. |
Types
type HighlightItem = { icon: LucideIcon; label: string }; type DestinationCard = { city: string; country: string; duration: string; image: { src: string; alt: string }; }; type ButtonItem = { label: string; href?: string; variant?: "default" | "secondary" | "outline" | "ghost" | "link" | "destructive"; };
Behavior notes
- Purely presentational: there is no client state, no carousel, and no filtering. Every destination card and highlight renders unconditionally from props.
- The duration badge is absolutely positioned over the top-left corner of each destination photo.
- The destinations grid is a fixed responsive 1/2/4-column layout regardless of item count; 3 items leaves a gap in the last row on large screens rather than reflowing to 3 columns.
- Each highlight's icon is passed directly as a prop (a LucideIcon component reference) since this is a Server Component with no client boundary to cross.
- CTA buttons render as real next/link anchors via Button's render prop when href is set, but they don't perform any real navigation logic beyond that.
More Education Blocks
View all →Academy Course Cards
Academy section with an eyebrow, a two-column heading, and three course cards that float a lesson checklist above a category label, title, and lesson count.
Institutional Quick Facts
Quick facts grid displaying key institutional statistics with a large value, label, and short description per tile.
Global Partnerships Grid
Global partnerships section showcasing partner institutions with location details and yearly exchange statistics.
Mission and Vision Statement
Side-by-side mission and vision text blocks with an inspirational leadership quote below.
Social Media Links Grid
Social media connection section with platform cards showing handle and follower count.
Education Social Proof
Social proof section pairing key stats (rating, enrollment, completion rate) with a featured student testimonial.