3. UI Inventory
Page-by-page specification of every user-facing screen, derived from component source code.
Layout Shell
Component: App.jsx β Shell.jsx
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Header β
β [Logo] [Project Selector βΌ] [DarkMode] [Account] β
βββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ€
β Sidebar β Main Content β
β β β
β Icons: β (varies by active panel) β
β π¬ Chat β β
β π Filesβ β
β π Know.β β
β β‘ Skillsβ β
β π
Schedβ β
β π€ Meet.β β
β π§ Git β β
β π Toolsβ β
β β Admin β β
βββββββββββ΄βββββββββββββββββββββββββββββββββββββββββ€
β FloatingIconBar (quick settings, bug report) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
Responsive behavior: Sidebar collapses to icon-only on narrow viewports. MobileNav component provides bottom navigation on mobile.
Login Page
Component: LoginForm.jsx
| Element | Type | Details |
|---|---|---|
| Username | Text input | Required |
| Password | Password input | Required |
| Login button | Submit | POST /api/auth/login |
| Forgot password | Link | Navigates to reset flow |
States:
- Default: Empty form
- Error: "Invalid credentials" banner
- Loading: Button disabled with spinner
- Setup required: Redirect to
/setupif no users exist
Onboarding Flow
Component: OrganizationSetupScreen.jsx β WelcomeScreen.jsx
Screen 1: Welcome
- Title: "Welcome Your New AI Team Member"
- Company name or website URL input
- Auto-detection of company from URL
- Button: "Start Sasha's First Day β"
Screen 2: API Key Setup
- Claude API key configuration
- Option to skip for limited functionality
- Test key validation
Screen 3: Live Learning
- Real-time progress as Claude researches the company
- Streaming status updates
- Completion screen with training summary
- Button: "Start Working with Your New Team Member β"
States: Step indicator (1/2/3), skip available on step 2, loading during research on step 3.
Main Chat Interface
Component: ChatInterface.jsx
| Element | Type | Details |
|---|---|---|
| Message list | Scrollable area | User and assistant messages |
| Input textarea | Multi-line text | Auto-resize, Shift+Enter for newline |
| Send button | Icon button | Submits message via WebSocket |
| Attachment button | Icon button | File upload for context |
| Stop button | Icon button | Cancel active generation |
| Session history | Sidebar panel | Past conversations with search |
Message rendering:
- Markdown with
react-markdown+remark-gfm - Code blocks with syntax highlighting (
rehype-highlight) - Mermaid diagrams rendered inline
- Tool calls displayed in collapsible
ToolCallGroupsections - Emoji to Phosphor icon conversion
States:
- Idle: Input enabled, no activity
- Streaming: Response appearing token-by-token, stop button visible
- Error: Error message displayed, retry option
- Empty: Welcome message with suggested prompts
File Manager
Component: FileTree.jsx (~4000 lines)
| Element | Type | Details |
|---|---|---|
| File tree | Hierarchical list | Expandable folders, file type icons |
| View toggle | Button group | Simple / Compact / Detailed views |
| Upload button | Button | Opens file upload dialog |
| Search | Text input | Filter files by name |
| Context menu | Right-click menu | Open, rename, move, delete, download |
| Preview panel | Side panel | InlinePreviewPanel for selected file |
File operations:
- Upload (drag-drop or button)
- Download individual files
- Move between folders/projects
- Delete with confirmation modal
- Create new folder
Viewers by file type:
- Markdown:
MarkdownPreview - Code:
CodeEditor(CodeMirror) - PDF:
PDFViewer - Images:
ImageViewer - CSV:
CSVViewer - Text:
TextViewer
States:
- Loading: Skeleton loader during file list fetch
- Empty: "No files" message with upload CTA
- Error: Error banner with retry
- Delete confirmation: Modal with warning for system files
Knowledge Base
Component: CentralKnowledgeInfo.jsx + MarkdownPreview.jsx
| Element | Type | Details |
|---|---|---|
| Doc tree | Hierarchical list | Browse knowledge base markdown files |
| Preview | Rendered HTML | Markdown preview with styling |
| Download | Button group | PDF, DOCX, Markdown download options |
| Search | Text input | Search across knowledge docs |
Skills Panel
Component: SkillsPanel.jsx
| Element | Type | Details |
|---|---|---|
| Skill list | Card list | Name, description, category, star indicator |
| Create button | Button | New skill creation |
| Search | Text input | Filter skills |
| Category tabs | Tab bar | Filter by skill category |
| Run button | Button | Execute skill immediately |
| Edit button | Button | Open in WorkflowEditor |
Workflow Editor
Component: WorkflowEditor.jsx
| Element | Type | Details |
|---|---|---|
| Canvas | React Flow | Visual node-edge graph |
| Code editor | CodeMirror | Raw markdown editing |
| Split view | Toggle | Canvas + code side by side |
| Inspector | Side panel | Step/skill properties editor |
| Toolbar | Button bar | Add step, zoom, fit, layout |
Node types:
TriggerNode-- Manual/API/Scheduled triggerStepNode-- Workflow step (colored by type)SkillNode-- Skill referenceCodeNode-- Code blockArtifactNode-- Output filesErrorInfoNode-- Error conditionsSupportingFileNode-- Related files
Step type colors:
- Transform: blue
- Skill: purple
- Tool: green
- Decision: amber
- Gate: red
- Parallel/subagent_bundle: teal
- End: gray
Schedules Panel
Component: SchedulesPanel.jsx
| Element | Type | Details |
|---|---|---|
| Schedule list | Table | Name, cron expression, status, last run, next run |
| Create button | Button | New schedule dialog |
| Enable/disable toggle | Switch | Toggle schedule active state |
| Run now | Button | Execute immediately |
| Edit | Button | Edit cron expression and prompt |
| Delete | Button | Delete with confirmation |
Meeting Panel
Component: CallBotPanel.jsx + MeetingTranscript.jsx
| Element | Type | Details |
|---|---|---|
| Start button | Button | Begin meeting capture |
| Stop button | Button | End meeting capture |
| Status indicator | Badge | Active/idle/analyzing |
| Transcript | Scrollable text | Live transcript display |
| Analyze button | Button | Run AI analysis on transcript |
| Quick links | Card list | Saved meeting actions |
| Advisors | Card list | Available AI advisors |
Git Panel
Component: GitPanel.jsx
| Element | Type | Details |
|---|---|---|
| Status | File list | Modified, staged, untracked files |
| Diff viewer | QuickDiff |
Side-by-side or unified diff |
| Commit form | Text input + button | Message input, commit button |
| Branch selector | Dropdown | Switch branches |
| Push/pull | Buttons | Sync with remote |
| History | Commit list | Recent commits with messages |
Settings / Tools Panel
Component: ToolsPanel.jsx + ToolsSettings.jsx
| Element | Type | Details |
|---|---|---|
| MCP services | Card list | Registered MCP integrations |
| Configure | Button per service | Open configuration modal |
| Status indicator | Badge | Connected/disconnected per service |
| Personas | Card list | Available AI personas |
| Guides | Card list | Active guides/context |
| Output styles | Card list | Response formatting options |
Admin Pages
Component: Various under admin/
User Management
| Element | Type | Details |
|---|---|---|
| User table | Table | Username, role, last login, actions |
| Create user | Button + modal | Username, password, admin flag |
| Edit user | Modal | Change role, reset password |
| Delete user | Button | Confirmation required |
| Welcome email | Button | Send onboarding email |
AI Provider Configuration
| Element | Type | Details |
|---|---|---|
| Provider cards | ProviderCard |
Claude Direct, AWS Bedrock |
| Configure | Modal | API keys, region, model selection |
| Test | Button | Validate connection |
| Model selector | Dropdown | Available models |
| Context mode | Toggle | Standard vs 1M context |
Analytics Dashboard
Component: ReportingPage.jsx
| Element | Type | Details |
|---|---|---|
| Date range filter | DateRangeFilter |
From/to date selection |
| User filter | UserFilter |
Filter by user |
| Usage charts | Recharts | Token usage, session counts |
| Report sections | ExpandableReportSection |
Collapsible metric groups |
| Pagination | Pagination |
Page through results |
Reusable Component Candidates
| Component | Used In | Purpose |
|---|---|---|
Toast / ToastContainer |
Global | Notification system |
ErrorBoundary |
App wrapper | Error fallback UI |
DarkModeToggle |
Header | Theme switching |
ProtectedRoute |
Router | Auth guard wrapper |
ui/badge, button, input |
Throughout | Shadcn-style primitives |
HistorySearchPalette |
Chat | Cmd+K search dialog |
DebugConsole |
Dev only | Development debugging |
Common States
All pages implement these states consistently:
| State | Pattern |
|---|---|
| Loading | Spinner or skeleton loader |
| Empty | Descriptive message + CTA button |
| Error | Red banner with error message, retry button |
| Success | Green toast notification |
| Confirmation | Modal dialog for destructive actions |
