Assemblies

Real sections, ready to paste. Nothing to install first.

Page sections assembled from Airframe patterns and plain HTML. Because Airframe is CSS, the markup you copy renders the same in React, Vue, Angular or a static file — no utility framework, no icon package, no build step.

24 assemblies · 57 patterns · layout recipes

Preview copy — plan names, prices, quotes and company names — is placeholder content for a fictional product, not an Airframe claim. Airframe is MIT licensed and free.

Marketing

Landing page sections — hero through closing call to action.

Announcement banner

Full-width bar for a launch, migration notice or maintenance window. af-banner carries the intent colour and its own bottom border, so it sits directly above the site header with nothing between them.

Built from Banner Link
Airframe 1.0 is out. Cascade layers, container queries and 60+ patterns. Read the changelog

Marketing hero

Centered hero with a pill announcement, fluid headline, supporting lead, and a paired primary + outline call to action.

New Version 1.0 is out

The structure your framework is missing.

One stylesheet, no runtime. Paste this section into React, Vue, Angular or plain HTML and it renders the same.

Feature grid

Three-up feature cards. Each card pairs a numbered icon box with a title and a one-line value proposition. Collapses to a single column below 768px.

Why Airframe

Primitives that outlive your stack

No runtime

Classes on markup. No provider, no hydration, nothing to ship at runtime.

Accessible defaults

Focus rings, contrast and hit areas come from the tokens, not from a checklist.

Themed by tokens

Override a handful of custom properties and every pattern follows.

Pricing tiers

Three-tier pricing grid with the middle plan emphasised by a primary border and a chip. Prices use af-stat-display; each card footer carries a full-width action.

Pricing

Plans that scale with the team

Starter

For side projects

$0

  • Up to 3 projects
  • Community support
  • 7-day history

Team

Most popular
For product teams

$29 / user / month

  • Unlimited projects
  • Shared environments
  • Priority support

Enterprise

For regulated rollouts

Custom

  • SSO and audit log
  • Dedicated environment
  • Named support engineer

Testimonials

Two-up quote cards using figure and blockquote, with an avatar-led attribution footer. Swap the initials avatar for an image when you have one.

Customers

What teams say after a week

We deleted 4,000 lines of utility classes and the design got more consistent, not less. The markup finally reads like the UI.
A. Rivera Platform lead
Two frameworks, one stylesheet. Our Angular admin and our React marketing site finally look like the same product.
J. Tanaka Design systems engineer

CTA banner

Full-width closing call to action on an inverse surface. Colour comes from af-bg-surface-inverse-primary plus af-text-inverse, so it follows the theme instead of hardcoding a dark palette.

Build the thing. Ship the thing.

One stylesheet, every framework, nothing to configure. Start with the install and add patterns as you need them.

Logo cloud

Social-proof strip that sits between the hero and the feature grid. Wordmarks are plain list items here — drop in img elements with the same list structure when you have real logos.

Trusted by teams at

  • Northwind
  • Contoso
  • Fabrikam
  • Tailspin
  • Adventure Works

FAQ accordion

Five-question FAQ built on native details and summary, so it expands with zero JavaScript and stays keyboard accessible by default.

FAQ

Common questions

Do I need a build step?

No. Import one stylesheet from npm or a CDN and start writing classes. There is no compiler, no config file and no purge step.

Which frameworks does it support?

All of them. Airframe is CSS plus markup conventions, so the same class strings work in React, Vue, Angular, Svelte, Rails or a static HTML file. React uses className instead of class.

Do I need Tailwind or an icon library?

Neither. Every block on this page uses only Airframe classes and plain HTML, so pasted markup renders the same without adding a single dependency.

How do I match our brand?

Override the design tokens. Setting a handful of custom properties such as --af-color-primary and --af-radius-md re-themes every pattern at once, with no rebuild.

Will it fight my existing CSS?

Airframe ships inside CSS cascade layers with low specificity, so your own rules win by default and you can adopt it one page at a time.

Newsletter signup

Single-field email capture in a card. The input and button sit in a 12-column grid so they share a row from 640px up and stack on phones.

Release notes

One email per release. Nothing else.

Unsubscribe in one click. We never share your address.

Blog card grid

