Trevarn — Brand Guidelines

Icon System

Minimal, Intent-Legible, Scalable
Browse all 189 icons

The Trevarn icon system is a single, authoritative vocabulary aligned with the brand's Vera Molnár-inspired, systematic visual language. Icons are semantic instruments, not decoration. This page is the manifesto: design rules, acceptance criteria, and the discipline that keeps the library coherent across 189 icons.

January 2026 · 189 icons · Stroke 1.5 canonical

Overview

What Trevarn icons communicate, and what they don't.

System Objectives

Trevarn icons exist to make operational software readable at a glance. They name things — devices, states, actions, places — without illustration, decoration, or branding noise. Meaning comes from shape; colour comes from context.

The system feels:

Calm · Intentional · Technical · Trustworthy


Five Colour Contexts

Icons may change colour based on context or state, never category. Icons themselves never choose colour — they inherit currentColor from the surrounding container or text.

Default / Neutral
--trevarn-ink
Overview / Workflows
--trevarn-glaz
Admin / Advanced
--trevarn-violet
Primary / Recommended
--trevarn-balan
Disabled / Read-only
--trevarn-mist

Sacred and Inviolable

1. One family, one weight

Single icon family, single optical size, single stroke weight — 1.5 canonical (see §Stroke weight rationale). No mixing of filled vs outline styles. Icons must feel designed as a system, not collected.

2. Shape carries meaning

Glyph = meaning. Colour = context or state. Icons must remain fully legible in monochrome at every size in the library.

3. Monochrome by default

Icons are never multicolour. Colour comes via currentColor inheritance from the surrounding container — never hard-coded inside the glyph.

4. One viewBox

Every icon uses viewBox="0 0 24 24". This is the optical canvas; no exceptions, no aspect-ratio drift.


Mandatory SVG Attributes

Every consumer of an icon must apply these attributes on the rendering SVG. The sprite symbols themselves carry no stroke or fill — the consumer controls them, which is how currentColor propagates through.

Required on every consuming <svg>

stroke="currentColor" fill="none" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24"

This guarantees:


Forbidden

These patterns fail review. No exceptions, no "just this once".

Multicolour icons

Category colour-coding (red = error inside the glyph, etc.)

Filled icons mixed with outline icons

Gradients, shadows, decorative effects

Branded logos as primary content (use device form, not wordmark)

Framework default icon packs without restyling

Multi-stroke families (one stroke weight; no thin/medium/bold trios)

Emojis or illustrative icons

Decorative icon backgrounds inside the glyph

The Test

If an icon draws attention to itself, it is wrong.


What Earns an Icon's Place

When a new icon is proposed, every criterion below must pass. If one fails, reject it — even if the others are excellent.

Acceptance criteria

If it fails one criterion, reject it. Curation is the quality gate; the library shrinks before it grows.


Brand-shaped Icons

A pattern introduced during the 92→189 expansion: a subset of icons depict specific commercial devices (Apple TV, Sonos Arc, Bambu Lab P1, Ubiquiti switch). These are brand-shaped, not branded — the icon shows the physical form of the device, not its wordmark or logo.

Three principles

1. Depict the device, not the wordmark

The Sonos Arc icon is a long thin bar with dotted grille perforation — that's what the speaker looks like. Not the Sonos wordmark in a box. The exception: boxy devices where the wordmark IS the visual identity (Apple TV is just a black puck — the white "tv" wordmark is the only thing distinguishing it from a generic puck). For those, the wordmark belongs in the icon.

2. Size-degradation pattern

Brand-shaped icons are designed to degrade gracefully: full silhouette + brand detail at 48px, dominant silhouette + simplified detail at 24px, recognisable silhouette only at 16px. If the brand differentiator (a sun-shade hood, an LCD panel, a logo cutout) doesn't survive at 16px and the icon collapses to a generic shape, the brand variant doesn't earn its place — drop it and let context do the work.

3. Within-family discrimination

When multiple devices from the same brand exist (Bambu A1 vs P1, Sonos Arc vs Symfonisk, Echo vs HomePod), the discriminator is the actual physical difference — open frame vs closed cube, long bar vs compact box, flat top vs curved dome. Within a brand family, silhouette differences carry the recognition.

Examples from the library

device-apple-tv
Wordmark-in-box variant — the wordmark IS the device's visual identity.
device-bambu-a1
Open A-frame silhouette: vertical posts + sliding bed visible past the uprights.
device-bambu-p1
Closed-cube silhouette: enclosure + door window + LCD strip. Distinct from A1 by silhouette alone.
device-sonos-arc
Long thin bar at ~6.3:1 aspect ratio + dotted grille — distinct from the bookshelf-form Symfonisk.

