refactor(content): improve section clarity and accessibility
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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've Made an Impact</h2>
|
<h2 className="section-title">Where I'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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
Reference in New Issue
Block a user