SOTER

SOTER Design System Specification

Purpose

This specification defines SOTER's design system: visual identity, typography, color model, UI tokens, component class vocabulary, and the relationship to Carbon-inspired implementation patterns.

The system is SOTER-owned. Carbon may inform component ergonomics and enterprise UI conventions, but SOTER must not name or structure its design language as a Carbon dependency.

Scope

This document covers:

  • brand foundation and visual identity;
  • typography and density;
  • color roles and theme presets;
  • CSS token catalog;
  • component class vocabulary;
  • migration from framework-specific styling to SOTER-owned tokens;
  • validation rules for UI and documentation surfaces.

Non-Goals

Terminology

Term Meaning
Design token Named visual variable for color, spacing, type, border, elevation, or surface role.
Brand token Token expressing SOTER identity, such as primary colors or symbolic accents.
Functional token Token expressing UI purpose, such as background, border, text, status, or focus.
Component class Stable CSS class naming a reusable UI role.
Carbon-inspired Pattern influenced by Carbon's enterprise ergonomics without adopting Carbon naming as the SOTER source of truth.

Model or Contract

Brand Foundation

SOTER's visual language should communicate:

  • operational clarity;
  • trust and auditability;
  • text-first modeling;
  • semantic precision;
  • enterprise readiness without generic SaaS decoration.

The interface should feel work-focused, dense enough for repeated use, and quiet enough to support analysis. It should avoid decorative gradients, vague stock imagery, and oversized marketing composition in operational surfaces.

Typography

Typography must prioritize readability and stable layout. Use restrained heading scales in tools, dashboards, forms, and technical views. Reserve large display type for public-facing entry points or true hero contexts.

Recommended roles:

Role Use
Display Public page headline or brand signal only.
Heading Section and panel titles.
Body Documentation, forms, tables, and operational copy.
Code Logos source, identifiers, CLI commands, and generated artifacts.
Caption Metadata, hints, timestamps, and secondary labels.

Color System

Colors are split into brand and functional layers.

Brand tokens identify SOTER. Functional tokens express UI role. Do not overload one --soter-* namespace with both brand identity and surface state unless the token name makes the role explicit.

Recommended categories:

--soter-brand-*
--soter-surface-*
--soter-text-*
--soter-border-*
--soter-accent-*
--soter-status-*
--soter-focus-*

Token Catalog

The minimum token surface is:

:root {
  --soter-brand-primary: #1f4f8f;
  --soter-brand-secondary: #0f766e;
  --soter-surface-page: #f7f8fa;
  --soter-surface-panel: #ffffff;
  --soter-surface-muted: #eef2f6;
  --soter-text-primary: #172033;
  --soter-text-secondary: #4f5f73;
  --soter-border-subtle: #d6dde8;
  --soter-border-strong: #9aa8ba;
  --soter-accent-graph: #8b5cf6;
  --soter-status-success: #16803c;
  --soter-status-warning: #a16207;
  --soter-status-danger: #b42318;
  --soter-focus-ring: #2563eb;
}

These values are baseline tokens, not a final visual identity audit. Any future brand refinement must preserve the category split.

Component Class Vocabulary

Component classes should name stable UI roles rather than implementation framework internals:

soter-app-shell
soter-sidebar
soter-toolbar
soter-panel
soter-section
soter-table
soter-form
soter-field
soter-button
soter-button-primary
soter-button-secondary
soter-status-pill
soter-code-block
soter-diagram-surface
soter-model-editor
soter-inspector

Framework-specific classes may exist inside implementation code, but documentation and generated UI contracts should use SOTER-owned vocabulary.

Carbon-Inspired Migration

Carbon is useful as an enterprise UI reference: accessible components, dense tables, form patterns, status labels, and predictable toolbars. SOTER should borrow patterns, not identity.

Migration rule:

Carbon pattern -> SOTER token/component vocabulary -> implementation adapter

Do not expose Carbon naming as the canonical design language.

Rules

  • Prefer functional token names over color names in component CSS.
  • Keep brand tokens separate from surface, text, border, and status tokens.
  • Keep operational UI dense, scannable, and restrained.
  • Use cards only for repeated items, modals, or genuinely framed tools.
  • Avoid nested cards and decorative page-section cards.
  • Keep text within container bounds on desktop and mobile.
  • Use icons for common tool actions where a standard icon exists.
  • Treat design tokens as a contract referenced by generated UI surfaces.
  • Treat Carbon as inspiration or implementation detail, not as SOTER's design source of truth.

Examples

Operational Panel

<section class="soter-panel">
  <header class="soter-toolbar">
    <button class="soter-button-primary">Validate</button>
  </header>
  <div class="soter-model-editor"></div>
</section>

Status Token Use

.soter-status-pill[data-state="warning"] {
  color: var(--soter-status-warning);
  border-color: var(--soter-status-warning);
}

Validation

Validate design-system use by checking:

  • no new public component vocabulary is introduced without adding it here;
  • brand tokens and functional tokens remain separate;
  • operational UI avoids marketing-style composition;
  • generated UI surfaces reference SOTER-owned classes/tokens;
  • components remain legible and non-overlapping at supported viewport widths.

Compatibility

This document supersedes the previous split between visual identity, UI token catalog, and Carbon-inspired integration. Existing references to those documents should be redirected here.

Open Questions

  • Should token values be generated from a source JSON file?
  • Which UI components require first-class generated interaction contracts?
  • Should public marketing pages use a separate visual theme derived from the same brand tokens?

Related Documents

SOTER v1.12.0-beta