44
55< div class ="project-detail-page bg-white dark:bg-gray-900 min-h-screen ">
66 < div class ="container mx-auto px-4 py-16 ">
7+
8+ <!-- Breadcrumb nav to parent project -->
9+ {%- assign page_path_parts = page.path | split: "/" -%}
10+ {%- assign parent_dir = page_path_parts | slice: 0, 2 | join: "/" -%}
11+ {%- assign parent_filename = page_path_parts[1] | append: ".md" -%}
12+ {%- assign parent_path = parent_dir | append: "/" | append: parent_filename -%}
13+ {%- assign parent_project = site.projects | where: "path", parent_path | where: "layout", "project-main" | first -%}
14+
15+ <!-- {%- if parent_project -%}
16+ <div class="max-w-4xl mx-auto mb-4">
17+ <nav class="flex items-center text-sm text-gray-600 dark:text-gray-400">
18+ <a href="{{ parent_project.url | relative_url }}" class="flex items-center hover:text-red-600 dark:hover:text-red-400 transition-colors">
19+ <svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
20+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>
21+ </svg>
22+ {{ parent_project.title }}
23+ </a>
24+ <span class="mx-2">/</span>
25+ <span class="text-gray-800 dark:text-gray-200">{{ page.title }}</span>
26+ </nav>
27+ </div>
28+ {%- endif -%} -->
29+
730 < div class ="max-w-4xl mx-auto mb-6 mt-6 ">
31+ {%- if parent_project -%}
32+ < h1 class ="text-center text-4xl font-bold md:text-5xl text-gray-800 dark:text-gray-100 mb-6 ">
33+ < a href ="{{ parent_project.url | relative_url }} " class ="text-2xl font-semibold md:text-3xl text-gray-600 dark:text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors ">
34+ {{ parent_project.title }}
35+ </ a >
36+ < span class ="text-2xl font-semibold md:text-3xl text-gray-600 dark:text-gray-400 "> / </ span >
37+ {{ page.title }}
38+ </ h1 >
39+ {%- else -%}
840 < h1 class ="text-center text-4xl md:text-5xl font-bold text-gray-800 dark:text-gray-100 mb-6 "> {{ page.title }}</ h1 >
41+ {%- endif -%}
942 </ div >
1043
1144 <!-- {%- if page.thumbnail -%}
@@ -22,90 +55,7 @@ <h1 class="text-center text-4xl md:text-5xl font-bold text-gray-800 dark:text-gr
2255 </ div >
2356 {%- endif -%}
2457
25- {%- if page.milestones -%}
26- < div class ="max-w-4xl mx-auto mb-16 ">
27- < h2 class ="text-3xl font-bold text-gray-800 dark:text-gray-100 mb-12 text-center "> Timeline</ h2 >
28-
29- < div class ="timeline relative ">
30- <!-- Center line -->
31- < div class ="absolute left-1/2 transform -translate-x-1/2 w-0.5 h-full bg-gray-300 dark:bg-gray-600 "> </ div >
32-
33- {%- for milestone in page.milestones -%}
34- {%- assign index = forloop.index | modulo: 2 -%}
35-
36- {%- if index == 1 -%}
37- <!-- Left side milestone (odd items) -->
38- < div class ="timeline-item relative mb-8 ">
39- < div class ="flex items-start ">
40- <!-- Content on left -->
41- < div class ="w-1/2 pr-8 text-right ">
42- < div class ="timeline-date text-md font-semibold text-red-600 dark:text-red-400 mb-2 ">
43- {{ milestone.date | date: "%B %d, %Y" }}
44- </ div >
45-
46- {%- if milestone.title -%}
47- < h3 class ="text-xl font-bold text-gray-800 dark:text-gray-100 mb-3 "> {{ milestone.title }}</ h3 >
48- {%- endif -%}
49-
50- {%- if milestone.image -%}
51- < div class ="mb-4 ">
52- < img src ="{{ milestone.image | relative_url }} "
53- alt ="{{ milestone.title }} "
54- class ="w-full rounded-lg shadow-md ml-auto ">
55- </ div >
56- {%- endif -%}
57-
58- {%- if milestone.description -%}
59- < p class ="text-gray-700 dark:text-gray-300 "> {{ milestone.description }}</ p >
60- {%- endif -%}
61- </ div >
62-
63- <!-- Center dot -->
64- < div class ="absolute left-1/2 transform -translate-x-1/2 w-4 h-4 rounded-full bg-red-600 dark:bg-red-400 border-4 border-white dark:border-gray-900 z-10 mt-1 "> </ div >
65-
66- <!-- Empty space on right -->
67- < div class ="w-1/2 pl-8 "> </ div >
68- </ div >
69- </ div >
70- {%- else -%}
71- <!-- Right side milestone (even items) -->
72- < div class ="timeline-item relative mb-8 -mt-32 ">
73- < div class ="flex items-start ">
74- <!-- Empty space on left -->
75- < div class ="w-1/2 pr-8 "> </ div >
76-
77- <!-- Center dot -->
78- < div class ="absolute left-1/2 transform -translate-x-1/2 w-4 h-4 rounded-full bg-red-600 dark:bg-red-400 border-4 border-white dark:border-gray-900 z-10 mt-1 "> </ div >
79-
80- <!-- Content on right -->
81- < div class ="w-1/2 pl-8 text-left ">
82- < div class ="timeline-date text-md font-semibold text-red-600 dark:text-red-400 mb-2 ">
83- {{ milestone.date | date: "%B %d, %Y" }}
84- </ div >
85-
86- {%- if milestone.title -%}
87- < h3 class ="text-xl font-bold text-gray-800 dark:text-gray-100 mb-3 "> {{ milestone.title }}</ h3 >
88- {%- endif -%}
89-
90- {%- if milestone.image -%}
91- < div class ="mb-4 ">
92- < img src ="{{ milestone.image | relative_url }} "
93- alt ="{{ milestone.title }} "
94- class ="w-full rounded-lg shadow-md ">
95- </ div >
96- {%- endif -%}
97-
98- {%- if milestone.description -%}
99- < p class ="text-gray-700 dark:text-gray-300 "> {{ milestone.description }}</ p >
100- {%- endif -%}
101- </ div >
102- </ div >
103- </ div >
104- {%- endif -%}
105- {%- endfor -%}
106- </ div >
107- </ div >
108- {%- endif -%}
58+ {% include milestones.html %}
10959
11060 {%- if content != "" -%}
11161 < div class ="prose prose-lg dark:prose-invert max-w-4xl mx-auto text-gray-800 dark:text-gray-200 ">
0 commit comments