Maestro · Living reference

One system.
Room for character.

The product’s foundations, components and concert journey, using the actual implementations. Start with an approved pattern; keep exploration clearly labelled.

40 patterns · Approved, experimental and legacy side by side.

Foundations

Approved
src/styles/tokens.css · src/styles/livingColour.ts

Nocturne frames the experience. Paper carries reading and decisions. Living Colour comes from the artwork; it is not a separate theme for each page. The specimens below use the same tokens and controls as the product.

Surface and action roles

Nocturne · discovery & framing

Make room for the music.

Quiet surroundings, generous artwork and a clear next step.

Paper · reading & decisions

The programme, in focus.

Readable ink, compact detail and a solid primary action.

Type, touch and motion

Editorial headings
Display face for music and place; choose a role, not a new scale for every page.
Everyday reading
15–17px body, 14px controls and 13px supporting details. Compact does not mean miniature.
Comfortable touch
22px glyphs inside 44–48px controls. A small icon does not mean a small target.
Useful motion
150ms feedback, 220ms state changes, 450ms entrances. Reduced motion removes travel.

Concert journey

Approved
ConcertCard → ConcertQuickView → ConcertListingPage

Tap either real component to open Who / What / Where. Close or go Back to return here; the full-page action opens its canonical concert route. Both examples use the existing catalogue fixtures, not live availability. Featured city cards keep their editorial composition while sharing this interaction contract.

One concert, one atmosphere

Sun 7 Apr · 15:00

Elgar’s Cello Concerto

BBC Scottish Symphony Orchestra

City Halls
Fri 29 Aug · 19:30

Gabriela Montero’s Latin Concerto

BBC Scottish Symphony Orchestra

Glasgow Royal Concert Hall

MaestroMark

Approved
src/features/maestro-shell/MaestroMark.tsx

The keys mark: aurora rim on its 100° axis, ivory keys on nocturne, black keys rounded at the bottom only. One SVG, every size.

Scale rehearsal

Where the mark stops reading — favicons land at 16–32px.

On paper

MaestroGlyphs

Approved
src/ui/icons/MaestroGlyphs.tsx

The Iconography set in use: 48-box strokes in currentColor with non-scaling widths. Tint with the badge palette; labels stay ink or ivory.

The set

AnchorScrollButton

Approved
src/ui/primitives/AnchorScroll/AnchorScrollButton.tsx

One button of the kit filter bar (co-located AnchorScroll.module.css). The active segment carries aria-current; FilterBar watches for it and glides a single aurora thumb to whichever pill has it — toggle the knob to see the slide.

StatPill

Legacy
src/ui/primitives/StatPill/StatPill.tsx

Historical hero stat pill: iris/amber/rose glyph tints on ink text over paper. The Glasgow hero now uses HeroFacts; this specimen is retained for comparison, not new adoption.

On paper

38 upcoming concerts9 venues12 friends listening here

Dark glass

The former Glasgow ≤560px treatment, reproduced inline: frosted dark glass, glyphs switching from the paper inks to the badge tints.

38 upcoming concerts9 venues12 friends listening here

HeroFacts

Approved
src/ui/primitives/HeroFacts/HeroFacts.tsx

The editorial figures row under a hero heading: label/value pairs separated by hairlines. `facts` is the venue and artist heroes’ row; `figures` leads with the number, as on the Glasgow hero.

Figures

Concerts
60
Venues
9
Orchestras
3

Facts

With the top rule, as the venue hero draws it. Stacks below 640px.

Opened
1990
Capacity
2,475
Resident
RSNO

Button

Approved
src/ui/primitives/Button/Button.tsx

Paper is primary on nocturne; ink is primary on paper and inherits the concert’s ink. Ghost is secondary on nocturne. Aurora is retained for an intentional accent, not a default booking action. An href preserves native link behaviour.

Solid action on paper

Tags & eyebrow pills

Legacy
src/features/welcome/welcome.css, src/features/locations/location-page.css

Legacy page-local labels, preserved as comparison specimens. These copies use workbench-only styles; they do not import or establish reusable product controls.

Tags & eyebrow

Glasgow firstEvery hall in town
Scotland · Your local scene

Breadcrumb

Approved
src/ui/primitives/Breadcrumb/Breadcrumb.tsx

A kit component with its own co-located CSS. Uses the router’s A, which works fine on this /components route; explicit items are passed here so it doesn’t derive a trail from the workbench’s own URL.

Tabs

Approved
src/ui/primitives/Tabs/Tabs.tsx

Content navigation with associated panels. Arrow keys wrap, Home/End jump, and only the selected tab enters the tab order. Unlike SegmentedControl, these reveal content rather than set a filter value.

