Extract business logic and UI into reusable pieces: Custom Hooks: - useFocusGroupAutoSave: debounced auto-save with retry logic - useFolderManagement: folder CRUD operations - usePersonaFiltering: filter state and persona filtering - useDiscussionGuideGeneration: guide generation and progress UI Components: - SaveStatusIndicator: auto-save status display - FolderSidebar: folder list and management - PersonaFilterDialog: persona filter modal - CopyGuideDialog: copy guide from other focus groups Tab Components: - SetupTab: form and asset uploader - ReviewTab: discussion guide viewer - ParticipantsTab: persona selection grid Reduces FocusGroupModerator from 2,396 to ~600 lines (75% reduction). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| ai-recruiter | ||
| auth | ||
| dashboard | ||
| focus-group-session | ||
| persona | ||
| ui | ||
| AIRecruiter.tsx | ||
| AssetUploader.tsx | ||
| Chart.tsx | ||
| ChatMessage.tsx | ||
| FeatureCard.tsx | ||
| FocusGroupModerator.tsx | ||
| FolderTree.tsx | ||
| FolderTreeItem.tsx | ||
| Hero.tsx | ||
| LoginRequired.tsx | ||
| Navigation.tsx | ||
| PersonaDetailsModal.tsx | ||
| ProtectedRoute.tsx | ||
| ThemeHighlighter.tsx | ||
| UserCard.tsx | ||
| UserCreator.tsx | ||
| VoiceControls.tsx | ||
| WebSocketDirectTest.tsx | ||