Stroke Weight Rationale — 1.5 Canonical

The library's canonical stroke weight is 1.5. This was changed from 1.75 during the 92→189 expansion. The change is brand-system-wide — it affects all icons, not just new ones.

Why 1.5, not 1.75

The original library at 92 icons used 1.75-stroke. As the expansion brought in detail-heavier icons — multi-port switches, RJ45 silhouettes with cable + LED indicators, 3D-printer frames with sliding beds, network-state pairs distinguished by dash patterns — 1.75 stroke became too thick at 16px. Internal detail blurred into a heavy mass; pair-distinguishability collapsed.

Dropping to 1.5 buys the detail-heavy icons room to breathe at small sizes without requiring fewer paths. The trade-off is a slightly lighter visual feel, which is acceptable in the brand context (Trevarn's voice is calm and technical, not bold).

What changed when 1.5 landed


Process and Discipline

How the library grew from 92 to 189 icons without losing coherence. These are operating rules, not aspirations.

Three rules that kept the expansion clean

1. Frozen-after-approval

Once an icon is approved in review, it is frozen — no further modification without explicit consent. This rule was established mid-pilot after silent drift caused review thrash. The frozen rule means a 16px legibility check that passed in week one is still valid in week six; reviewers don't re-litigate already-decided icons.

2. Pilot-then-bulk

New design vocabulary lands as a small pilot batch (10-12 icons) before bulk work begins. The pilot tests stroke weight, optical rhythm, and naming conventions on a manageable surface. Once the pilot is approved, bulk batches consume the validated vocabulary without re-deriving it.

3. Path-reuse documentation

Every batch surfaces its reuse decisions explicitly: which icons share a base form, which siblings differ only in state, which intentionally use different metaphors despite semantic similarity. Decisions are documented up front in the PR notes — reviewers see the reuse intent before approving, not after wondering why two icons look similar.

How new icons enter the library

PR-driven, never via pixel-uploads or design-tool exports. The PR includes: the SVG symbol added to the canonical sprite, the metadata entry in trevarn-icons.json, the TypeScript registry entry, and a review HTML rendering the icon at 16/24/48px on light + dark backgrounds. The acceptance criteria above are checked against the rendered output, not the design intent.


Usage in Trevarn UI

Context Rules
Workflow Cards Icon appears top-left or leading
Icon size consistent across all cards
Icon colour inherited from section context
No decorative backgrounds behind icons
Navigation (TopBar / LeftRail) Icons optional, text-first
If used, icons are neutral and secondary, never dominant over labels
Admin Areas Icons inherit Violet context automatically
No special admin icon styles
Device Insights Brand-shaped icons used for known devices
Generic icons (e.g. device-camera-bullet) used as fallback when brand variant doesn't earn its place at 16px

Implementation

The canonical sprite, the Vue component, and how to consume them.

Canonical sprite

Location: packages/ui-core/src/assets/icons/trevarn-icons.svg in the @trevarn/ui-core package. Served on this site at /icons/trevarn-icons.svg.

The sprite is loaded once at app bootstrap and referenced via <use>:

<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"> <use href="/icons/trevarn-icons.svg#icon-{name}" /> </svg>

The sprite ships with no stroke or fill on its symbols; the consuming SVG controls them. This is what allows currentColor to flow through.

Vue component — Icon.vue

The drop-in component shipped in @trevarn/ui-core. It enforces discipline: no colours inside icons, no random sizing, no icon misuse.

<script setup lang="ts"> import { computed } from 'vue' const props = defineProps<{ name: string size?: number | string title?: string }>() const sizePx = computed(() => typeof props.size === 'number' ? `${props.size}px` : props.size ?? '20px' ) </script> <template> <svg :width="sizePx" :height="sizePx" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" class="trevarn-icon" > <title v-if="title">{{ title }}</title> <use :href="`#icon-${name}`" /> </svg> </template>

Usage examples

// Workflow card <Icon name="device-chip" class="text-trevarn-glaz-500" /> // Admin tool <Icon name="config-gear" class="text-trevarn-violet-500" /> // Recommended action <Icon name="support-escalate" class="text-trevarn-balan-500" /> // Brand-shaped device <Icon name="device-sonos-arc" />

Locked Icon System

Trevarn icons are SVG symbols rendered via <use>.

Violations should fail review.


Summary Principle: Icons in Trevarn are quiet, systematic, and intentional. Meaning comes from form. Colour comes from context. Consistency builds trust.

This system applies to every Trevarn product, today and tomorrow.

Browse all 189 icons

The icon catalog is searchable by name and tag, grouped by category, with click-to-copy on every glyph.

Open catalog