Skip to content

Airframe

Components

Each card is one component: its Night preview, its group and what the preview shows. Open one for when to use it, do and don't, what you provide and the markup; the gallery renders every preview live in both themes. Each component is a set of af- classes in theme/airframe-components.css, kept in airframe/components/<Name>/ with its README and preview.html.

Open the gallery Brand book

Foundations

Cards

Controls

Patterns

Alerts

Governance

Data

Fleet

Marketing

Conventions

  • Names are BEM under af-. af-card__foot, af-btn--primary, af-status--approval. State classes are is-active, is-selected, is-attention.
  • Markup is yours. Airframe ships CSS and one optional helper module, no framework. Render the markup the README shows from whatever your app uses, or build it with airframe.js (status(), btn(), meta(), avatar(), obj()). The helpers return the same markup with every value escaped. toast(), confirm(), drawer, expand and deck carry the behaviours.
  • Patterns are components. The page-level recipes (page header, empty state, toast, dialog, drawer) live in airframe/components/ under the Patterns group with the same README and preview contract.
  • New parts start as tokens. If a screen needs something the components don't cover, build it from var(--af-*) tokens in the tool's own CSS. Propose it here once a second tool needs it.