Components

The base library, both themes.

Every base component of the system, drawn from the tokens on the Specs page. Flip the theme toggle and the whole library re-answers; nothing here carries a raw color. Platform-specific composites (registers, record heads, the settings row) are assembled from these and live with their modules.

Buttons

Primary for the one main action on a surface, secondary for the rest, tertiary for quiet actions, destructive only for loss. Sizes sm, md, lg plus the icon button.

New enquirySecondaryTertiaryDeleteRemoveLargeSmallDisabled

Button groups

The choose-one control: options visible, the chosen one on the brand tint. Used for theme, formats, cadences.

SystemLightDark22 Jul 2026Jul 22, 20262026-07-22ExcelCSVXML

Badges

Pill badges with a dot when they carry state. Gray for facts, brand for emphasis, status colors only for status.

DefaultBrandIssuedExpiringBlockedArchived72%18The count badge rides on bells and tabs; never color-alone, always beside a label or icon that names it.

Avatars

Initials until a photograph exists. Sizes 24 to 56, plus the stack for shared work.

FTFTHASMFTHASM+3

Inputs

One text-field anatomy: optional label, the field, one hint line. Error replaces the hint, never joins it. Disabled fields look disabled.

SearchSearch customersEmailfadi@northline.comThe address sign-in owns.Margin floor2%Below the 8% the company holds.Base currencyUSD · locked

Select

A field that opens a menu. The value reads like a fact; the chevron says it can change.

Northline Travel LLCChoose an entity

Checkbox and radio

Checkboxes for many, radios for one. 18px, brand when chosen.

Send the customer a copyInclude archivedCharged to the customerAbsorbed by the agency

Toggle

On or off, applied immediately. A toggle that merely states a fact is forbidden; facts are locked values.

Rate proof on share pagesStable coin rates

Tabs

Underline tabs for page sections, the gray pill group for small in-card switches. Counts ride in pills.

OverviewItems9FulfilmentPayments3Documents7
12 months30 days7 days24 hours

Breadcrumbs

Two levels, the current one in brand. Deeper paths collapse the middle.

Bookings/BKG-RYH39M4SSettings/Money and tax/FX sources

Tooltip

Dark on light, light on dark. One line; anything longer belongs on the page.

Issued 18 Jul by Huda AzizLocked · journals exist

Alerts

Four intents. The title says what happened, the line says what to do, an action sits on the right when one exists.

Balance of $23,200 is due Sep 1
Paying it opens the gate for the 3 blocked items.
Send reminder
Payment recorded
WIRE-88377 · $25,000 · the gate moved.
One item is below the 8% margin floor
Sending routes it to Huda Aziz for approval first.
Review item
The gate is at the line
$61,000 issued against $61,000 paid.
Request release

Metric cards

A label, one number, one qualifier. Numbers wear tabular figures; trends wear status pills with arrows.

Money billed
$1.28m↑ 11.2%
Conversion
48.8%↓ 4.3%
Gate headroom
$0At the line
Paid
$61,00072%

Table

Gray header at 12px, 14px rows, one line per cell, right-aligned money, hover only. Secondary facts live in tooltips, never as a second wrapped line.

BookingCustomerStatusValuePaid
BKG-RYH39M4SMeridian SystemsIssuing$84,200$61,000
BKG-7QP2K4M9Marchetti GroupConfirmed$46,750$46,750
BKG-2NC8X1D4Apex Corporate TravelAwaiting payment$18,900$0

Pagination

Previous, the pages, next. The register footer also states what is shown.

← Previous12316Next →

Progress

Thin bars for quiet progress. Green only when the thing measured is money received or work completed.

Status dots

The dot names a state beside its word. Never a dot alone.

IssuedSentExpiringBlockedArchived

Empty state

What this will hold, and the one action that starts it. Never an apology.

No enquiries yet

The first enquiry a customer sends lands here and starts its response clock.

Log an enquiry

Modal

One decision per modal: an icon naming the intent, the question, the consequence, two buttons. Destructive confirmations restate what is lost.

Remove sample data?

Every demonstration record is deleted and this cannot be undone. Your own work is untouched.

CancelRemove

Keyboard hint

The command hint rides inside search fields and menus.

Search, or ask TAI⌘K

Buttons, the full hierarchy

Five sizes, four hierarchies, and loading as a first-class state rather than a disabled button with a spinner glued on. Destructive is its own family, so a dangerous action can never be reached by flipping a colour prop.

