--- description: Component patterns and structure for React components globs: ["apps/sim/**/*.tsx"] --- # Component Patterns Component authoring rules — structure order (refs → external hooks → store hooks → custom hooks → state → useMemo → useCallback → useEffect → return), required props interface, and extraction thresholds (50+ lines / 2+ files vs keep inline < 10 lines) — live in CLAUDE.md > Components. `.tsx`-specific deltas not covered there: - `'use client'` only when using React hooks or browser-only APIs. - Prefer semantic HTML (`aside`, `nav`, `article`). - Optional-chain callbacks: `onAction?.(id)`.