6f41fa7cbe
- Install @phosphor-icons/react package - Create centralized Icon component with size/weight/color variants - Create icon registry with 34 icons across 5 categories - Replace all raw Unicode symbols with proper icon components - Add icons to navigation, buttons, status indicators, git operations - Add icon CSS with consistent sizing and spacing - Fix type definitions for Phosphor icon compatibility Quality gates: typecheck ✓, lint ✓, build ✓ (375KB bundle)
2.9 KiB
2.9 KiB
Universal Icon System Specification
Requirements
Functional Requirements
- Icon Component: Centralized
Iconcomponent that wraps Phosphor icons - Icon Registry: Mapping of logical names to Phosphor icon components
- Size Variants: Support for sm (16px), md (20px), lg (24px), xl (32px)
- Color Inheritance: Default to
currentColor, support explicit colors - Accessibility: Proper ARIA labels and roles
- Tree Shaking: Only include icons that are actually used
Non-Functional Requirements
- Bundle Size: Minimal impact (~2KB per icon weight variant)
- Performance: No layout shift, instant rendering
- Browser Support: All modern browsers (Chrome, Firefox, Safari, Edge)
- Consistency: Identical rendering across all platforms
Icon Registry
Navigation Icons
dashboard→Houseprojects→Folderrepositories→GitBranchsettings→Gearprofile→Userlogout→SignOut
Action Icons
add→Plusedit→PencilSimpledelete→Trashsave→FloppyDiskcancel→Xrefresh→ArrowsClockwisecopy→Copysearch→MagnifyingGlassmenu→Listclose→X
Status Icons
success→Checkerror→Xwarning→Warninginfo→Infoloading→Spinner
Git Icons
branch→GitBranchcommit→GitCommitmerge→GitMergehistory→ClockCounterClockwisepull→ArrowDownpush→ArrowUpfetch→ArrowsClockwise
File Icons
file→Filefolder→Foldercode→Codedocument→FileTextimage→Imagebinary→FileBinary
Migration Checklist
Components to Update
app-shell.tsx- Navigation iconsgit-toolbar.tsx- Git operation iconsgit-repositories.tsx- Status/validation iconsrepo-workspace.tsx- File tree iconsfile-editor.tsx- File type iconsdashboard.tsx- Dashboard iconsprojects.tsx- Project action iconssettings.tsx- Settings iconstool-types.tsx- Tool type iconsssh-keys.tsx- Key management iconsprofile.tsx- Profile iconscommit-dialog.tsx- Dialog iconssyntax-highlighter.tsx- Copy iconcode-editor.tsx- Edit icons- All button components with icons
CSS Requirements
.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; }
Accessibility Requirements
- All functional icons must have
aria-label - Decorative icons must have
aria-hidden="true" - Interactive icons must be focusable
- Color contrast ratio ≥ 4.5:1
Dependencies
@phosphor-icons/react- React component library