1- import { GetStaticProps , NextPage } from "next" ;
2- import Link from "next/link" ;
1+ import { NextPage , GetStaticProps } from "next" ;
32import Layout from "@layout/layout-01" ;
43import SEO from "@components/seo/page-seo" ;
4+ import ProgramCard from "@components/program-card" ;
5+ import HeroArea from "@containers/hero/layout-07" ;
6+
57import { getAllMediaPosts } from "../lib/mdx-pages" ;
68
79type Program = {
@@ -21,33 +23,47 @@ type PageWithLayout = NextPage<TProps> & {
2123 Layout : typeof Layout ;
2224} ;
2325
26+ const heroData = {
27+ items : [
28+ {
29+ id : 1 ,
30+ images : [
31+ {
32+ src : "https://res.cloudinary.com/vetswhocode/image/upload/v1746590043/9_ahefah.png" ,
33+ } ,
34+ ] ,
35+ headings : [
36+ { id : 1 , content : "Our Programs" } ,
37+ { id : 2 , content : "What we do to be the tech arm of veteran support" } ,
38+ ] ,
39+ texts : [ ] ,
40+ } ,
41+ ] ,
42+ } ;
43+
2444const ProgramsPage : PageWithLayout = ( { allPrograms, page } ) => {
2545 return (
2646 < >
2747 < SEO title = { `${ page . title } | Vets Who Code` } />
28- < div className = "tw-container tw-py-10 md:tw-py-15" >
29- < h1 className = "tw-mb-10 tw-text-center tw-text-3xl md:tw-text-4xl" > { page . title } </ h1 >
30- < div className = "tw-grid tw-grid-cols-1 tw-gap-8 md:tw-grid-cols-2 lg:tw-grid-cols-2" >
31- { allPrograms . map ( ( program ) => (
32- < div
33- key = { program . slug }
34- className = "tw-hover:tw-scale-105 tw-flex tw-h-full tw-transform tw-flex-col tw-justify-between tw-rounded-xl tw-border tw-border-gray-100 tw-bg-white tw-p-8 tw-shadow-md tw-transition"
35- >
36- < h2 className = "tw-mb-2 tw-text-2xl tw-font-semibold" >
37- { program . title }
38- </ h2 >
39- < p className = "tw-mb-4 tw-text-gray-700" > { program . description } </ p >
40- < Link
41- href = { `/programs/${ program . slug } ` }
42- className = "tw-focus:tw-outline-none tw-focus:tw-ring-2 tw-focus:tw-ring-blue-400 tw-mt-auto tw-inline-block tw-font-medium tw-text-blue-700 tw-underline"
43- aria-label = { `Learn more about ${ program . title } ` }
44- >
45- Learn more
46- </ Link >
47- </ div >
48- ) ) }
48+ < HeroArea data = { heroData } />
49+ < main className = "tw-container tw-mx-auto tw-max-w-6xl tw-px-4" >
50+ < div className = "tw-mx-auto tw-mb-12 tw-mt-16 tw-max-w-4xl" >
51+ < p className = "tw-text-center tw-text-lg tw-text-gray-700" >
52+ Our programs are designed to empower veterans with real-world skills,
53+ mentorship, and a supportive community—helping you transition, grow, and
54+ lead in tech.
55+ </ p >
4956 </ div >
50- </ div >
57+ { /* Program Cards Grid - project card style */ }
58+ < section className = "tw-mb-16" >
59+ < div className = "tw-grid tw-gap-8 sm:tw-grid-cols-2 lg:tw-grid-cols-3" >
60+ { allPrograms . map ( ( program ) => (
61+ < ProgramCard key = { program . slug } program = { program } />
62+ ) ) }
63+ </ div >
64+ </ section >
65+ < hr className = "tw-my-12 tw-border-t tw-border-gray-200" />
66+ </ main >
5167 </ >
5268 ) ;
5369} ;
@@ -60,7 +76,7 @@ export const getStaticProps: GetStaticProps = async () => {
6076 props : {
6177 allPrograms,
6278 page : {
63- title : "Programs" ,
79+ title : "Our Programs" ,
6480 } ,
6581 layout : {
6682 headerShadow : true ,
0 commit comments