Component Patterns
- •Named exports only (no default exports for components)
- •Props interface defined above component
- •Use
cn()for all conditional classNames - •Card component: use
hoverprop for interactive cards,glassprop for glassmorphism
Design Tokens
- •Colors: oklch values in globals.css @theme block
- •Never use raw hex/rgb — always use token classes (primary-, accent-, neutral-*)
- •Animations: animate-fade-in, animate-fade-in-up, animate-pulse-soft, animate-float
RTL Rules
- •NEVER use left-/right-/pl-/pr- — use start-/end-/ps-/pe-
- •MobileNav translate:
ltr:translate-x-full rtl:-translate-x-full - •Use
inset-inline-start-0notleft-0
Accessibility
- •Interactive elements need focus-visible styles (global base handles most)
- •Forms: wire aria-describedby to error IDs, set aria-invalid on error
- •Dialogs: role="dialog" + aria-modal="true" + focus trap + Escape handler
- •Nav elements: aria-label in Hebrew
- •Live regions: role="status" + aria-live="polite" for success states