Architectural Decision Records
Small, dated records of decisions that shaped tti-ux. The pattern is lifted from Michael Nygard's ADR template: context, decision, consequences.
ADRs are append-only history. When a decision changes, we don't edit the old
ADR — we write a new one and update the status of the old one to Superseded by ADR-NNNN. That way the reasoning behind obsolete decisions stays
recoverable.
Index
- 0001 — Nuxt 4 + Nuxt UI as the foundation
- 0002 —
Tux*as the component prefix - 0003 — Standalone repo until an npm team is provisioned
- 0004 — tux tokens live alongside the Nuxt UI theme, not inside it
- 0005 — Three-theme palette (tti / tti-dark / tti-hc) (toggle cycle superseded by 0006)
- 0006 — Separate high-contrast mode from the casual theme toggle
- 0007 — Container queries over viewport media queries
- 0008 — Data-display + reports section
- 0009 — tti-ux is the source of truth for TTI's BI design system
- 0010 — No TypeScript-only syntax in
pages/**/*.vue<script setup>(supplemented by 0011) - 0011 — Sibling
*.demo-data.tsmodules for typed page data - 0012 — Cross-framework distribution via single-source Web Components (supplements 0003)
- 0013 — An operational status ramp, separate from the semantic palette (extends 0005)
- 0014 — Operational surfaces are a kit target, not a host fork (extends 0013)
- 0015 — Brand alignment with TTI Communications & interactive design token playground (extends 0004)
- 0016 — Legacy modernization bridge (
tux-bridge.css) & WCAG 2.2 AAA architecture (extends 0004, 0012, 0014, 0015)
Contributing
When you make a non-trivial call (swap a dependency, change the naming convention, reshape the public API), write an ADR:
- Copy the format from an existing file.
- Number it sequentially — next ADR is the highest existing number + 1.
- Date it in ISO format.
- Keep it under ~1 page. ADRs that grow into full design docs belong in
docs/proper, not here.
Status values: Proposed, Accepted, Superseded by ADR-NNNN, Deprecated.