
Security News
npm Tooling Bug Incorrectly Marks One-Character Packages as Security Holders
npm confirmed a tooling bug incorrectly marked several one-character packages as security holders and said it was working on a rollback.
@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
The npm package @editora/icons receives a total of 15 weekly downloads. As such, @editora/icons popularity was classified as not popular.
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
npm confirmed a tooling bug incorrectly marked several one-character packages as security holders and said it was working on a rollback.

Research
/Security News
Newer packages in this compromise use native extensions and .pth loaders to execute JavaScript stealers in developer environments.

Research
Socket found 37 malicious PyPI wheels that abuse Python startup hooks to launch a Bun-powered credential stealer tied to Mini Shai-Hulud/Miasma.