Who / What / Where

The music you’ll hear.

Chip / ChipRow

Experimental
src/ui/primitives/Chip/Chip.tsx

The mood/location filter chip. A real button — selection is aria-pressed, and the aurora-bordered selected look is keyed off that, not a class. ChipRow is just the flex-wrap slot around a set of them.

Mood filters

SegmentedControl

Approved
src/ui/primitives/SegmentedControl/SegmentedControl.tsx

The showcase’s paper date-range selector. A radiogroup of radio buttons, roving tabindex, Left/Right and Up/Down move focus and select — try tabbing in, then arrowing between segments.

Concert date range

Field

Experimental
src/ui/primitives/Field/Field.tsx

The paper email input with a round arrow action. Enter in the input, or the action button, fires onSubmit. Input font-size is 16px rather than the showcase’s 13px — an iOS zoom-on-focus guard, noted on the component.

Email input

Press Enter, or the arrow, to submit.

ReactionBar

Approved
src/ui/primitives/ReactionBar/ReactionBar.tsx

The social reaction bar plus its trailing share affordance. Reaction pills are aria-pressed toggle buttons; counts are plain visible text.

Social response

ConcertCard

Approved
src/features/concerts/ConcertCard.tsx

One concert, six deliberate levels of presence. Living Colour remains recognisable as practical detail and supporting context progressively fall away.

Six levels of presence

The family in its intended v1.7 footprints—not six unrelated layouts squeezed through one generic preview box.

01 · FeatureEmotional discovery
Fri 16 May · 19:30
Symphony · RSNO

Wagner’s Ring: Twilight of the Gods

Arranged for concert orchestra by Henk de Vlieger

Royal Scottish National Orchestra

One shattering finale, drawn from four nights of Wagner.

3 people you follow are going
Glasgow Royal Concert Hall, Glasgow
02 · GridTwo-up browse
Wed 3 Apr · 19:30
Chamber · SCO

Brahms Clarinet Quintet

Scottish Chamber Orchestra

Usher Hall, Edinburgh
Autumn light, one clarinet’s long farewell.
03 · RailRecommendations
Sun 7 Apr · 15:00Concerto · BBC SSO

Elgar’s Cello Concerto

BBC Scottish Symphony Orchestra

City Halls, Glasgow
Because you loved Mahler 9.
04 · ListSearch results
Wed 3 Apr · 19:30

Brahms Clarinet Quintet

Scottish Chamber Orchestra

Usher Hall, Edinburgh
05 · AgendaDense feeds
Sat 6 Dec · 19:30

Shostakovich Five

Royal Scottish National Orchestra

Glasgow Royal Concert Hall, Glasgow
06 · InlineSocial references

Wagner’s Ring: Twilight of the Gods

Royal Scottish National Orchestra

Fri 16 May · 19:30

Playground

Change density or artwork accent; tap the heart to exercise the independent save action.

Fri 16 May · 19:30
Symphony · RSNO

Wagner’s Ring: Twilight of the Gods

Arranged for concert orchestra by Henk de Vlieger

Royal Scottish National Orchestra

One shattering finale, drawn from four nights of Wagner.

3 people you follow are going
Glasgow Royal Concert Hall, Glasgow

Loading skeleton

Reserves the selected composition while its content arrives; motion freezes when reduced motion is requested.

Error, with retry

Couldn’t load this concert.

Retried 0 time(s).

Living Colour

Artwork changes the atmosphere; the information hierarchy and silhouette remain Maestro.

Fri 16 May · 19:30

Wagner’s Ring: Twilight of the Gods

Royal Scottish National Orchestra

Glasgow Royal Concert Hall, Glasgow
Sun 7 Apr · 15:00

Elgar’s Cello Concerto

BBC Scottish Symphony Orchestra

City Halls, Glasgow
Sat 6 Dec · 19:30

Shostakovich Five

Royal Scottish National Orchestra

Glasgow Royal Concert Hall, Glasgow
Wed 3 Apr · 19:30

Brahms Clarinet Quintet

Scottish Chamber Orchestra

Usher Hall, Edinburgh

ExpandableConcertCard

Experimental
src/features/concerts/ExpandableConcertCard.tsx

The card with the printed programme tucked beneath it: a paper whose top edge peeks out from under the card and slides out with the works, the performers, running time and the booking action.

Card + programme paper

Pull the tab. The paper shares the card’s living colour — the numbering, initials and booking gradient all come from the artwork palette.

Fri 16 May · 19:30
Symphony · RSNO

Wagner’s Ring: Twilight of the Gods

