1. Name Icons by Object + Modifier, Never by Page Location
Naming an icon pricing-card-badge.svg guarantees nobody reuses it on the billing settings page—so a teammate adds a duplicate file next sprint. Follow a predictable {object}-{variant-or-direction} kebab-case convention:
src/assets/vectors/
├── notices/
│ ├── lucide-LICENSE.txt # Archived from /icon-library-notices/lucide/LICENSE.txt
│ └── tabler-LICENSE.txt
├── icons/
│ ├── arrow-right.svg # Canonical optimized 24x24 currentColor source
│ ├── arrow-up-right.svg
│ ├── bell.svg
│ ├── bell-ringing.svg
│ └── shield-check.svg
├── brands/ # Separated so trademark rules stay explicit!
│ └── github.svg
└── illustrations/
└── empty-search.svg2. Establish a Three-Rule Intake Gate for New Icons
- Search existing repo icons first, then your approved primary pack: Bookmark your team's chosen library on SVG Nexus Icon Libraries (e.g.,
/en/icons/lucide) so designers and developers pull from the exact same catalog. - Normalize & minify before committing: Every custom addition passes through the SVG Optimizer and the 10-point quality checklist.
- Keep brand logos in a separate directory from UI icons: Separating
brands/prevents developers from accidentally runningcurrentColorscripts over multi-color partner logos or overlooking trademark rules.