Audit and fix accessibility issues across the portfolio to ensure WCAG 2.1 AA compliance.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Advanced React patterns and best practices used in this portfolio
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Advanced React patterns, hooks, and best practices as applied in the PP Namias portfolio.
The portfolio uses a modal system built with compound components:
// src/components/ui/Modal.tsx
<Modal isOpen={isOpen} onClose={onClose}>
<ModalHeader>Title</ModalHeader>
<ModalBody>Content</ModalBody>
<ModalFooter>Actions</ModalFooter>
</Modal>
Registration: All modals are registered in src/hooks/useModal.tsx with typed keys.
// Always isolate SWR in tests
<SWRConfig value={{ provider: () => new Map() }}>
<Component />
</SWRConfig>
All sections follow the same pattern:
// src/components/sections/SectionName.tsx
'use client';
import { motion } from 'framer-motion';
export default function SectionName({ data }: Props) {
return (
<section>
<motion.div whileInView={{ opacity: 1 }} />
</section>
);
}
// Always use OptimizedImage, not raw <img>
<OptimizedImage
src={url}
alt={alt}
width={800}
height={600}
priority={isAboveFold}
/>
const TabsContext = createContext(null);
function Tabs({ children, defaultValue }) {
const [active, setActive] = useState(defaultValue);
return (
<TabsContext.Provider value={{ active, setActive }}>
<div>{children}</div>
</TabsContext.Provider>
);
}
function useMediaQuery(query: string) {
const [matches, setMatches] = useState(false);
useEffect(() => {
const mql = window.matchMedia(query);
setMatches(mql.matches);
const handler = (e: MediaQueryListEvent) => setMatches(e.matches);
mql.addEventListener('change', handler);
return () => mql.removeEventListener('change', handler);
}, [query]);
return matches;
}
// Split value and dispatch to prevent unnecessary re-renders
const StateContext = createContext(null);
const DispatchContext = createContext(null);
provider: () => new Map())useModal.tsxOptimizedImage component아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Audit and fix accessibility issues across the portfolio to ensure WCAG 2.1 AA compliance.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Creates a new blog post document in the Sanity studio. Use when the user wants to write a blog post, publish an article, or schedule a future post.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Creates a new certification document in the Sanity studio. Use when the user wants to add a credential, certificate, or professional accreditation to the Certifications collection.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Adds a new skill MD file to the studio's skills collection. Use when the user wants to author a new step-by-step recipe for the studio's in-app Skills tool or the .agents mirror.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Creates a new project document in the Sanity studio. Use when the user wants to add a new portfolio project, a case study, or a work sample to the Projects collection.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Creates a new experience document in the Sanity studio. Use when the user wants to add a job, role, internship, or work history entry to the Experience collection.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.