Royal Scottish National Orchestra

Glasgow Royal Concert Hall, Glasgow
One shattering finale, drawn from four nights of Wagner.

MiniConcertCard

Approved
src/features/concerts/MiniConcertCard.tsx

The loc-small paper card: artwork beside a living-colour panel. Renders as an article, or as a link once an href is given. A kit component with co-located CSS.

No artwork

Without an image prop, the art panel falls back to a gradient wash of the accent colour.

Fri 5 Dec · 19:30

Tchaikovsky’s Sleeping Beauty

BBC SSO · Glasgow Royal Concert Hall

FeatureConcertCard

Approved
src/features/concerts/FeatureConcertCard.tsx

The hero card in a location page Featured grid: full-bleed art under a scrim, living-colour date and a pull-quote.

WeekStrip

Approved
src/features/concerts/WeekStrip.tsx

The This Week strip: a grid of day links. The today variant washes in the aurora gradient. Two days shown here; the Glasgow page passes seven.

VenueCard

Approved
src/features/locations/VenueCard.tsx

The venue tile in a Venues row: a radial wash of its colour behind ink copy. A kit component; the venue-row grid stays page layout.

Glasgow Royal Concert Hall

Symphonic home

Glasgow Royal Concert Hall

Big repertoire, touring orchestras and the RSNO at full force.

SeasonCard

Approved
src/features/orchestra/SeasonCard.tsx

The season strip card from the Concerts and Season proposal, now a kit component. The compact variant drops the essence quote; tall is the feature size.

Compact

Brahms Violin Concerto artwork
Fri 16 May · GRCH

Brahms’ Violin Concerto

Thomas Søndergård · one violin against the storm

HomeConcertCard

Approved
src/features/concerts/HomeConcertCard.tsx

The taste-grid card from the home programme proposal. The big variant grows the art pane and heading and carries the reason line.

Worth the journey

Worth the journey

Wagner in Edinburgh

Festival Theatre · 47 miles

TonightCard

Approved
src/features/concerts/TonightCard.tsx

The Tonight strip tile: the clock leads, the room follows, the title is bottom-anchored. A short accent rule marks the tile without becoming it.

Tonight

19:30

City HallsRavel & DebussyBBC SSO2.1 miles

TuningLoader

Experimental
src/ui/primitives/TuningLoader/TuningLoader.tsx

The waiting state: a staff with a living-colour bow sweeping across it. role="status" carries a visually-hidden label; the visible italic caption stays fixed and decorative. The sweep freezes under prefers-reduced-motion.

Tuning up

Tuning up…

Toast

Experimental
src/ui/primitives/Toast/Toast.tsx

The social toast surface: glass surface, avatar slot, text slot, and the check affordance when a friend already has a ticket. Presentational only — no timing or portal logic.

A friend commits

The showcase example, reproduced exactly: avatar, bold name, check affordance.

M

Maya is going · Mahler Six

Message & check

P

Priya just booked · Elgar’s Cello Concerto

TicketPass

Experimental
src/features/concerts/TicketPass.tsx

The Spektrix handoff pass: a piano-key barcode drawn as real vector shapes, not an image. The artwork palette drives the edge and perforation living colour as instance custom properties.

Season opener

RSNO · Glasgow Royal Concert Hall

Season Opener: Mahler Six

Two towering masterpieces. One unforgettable opening night.

DateSat 19 Sep · 19:30
SeatStalls · G12
Doors18:45 · Clyde Foyer
Admit one
№ 000121

Afterglow

Experimental
src/features/concerts/Afterglow.tsx

Post-concert mood capture. A controlled component: the chosen look is keyed off aria-pressed. This story owns the selection state to show it working end to end.

How did it feel?

Last night · Elgar’s Cello Concerto

How did it feel?

SocialPost

Approved
src/features/social/SocialPost.tsx

Plans on paper, rehearsal photography, and programme-like memories. Each owns its colours and readable conversation controls, without page CSS.

PersonAvatar

Approved
src/features/social/PersonAvatar.tsx

The named social presence used beside plans, comments, profiles, and notifications. Tone is stable per person; every linked form has a full profile label.

AttendanceCard

Approved
src/features/social/AttendanceCard.tsx

Going and interested are explicit choices; visibility is independent and defaults to friends, following the canonical showcase toggle.

A plan with company

Your next night out
Your plans

Dvořák’s New World Symphony

Sat 17 Oct · Glasgow Royal Concert Hall

People you follow can see this beside the concert—not in a public tally.

Maya & Lewisare interested too

ShareSheet

Approved
src/features/social/ShareSheet.tsx

