feat(about): highlight active timeline entries

This commit is contained in:
poyrazavsever
2026-07-16 14:26:59 +03:00
parent 6fc939dcd9
commit a00a4db166
3 changed files with 53 additions and 34 deletions
+22 -5
View File
@@ -17,6 +17,7 @@ type TimelineItem = {
title: string; title: string;
subtitle: string; subtitle: string;
period: string; period: string;
current?: boolean;
description?: string; description?: string;
}; };
@@ -44,13 +45,24 @@ function SectionHeading({
function TimelineList({ items }: { items: TimelineItem[] }) { function TimelineList({ items }: { items: TimelineItem[] }) {
return ( return (
<div className="relative space-y-4 before:absolute before:top-3 before:bottom-3 before:left-3 before:w-px before:bg-border"> <div className="relative space-y-4 before:absolute before:top-3 before:bottom-3 before:left-3 before:w-px before:bg-border">
{items.map((item) => ( {items.map((item) => {
return (
<div <div
key={item.id} key={item.id}
className="relative grid grid-cols-[1.5rem_1fr] gap-3" className="relative grid grid-cols-[1.5rem_1fr] gap-3"
> >
<span className="mt-1 size-6 rounded-full border border-border bg-background p-1"> <span
<span className="block size-full rounded-full bg-primary" /> className={`mt-1 size-6 rounded-full border p-1 ${
item.current
? "border-success-border bg-success"
: "border-border bg-background"
}`}
>
<span
className={`block size-full rounded-full ${
item.current ? "bg-success-solid" : "bg-primary"
}`}
/>
</span> </span>
<div className="border-b border-border pb-4"> <div className="border-b border-border pb-4">
@@ -69,7 +81,9 @@ function TimelineList({ items }: { items: TimelineItem[] }) {
<Typography <Typography
variant="display" variant="display"
className="shrink-0 text-right font-medium text-primary" className={`shrink-0 text-right font-medium ${
item.current ? "text-success-icon" : "text-primary"
}`}
> >
{item.period} {item.period}
</Typography> </Typography>
@@ -85,7 +99,8 @@ function TimelineList({ items }: { items: TimelineItem[] }) {
) : null} ) : null}
</div> </div>
</div> </div>
))} );
})}
</div> </div>
); );
} }
@@ -100,6 +115,7 @@ export function AboutContent() {
title: getLocalizedValue(item.title, locale), title: getLocalizedValue(item.title, locale),
subtitle: item.institution, subtitle: item.institution,
period: getLocalizedValue(item.period, locale), period: getLocalizedValue(item.period, locale),
current: "current" in item ? item.current : undefined,
})); }));
const experienceItems: TimelineItem[] = EXPERIENCE.map((item) => ({ const experienceItems: TimelineItem[] = EXPERIENCE.map((item) => ({
@@ -107,6 +123,7 @@ export function AboutContent() {
title: getLocalizedValue(item.role, locale), title: getLocalizedValue(item.role, locale),
subtitle: item.company, subtitle: item.company,
period: getLocalizedValue(item.period, locale), period: getLocalizedValue(item.period, locale),
current: "current" in item ? item.current : undefined,
})); }));
return ( return (
+1
View File
@@ -10,6 +10,7 @@ export const EDUCATION = [
tr: "2024 - Günümüz", tr: "2024 - Günümüz",
en: "2024 - Present", en: "2024 - Present",
}, },
current: true,
description: { description: {
tr: "Yazılım temelleri, ürün bakış açısı ve disiplinler arası proje geliştirme alanlarında kendimi geliştirmeye devam ediyorum.", tr: "Yazılım temelleri, ürün bakış açısı ve disiplinler arası proje geliştirme alanlarında kendimi geliştirmeye devam ediyorum.",
en: "Continuing to develop my skills in software foundations, product perspective, and interdisciplinary project development.", en: "Continuing to develop my skills in software foundations, product perspective, and interdisciplinary project development.",
+1
View File
@@ -10,6 +10,7 @@ export const EXPERIENCE = [
tr: "Ağustos 2025 - Günümüz", tr: "Ağustos 2025 - Günümüz",
en: "August 2025 - Present", en: "August 2025 - Present",
}, },
current: true,
}, },
{ {
id: "omedya-intern", id: "omedya-intern",