refactor(content): improve section clarity and accessibility

This commit is contained in:
2026-09-06 21:59:12 +03:30
parent f86cfe9725
commit d0de63bb7a
5 changed files with 15 additions and 19 deletions

View File

@@ -152,8 +152,9 @@
} }
.summary { .summary {
font-size: var(--font-size-body-small); max-width: 68ch;
line-height: var(--line-height-body-small); font-size: var(--font-size-body-default);
line-height: var(--line-height-body-default);
color: var(--text-secondary); color: var(--text-secondary);
margin-bottom: 0.75rem; margin-bottom: 0.75rem;
} }
@@ -181,8 +182,9 @@
} }
.bulletText { .bulletText {
font-size: var(--font-size-body-small); max-width: 72ch;
line-height: var(--line-height-body-small); font-size: var(--font-size-body-default);
line-height: var(--line-height-body-default);
color: var(--text-secondary); color: var(--text-secondary);
} }

View File

@@ -1,5 +1,3 @@
'use client';
import React from 'react'; import React from 'react';
import Image from 'next/image'; import Image from 'next/image';
import { experiences } from '@/data/experience'; import { experiences } from '@/data/experience';
@@ -9,9 +7,7 @@ export const ExperienceSection: React.FC = () => {
return ( return (
<section id="experience" className={styles.experienceSection}> <section id="experience" className={styles.experienceSection}>
<div className="content-container"> <div className="content-container">
{/* Section Header */}
<div className="section-header"> <div className="section-header">
<span className="section-eyebrow">EXPERIENCES</span>
<div className="section-title-wrap"> <div className="section-title-wrap">
<h2 className="section-title">Where I&apos;ve Made an Impact</h2> <h2 className="section-title">Where I&apos;ve Made an Impact</h2>
<div className="section-underline" /> <div className="section-underline" />
@@ -21,13 +17,14 @@ export const ExperienceSection: React.FC = () => {
{/* Timeline Container */} {/* Timeline Container */}
<div className={styles.timeline}> <div className={styles.timeline}>
{experiences.map((item, index) => ( {experiences.map((item, index) => (
<div key={item.id} className={styles.timelineItem}> <article key={item.id} className={styles.timelineItem}>
{/* Vertical Spine & Node Indicator */} {/* Vertical Spine & Node Indicator */}
<div className={styles.spineColumn}> <div className={styles.spineColumn}>
<div <div
className={`${styles.nodeDot} ${ className={`${styles.nodeDot} ${
item.isCurrent ? styles.nodeCurrent : '' item.isCurrent ? styles.nodeCurrent : ''
}`} }`}
aria-hidden="true"
/> />
{index < experiences.length - 1 && ( {index < experiences.length - 1 && (
<div className={styles.verticalLine} /> <div className={styles.verticalLine} />
@@ -84,14 +81,14 @@ export const ExperienceSection: React.FC = () => {
<ul className={styles.bulletList}> <ul className={styles.bulletList}>
{item.bullets.map((bullet, bIdx) => ( {item.bullets.map((bullet, bIdx) => (
<li key={bIdx} className={styles.bulletItem}> <li key={bIdx} className={styles.bulletItem}>
<span className={styles.bulletDot} /> <span className={styles.bulletDot} aria-hidden="true" />
<span className={styles.bulletText}>{bullet}</span> <span className={styles.bulletText}>{bullet}</span>
</li> </li>
))} ))}
</ul> </ul>
</div> </div>
</div> </div>
</div> </article>
))} ))}
</div> </div>
</div> </div>

View File

@@ -32,7 +32,6 @@ export const RiverJourney: React.FC = () => {
<ol className={styles.stepsList} aria-label="Career journey"> <ol className={styles.stepsList} aria-label="Career journey">
{steps.map((step) => ( {steps.map((step) => (
<li key={step.number} className={`${styles.stepCard} ${styles[`step${step.number}`]}`}> <li key={step.number} className={`${styles.stepCard} ${styles[`step${step.number}`]}`}>
<span className={styles.stepNumber}>{step.number}</span>
<div> <div>
<h3 className={styles.stepTitle}>{step.title}</h3> <h3 className={styles.stepTitle}>{step.title}</h3>
<p className={styles.stepDesc}>{step.description}</p> <p className={styles.stepDesc}>{step.description}</p>

View File

@@ -145,7 +145,7 @@
} }
.toolLabel { .toolLabel {
font-size: clamp(0.71875rem, 1vw, 0.8125rem); font-size: clamp(0.75rem, 1vw, 0.8125rem);
line-height: 1.25; line-height: 1.25;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);

View File

@@ -15,10 +15,6 @@ import styles from './SkillsSection.module.css';
export const SkillsSection: React.FC = () => { export const SkillsSection: React.FC = () => {
const [activeFilter, setActiveFilter] = useState<FilterTab['id']>('software-engineering'); const [activeFilter, setActiveFilter] = useState<FilterTab['id']>('software-engineering');
const filteredTools = toolsList.filter((tool) =>
tool.category.includes(activeFilter)
);
const getFilterIcon = (id: FilterTab['id']) => { const getFilterIcon = (id: FilterTab['id']) => {
switch (id) { switch (id) {
case 'software-engineering': case 'software-engineering':
@@ -95,7 +91,7 @@ export const SkillsSection: React.FC = () => {
<div className={styles.toolIconContainer}> <div className={styles.toolIconContainer}>
<Image <Image
src={tool.icon} src={tool.icon}
alt={tool.name} alt=""
width={64} width={64}
height={64} height={64}
className={styles.toolIcon} className={styles.toolIcon}
@@ -110,12 +106,14 @@ export const SkillsSection: React.FC = () => {
</div> </div>
{/* Filter Tabs Under Card */} {/* Filter Tabs Under Card */}
<div className={styles.filterTabsRow}> <div className={styles.filterTabsRow} aria-label="Filter tools by discipline">
{filterTabs.map((tab) => { {filterTabs.map((tab) => {
const isActive = activeFilter === tab.id; const isActive = activeFilter === tab.id;
return ( return (
<button <button
key={tab.id} key={tab.id}
type="button"
aria-pressed={isActive}
onClick={() => setActiveFilter(tab.id)} onClick={() => setActiveFilter(tab.id)}
className={`pill-btn ${ className={`pill-btn ${
isActive ? 'pill-btn-primary' : 'pill-btn-outline' isActive ? 'pill-btn-primary' : 'pill-btn-outline'