Skip to main content
Clever Ops

Training Split Board

The weekly split on the wall, seven ruled day cells with bold uppercase focus names, key lifts, mono set volumes, and honest rest days. A React and Tailwind block for gyms.

Preview & code

Loading Training Split Board preview

Installation

pnpm dlx shadcn@latest add @cleverui/training-split-board

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { TrainingSplitBoard } from '@/components/blocks/training-split-board'
Exampletsx
'use client'

import { TrainingSplitBoard } from '@/components/blocks/training-split-board'

export default function TrainingSplitBoardDemo() {
  return (
    <div className="py-8 sm:py-12">
      <TrainingSplitBoard
        eyebrow="Run the week"
        heading="The split"
        featured={2}
        featuredLabel="Test day"
        note="Deload every fourth week. Non-negotiable."
        days={[
          {
            day: 'Mon',
            focus: 'Push',
            lifts: ['Bench', 'OHP', 'Dips'],
            volume: '16 sets',
          },
          {
            day: 'Tue',
            focus: 'Pull',
            lifts: ['Deadlift', 'Row', 'Chin-up'],
            volume: '18 sets',
          },
          {
            day: 'Wed',
            focus: 'Legs',
            lifts: ['Squat', 'RDL', 'Split squat'],
            volume: '18 sets',
          },
          {
            day: 'Thu',
            focus: 'Rest',
            rest: true,
          },
          {
            day: 'Fri',
            focus: 'Push',
            lifts: ['Incline', 'Close-grip', 'Lateral'],
            volume: '14 sets',
          },
          {
            day: 'Sat',
            focus: 'Pull',
            lifts: ['RDL', 'Pull-up', 'Face pull'],
            volume: '15 sets',
          },
          {
            day: 'Sun',
            focus: 'Rest',
            rest: true,
          },
        ]}
      />
    </div>
  )
}

API reference

TrainingSplitBoard accepts the following props.

PropTypeDefaultDescription
headingstring'The split'
eyebrowstringcoach-voice kicker, e.g. RUN THE WEEK
days*TrainingSplitDay[]7 cells is the sweet spot
featurednumberindex of the benchmark day, takes the single primary accent
featuredLabelstring'Test day'real-text mark on the featured cell, the keyline never carries meaning alone
notestringplain-spoken footnote

…plus everything from React.HTMLAttributes<HTMLElement>: className, event handlers, aria attributes and the rest pass straight through.

Referenced types

Typestsx
export interface TrainingSplitDay {
  /** short mark, e.g. MON */
  day: string
  /** renders uppercase, e.g. PUSH / PULL / LEGS */
  focus: string
  lifts?: string[]
  /** preformatted, e.g. 18 SETS */
  volume?: string
  /** renders the muted rest treatment */
  rest?: boolean
}

Frequently asked questions

How do I install the Training Split Board component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/training-split-board`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does Training Split Board require?

Training Split Board uses motion on top of React and Tailwind CSS. You don't need to install it manually, the shadcn CLI resolves and installs npm dependencies automatically when you add the component.

Can I theme Training Split Board to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services