Skip to content
A ApexCommerce Design System All pages
Phase 01 — Component library

Components

Every control the product uses, in every state it must support. These are the exact implementations pages 02–16 reuse; a page that invents its own button is a bug.

F

Buttons

Six heights-free sizes, seven variants. Primary appears once per viewport — the one thing the user should do. Everything else yields to it.

Variants
.apx-btn · -secondary · -outline · -ghost · -danger · -danger-outline · [disabled] · .is-loading (width-locked)
On dark surfaces — amber takes over
Sizes & compositions
Interactive states — hover, focus (Tab), active, loading

Loading swaps the label for a spinner of identical optical weight and locks the button's width so the row never shifts. Disabled buttons keep their label — never an empty grey pill.

G

Form controls

Labels always sit above the field — placeholder-only labelling is an accessibility failure and looks broken once filled. Inputs are 46px tall with a 1.5px border: hairline inputs read unfinished at arm's length.

We'll only email you about this order.
G.2

Search field & quantity stepper

Search is a pill with a leading icon, a clear button that appears only when there's text, and an optional suggestion panel (Phase 02). The stepper clamps at min/max and disables its own ends.

Default
Small / at limit
G.3

Checkbox · radio · switch

Custom-drawn but native underneath: real inputs, real focus rings, real keyboard behaviour. 20px boxes — the 16px Bootstrap default is a missed tap on mobile.

Delivery method
G.4

Validation states

Error copy says what's wrong and how to fix it. The message is wired with aria-describedby, the field keeps its value on failure, and the first invalid field receives focus with a shake.

Victorian postcodes are 4 digits starting with 3 — check the last digit.
10% off applied to your order.
Processed by Stripe — ApexCommerce never sees your card.
That email looks incomplete — add a domain like @example.com.
G.5

Australian address fields

The exact composition reused in checkout, saved addresses, returns and admin. State is a select (8 values), postcode is 4-digit numeric with per-state pattern hints, phone is +61 with a masked input.

I

Cards & surfaces

One card anatomy everywhere: optional header, body, footer. 1px border + xs shadow at rest; md shadow + 2px lift on hover for clickable cards only.

Order summary
3 items
Subtotal$246.85
Coupon APEX10−$24.69
Shipping · Express$14.95
Total$237.11

Includes GST of $21.56. Shipping to VIC 3000.

CN
Charlotte Nguyen
Melbourne VIC · customer since 2023

Hoverable card: 2px lift + md shadow. Used for customers, reviews and report tiles.

Well

Surface-2 inset for coupons, notes and secondary facts.

Inset

Pressed well for code blocks and API keys.

K

Badges, chips & counters

Badges state a fact (sale, new, low stock). Status pills state a lifecycle position. Chips state an active filter and are always removable. Counters are red when they demand action, neutral when informational.

Product badges
−24% New Best seller Low stock Out of stock Size 12 Organic cotton
Status pills
Pending Processing Shipped Delivered Payment failed
Chips & counters
In stock Under $100 Size M Country Road 3 12
L

Alerts

Left border carries the status colour; the fill stays soft so long copy remains readable. Title + text + optional inline actions. Dismissible alerts never hide information the user still needs.

Payment received
We've emailed your invoice and receipt to charlotte@example.com.
Express cutoff today is 2:00pm AEST
Orders after that dispatch next business day.
Your session will expire in 5 minutes. Your cart is saved either way.
P

Tabs

Line tabs for page-level switching (product detail, order detail). Pill tabs for in-card filters (reviews by rating). Active state is colour + weight + underline — never colour alone.

Tab one content. Switching animates a 200ms underline slide.

R

Pagination

Numbered for SEO-critical listing pages; “Load more” inside modals and drawers. Range text states exactly what slice of results is visible — critical when filters are active.

Showing 1–24 of 318 results
Page 3 of 14
S

Tables

Sticky uppercase head, tabular numerals right-aligned, 44px rows, hover tint, selection stripe. Below 992px every table swaps to a stacked data-row card — the mobile view is designed, not squeezed.

Order DateCustomerStatusTotal
#APX-2026-084128 Sep 2026Charlotte Nguyen Shipped$237.11
#APX-2026-083907 Sep 2026Liam O'Sullivan Processing$89.00
#APX-2026-083776 Sep 2026Priya Sharma Payment failed$1,204.50
Same data below 992px
#APX-2026-08412 Shipped
Date
8 Sep 2026
Customer
Charlotte Nguyen
Total
$237.11
T

Tooltips

For one line of clarification only — never for essential instructions (those go in help text). Shown on hover and keyboard focus.

GST is included in all prices. Business customers can claim a GST invoice from order history.
N

Modals

Centred ≥576px, bottom sheet below that with a drag handle. Destructive modals name the object, state the consequence, and make the safe action the visual default.

Backdrop 48% deep-green · Escape + backdrop click close non-destructive modals only · focus is trapped and returned.

M

Toasts

Top-right on desktop, above the bottom nav on mobile, max four stacked, progress bar shows auto-dismiss. Success toasts for cart/wishlist include an inline “View” action so the user never loses their place.

18

Progress & step indicators

The checkout spine: done steps are tappable to go back, the current step has a halo, errors are red with an icon. The same component, vertical, becomes the order/return timeline.

  1. Bag
  2. Details
  3. 3Delivery
  4. 4Payment
  5. 5Review
Determinate 64%
Success 100%
Indeterminate
Vertical timeline (order tracking)
  1. Order placed
    Mon 7 Sep, 9:14am · payment confirmed by Stripe
  2. Packed at Melbourne DC
    Mon 7 Sep, 4:40pm
  3. In transit with AusPost
    Tracking 3WQ8 4471 2290 · scanned at Sydenham VIC
  4. Delivered
    Estimated Thu 10 Sep by 6pm
6

Ratings, price, avatars, media

Stars use the AA-safe ochre at 13px with half-star precision; the numeric rating is never colour-coded. Price stacks current → was → save, and the current price goes red only when discounted.

Rating
4.5(128 reviews)
3.0 · “runs small, size up”
Price
$189.00 $249.00 Save $60
$79.95 / 500g
$45.00 – $120.00
Stock
In stock Only 3 left Out of stock Backorder · ships 21 Sep
Swatches
+3
Avatars
CN CN CN CN
Media placeholders (10 tones)

Tones map 1:1 to categories in Phase 02+ so listings look art-directed before photography exists.

U

Accordion & product rails

Accordion for long-form policy (one open at a time on mobile). Rails scroll-snap horizontally below 992px and become a clean 4-column grid above it — same DOM, no duplication.

Metro 1–3 business days, regional 3–6, remote 5–10. Express cutoff is 2pm AEST.
30 days, free returns from any AusPost parcel locker with the label in your order history.
Yes. Business customers can download a GST-compliant invoice per order.
Rail item 1

scroll-snap on touch

Rail item 2

4-up grid on desktop

Rail item 3

no duplicate DOM

Rail item 4

snap-align start