One quiet, consistent line language for Irozon interfaces.
Irozon products use Tabler Icons as the canonical UI icon system.
The completed Irozon Tools migration is the reference implementation: individual
outline icons from @tabler/icons-react, with 16 / 20 / 24px sizing,
currentColor and accessible controls.
Import only the icons a surface needs.
Import named outline icons directly. Do not import the entire icon namespace; the individual import keeps usage explicit and avoids bringing an unnecessary catalog into a product bundle.
import {
IconHome,
IconSettings,
IconSearch,
} from "@tabler/icons-react";
Canonical style
- Use Tabler's normal outline icons. Do not mix outline and fill styles arbitrarily.
- Keep the normal/default stroke treatment consistent; do not vary stroke widths between icons.
- Tabler Icons are for interface icons, not brand identities.
Three sizes cover the interface.
Choose a size from the component context. Icons should align optically with adjacent text and controls, while the component keeps ownership of spacing.
currentColorAvoid arbitrary sizes unless a component genuinely requires one. Preserve the component's existing spacing rather than adding icon-specific margins.
Use the library as a system, not a catalog.
These common interface roles show the range of the language. The Tabler library is the source for the full catalog; this page documents Irozon's conventions.
Let the component own the layout.
The React examples below use Irozon's existing Button and
NavItem APIs. The inline previews show the same semantic behavior in
the documentation site's framework-neutral markup.
Labeled button
The icon is decorative because the visible label already names the action.
import { Button } from "@irozon/design-system-react";
import { IconPlus } from "@tabler/icons-react";
<Button>
<IconPlus size={20} aria-hidden="true" />
Add item
</Button>
Icon-only button
An icon-only control must provide its accessible name explicitly.
import { IconTrash } from "@tabler/icons-react";
<Button variant="destructive" iconOnly aria-label="Delete item">
<IconTrash size={20} aria-hidden="true" />
</Button>
Navigation state
A Tabler icon inherits currentColor from its navigation item, so icon
and label resolve together in the same state and theme.
Canonical active treatment: a straight vertical green accent on the outer edge of the nav item, separate from the square icon slot. Do not use a rounded or bracket-style accent around the icon.
import { NavItem } from "@irozon/design-system-react";
import { IconHome } from "@tabler/icons-react";
<NavItem active icon={<IconHome size={20} aria-hidden="true" />}>
Home
</NavItem>
Meaning belongs to the control, not the shape.
Use icons to reinforce interface meaning without making people decode the UI.
- Icons inside labeled buttons and links are normally decorative: use
aria-hidden="true". - Icon-only controls need an accessible label such as
aria-label="Delete item". - Do not rely on an icon alone for important or destructive meaning when text is appropriate.
- Keep the icon aligned with the adjacent label; do not use arbitrary margins to correct a component's spacing.
Tabler is for interface icons, never brand identities.
Keep marks that identify a company, product or platform as the official asset for that brand. Do not replace them with an approximate Tabler icon.
WordPress · npm · other third-party brand marks
Brand marks keep their canonical shape, proportions and recognition.
IconBrandApproximation
Tabler's interface glyphs are not replacements for official identity assets.