
Security News
pnpm 11.5 Adds Support for Recognizing npm Staged Publishes
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.
@editora/icons
Advanced tools
Framework-agnostic SVG icon library for the Editora UI ecosystem with outline, solid, and duotone variants
[!IMPORTANT] Live Website: https://editora-ecosystem.netlify.app/
Storybook: https://editora-ecosystem-storybook.netlify.app/?path=/story/ui-icons-catalog--all-icons
Framework-agnostic SVG icon library for the Editora UI ecosystem, with 500+ ready-to-use icons.
Use this package when you need:
@editora/ui-core.npm install @editora/icons
import { renderIconSvg, listIcons } from '@editora/icons';
const svg = renderIconSvg('check', {
variant: 'outline',
size: 16,
color: 'currentColor',
strokeWidth: 1.5,
decorative: true
});
console.log(svg);
console.log(listIcons().slice(0, 10));
iconDefinitionsiconNameListgetIcon(name)hasIcon(name)listIcons()listIconAliases()registerIcon(definition)registerIcons(definitions)resolveIcon(name, variant?)renderIconSvg(name, options?)iconToDataUri(name, options?)registerWithEditoraUI(registerFn)IconDefinitionIconGlyphIconNodeIconRenderOptionsIconVariantResolvedIconIconTagIconAttrValueIcon names are normalized internally:
-So "Chart Line", "chart_line", and "chart-line" resolve to the same key pattern.
Supported variants:
outline (default fallback)solidduotoneIf a requested variant is missing, the renderer automatically falls back to outline.
Definitions can include aliases. getIcon and resolveIcon check aliases automatically.
import { hasIcon, getIcon, resolveIcon, listIconAliases } from '@editora/icons';
if (hasIcon('navigation')) {
const def = getIcon('navigation');
const resolved = resolveIcon('navigation', 'duotone');
console.log(def?.name, resolved?.variant);
}
console.log(listIconAliases());
import { renderIconSvg } from '@editora/icons';
const svg = renderIconSvg('chart-line', {
variant: 'duotone',
size: 20,
color: 'var(--ui-fg)',
secondaryColor: 'var(--ui-fg-muted)',
strokeWidth: 1.5,
strokeLinecap: 'round',
strokeLinejoin: 'round',
title: 'Revenue trend'
});
import { iconToDataUri } from '@editora/icons';
const uri = iconToDataUri('check-circle', {
size: 14,
color: '#16a34a',
decorative: true
});
// Example: CSS background-image
// background-image: url("${uri}");
IconRenderOptionsCommon options for renderIconSvg and iconToDataUri:
| Option | Type | Default | Notes |
|---|---|---|---|
variant | 'outline' | 'solid' | 'duotone' | 'outline' | Falls back to outline when unavailable. |
size | number | string | 15 | Sets SVG width/height. |
color | string | 'currentColor' | Primary color. |
secondaryColor | string | color | For duotone secondary paths. |
strokeWidth | number | 1.5 | Stroke thickness. |
absoluteStrokeWidth | boolean | false | Keeps perceived stroke width stable across sizes. |
strokeLinecap | 'butt' | 'round' | 'square' | 'round' | Applied when stroke exists. |
strokeLinejoin | 'miter' | 'round' | 'bevel' | 'round' | Applied when stroke exists. |
title | string | undefined | Adds <title>. |
ariaLabel | string | inferred | Accessibility label for semantic icons. |
decorative | boolean | inferred | If true, outputs aria-hidden/presentation role. |
rotate | number | 0 | Rotation in degrees. |
flip | 'horizontal' | 'vertical' | 'both' | undefined | Flip transform. |
rtl | boolean | false | Mirrors icons marked rtlMirror. |
className | string | undefined | Applied on root <svg>. |
style | string | undefined | Inline style text on root <svg>. |
attrs | Record<string, ...> | undefined | Extra root attributes (data-*, etc.). |
You can extend the registry at runtime.
import { registerIcon, renderIconSvg, type IconDefinition } from '@editora/icons';
const CustomBillingIcon: IconDefinition = {
name: 'billing-custom',
aliases: ['billing-custom-outline'],
tags: ['finance', 'invoice'],
categories: ['business'],
viewBox: '0 0 15 15',
variants: {
outline: {
nodes: [
{ tag: 'rect', attrs: { x: 2, y: 1.5, width: 11, height: 12, rx: 2, fill: 'none', stroke: 'currentColor' } },
{ tag: 'line', attrs: { x1: 4, y1: 5, x2: 11, y2: 5, stroke: 'currentColor' } },
{ tag: 'line', attrs: { x1: 4, y1: 8, x2: 9.5, y2: 8, stroke: 'currentColor' } }
]
}
}
};
registerIcon(CustomBillingIcon);
console.log(renderIconSvg('billing-custom'));
Register many icons:
import { registerIcons } from '@editora/icons';
registerIcons([/* IconDefinition[] */]);
@editora/react-icons@editora/react-icons consumes this package for React components and typed name APIs.
@editora/ui-coreUse the built-in bridge to register all available icons into a UI core icon registry.
import { registerWithEditoraUI } from '@editora/icons';
// registerFn(name, svg) should add icon markup into your UI icon store.
registerWithEditoraUI((name, svg) => {
console.log('registered', name, svg.length);
});
decorative: true (or omit title/ariaLabel so it is inferred).title or ariaLabel.@editora/icons is sideEffects: false for tree-shaking.iconToDataUri can be cached by (name, variant, size, color) keys.cd packages/icons
npm run build
fill/stroke overrides.FAQs
Framework-agnostic SVG icon library for the Editora UI ecosystem with outline, solid, and duotone variants
We found that @editora/icons demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
pnpm 11.5 now recognizes npm staged publish approvals in release metadata, preventing those releases from being mistaken for lower-trust package publishes.

Security News
Federal audit finds NIST lacked a plan to clear the NVD backlog, wasted funds on duplicate work, and delayed use of CISA data.

Research
/Security News
A mini Shai-Hulud campaign compromised Red Hat Cloud Services npm packages to steal developer and CI/CD secrets during installation.