Files
headquarter/openspec/changes/archive/2026-05-19-universal-icon-system/design.md
T
Fusion 2b5331a1a0 feat: implement responsive spacing improvements
- Add CSS custom properties for spacing scale (4px base), breakpoints, and fluid typography
- Create layout utilities: Container, Stack, Row, Grid
- Update AppShell with responsive mobile navigation
- Update card grid with responsive columns
- Update dialogs with viewport-aware sizing and mobile fullscreen
- Update workspace layout for mobile stacking
- Ensure minimum 44px touch targets for buttons
- Add table-responsive and text truncation utilities
- Update page headers for mobile stacking

Quality gates: typecheck ✓, lint ✓, build ✓
2026-05-19 19:50:36 +02:00

150 lines
3.1 KiB
Markdown

# Universal Icon System - Design
## Architecture
```
Icon System
├── Icon Component (centralized wrapper)
│ ├── Size variants: sm, md, lg, xl
│ ├── Color: inherited or explicit
│ └── Accessibility: aria-label, role
├── Icon Registry (mapping names to Phosphor icons)
└── Usage throughout app
├── Navigation icons
├── Action icons
├── Status indicators
└── Git operation icons
```
## Component Design
### Icon Component
**Props:**
```typescript
interface IconProps {
name: IconName;
size?: "sm" | "md" | "lg" | "xl";
color?: string;
weight?: "thin" | "light" | "regular" | "bold" | "fill" | "duotone";
className?: string;
ariaLabel?: string;
}
```
**Size Mapping:**
- sm: 16px
- md: 20px (default)
- lg: 24px
- xl: 32px
**Color:**
- Default: inherits from parent via `currentColor`
- Explicit: uses CSS variable or direct color value
### Icon Registry
**Categories:**
Navigation:
- `home` - Dashboard
- `projects` - Projects list
- `repositories` - Git repositories
- `settings` - User settings
- `profile` - User profile
Actions:
- `add` - Create new
- `edit` - Edit item
- `delete` - Delete item
- `save` - Save changes
- `cancel` - Cancel action
- `refresh` - Refresh/reload
- `copy` - Copy to clipboard
Status:
- `success` - Checkmark
- `error` - X mark
- `warning` - Warning triangle
- `info` - Information circle
- `loading` - Spinner
Git Operations:
- `branch` - Git branch
- `commit` - Git commit
- `merge` - Merge branches
- `history` - Commit history
- `pull` - Pull changes
- `push` - Push changes
Files:
- `file` - Generic file
- `folder` - Directory
- `code` - Code file
- `document` - Text document
## Migration Plan
### Phase 1: Setup
1. Install `@phosphor-icons/react`
2. Create `Icon` component
3. Create icon registry mapping
### Phase 2: Replace Raw Unicode
Replace all instances of raw Unicode symbols:
- `✓``Icon name="check"`
- `✗``Icon name="x"`
- `⚠``Icon name="warning"`
- `●``Icon name="dot"`
- `❓``Icon name="question"`
- `↓``Icon name="arrow-down"`
### Phase 3: Update Components
Update existing components to use icon system:
- GitToolbar
- GitRepositoriesPage
- FileEditor
- AppShell navigation
- Dialog buttons
- Form validation indicators
### Phase 4: Styling
- Ensure consistent spacing around icons
- Add hover states where applicable
- Maintain alignment with text
## Accessibility
- All icons have meaningful `aria-label`
- Decorative icons use `aria-hidden="true"`
- Focus indicators for interactive icons
- Sufficient color contrast
## Technical Details
**Library:** `@phosphor-icons/react`
**Bundle Impact:** Tree-shakeable, ~2KB per icon used
**Browser Support:** All modern browsers
**Fallback:** None needed - SVG-based, always renders
## CSS Integration
```css
.icon {
display: inline-flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.icon-sm { width: 16px; height: 16px; }
.icon-md { width: 20px; height: 20px; }
.icon-lg { width: 24px; height: 24px; }
.icon-xl { width: 32px; height: 32px; }
/* Inherit color from parent */
.icon svg {
fill: currentColor;
}
```