Skip to content

Elements

74 elements, each working, in English and Arabic, light and dark.

Foundations

Colour

Roles, not hues: each name says what the colour is for. Every pair the system relies on is measured at build time.

--al-color-bgThe page
--al-color-surfaceCards, panels, inputs
--al-color-surface-sunkWells, hover, info
--al-color-textBody text
--al-color-text-mutedSecondary text
--al-color-lineHairlines
--al-color-controlControl borders
--al-color-accentActions, focus, success
--al-color-on-accentText on accent
--al-color-dangerErrors, destroying
--al-color-warningNeeds attention
--al-color-infoInformation
--al-color-inverseToasts, tooltips
--al-color-chart-1Chart, first series
--al-color-chart-2Chart, second series
--al-color-chart-3Chart, third series
--al-color-chart-4Chart, fourth series

Read the spec · On its own page

Tints

Eight bright tints for identity and emphasis: tags, highlights, avatars. Each ink is readable on its ground.

Aadata-tint="teal"
Aadata-tint="green"
Aadata-tint="yellow"
Aadata-tint="orange"
Aadata-tint="pink"
Aadata-tint="purple"
Aadata-tint="blue"
Aadata-tint="cyan"

Read the spec · On its own page

Type

Jost for the interface and headings, Newsreader for reading. Arabic falls through to IBM Plex Sans Arabic, Kufam and Amiri: a little larger, more line height, no letter-spacing.

displayWhereas disregard and contempt for human rights have resulted
3xlWhereas disregard and contempt for human rights have resulted
2xlWhereas disregard and contempt for human rights have resulted
xlWhereas disregard and contempt for human rights have resulted
lgWhereas disregard and contempt for human rights have resulted
mdWhereas disregard and contempt for human rights have resulted
baseWhereas disregard and contempt for human rights have resulted
smWhereas disregard and contempt for human rights have resulted
xsWhereas disregard and contempt for human rights have resulted

Reading text

Islamic geometric patterns are intricate structures built from simple, repeated rules. We build software the same way: small, well-made modules, clear interfaces, a coherent system.

Numbers inside a sentence

It costs £12 a month for each person, or $1,440 a year for 10 people.

Read the spec · On its own page

Space and shape

A 4px step for everything spatial. Corners are crisp (2px); depth comes from borders and surface steps, never shadows.

--al-space-1
--al-space-2
--al-space-3
--al-space-4
--al-space-5
--al-space-6
--al-space-8
--al-space-12
--al-space-16

Read the spec · On its own page

Motion

Quick, and only in answer to something done: 150ms for feedback, 250ms for disclosure and themes. With reduced motion, things change at once.

Read the spec · On its own page

Icons

Line icons on a 24-unit grid. Those that point along the reading direction mirror in right-to-left.

  • arrow
  • arrow-up
  • board
  • calendar
  • check
  • chevron
  • chevron-down
  • close
  • copy
  • danger
  • edit
  • external
  • file
  • info
  • language
  • mail
  • menu
  • minus
  • more
  • plus
  • retry
  • search
  • settings
  • sidebar
  • success
  • theme
  • trash
  • undo
  • warning

Read the spec · On its own page

Running text

Paragraphs, lists, a quotation, code, keys and a highlight, inside .al-prose: the reading face, the measure, and space between.

Running text in bold, italic, with a link, inline code, a key, Ctrl + S, and a highlight. And small print.

  • A list of things
  • in no order
  1. Steps, in order
  2. one after another

A quotation inside running text, with its source after it.

Read the spec · On its own page

Actions

Button

Does something. One primary per view; the label names the action and its object.

Add an item to export.

Read the spec · On its own page

Button group

Related actions joined in a row or a column, one border between each. Each is still its own button.

Read the spec · On its own page

Forms

Text input

A visible label, an optional hint, the field; optional fields say so.

We'll only use this to reply to you.

a month

Type 5000, 5k or ٥٬٠٠٠.

Error: Enter a reference that's 2 letters then 6 numbers, like AB123456

An icon says what goes in; the label still names it.

Changed, not saved

Read the spec · On its own page

Select and combobox

A select for a fixed list; a combobox (a datalist) where people may also type their own.

A new group is created when you save.

Read the spec · On its own page

Textarea and character count

For longer answers. With a limit, it says what's left in words, and lets people type past it.

A sentence or two is enough.

Read the spec · On its own page

Date input

Three fields for dates people know. For a date near today, use the date picker.

Date of birthFor example, 27 3 1990

Read the spec · On its own page

Date picker

A date near today, typed or chosen from a calendar in the page's language: in Arabic, Arabic month and day names, the week from Saturday, the chosen digits, and a grid that runs from the right.

For example, 2026-11-30

Read the spec · On its own page

Select all

A checkbox for all of a group, mixed while some are chosen and some aren't.

How should we contact you?

Read the spec · On its own page

Checkboxes

Independent options, in a fieldset with a legend; the whole row is the target.

How should we contact you?

Read the spec · On its own page

Radios

One of several, with a sensible default where there is one.

Who can see this?

Read the spec · On its own page

Switch

A setting that applies the moment it's flipped: no Save.

