Repository navigation
Airframe theme-v6
Airframe for agents: the parts a person needs to work with an agent, from the design team's research, audit and Tower
streams and Sean's decisions of October 17. No token values change; no existing class changes its look except where noted.
- New published file
airframe.js(copied fromairframe/js/airframe.jsby the build): one ES module, no dependencies,
no build step, no Web Components. Markup helpers that match the contracts with every value escaped:status,icon,
meta,btn,avatar,obj,tag,el. Behaviours:toast(msg, {tone, action, timeout, critical}),
confirm({title, body, ok, cancel, danger, inspect})returningPromise<boolean>on anaf-dialog, and
drawer.open/close/togglewith Escape, focus return and an inert page. Alert inhibition: while anaf-dialogor
af-draweris open, or a text field has focus, non-critical toasts are held and shown afterwards (inhibited(),flush()). airframe-components.cssgains two stylesheets,agents.cssandpatterns.css, and these classes:- ApprovalCard v2:
af-approval__reason(deny with a required reason: anaf-fieldwithaf-input--areaand an
af-field__errorcarrying the failed mark and words),af-approval__editandaf-approval--editing(the arguments
become editable; the primary reads "Approve edited"),af-approval__hint(what "Approve for this session" grants and for
how long),af-approval__quorumandaf-approval__signed(signer avatars, "1 of 2 signed"),af-approval--waiting
(waiting on others: the queued ring and words, no lit ring, no primary),af-verdict__ok(approved is a quiet check and
a word) andaf-verdict__why(a denial carries its reason). The action row wraps. - Question:
af-question,af-question__q,__ctx,__opts,__free,__act; the approval role with the word
"Needs input"; free text dismisses the option chips through:has(). - Composer:
af-composer,af-composer__queued("Queued · applies after this tool call" with a take-back),
__qmsg,__box,__input,__row,__chips,__send,__why;is-disabledsays why. - Diff:
af-diff,af-diff__file,__path,__stat,__add,__del,__tools,__hunk,__hunk--failed,__hh,
__line,__line--ctx|add|del,__n,__s,__code,__cmt,__more,__thread,__note;af-comment,
af-comment__who,__name,__time,__text. Greyscale: additions infgwith a 2pxfggutter bar, deletions in
fg-mutedwith a 2pxline-strongbar, context infg-subtle; the only color is the failed triangle on the hunk a
failing test points at. - Avatar:
af-avatar--person|agent|firm,af-avatar--22|28|44,af-avatar--pending,af-avatars,af-avatars__more,
af-who,af-who__name,__sub. People round, agents hexagonal (clip-path, with a forced-colors edge and a
no-clip-path square fallback), firms square. The plainaf-avatar(the nav's account button) is unchanged except that
its pointer cursor and hover now apply only to abuttonora. - ObjectChip:
af-obj,af-obj--link,af-obj--restricted,af-obj__key,__title,__state(with
af-status--approvalfor the one color a chip may carry),af-obj__trust,af-objs. - Button:
af-btn--text, sentence-case Red Hat Text 13.5 px (13 small); the rule "friendlier where people read, mono
where data is" is in the Button README. - Controls:
af-input--area(a textarea in the input well),af-input--sans,af-field__error,af-chip,
af-chip--mono,af-chip--sm,af-chips;af-idno longer wraps. - Patterns (new dsCard group): PageHeader
af-page-head,af-page-head--s,--rule,__text,__title,__lede,
__sum,__actions; EmptyStateaf-empty[data-kind],af-empty--clear,--compact,__title,__text,
__counts,__act,__body; Toastaf-toasts,af-toasts--inline,af-toast,af-toast--bad,__msg,__act,
is-leaving; Dialogaf-dialog,af-dialog--wide,--danger,__form,__head,__title,__body,__foot;
Draweraf-scrim,af-drawer,af-drawer--right|bottom,__head,__title,__body,__foot,__grip, and the
is-openstate; layer variables--af-z-scrim100,--af-z-drawer110,--af-z-toast120, sizes--af-drawer-w
480px,--af-drawer-h40vh,--af-drawer-inset(set throughhtml.af-drawer-open--bottom). - Forced colors: every new part keeps its edges and marks in system colors (gutter bars and the hexagon edge in
CanvasText, pressed chips inHighlight, the diff and chips as outlines).
- ApprovalCard v2:
registry.json: new itemshelpers(airframe.js),approval-card,question,composer,diff,avatar,
object-chip,page-header,empty-state,toast,dialog,drawer; the skill lists every component.- Brand book:
guide/Status.mdadds "A question is not an approval, but it is the same role", "Waiting on others stays
grey", "Alert inhibition" and the Carbon and Airbus ECAM sources;guide/brand.mdadds "Who has the controls" (Agent has
control, grey; You have control, brand) and the avatar triad;guide/Data.mdadds the greyscale diff rule and objects by
reference. The command palette is deferred to theme-v7.