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.
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.
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.
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.
Paper filter bar
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.
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.
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.
Glasgow trail
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 people on stage.
The music you’ll hear.
The room and practical details.
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.
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.
MLJ
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.
MLJ
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.
01Wagner, arr. de VliegerTwilight of the Gods — an orchestral passage65 min
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.
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
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 SSO·2.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…
Tuning…
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.
The named social presence used beside plans, comments, profiles, and notifications. Tone is stable per person; every linked form has a full profile label.
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
Generic panel content. This primitive owns open/close state, aria-expanded / aria-controls / aria-labelledby wiring, the measured height transition, and Escape-to-close — the caller supplies the trigger element and its look entirely.
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
A listening guide for Maestro · approximately 82 minutes
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.
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.
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).
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.
ConsentPanel
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.
Keeping Maestro working
Signing in, security and holding your seats while you book. Without these the site cannot work, so they are always on.
Always on
Understanding what works
Which pages and concerts people actually use, so we can make them better. Never sold, never tied to your name.
Recognising you
Your city, your saved concerts and the music you lean towards, so Maestro feels like yours. You can change or clear this whenever you like.
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.
Keeping Maestro working
Signing in, security and holding your seats while you book. Without these the site cannot work, so they are always on.
Always on
Understanding what works
Which pages and concerts people actually use, so we can make them better. Never sold, never tied to your name.
Recognising you
Your city, your saved concerts and the music you lean towards, so Maestro feels like yours. You can change or clear this whenever you like.
Whatever you choose, we never sell what we learn about you.