@archlex/icons-core
v0.2.6
Published
Core icon utilities for ArchLex architecture diagrams
Readme
@archlex/icons-core
Core icon utilities for ArchLex architecture diagrams.
Installation
npm install @archlex/icons-coreUsage
import { IconRegistry, parseIconSvg, optimizeIcon } from '@archlex/icons-core';
// Create an icon registry
const registry = new IconRegistry();
// Register an icon
registry.register('my-service', {
id: 'my-service',
name: 'My Service',
svg: '<svg>...</svg>',
category: 'custom'
});
// Get an icon
const icon = registry.get('my-service');
// Parse and optimize SVG
const parsed = parseIconSvg('<svg width="100" height="100">...</svg>');
const optimized = optimizeIcon(parsed);Features
- SVG parsing and manipulation
- Icon optimization and normalization
- Registry pattern for icon management
- Type-safe icon definitions
- Supports both Node.js and browser environments
Icon Definition
interface IconDefinition {
id: string;
name: string;
svg: string;
category?: string;
tags?: string[];
viewBox?: string;
}Icon Registry
const registry = new IconRegistry();
// Register multiple icons
registry.registerMany([
{ id: 'icon1', name: 'Icon 1', svg: '...' },
{ id: 'icon2', name: 'Icon 2', svg: '...' }
]);
// Check if icon exists
if (registry.has('icon1')) {
const icon = registry.get('icon1');
}
// List all icons
const allIcons = registry.list();
// Search icons
const computeIcons = registry.search('compute');SVG Utilities
import { parseIconSvg, optimizeIcon, embedIcon } from '@archlex/icons-core';
// Parse SVG string
const parsed = parseIconSvg(svgString);
// Optimize SVG (remove unnecessary attributes, minify)
const optimized = optimizeIcon(parsed);
// Embed as data URI
const dataUri = embedIcon(optimized);Documentation
Visit archlex.dev for full documentation.
License
MIT
SVG winding rules
sanitizeSvg preserves fill-rule and clip-rule so compound shapes retain
cutouts and clipping geometry. Supported values are nonzero, evenodd, and
inherit, including presentation styles. Invalid values are rejected; external
references and active SVG content remain forbidden.
Stroke joins retain stroke-miterlimit when it is a finite SVG number of at
least 1, or inherit. Invalid values are rejected during sanitization.