An invitation preview with real clipboard copying, native sharing, a selectable-link fallback, and focus-managed sheet behaviour.

Invite someone along

Collapsible

Approved
src/ui/primitives/Collapsible/Collapsible.tsx

Generic disclosure mechanics with no visual chrome of its own — a plain trigger and body here. Escape while focus is inside the open panel closes it and returns focus to the trigger; the height/opacity transition is instant under prefers-reduced-motion.

Plain demo

ProgrammeSheet

Approved
src/features/programme-notes/ProgrammeSheet.tsx

The long-form reading surface reproduced from the showcase's "14 / Programme — sheet interaction" demo: handle, reading column, movement list, listen-for callouts — the concert page's notes, not the summary paper beneath a card. Presentational only, always shown open here.

Reading surface

Programme notes

Gustav Mahler

Symphony No. 6

Mahler’s Sixth is often called the Tragic, but the nickname can make it sound more defeated than it really is. This is music that fights — brilliantly, obsessively, sometimes tenderly — before the floor finally gives way beneath it.

Movements

  1. IAllegro energico, ma non troppo~24 min
  2. IIScherzo~13 min
  3. IIIAndante moderato~15 min
  4. IVFinale~30 min

ProgrammeDisclosure

Experimental
src/features/programme-notes/ProgrammeDisclosure.tsx

The paper that slides out from beneath a concert card. At rest only its top edge shows — the handle and the composers line — and that edge is the trigger; pulled, it draws out the printed programme (ProgrammePaper): works, performers, running time, tickets and the booking action. Staged here beneath a placeholder block carrying the concert's palette.

Under a card

Concert card

ConcertQuickView

Approved
src/features/concert-quick-view/ConcertQuickView.tsx

An artwork-coloured programme above the browsing page, with compact mobile type. The sheet slides up and down on a phone, settles on desktop, and skips motion when requested. Who / What / Where share a sliding colour indicator; the solid booking action stays in place. Portal styling is independent of product-page CSS.

A concert at a glance

Another concert, another colour

Long titles and programme

Loading the programme

Details unavailable

ButtonPrimitive

Approved
src/ui/primitives/Button/ButtonPrimitive.tsx

Unstyled behavior layer: press/keyboard handling, disabled/loading gating, and data-state / data-loading / data-focused for CSS to key off. No aria-pressed — pressed is a transient visual, not toggle state.

Data attributes, visible

State is exposed as data-state / data-loading / data-focused for CSS to target — no visual styling of its own.

CardPrimitive

Approved
src/ui/primitives/Card/CardPrimitive.tsx

Unstyled structural card: role and tabIndex only appear when interactive and rendered as div/article — as="a" relies on native link semantics instead. Selection is exposed as data-state (no aria-pressed).

Interactive × selected × as

as="div" · data-state: unselected

ScrollAreaPrimitive

Approved
src/ui/primitives/ScrollArea/ScrollAreaPrimitive.tsx

Tracks scroll state via the data-scrolling attribute and an onScroll(scrollTop, scrollLeft) callback (no per-frame data-scroll-top / data-scroll-left attributes); momentum enables -webkit-overflow-scrolling on iOS, and scrollBehavior sets CSS scroll-behavior (auto or smooth).

Scrolling content

Line 1 of scrollable content.

Line 2 of scrollable content.

Line 3 of scrollable content.

Line 4 of scrollable content.

Line 5 of scrollable content.

Line 6 of scrollable content.

Line 7 of scrollable content.

Line 8 of scrollable content.

Line 9 of scrollable content.

Line 10 of scrollable content.

Line 11 of scrollable content.

Line 12 of scrollable content.

Approved
src/features/consent/ConsentPanel.tsx

The cookie decision surface, rendered inline — in the product it arrives in a modal gate (CookieConsentModal) that cannot be dismissed without an answer. "Essential only" and "Accept all" carry equal weight by design, the optional switches start off, and the detail sits behind a Collapsible rather than a second screen.

A first visit

How a new visitor meets it: nothing optional is on yet. Open "Choose what you share" to reach the switches.

Maestro

A word before we begin

Some cookies keep Maestro working — signing in, staying secure, holding your seats while you book. The rest are yours to decide on, and they stay off until you say otherwise.

Whatever you choose, we never sell what we learn about you.

Part-way agreed

The switched-on state. The switches follow the showcase's canonical privacy toggle — --iris-500 when on, not the aurora, which stays reserved for the card's top edge.

Maestro

A word before we begin

Some cookies keep Maestro working — signing in, staying secure, holding your seats while you book. The rest are yours to decide on, and they stay off until you say otherwise.

Whatever you choose, we never sell what we learn about you.