From f86e103b70a83e72fbda07b2a97fcc573c6e1100 Mon Sep 17 00:00:00 2001 From: poyrazavsever Date: Thu, 16 Jul 2026 09:13:33 +0300 Subject: [PATCH] feat: updated about content and design template --- components/about-content.tsx | 332 +++++++++++++++++++++++------------ messages/en.json | 7 +- messages/tr.json | 7 +- 3 files changed, 236 insertions(+), 110 deletions(-) diff --git a/components/about-content.tsx b/components/about-content.tsx index bddad86..4926ac6 100644 --- a/components/about-content.tsx +++ b/components/about-content.tsx @@ -1,133 +1,249 @@ "use client"; +import { Icon } from "@iconify/react"; import Image from "next/image"; -import { Link } from "@/i18n/routing"; -import { Badge, Card, Typography } from "poyraz-ui/atoms"; +import { useLocale, useTranslations } from "next-intl"; +import { Badge, Button, ButtonIcon, ButtonLabel, Card, Typography } from "poyraz-ui/atoms"; import { Sheet, SheetContent, SheetTitle, SheetTrigger } from "poyraz-ui/molecules"; -import { StaggerContainer, StaggerItem } from "@/components/motion-wrapper"; +import { Link, useRouter } from "@/i18n/routing"; import { BOOKMARKS } from "@/data/bookmarks"; import { certificates } from "@/data/certificates"; import { EDUCATION } from "@/data/education"; import { EXPERIENCE } from "@/data/experience"; -import { useTranslations, useLocale } from "next-intl"; import { getLocalizedValue } from "@/lib/locale"; +type TimelineItem = { + id: string; + title: string; + subtitle: string; + period: string; + description?: string; +}; + +function SectionHeading({ + title, + action, +}: { + title: string; + action?: React.ReactNode; +}) { + return ( +
+ + {title} + + {action} +
+ ); +} + +function TimelineList({ items }: { items: TimelineItem[] }) { + return ( +
+ {items.map((item) => ( +
+ + + + + +
+
+ + {item.title} + + + {item.subtitle} + +
+ + + {item.period} + +
+ + {item.description ? ( + + {item.description} + + ) : null} +
+
+ ))} +
+ ); +} + export function AboutContent() { const t = useTranslations("About"); const locale = useLocale(); + const router = useRouter(); + + const educationItems: TimelineItem[] = EDUCATION.map((item) => ({ + id: item.id, + title: getLocalizedValue(item.title, locale), + subtitle: item.institution, + period: getLocalizedValue(item.period, locale), + description: getLocalizedValue(item.description, locale), + })); + + const experienceItems: TimelineItem[] = EXPERIENCE.map((item) => ({ + id: item.id, + title: getLocalizedValue(item.role, locale), + subtitle: item.company, + period: getLocalizedValue(item.period, locale), + })); return ( -
-
- - - {t("aboutText")} - - - -
- - {EDUCATION.map((item) => ( - - - - {getLocalizedValue(item.title, locale)} - - - {item.institution} - - - {getLocalizedValue(item.period, locale)} - - - - ))} - -
-
- -
- - - + } + /> + + + {t("aboutText")} + +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ + + + + + + {t("allCertificates")} +
+ {certificates.map((item) => ( + - {getLocalizedValue(item.name, -
+
+
+ {getLocalizedValue(item.name, +
+
+ + {getLocalizedValue(item.name, locale)} + + + {item.organization} + + + {getLocalizedValue(item.date, locale)} + +
+
+ ))} +
+ + } + /> + +
+
+ {certificates.slice(0, 8).map((item) => ( + +
+ {getLocalizedValue(item.name, +
+
+ + {getLocalizedValue(item.name, locale)} + + + {item.organization} + +
- - - - - {t("allCertificates")} -
- {certificates.map((item) => ( - -
-
- {getLocalizedValue(item.name, -
-
- - {getLocalizedValue(item.name, locale)} - - - {item.organization} - - - {getLocalizedValue(item.date, locale)} - -
-
-
- ))} -
-
- - -
- - {EXPERIENCE.map((item) => ( - - - - {getLocalizedValue(item.role, locale)} - - - {item.company} - - - {getLocalizedValue(item.period, locale)} - - - ))} - +
+ + -
+
@@ -190,7 +306,7 @@ export function AboutContent() { href={item.href} target="_blank" rel="noreferrer" - className="mt-2 inline-flex text-sm text-red-600 hover:underline" + className="mt-2 inline-flex text-sm text-primary hover:underline" > {item.href.replace("https://", "")} diff --git a/messages/en.json b/messages/en.json index d6a91fe..8dc006a 100644 --- a/messages/en.json +++ b/messages/en.json @@ -32,12 +32,17 @@ } }, "About": { + "title": "About me", + "contactCta": "Contact me", + "educationTitle": "Education", + "experienceTitle": "Experience", + "certificatesTitle": "My certificates", "aboutText": "Ever since I met software in middle school, I've been constantly learning and improving. My passion for learning grew in high school, where I explored different web development technologies. Near the end of high school, I stepped into the mobile world. Today, I actively build, develop, and most importantly, I am still learning.", "allCertificates": "All Certificates", "referencesTitle": "References", "referencesDesc": "View all references on a separate detail page.", "volunteerTitle": "Volunteering & Community", - "volunteerDesc": "Inspect timeline and contribution details on a separate page.", + "volunteerDesc": "Explore my community work and timeline.", "bookmarksTitle": "Bookmarks", "bookmarksDesc": "View quick access links inside a sheet.", "timelineLabel": "Timeline:", diff --git a/messages/tr.json b/messages/tr.json index b70dd32..1f03500 100644 --- a/messages/tr.json +++ b/messages/tr.json @@ -32,12 +32,17 @@ } }, "About": { + "title": "Hakkımda", + "contactCta": "İletişime geç", + "educationTitle": "Eğitim", + "experienceTitle": "Deneyim", + "certificatesTitle": "Sertifikalarım", "aboutText": "Ortaokulda yazılımla tanıştığımdan beri sürekli öğrenmeye ve kendimi geliştirmeye çalışıyorum. Lise yıllarında öğrenme hevesim daha da arttı ve web geliştirme tarafında farklı teknolojileri keşfetme fırsatı buldum. Lisenin sonlarına doğru mobil dünyasına da adım attım. Şu an aktif olarak üretiyor, geliştiriyor ve en önemlisi hâlâ öğrenmeye devam ediyorum.", "allCertificates": "Tüm Sertifikalar", "referencesTitle": "Referanslar", "referencesDesc": "Tüm referansları ayrı bir detay sayfasında görüntüle.", "volunteerTitle": "Gönüllülük ve Topluluk", - "volunteerDesc": "Zaman çizelgesi ve katkı detaylarını ayrı bir detay sayfasında incele.", + "volunteerDesc": "Topluluk katkılarımı ve zaman çizelgemi incele.", "bookmarksTitle": "Yer İmleri", "bookmarksDesc": "Hızlı erişim bağlantılarını bir sheet içinde görüntüle.", "timelineLabel": "Zaman Çizelgesi:",