Clarity over decoration
Every pixel earns its place. We use type, weight, and space — not color and ornament — to guide buyers through complex catalogs.
A shared language of tokens, components, and patterns used across the Restock marketplace, where independent artisan brands sell wholesale to independent retailers.
Every pixel earns its place. We use type, weight, and space — not color and ornament — to guide buyers through complex catalogs.
A retailer restocking their store on a Tuesday morning should never lose a click. Muscle memory, keyboard-first, dense when it needs to be.
Prices, minimums, lead times and terms are stated plainly. No dark patterns, no surprises at checkout, no fine print.
Wholesale software has looked like an ERP for too long. Restock brings the craft of a great consumer product to spreadsheet-heavy work.
Color, type, space, and elevation — the primitives every component is built from. Change a token here, ripple everywhere.
A warm, editorial palette anchored by a deep evergreen. Semantic tokens map to underlying ramps so themes can shift without rewriting components.
Fraunces adds warmth and voice at display sizes; Inter carries the workhorse UI. Both loaded as variable fonts for tight control at every step.
A 4-based scale doubling into 8s. Density tightens by one step in tables and product grids; loosens by one step in marketing surfaces.
Soft, humane corners paired with layered warm shadows. Elevation communicates rank — not decoration.
Each component ships as a rendered preview, with variants and states side by side. Everything below is production code, not a mockup.
Every control ships with a label, optional helper, and error slot — they are not decoration, they are the contract with the buyer.
Shown on invoices and packing slips.
Enter a valid email address.
Try brand names, categories, or 'MOQ under $250'.
Fast to click, faster from the keyboard. The number is always editable directly — no modal, no arrows-only fallback.
Wholesale is sold by the case. The selector resolves cases into a live unit count so buyers always see what they're actually receiving.
Every brand sets an order minimum. The bar keeps that constraint visible without nagging — it turns green the moment it's satisfied.
Order lifecycle status and terms. Colors are intentionally soft — badges live in dense tables and must not shout.
The order-lifecycle chips and payment-terms chip, documented explicitly. Each status has one canonical tone — reuse it everywhere the order appears (tables, receipts, emails).
dot variant so the chip is legible even when the row is scanned peripherally. Terms chips omit the dot to signal they are metadata, not a state.The atom of the marketplace. Brand name is prominent, price and MOQ are inseparable, add-to-order is one click away.
Row hover, tabular numerals, right-aligned money. Density is deliberate — retailers scan hundreds of orders a week.
| Order | Brand | Items | Total | Status | Date |
|---|---|---|---|---|---|
| #RS-10428 | Marlow & Rye | 24 | $412.40 | Delivered | Jun 28 |
| #RS-10427 | Ember Kitchen | 18 | $286.00 | Shipped | Jun 27 |
| #RS-10425 | Foundry Ceramics | 12 | $142.00 | Confirmed | Jun 26 |
| #RS-10422 | Fieldnotes Co. | 32 | $524.75 | Pending | Jun 25 |
Peer navigation for a single object. Never used to hide critical settings.
Alerts anchor context; toasts confirm actions. Neither should ever require translation.
Reserved for decisions that must not be lost. Cancel is always available and never destructive by default.
A moment to reassure and redirect. Every empty state names the next best action explicitly.
Once you place your first wholesale order, you'll be able to track it, reorder in a click, and download invoices from here.
A single pattern that shows the system doing real work: a brand's line sheet with a bulk quantity matrix and a live order-minimum meter.
Craft doesn't count if buyers can't reach it. Every component ships with tested contrast, visible focus, real tap targets, and full keyboard support.
Body text against surface exceeds WCAG AA (7.4 : 1). All semantic tokens are audited for both light background and inverse pairings. Semantic color is never the only signal — icons and text reinforce it.
Every actionable element receives a 2px evergreen focus ring at a 2px offset. Focus never traps, always follows DOM order, and is never removed without a documented replacement.
Interactive controls maintain a 44 × 44 minimum on touch surfaces. On dense desktop tables, hit areas extend beyond visible chrome to preserve the target.