Open Source Icon Library
Comprehensive icon library with 500+ carefully crafted icons for modern web applications
Project Tags
Comprehensive Open Source Icon Library
An extensive collection of 500+ carefully crafted icons designed for modern web applications, distributed as React components, Vue components, and pure SVG files. Built with accessibility, consistency, and developer experience in mind.
Project Overview
This icon library emerged from frustration with existing solutions that either lacked consistency, had poor accessibility support, or were difficult to customize. The goal was to create a comprehensive, well-designed icon set that developers could easily integrate into any project.
Key Features
1. Consistent Design Language
All icons follow a unified design system:
- 24x24px base grid for perfect pixel alignment
- 2px stroke width for optimal visibility at all sizes
- Rounded line caps for friendly, modern appearance
- Consistent visual weight across all categories
2. Comprehensive Coverage
Icons organized into logical categories:
- Interface: Navigation, actions, controls (120+ icons)
- Content: Media, files, documents (80+ icons)
- Communication: Social, messaging, notifications (60+ icons)
- Commerce: Shopping, payments, business (70+ icons)
- Development: Code, tools, infrastructure (90+ icons)
- Miscellaneous: Weather, travel, health, education (80+ icons)
3. Multiple Distribution Formats
React Components
import { ShoppingCart, Heart, Search } from '@louis-d/icons-react'
function ProductCard() {
return (
<div className="product-card">
<button className="favorite-btn">
<Heart size={20} />
</button>
<button className="add-to-cart">
<ShoppingCart size={16} />
Add to Cart
</button>
</div>
)
}
Vue Components
<template>
<div class="toolbar">
<button @click="search">
<SearchIcon :size="18" />
</button>
<button @click="toggleFavorite">
<HeartIcon :size="18" :filled="isFavorite" />
</button>
</div>
</template>
<script setup>
import { SearchIcon, HeartIcon } from '@louis-d/icons-vue'
</script>
SVG Sprites
<!-- Optimized SVG sprite for vanilla HTML -->
<svg class="icon">
<use href="#icon-shopping-cart"></use>
</svg>
Technical Implementation
Design Process
Created using a systematic approach for consistency:
- Grid System: All icons designed on a 24x24px grid
- Stroke Guidelines: 2px consistent stroke width
- Optical Alignment: Manual adjustments for visual balance
- Accessibility Review: Tested with screen readers and high contrast modes
Build Pipeline
Automated build process ensures quality and consistency:
// Icon processing pipeline
interface IconBuildConfig {
inputDir: string
outputFormats: ('react' | 'vue' | 'svg' | 'sprite')[]
optimization: {
removeUnusedPaths: boolean
optimizeStrokes: boolean
minifyOutput: boolean
}
}
async function buildIcons(config: IconBuildConfig) {
const svgFiles = await glob(`${config.inputDir}/**/*.svg`)
for (const svgFile of svgFiles) {
const svgContent = await fs.readFile(svgFile, 'utf-8')
const optimized = await optimizeSVG(svgContent, config.optimization)
if (config.outputFormats.includes('react')) {
const reactComponent = generateReactComponent(optimized, svgFile)
await writeReactFile(reactComponent)
}
if (config.outputFormats.includes('vue')) {
const vueComponent = generateVueComponent(optimized, svgFile)
await writeVueFile(vueComponent)
}
if (config.outputFormats.includes('svg')) {
await writeSVGFile(optimized)
}
}
// Generate sprite sheet
if (config.outputFormats.includes('sprite')) {
const spriteSheet = generateSpriteSheet(optimizedIcons)
await writeSpriteFile(spriteSheet)
}
}
Quality Assurance
Comprehensive testing ensures reliability:
// Icon validation tests
describe('Icon Library Quality', () => {
test('all icons have consistent dimensions', () => {
icons.forEach(icon => {
expect(icon.viewBox).toBe('0 0 24 24')
expect(icon.width).toBe(24)
expect(icon.height).toBe(24)
})
})
test('all icons have accessibility labels', () => {
icons.forEach(icon => {
expect(icon.ariaLabel).toBeDefined()
expect(icon.ariaLabel.length).toBeGreaterThan(0)
})
})
test('stroke width consistency', () => {
icons.forEach(icon => {
const strokeWidths = extractStrokeWidths(icon.svg)
strokeWidths.forEach(width => {
expect(width).toBe(2)
})
})
})
})
Accessibility Features
Screen Reader Support
All icons include proper ARIA labels:
// React component with accessibility
export const SearchIcon = ({
size = 24,
ariaLabel = 'Search',
...props
}: IconProps) => (
<svg
width={size}
height={size}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
role="img"
aria-label={ariaLabel}
{...props}
>
<circle cx="11" cy="11" r="8" />
<path d="m21 21-4.35-4.35" />
</svg>
)
High Contrast Support
Icons work well in high contrast modes:
- Use
currentColorfor automatic color adaptation - Maintain minimum 3:1 contrast ratio
- Provide outlined variants for better visibility
Keyboard Navigation
Icon buttons support keyboard interaction:
- Proper focus indicators
- Logical tab order
- Standard keyboard shortcuts
Performance Optimization
Bundle Size Optimization
Tree-shaking support for minimal bundle impact:
// Only imports used icons
import { Search, Heart } from '@louis-d/icons-react'
// Bundle analyzer shows only 2 icons included
// Total size: 2.1KB (compressed)
SVG Optimization
Automated optimization reduces file sizes:
- Remove unnecessary metadata
- Optimize path data
- Combine redundant elements
- Compress with SVGO
Caching Strategy
Icons served with optimal caching headers:
Cache-Control: public, max-age=31536000, immutable
ETag: "v1.2.3-icon-hash"
Community & Adoption
GitHub Statistics
- Stars: 890+
- Weekly Downloads: 12K+
- Contributors: 23
- Forks: 156
Industry Usage
Adopted by companies and projects including:
- Startup accelerators for their portfolio companies
- Design agencies for client projects
- Open source projects needing consistent iconography
- Educational platforms for course materials
Community Contributions
- Icon requests and submissions through GitHub issues
- Design improvements from the community
- Framework-specific implementation packages
- Documentation translations
Design Principles
1. Clarity Over Cleverness
Icons prioritize immediate recognition over artistic expression:
- Simple, recognizable shapes
- Avoid unnecessary details
- Clear distinction between similar concepts
2. Consistency Across Context
Icons work harmoniously together:
- Unified stroke weight
- Consistent corner radius
- Balanced optical weight
- Predictable sizing behavior
3. Future-Proof Design
Icons remain relevant as design trends evolve:
- Classic, timeless shapes
- Scalable vector format
- Modular construction
- Easy customization
Integration Examples
Design Systems
Perfect for inclusion in design systems:
// Design system token integration
const iconSizes = {
xs: 12,
sm: 16,
md: 20,
lg: 24,
xl: 32
} as const
type IconSize = keyof typeof iconSizes
interface DesignSystemIconProps {
name: IconName
size: IconSize
color?: ColorToken
}
export const DSIcon: React.FC<DesignSystemIconProps> = ({
name,
size,
color = 'neutral-700'
}) => {
const IconComponent = iconMap[name]
const sizeValue = iconSizes[size]
const colorValue = colorTokens[color]
return (
<IconComponent
size={sizeValue}
style={{ color: colorValue }}
/>
)
}
Theme Integration
Works seamlessly with theme systems:
/* CSS custom properties for theming */
.icon {
color: var(--icon-color, currentColor);
opacity: var(--icon-opacity, 1);
transition: var(--icon-transition, none);
}
.icon:hover {
color: var(--icon-hover-color, var(--icon-color));
opacity: var(--icon-hover-opacity, var(--icon-opacity));
}
/* Dark mode support */
[data-theme="dark"] .icon {
--icon-color: var(--neutral-200);
}
Future Roadmap
Planned Features
- Animated Icons: Subtle micro-animations for enhanced UX
- Icon Font Option: Traditional font file distribution
- Figma Plugin: Direct integration with Figma workflows
- Custom Icon Builder: Tool for creating consistent custom icons
- Brand Icon Collection: Logos and brand symbols
Community Requests
- Framework support for Angular, Svelte, Solid
- Icon variations (filled, outlined, rounded)
- Larger icon set covering niche use cases
- Integration with popular component libraries
- Automated icon generation from Figma designs
License & Usage
The icon library is released under MIT license, making it suitable for:
- Commercial projects
- Open source applications
- Educational use
- Personal projects
Attribution
While not required, attribution is appreciated:
<!-- Optional attribution -->
Icons by Louis D. (https://github.com/louis-d/lucide-icons-extended)
This project demonstrates the intersection of design and engineering, creating tools that enhance developer productivity while maintaining high design standards.
Explore More Projects
Discover more open source tools, frameworks, and experiments that solve real-world problems with modern technologies.