Read the spec · On its own page

Segmented control

Two to five short options, all visible: a choice in a form, or a view switch.

View

Read the spec · On its own page

Range

A value along a scale, with the value itself beside it, in the page's digits and with its unit.

Up to £2,000.

Read the spec · On its own page

Rating

One to five, as radios drawn as the mark's star, each named in words: “4 of 5”.

How was your visit?

Your rating, as it's shown.

Read the spec · On its own page

Error summary

When a form is submitted with errors: every error, at the top, each a link to its field. It takes focus, and the page title starts with “Error:”.

Read the spec · On its own page

Content

Disclosure

What's secondary, folded away, with the value inside shown beside its name.

Advanced settings 3 changed

Settings most people never need.

Keep deleted items for 90 days

Read the spec · On its own page

Card, panel and stat

A card holds one thing people act on, with its actions at its foot; a panel is a rule above a group; a stat is a figure with its label.

Card title

Supporting text · updated today

A card groups one thing: its summary, and what you can do with it.

Team plan

Recommended

A ribbon pins one word to one card; the footer holds its actions.

Figure, this month12,480last month: 11,902

Panel title

A rule above a group: most groupings need no box.

Components42
Tokens164
Contrast pairs measured112none failing

Read the spec · On its own page

Code and command

Code to read or copy, left to right in either language, with the lines that matter marked. A command is one line to paste.

<link rel="stylesheet" href="dist/arabesque.css">
<header class="al-site-header">…</header>
<script type="module">
  import { initSiteHeaders } from "./js/site-header.js";
  initSiteHeaders();
</script>
css/components/code.css
.al-code__pre {
  direction: ltr;
  text-align: start;
}
npm run build

Read the spec · On its own page

Feature tabs

A column of tabs, each a name and a line about it, beside what the chosen one shows.

.al-toc a {
  padding-inline-start: var(--al-space-3);
  border-inline-start: 2px solid var(--al-color-line);
}

Read the spec · On its own page

Logo wall

Who uses it, as their marks in one colour, as many to a row as fit. Never a scrolling marquee.

  • Organisation A
  • Organisation B
  • Organisation C
  • Organisation D
  • Organisation E
  • Organisation F

Read the spec · On its own page

Quote

What someone said, in their words, then who they are.

What it's about

What they said, in their own words: trimmed, never reworded, and shown with their permission.

Their nameTheir role, at their organisation

A second person's words, beside the first.

Another nameTheir role

Read the spec · On its own page

Call to action

The page's last word: one line, then what to do.

Your next page, built from the same tile.

Start from the template, or take only the parts you need.

Read the spec · On its own page

Summary list

Facts about one thing, each with its own action: for checking answers, and for any record.

Name
Sam Taylor
Change name
Email address
sam@example.com
Change email address
Member since
4 January 2024

Read the spec · On its own page

Table

For comparing values: numbers line up, the total stands out, asides recede. Wide tables scroll in their own region.

ItemQuantityPriceTotal
Item one2£12.00£24.00
Item two1£120.00£120.00
Item three4£2.50£10.00
Total£154.00
Of which VAT, at 20%£25.67

Read the spec · On its own page

Badge

A short status beside something, in words. Sentence case, never capitals.

DraftActiveDoneBetaOverdueNew3 unread

Read the spec · On its own page

Tag, highlight and avatar

Colour for identity and emphasis, in eight bright tints; never for status.

DesignUrgentResearchPlain tag

Highlights draw the eye to key words, names and ideas, in any of eight tints.

Shared with Lina, Sam, Yusuf and 3 others

Read the spec · On its own page

Task list

The parts of a longer job, each with its status in words; done in any order.

Read the spec · On its own page

Timeline

What happened, each event at its time, along a line: a record's history or an activity feed.

  1. Request approved

    By Lina Haddad. The team can start.
  2. Budget changed to £1,200 a month

  3. Sam Okafor commented

    Can we start a week earlier?

  4. Request sent

Read the spec · On its own page

List

Things of one kind, one to a row: notifications, results, files. A row that opens something is a link from edge to edge.

Read the spec · On its own page

Section

A band of the page: a hairline from the one before, its heading and lede.

01 Who we are

The name is the method

Four stages, repeated as many times as it takes to get something right.

Settings most people never need.

How we build. Small parts, one rule, repeated with care.

Read the spec · On its own page

Steps

A numbered sequence: the stages of how something is done. Only for real sequences.

  1. 1

    Discover

    Start with the real problem, not the assumed solution. We take time to understand the constraints before writing a line of code.

  2. 2

    Design

    Structure comes before pixels. We sketch the system's shape, its data, flows and edge cases, so the build has a foundation.

  3. 3

    Build

    Small, deliberate increments instead of big-bang releases. Working software, reviewed and tested at every step.

  4. 4

    Refine

    The first version is rarely the right one. We revisit, simplify and polish until the details hold up.

Read the spec · On its own page

Feedback

Notice and side-effect note

A message in the page, in four kinds, each with an icon and a title. A side-effect note says what else will change, before it does.

Done

Your changes are saved.

Planned maintenance

