Files
Emil_Shanayev_Resume/components/TopBar.tsx
T
EmilandClaude Sonnet 5 15d36d6437
Deploy to GitHub Pages / build (push) Canceled after 0s
Deploy to GitHub Pages / deploy (push) Canceled after 0s
Add a dark theme, default, with a switch in the top bar
Colours move into theme tokens (light values in :root, dark in
[data-theme=dark]); the closing contact band inverts on each theme. The
choice is stored in localStorage and applied by a head script before the
first paint. Voxel covers and image shadows follow the theme.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XtcZtnG4GQA1d6mW5PNrS9
2026-09-20 22:51:13 +03:00

27 lines
897 B
TypeScript

'use client'
import { useScrolled } from '@/lib/useScroll'
import ThemeToggle from './ThemeToggle'
import styles from './topbar.module.css'
type Props = { name: string; mailHref: string; showProjects: boolean }
export default function TopBar({ name, mailHref, showProjects }: Readonly<Props>) {
const scrolled = useScrolled()
return (
<header className={`${styles.bar} ${scrolled ? styles.solid : ''}`}>
<div className={styles.inner}>
<a className={styles.mark} href="#top">{name}</a>
<nav className={styles.nav} aria-label="Sections">
{showProjects && <a href="#projects">Projects</a>}
<a href="#skills">Skills</a>
<a href="#experience">Experience</a>
<a href="#education">Education</a>
</nav>
<ThemeToggle />
<a className={styles.mail} href={mailHref}>Email me</a>
</div>
</header>
)
}