Three-up article grid. Each card is an <article> whose title wraps the link, so the whole row of headings reads as a list of destinations rather than a wall of "read more".

Writing

From the blog

Layers let a design system ship defaults your own CSS can override without a specificity war.

What we changed after watching keyboard users try to check out on three real storefronts.

Custom properties all the way down means a theme is a stylesheet, not a compile target.

Authentication

Sign-in and account entry points.

Sign-in card

Narrow sign-in card with labelled email and password fields, a remember-me checkbox paired with a recovery link, and a full-width submit.

Sign in

Welcome back
Forgot password?

Create account card

Registration card with autocomplete tokens that let password managers do their job, a help line stating the password rule before submission, and a required terms checkbox.

Create your account

Free for 14 days, no card required

At least 12 characters.

Application

Dashboard and collection-view furniture.

Page heading with actions

The bar that opens almost every application screen: breadcrumb trail, h1, status and metadata, and the page-level actions. Current page is plain text with aria-current, not a link back to itself.

Deployments

Live Sydney · updated 4 minutes ago by A. Rivera

Stats row

Four-tile KPI row for a dashboard header. af-kpi already draws its own surface, so the tiles go straight into the grid rather than being wrapped in cards.

Overview

This month

Updated 12 minutes ago

Monthly active users
48,294
+12.4% vs last month
Sessions today
3,128
+5.2% vs average
Conversion rate
4.7%
-0.3% vs last week
Response time
182ms
-8.1% vs last week

Empty state panel

Card-wrapped empty state for a collection view that has no rows yet. Pairs a primary action with a lower-commitment alternative.

Projects

Everything you ship lives here

No projects yet

Create a project to start tracking deploys, environments and members.

Table with toolbar and pagination

The workhorse collection view: card header as toolbar, a real <table> with scope on every header cell, and pagination in the footer. af-table-responsive only scrolls the table, so the toolbar and pagination stay put.

Members

24 people can access this workspace
Workspace members, sorted by name
Name Role Status Last active Actions
A. Rivera Admin Active 2 hours ago
J. Tanaka Editor Invited Never
M. Okafor Viewer Active Yesterday

Record list with row actions

Stacked list where every row carries metadata and its own controls. af-action-row-group draws the dividers, so the rows need no borders of their own — and no interactive element ends up nested inside another.

Pending invitations

Invited, but not signed up yet

j.tanaka@example.com

Editor · invited 3 days ago by A. Rivera

m.okafor@example.com

Viewer · invited yesterday by A. Rivera

s.mehta@example.com

Admin · invite expires in 2 days

Detail panel

Record summary for a detail screen. A description list is the right element here: af-dl lays the pairs out in two columns while dt/dd keep the label-to-value relationship in the accessibility tree.

Invoice INV-2043

Issued 12 March 2026
Awaiting payment
Customer
Northwind Trading
Billing email
ap@example.com
Plan
Team · 24 seats
Amount due
$696.00 AUD
Due date
26 March 2026

Confirmation dialog

Destructive-action confirmation on the native <dialog> element, so Escape, focus handling and the backdrop come from the browser — the two inline handlers are the whole integration. The preview is the same markup left open inside a positioned box, since an open non-modal dialog is absolutely positioned.

Delete Atlas?

Atlas and its 14 deployments will be removed permanently. Members lose access immediately and this cannot be undone.

Forms

Multi-field capture with real field semantics.

Contact form

Two-column contact section: an intro panel with a description list of contact details, and a card-wrapped form whose fields share a 12-column grid.

Contact

Talk to the team

Sales questions, technical help or partnerships. A real person answers every message.

Email
hello@example.com
Response time
One business day

Tell us a little about what you are building.

Settings form with sections

Long settings form split into fieldsets with legends, so each group announces itself. Text fields share a 12-column grid; the toggles use action rows, where every switch gets its label from the row title.

Workspace settings

These apply to everyone in the workspace
Details

Shown to new members when they accept an invitation.

Notifications

Deploy alerts

Email the team when a deploy fails

Weekly digest

Usage and billing summary every Monday

Need the page around the assembly?

Each assembly is a single section. For app chrome — sidebars, app shells, settings and table pages — see the layout recipes, or open the admin demo to see the whole vocabulary composed into one interface.