On Sunday, from 2am to 4am, saving may be slow.

Changes saved

Everyone with access can see them now.

Check your details

Some of your details may be out of date.

Changing this also updates 2 related items.

Read the spec · On its own page

Phase banner

Under the header: the product, or part of it, is new or changing, and feedback is welcome.

Code blocks now have syntax colour. See what's new

Beta

This is a new service. Tell us what you think.

Read the spec · On its own page

Toast

What just happened, briefly, with Undo when it can be undone.

Read the spec · On its own page

Dialog

A decision that needs attention now. It never loses what was typed, and confirms only what can't be undone. A sheet on small screens.

Rename item

Delete your account?

This deletes your account and everything in it: 12 items, 3 folders and 40 files. It can't be undone.

This is an example: nothing is deleted.

Read the spec · On its own page

Tooltip

A short label for an icon or a mark, on hover and on focus. Never essential.

Read the spec · On its own page

Status

A state in a word, with a dot in its colour. The word is the meaning; the dot repeats it.

OnlineDegradedDownDeployingPaused

Server one Online

Read the spec · On its own page

Popover

More about something, when it's asked for: a button opens it beside itself. Escape or a click outside closes it.

Contact angle

Read the spec · On its own page

Empty state

Why there's nothing here, and the next action. Never a dead end.

No items yet

Add one to get started. You can import several at once, too.

Read the spec · On its own page

Loading and progress

Progress where the work happens: a skeleton, a spinner, or a bar when it can be measured.

Loading items

Loading items

Loading

Read the spec · On its own page

Confirmation

The end of a flow that sends something: it's done, the reference, then what happens next.

Request sent

Your reference AL-4K7Q-92

Read the spec · On its own page

Pending changes

Save state, changes and stale results

Whether a change is kept, what else it touches, and which figures are being worked out again. Try them.

£
Saved

Changing the amount also updates 2 related items.

Over 12 months: £6,600

Read the spec · On its own page

Rolled back

A change shown at once that the server then refused: put back where it was, with why, and Retry.

  • Item one
  • Item two

Read the spec · On its own page

Bulk action bar

Once things are selected: how many, what can be done to all of them, and a way to clear.

3 selected

Read the spec · On its own page

Keyboard shortcuts

The platform's modifier: ⌘ on Apple devices, Ctrl elsewhere. Single keys never fire while typing.

N
New item
/
Search
CtrlK
Open the command menu
CtrlZ
Undo
?
Show the shortcuts

Read the spec · On its own page

Charts

Column chart

Values over time or across categories, grouped, with an optional target line.

Take-home pay a year, by offer3 of 3 offers are at or above what you want, £84,000, in every year.
Offer AOffer BOffer CWhat you want: ⁦£84,000⁩

Read the spec · On its own page

Split bar

The parts of a whole, in one bar, with a key.

Where a year's pay goesTake-home pay is the largest part: 62% of £114,599.
Take-home pay ⁦62%⁩Tax, NI and loans ⁦32%⁩Your pension ⁦5%⁩Other ⁦1%⁩

Read the spec · On its own page

Bullet chart

Each value against its target, with the difference in words.

Take-home pay a month, against what you wantAll 3 are at or above what you want; the lowest, Offer B, is £718 more.
Offer A⁦£10,075⁩ +£3,075 more
Offer B⁦£7,718⁩ +£718 more
Offer C⁦£8,167⁩ +£1,167 more
What you want: ⁦£7,000⁩

Read the spec · On its own page

Brand

Mark and lockup

The mark beside the wordmark, built from the logo pack. One colour; never redrawn.

Arabesque LabsArabesque LabsProduct nameArabesque Labs

Read the spec · On its own page

Pattern

The 4.8.8 tessellation of the mark's tile, contact angle 67.5°, drawn by rule: as texture behind a band, or across a hero with its focal tile (as at the top of this page).

Read the spec · On its own page

Hero

One quiet line across the section, and one focal tile in the accent, with its caption. It draws itself in once.

One tile, a whole system.

This tile is our mark. Everything around it follows from the same rule.

Read the spec · On its own page

Construction figure

How the pattern is made, in three steps, each read as software.

  1. 1 Tile the plane with simple shapes.

    In software: modules.

  2. 2 From each edge's midpoint, draw two lines at a fixed angle.

    In software: interfaces.

  3. 3 Remove the scaffolding. The pattern holds.

    In software: the system.

67.5°

Read the spec · On its own page

Patterns

Questions and answers

The questions people ask before they start, each folded under its question, each answer short, with a link for more.

Does it work in Arabic?

Yes: every component is written for right to left as well as left to right, and every spec is in Arabic too. How right to left works

Do I need React?

No. The CSS and the small helpers in js/ work on any page; the React components write the same markup.

How is contrast checked?

The build measures every colour pair the system relies on, in both themes, and fails if any falls short.

Read the spec · On its own page

Ask, check, confirm

For anything sent, or hard to take back: ask; check errors on submit, with an error summary; let people check their answers; then confirm, with what happens next. Try submitting it empty.

Your details

We'll send a confirmation here.

How should we contact you?

Read the spec · On its own page

Back to top