feat(members,header): overhaul members page with CV dialog and english-ify navigation
- Rewrite Members page to English: LAB MEMBERS, Prof. Seok-Joo Koh, Active Researchers, and Graduates - Add ProfessorDetailsDialog component with comprehensive CV modal - Standardize degree course label mappings (Ph. D., M. S.) - Translate mobile navigation panel and header aria-labels to English - Update E2E test suite assertions for the updated members structure
This commit is contained in:
@@ -12,11 +12,11 @@ const NAV_SETTLE_MS = 300; // ms — 라우트 전환 직후 방향 판정 유
|
||||
|
||||
// CUSTOMIZATION HOOK: edit nav labels / routes here.
|
||||
const navItems = [
|
||||
{ href: "/", ko: "홈", en: "Home", no: "01" },
|
||||
{ href: "/members", ko: "구성원", en: "Members", no: "02" },
|
||||
{ href: "/publications", ko: "논문", en: "Publications", no: "03" },
|
||||
{ href: "/lectures", ko: "강의", en: "Lectures", no: "04" },
|
||||
{ href: "/standardization", ko: "표준화", en: "Standardization", no: "05" },
|
||||
{ href: "/", en: "Home", no: "01" },
|
||||
{ href: "/members", en: "Members", no: "02" },
|
||||
{ href: "/publications", en: "Publications", no: "03" },
|
||||
{ href: "/lectures", en: "Lectures", no: "04" },
|
||||
{ href: "/standardization", en: "Standardization", no: "05" },
|
||||
];
|
||||
|
||||
export default function Header() {
|
||||
@@ -170,7 +170,7 @@ export default function Header() {
|
||||
|
||||
{/* Desktop nav — small caps, wide tracking (visible at >= 1240px) */}
|
||||
<div className="hidden items-center gap-4 desktop:flex">
|
||||
<nav className="flex items-center gap-2" aria-label="주 메뉴">
|
||||
<nav className="flex items-center gap-2" aria-label="Main Navigation">
|
||||
{navItems.map((item) => {
|
||||
const active = isActive(item.href);
|
||||
return (
|
||||
@@ -206,7 +206,7 @@ export default function Header() {
|
||||
<button
|
||||
type="button"
|
||||
className="inline-flex items-center justify-center border border-ink p-2 text-ink transition hover:bg-ink hover:text-ivory"
|
||||
aria-label={open ? "메뉴 닫기" : "메뉴 열기"}
|
||||
aria-label={open ? "Close menu" : "Open menu"}
|
||||
aria-expanded={open}
|
||||
aria-controls="mobile-menu"
|
||||
onClick={() => setOpen((v) => !v)}
|
||||
@@ -227,7 +227,7 @@ export default function Header() {
|
||||
<nav
|
||||
id="mobile-menu"
|
||||
className="mobile-menu-panel border-t border-ink bg-ivory desktop:hidden"
|
||||
aria-label="모바일 메뉴"
|
||||
aria-label="Mobile Navigation"
|
||||
>
|
||||
<ul className="container-content flex flex-col py-2">
|
||||
{navItems.map((item) => {
|
||||
@@ -252,14 +252,14 @@ export default function Header() {
|
||||
>
|
||||
{item.no}
|
||||
</span>
|
||||
<span className="headline-ko text-lg">{item.ko}</span>
|
||||
<span className="font-sans text-base">{item.en}</span>
|
||||
</span>
|
||||
<span
|
||||
className={`text-[0.7rem] font-semibold uppercase tracking-[0.18em] ${
|
||||
active ? "text-white dark:text-ivory" : "text-ink-mute"
|
||||
className={`text-xs font-mono ${
|
||||
active ? "text-white/80 dark:text-ivory/80" : "text-ink-mute"
|
||||
}`}
|
||||
>
|
||||
{item.en}
|
||||
→
|
||||
</span>
|
||||
</Link>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user