New enquiryNew enquiryNew enquiryNew enquiryNew enquiryxs to xl. The same button at every size the platform uses.PrimarySecondaryTertiaryLinkLink grayPrimary for the one main action, secondary for the rest, tertiary for quiet ones, link inside prose.IssuingSavingDisabledDisabledLoading states, because every issue, send and post on this platform is asynchronous.Void bookingCancel tripRemoveThe destructive family, drawn from its own component set.

Utility buttons

The size class a dense register needs: small enough to sit inside a 60px row without breaking it, quiet enough that forty of them do not shout.

IssueVoidDuplicatePer-row actions on a register, and the overflow control beside them.

Social sign-in

For the day the platform offers single sign-on. Brand marks, gray marks, and the same anatomy as every other button.

Sign in with GoogleSign in with AppleSign in with email

Badges, twelve colours

The library ships three shapes, three sizes and twelve colours. Six of those colours sit outside the semantic five, which is what lets a status mean something without borrowing error red.

GrayBrandErrorWarningSuccessSlateSkyIndigoPurplePinkOrangeTealPill, with the dot that carries our disposition and its fill.GrayBrandErrorWarningSuccessSlateModernSquare badges and the modern treatment, white with a border, for facts that are not statuses.IssuedIssuedIssuedThree sizes: the register row, the record header, the board.

Badges that carry a thing

The two variants that matter most to a travel platform: a badge holding a country flag, and a badge holding a person. Both replace a whole column.

RiyadhMilanTokyoFTFadi T.HAHuda A.Destination and owner, each as one chip.CorporateMICE×Active×Owner: Fadi×Removable filter chips, square or rounded, for the register toolbar.

Input fields, every type

The library ships fourteen input types. These are the ones this platform needs, and several replace things we were building by hand.

TravelerFamily name as the passport shows itSearchSearch customers⌘KPassword••••••••Departure date14 Sep 2026The date type, so no raw browser control ever ships again.AmountUSD 18,900.00Leading dropdown: the currency belongs to the field.Phone +971 55 210 4471Share addressgo.northline.example.comLeading and trailing text.Invite by emailname@company.comSendTrailing button.InterestsMotorsport ×Fine dining ×AddTags inside the field.Travelers4+The number counter, for pax, rooms and nights.Card4242 4242 4242 4242Verification code4712Four or six digits.

File upload

The drop zone and the row it produces, with the library’s file-type marks so a voucher, a passport scan and a spreadsheet are told apart at a glance.

Click to upload or drag and drop
PDF, JPG or PNG, up to 10 MB
Signed booking form.pdf1.2 MB · uploaded by Fadi

Featured icons

The container that fronts an empty state, a modal header or an attention row. Five treatments, and the ruling that empty states take one.

Light, modern, dark, gradient, modern neue.In the status colours, round, for success, warning, failure and information.

Tooltips and the help icon

Seven arrow placements, with and without supporting text. The help icon is the primitive that lets a column explain itself without a caption, which the no-explanatory-notes rule otherwise forbids.

Issued 18 Jul by Huda AzizabovebelowLocked · journals existGate headroomPaid minus issued. While it is positive, the agency is covered.Margin floor ?

Progress

A bar for a quantity, a ring for a share, and the stepper for a form that takes more than one screen.

72%Customer2Items3Review

Date picker

A calendar that knows a range, because most dates on this platform come in pairs: a travel window, a period, a hold.

September 2026
MTWTFSS31123456789101112131415161718192021222324252627
14 to 18 September: the Riyadh roadshow, selected as a range.

Command menu

The command bar’s menu form: grouped results, a keyboard hint on every row, and the parse still printed above it when the query was a search rather than a jump.

marchetti
Customers
Marchetti Group
Trips
Milan fashion week
QTN-3H8K2V1
Actions
New enquiry for Marchetti⌘N

Slideout

The fourth overlay, drawn: it arrives from the edge, it does not dim the record behind it, and that is exactly why it is a sheet rather than a dialog.

Edit billing addressMarchetti Group · CCN-1055
The profile stays readable behind this panel, which is the whole reason it is a sheet.
CancelSave

Modal anatomy

The library composes every one of its fifty-three modals from two pieces: a header and an action row. The action row we need most is the one with a checkbox in it.

Issue the remaining items?
Three items sit beyond the gate. Issuing them needs a release signed by an admin and finance.
Notify the customerCancelRequest release
Left-aligned header, and the footer with an inline checkbox.
Send this quotation?
Version 2 goes to Elena Marchetti with a token link that expires in five days.
CancelSend
Centre-aligned header, and the footer that fills its container.

Avatars

Six sizes from 24 to 64, three fills: photograph, initials, placeholder. The status dot, the verified tick, the stack with its counted tail and the dashed add control all come from the file.

