Skip to main content

Visual design system

Quick Reference

WhatDesign system and visual decisions for A55 docs
WhyUnderstand the tokens, components, and layout principles that shape every page
Reading Time8 min
DifficultyBeginner

The A55 documentation platform uses a purpose-built design system. Four teams — UI component design, documentation architecture, developer experience research, and framework engineering — converged on these visual decisions. Every token, component, and layout rule described here is implemented and live.

Design tokens

Design tokens define the foundational visual values. They ensure consistency across light mode, dark mode, and all custom components.

TokenLight valueDark valuePurpose
Primary blue#2563eb#60a5faLinks, badges, active sidebar items. Dark value meets WCAG AA contrast.
Body typefaceInterInterGoogle Developer Docs standard. Clean, highly legible sans-serif.
Code typefaceJetBrains MonoJetBrains MonoOptimized for code block readability. Ligature-free.
Card radius12px12pxConsistent across cards, admonitions, and education boxes.
Spacing base4px4pxAll spacing increments use multiples of 4.
Sidebar width260px260pxFixed width following the Stripe/Twilio three-column pattern.
Content max-width800px800pxReadable line length for technical prose.

Semantic colors

NameValueUsage
--a55-success#16a34aSuccess states, POST method badges
--a55-warning#ca8a04Warnings, PUT method badges
--a55-danger#dc2626Errors, DELETE method badges
--a55-info#0891b2Informational callouts
--a55-text-muted#64748bSecondary text, labels, timestamps

Custom MDX components

Five custom components extend the standard Docusaurus toolkit. Each component solves a specific documentation problem.

QuickReference

A card at the top of every page. It shows what the page covers, why it matters, estimated reading time, difficulty level, and prerequisites.

FieldPurpose
whatOne-line summary of the page content
whyThe reason a developer needs this page
timeEstimated reading time
difficultybeginner, intermediate, or advanced
prerequisitesList of pages or concepts the reader needs first

Visual pattern: Left blue accent border. Responsive grid. Uppercase micro-labels. The developer sees in three seconds what the page covers.

EducationBox

A collapsible box for background concepts. Senior developers skip it. Junior developers expand it to learn.

BehaviorDetail
Default stateCollapsed
ToggleAnimated chevron rotates on click
BackgroundSubtle blue tint from the primary color
ContentExplanatory text for concepts like OAuth, idempotency, or card data security

Visual pattern: Collapsed by default. Blue-tinted background. Chevron animation on toggle. Zero visual noise for experienced readers.

EndpointHeader

A badge-and-path bar for every API reference page. The HTTP method appears as a colored pill. The endpoint path appears in monospace.

MethodBadge color
GETBlue (#dbeafe / #1d4ed8)
POSTGreen (#dcfce7 / #15803d)
PUTYellow (#fef3c7 / #92400e)
DELETERed (#fee2e2 / #991b1b)

Visual pattern: Color-coded pill + monospace path. Developers recognize the HTTP method instantly without reading.

NextSteps

Two or three cards at the bottom of every page. Each card links to the next logical page in the developer journey.

FieldPurpose
titleShort name of the next page
descriptionOne sentence about what the developer does there
toLink path

Visual pattern: Hover elevation + border accent. Progressive disclosure guides the developer forward.

StepFlow

Numbered steps with a circular indicator and a vertical connecting line. Built for tutorials and sequential guides.

ElementVisual
Step numberBlue circle with white text
ConnectorVertical line between steps
ContentIndented block under each step

Visual pattern: Step numbers in primary blue circles. Vertical line connects them. The content area is indented. The last step has no trailing line.

Layout principles

The layout follows patterns established by Stripe, Twilio, and Adyen documentation.

Three-column layout

ColumnWidthContent
Left sidebar260pxNavigation tree with section categories
Center content800px maxPage prose, code blocks, tables
Right columnAutoTable of contents (heading links)

Visual hierarchy rules

RuleImplementation
Active sidebar itemLeft blue border + tinted background
Section headersUppercase with letter-spacing in the sidebar
H2 headingsTop border separates each section visually
Table rowsHover tint for scanability
Admonitions12px radius + shadow. Visible but not aggressive.
Code blocks1px border separates code from prose
Dark modeAll tokens inverted. Shadows use deeper opacity values.
Landing pageGradient text on the title. Card grid with hover elevation.

Information architecture

The documentation moved from a flat structure to a journey-based hierarchy.

Before (docs.a55.tech on ReadMe)

  • 47 pages under a single "Getting Started" category
  • No hierarchy or progressive disclosure
  • API reference pages showed raw JSON from the OpenAPI spec
  • Introduction page contained duplicated content

After (Docusaurus)

44 pages organized in six clear sections:

SectionPagesPurpose
Getting Started5Linear onboarding: credentials, auth, environment, test cards
Integration Methods8H2H, SDK v1/v2, Checkout Page, plus 3DS, DataOnly, Network Token
Payment Methods7One page per method with lifecycle diagrams
Security and Features5Tokenization, Zero Auth, anti-fraud, subscriptions, performance
Reference6Status codes, response codes, provider matrix, BIN lookup, FX rates
API Reference13Every endpoint with correct routes, parameter tables, and examples

Technical corrections

The migration from ReadMe to Docusaurus fixed these issues:

Problem in docs.a55.techCorrection
10 of 12 API routes had incorrect pathsAll routes now use the /bank/wallet/ prefix matching the source code
Capture Charge used POSTCorrected to PUT to match the actual API behavior
Zero Auth path was /zero-auth/validateCorrected to /bank/wallet/zeroauth/
Introduction page had duplicated contentDuplication removed
API Reference showed raw JSON from OpenAPITransformed into readable pages with parameter tables and examples

Verified API routes

Every endpoint path in the documentation matches the source code:

EndpointMethodPath
Create walletPOST/api/v1/bank/wallet/
Get walletGET/api/v1/bank/wallet/
Create chargePOST/api/v1/bank/wallet/charge/
Get chargeGET/api/v1/bank/wallet/charge/
Refund chargePOST/api/v1/bank/wallet/charge/{charge_uuid}/refund/{wallet_uuid}/
Capture chargePUT/api/v1/bank/wallet/charge/capture/
List chargesGET/api/v1/bank/wallet/charges/
Get subscriptionGET/api/v1/bank/wallet/subscription/
Cancel subscriptionDELETE/api/v1/bank/wallet/subscription/{sub_uuid}/cancel/{wallet_uuid}/
Create payment linkPOST/api/v1/bank/wallet/payment-link/
Zero authorizationPOST/api/v1/bank/wallet/zeroauth/