1
- import { GetStaticProps , NextPage } from "next" ;
2
- import Link from "next/link" ;
1
+ import { NextPage , GetStaticProps } from "next" ;
3
2
import Layout from "@layout/layout-01" ;
4
3
import SEO from "@components/seo/page-seo" ;
4
+ import ProgramCard from "@components/program-card" ;
5
+ import HeroArea from "@containers/hero/layout-07" ;
6
+
5
7
import { getAllMediaPosts } from "../lib/mdx-pages" ;
6
8
7
9
type Program = {
@@ -21,33 +23,47 @@ type PageWithLayout = NextPage<TProps> & {
21
23
Layout : typeof Layout ;
22
24
} ;
23
25
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
+
24
44
const ProgramsPage : PageWithLayout = ( { allPrograms, page } ) => {
25
45
return (
26
46
< >
27
47
< 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 >
49
56
</ 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 >
51
67
</ >
52
68
) ;
53
69
} ;
@@ -60,7 +76,7 @@ export const getStaticProps: GetStaticProps = async () => {
60
76
props : {
61
77
allPrograms,
62
78
page : {
63
- title : "Programs" ,
79
+ title : "Our Programs" ,
64
80
} ,
65
81
layout : {
66
82
headerShadow : true ,
0 commit comments