AHAH
JPAmira Haddadamira@limitless.co.uk
JPMT+5
The stack for delegates and desk teams; the dashed control is the invite.

Checkboxes and radios

Two sizes, and the three honest states: off, on, and the indeterminate bar a parent row shows while its children disagree. The focus ring is the 2px gap and 4px halo from the effect styles.

Include cancelled bookingsCancelled rows stay visible and struck through.
This desk onlyThe register narrows to the desk you are standing in.

Selectable cards

The radio group drawn as cards: an icon card, a payment card, an avatar card. Selection is the 2px brand border and the checked control, never a colour wash.

Instant issueVouchers go out the moment the gate opens.
Visa ending in 1234Expiry 06/2028 · Set as default · Edit
Kate MorrisonTakes the desk while you are away.

Dropdown menu

The 240px menu: an identity header, items with icon and shortcut, a checkbox row, an inline theme toggle, and the footer that signs out. Submenus nest behind a chevron.

Olivia Rhyeolivia@limitless.co.uk
View profile⌘K→P
Settings⌘S
Show archived
Dark mode
Move to
Sign out⌥⇧Q

Select and multi select

Trigger variants: plain, dot leading, avatar leading, search with the command chip, and the tag carrier. The multi select menu counts what each row holds and closes with Reset and Select all.

Select a deskIn progressKate MorrisonSearch⌘KAmiraJPJonas
Search teams
Riyadh desk12
London desk8
Paris desk5

Tags

Three sizes on radius 6. The leading slot takes a dot, a country flag or an avatar; the trailing slot a count or the close. The checkbox tag exists for pickers.

LabelActiveUnited Arab EmiratesAmira HaddadHotels24Shortlisted

Toggles

Default and slim, two sizes each. A toggle is a preference that acts immediately; anything needing a Save is a checkbox in a form.

Departure alertsA push the morning a traveller flies.

Sliders

The dual handle range on an 8px track. Labels sit below, or float above the handle as the dark pill.

65%
$1,000$20,000
The rate floor and ceiling on supplier filters; money labels are mono like every figure.

Progress indicators

The 8px bar with its label right, below, or floating; and the circle in its small sizes, half or full. The activity gauge on the Data page is this family grown up.

60%80%70%70%

Button groups

The segmented control: one bordered shell, dividers, the current segment pressed gray. Segments carry text, a leading icon, a dot, or icon only.

12 months30 days7 days24 hoursIssuedHoldingAll

Alerts

The floating alert card: white ground, a two ring featured icon in the semantic colour, a dismiss, and actions as links. Six colours exist; the platform speaks four.

The exchange table updatedRates for 14 currencies moved at 06:00. Converted figures on open quotations follow the new table.DismissView rates
Three items sit beyond the gateIssuing them needs a signed release. The reason sits beside the control, as always.DismissReview items
The supplier declined the holdRoom category no longer available. The quotation line is marked and the customer link is paused.DismissReprice

Toasts

The floating notification: shadowed card, bottom corner, self dismissing. The upload toast carries a live progress bar and its own controls.

Quotation sentVersion 2 is with Elena Marchetti. The token link expires in five days.
Voucher pack uploading60%CancelUpload another

Loading indicators

Two spinners and the dot circle, each with its quiet caption. The file ships no skeleton screens; loading is a spinner and honest words, or the row simply is not drawn yet.

Loading…Loading…

Breadcrumbs

Chevron or slash dividers; the current page sits on a gray pill. Past three levels the middle collapses to an ellipsis.

BookingsBKG-RYH39M4SPayments
/Settings/Profile

Tabs, six types

Underline, brand button, gray button, the bordered segmented rail, minimal, and the vertical line for tall settings pages. A tab may carry its count. On mobile a long tab row becomes a select.

OverviewItems12PaymentsDocuments
AllActive165Dormant
DetailsHistoryNotes
RegisterBoardCalendar
ProfileSecurityNotificationsCover
The vertical line type, for the tall pages.

Text editor

The long form toolbar, adopted for terms, policies and itinerary prose. The library draws a full editor in two sizes; we take the toolbar grammar and the character counter.

Inter16pxGenerate
The traveller holds a confirmed suite at the Corniche property for four nights, breakfast included, late checkout requested…
964 characters left

Tree view

Two densities, with guide lines, chevrons, and the advanced variant that adds checkboxes including the indeterminate parent. Folders for the document tree on records.

Booking documents6
Vouchers
BKG-RYH39M4S hotel.pdf
BKG-RYH39M4S flights.pdf
Invoices3
Tripbooks Design SystemBuilt on Untitled UI · Inter · brand blue, ruled 25 Aug 2026Light and dark from the same tokens