Building Accessible Components from the Ground Up

Woman using a smartphone on a yoga mat.

Marcus Reid

6 min read

Accessibility is not a feature you bolt on before launch. It is a structural decision that shapes every component in your design system from day one.

At Agentkit, we ship a dashboard that surfaces complex agent traces, execution logs, and real-time metrics. Our users include engineers who navigate entirely by keyboard, teams who rely on screen readers to review agent output, and operators who need high-contrast modes to monitor production systems in bright server rooms.

The cost of retrofitting

Most teams treat accessibility as a QA checklist. The component is built, styled, shipped — and then someone files a ticket about keyboard navigation. By that point, the fix is a patch, not a pattern.

We learned this the hard way with our first trace timeline component. It was a beautiful nested tree of expandable steps, tool calls, and model responses. It was also completely unusable without a mouse.

Rebuilding it took three sprints. Building it right from the start would have taken one.

Our framework

Every component in the Agentkit design system now passes through four gates before it ships:

Gate 1 — Semantic structure. Does the component use the correct HTML elements? A clickable row is a button, not a div with an onClick. A navigation list is a nav with an unordered list, not a stack of styled spans.

Gate 2 — Keyboard interaction. Can every action be performed without a mouse? We map every interactive element to a keyboard pattern from the WAI-ARIA Authoring Practices. Accordions use arrow keys. Modals trap focus. Tabs respond to arrow and home and end keys.

Gate 3 — Screen reader announcement. Does the component communicate its state? We test every component with VoiceOver and NVDA before merge. Expandable sections announce whether they are expanded or collapsed. Loading states announce when content arrives.

Gate 4 — Visual resilience. Does the component work at 200% zoom, in forced-colors mode, and at WCAG AAA contrast ratios? We use CSS custom properties for every color token so that high-contrast themes are a single variable swap.

Practical examples

Our FAQ accordion component — the one you see on our pricing page — is a good example. Each item is a button with aria-expanded. The answer region has role region and aria-labelledby pointing back to the question. The plus icon rotates to a close icon visually but the accessible label simply reads expanded or collapsed.

Our trace timeline uses a tree pattern. Each node is a treeitem with aria-level, aria-setsize, and aria-posinset. Expanding a node moves focus to the first child. Collapsing moves focus back to the parent.

The takeaway

Accessibility is not about compliance. It is about building components that work for everyone by default. If your foundational components are accessible, everything built on top of them inherits that quality automatically.

Start at the foundation. The rest follows.

Related articles

Related articles

Usage-based pricing that scales with you.

Usage-based pricing that scales with you.

Start free, pay for what runs. No seats, no platform fees, no surprise overages — just runs, tokens, and the tools you actually use.

Start free, pay for what runs. No seats, no platform fees, no surprise overages — just runs, tokens, and the tools you actually use.

Start free, pay for what runs. No seats, no platform fees, no surprise overages — just runs, tokens, and the tools you actually use.

Start free, pay for what runs. No seats, no platform fees, no surprise overages — just runs, tokens, and the tools you actually use.

The framework for building, deploying, and observing production AI agents. Made in Berlin, shipped globally.

© AgentKit Inc.
Berlin — 2026

The framework for building, deploying, and observing production AI agents. Made in Berlin, shipped globally.

© AgentKit Inc.
Berlin — 2026

The framework for building, deploying, and observing production AI agents. Made in Berlin, shipped globally.

© AgentKit Inc.
Berlin — 2026

Create a free website with Framer, the website builder loved by startups, designers and agencies.