Internal

ONYX style guide

Every primitive and module in the design system, rendered live. Sentence case throughout. Use only the tokens and components shown here.

Gaps in the system

  1. 01No chip, tab, or avatar primitive exists in the system. The radius demo renders them inline with rounded-full.
  2. 02No skeleton/loading primitive exists. The States section builds one inline with bg-sand + animate-pulse.
  3. 03No empty-state or error-state primitive exists. The States section builds them inline.
  4. 04No shared SEO meta injector. noindex is implemented per-page via direct document.head manipulation, the same pattern used by StudentMembership, SummerPoolPass, EventsPage, and Longevity. A shared useDocumentMeta hook would remove the duplication.
01

Colour

Grounds and type are site-wide. Accent is sage. Lime is restricted to /game routes only.

Chalk#FAF8F4
--chalk
Paper#FFFFFF
--paper
Sand#EFE9DD
--sand
Void#111110
--void

Type

Ink#1A1A18
--ink
Graphite#4A4A45
--graphite
Mist#8A8A82
--mist

Accent

Accent#6BA36B
--accent
Accent deep#4F7D4F
--accent-deep

Game routes only

Lime#9ACA3C
--lime
02

Type

Plus Jakarta Sans for display, Inter for body. Sentence case everywhere. No all-caps.

.t-display-xlJakarta 800 / clamp 2.75-5.5rem / -0.025em
More than a gym
.t-display-lJakarta 700 / clamp 2-3.5rem / -0.02em
Customized for you
.t-display-mJakarta 700 / 1.5rem / -0.01em
A direct, one-on-one relationship
.t-body-lInter 400 / 1.125rem / 1.6
Industry-leading certified trainers. Every session designed around your goals, your body, your schedule.
.t-bodyInter 400 / 1rem / 1.65
Walk in to any class. Onyx Maxx small-group training caps attendance so every member gets attention.
.t-eyebrowInter 600 / 0.75rem / 0.18em uppercase
Personal training
03

Radius rule

Interactive elements are fully round. Structural elements are square. No middle value.

Interactive - rounded-full

ChipATab

Structural - square

Card
Panel
04

Shadow

Three elevation steps. Use soft for resting cards, lift on hover.

shadow-none
shadow-soft
shadow-lift
05

Spacing

Real band heights at mobile and desktop. The band after a hero uses band-tight.

band-tight - 56px mobile / 80px desktop
band - 72px mobile / 112px desktop
band-feature - 96px mobile / 160px desktop
06

Primitives

Every Button variant at every size, ClubPill both sizes, Eyebrow, SectionHeading, PortraitMedia at all three ratios.

Button - solid / outline / text

Text link

Button - frost + solidInverse (over void)

ClubPill

Eyebrow

Default eyebrowSquare accent eyebrow

SectionHeading

Our approach

A direct, one-on-one relationship with every member.

At ONYX you are family. We specialize in custom programs tailored to your individual goals.

PortraitMedia

ratio 5:7
ratio 4:5
ratio 1:1
07

Form controls

Brand primitives: square 52px, hairline border, inset focus-visible ring (box-shadow, never clipped by overflow:hidden), #B4463C error on chalk / #EE9186 on void. Label/hint/error colours inherit from --label-fg/--hint-fg/--error-fg, a dark panel just adds .on-dark. Native select on coarse pointers, Radix on fine. Tab through both grounds to verify focus and contrast.

TextField - default
TextField - filled
TextField - error + hint (both render)

10 digits, no dashes

TextField - disabled
TextArea
Select
Checkbox
RadioGroup
Switch

Same fields on void (.on-dark)

Inherited tokens: one .on-dark on the panel adapts every descendant, no per-field prop. Error colour here is #EE9186 (clears ~7.2:1 on void; #B4463C fails at 3.4:1).

TextField - default
TextField - error + hint

10 digits, no dashes

Checkbox
TextArea
Select
Switch
08

Modules

One live instance of each module with placeholder content.

Style guide

Media hero

Dual-video hero with poster fallback. This instance uses a mid height and no video cuts.

Statement block. A single large declarative line, optional text CTA.

Split feature
Split feature

Two-column media and copy.

Flippable. Media on one side, eyebrow, title, body and CTA on the other.

Pool

Pool - Lap and leisure

Why ONYX

Why ONYX

Our story.

Classes

Classes

Walk in.

Membership

Membership

Three tiers.

Offer band

A grouped offer with primary benefits.

Primary benefits render as a media grid, secondary benefits behind an expandable list.

Benefit one

Benefit one

Short copy.

Benefit two

Benefit two

Short copy.

Benefit three

Benefit three

Short copy.

Loved by thousands of Northeast Ohio members
“Cleanest gym I have ever been a member of. The staff actually knows your name.”
Jessica M. · Solon
“My trainer completely changed how I work out. Down 22 lbs in 3 months.”
Mike R. · Hudson
“Luxury feel without the luxury price. 24/7 access fits my crazy schedule.”
Danielle K. · Willoughby Hills

Hours

Hudson

  • MondayOpen 24 hours
  • TuesdayOpen 24 hours
  • WednesdayOpen 24 hours
Pool

Pool

Lap and leisure

Tennis

Tennis

Six courts

Recovery

Recovery

Sauna and cold plunge

Strength

Strength

Free weights

Frequently asked questions

Book a free consultation and we will build a plan.

Lead capture

Start your journey.

No commitment. Tell us your goals and we will build a plan.

Loved by thousands of Northeast Ohio members
“Cleanest gym I have ever been a member of. The staff actually knows your name.”
Jessica M. · Solon
“My trainer completely changed how I work out. Down 22 lbs in 3 months.”
Mike R. · Hudson
“Luxury feel without the luxury price. 24/7 access fits my crazy schedule.”
Danielle K. · Willoughby Hills

Terms and conditions apply. See your home club for details.

09

States

Loading, empty, and error. These are built inline, no primitive exists yet - see GAPS.

Loading skeleton
Empty state

Nothing here yet.

Error state

Something went wrong.

Try again

ONYX style guide. Living reference for the Full Life Time design system. Rendered from src/components/primitives and src/components/modules.