Skip to content
Virtus

Components

The UI kit every product screen is built from, shown live with its states. Keyboard through it: focus rings, arrow keys and Esc behave as they do in the app.

Buttons

Pills. Gold primary for the one main action per view; secondary outline; ghost for toolbars.

Variants

Sizes and icons

States

Link as button

Fields

Rectangular 8px controls recessed into the well. Field wires label, help and error to the control for screen readers.

Text, select, date

As it appears on your roster.

Used only to confirm eligibility.

0/280

Search

Choices

Checked state is gold: these are the user's own selections.

Checkbox, radio, switch

Priced per session
Priced per athlete
Shown on your coach profile.

Filter chips

Class of 2027

Overlays

Focus is trapped in dialogs and sheets, Esc closes, and focus returns to the trigger. Menus support arrows and typeahead.

Dialog and sheet

Dropdown menu, popover, tooltip

Toast

Avatars and badges

Photo, then initials, then a glyph. Badges carry status; semantic color only where it signals something.

Avatar sizes and fallbacks

Badges

NeutralTop 10%ConfirmedDeclinedPendingVerified coachClass of 2027

Cards

Elevation by lightness plus a hairline. The featured card is the one place a gold glow appears.

Today

Upcoming sessions

Header, sections and footer compose.
Sections split with a hairline.

Featured

Headline metric

One per screen at most.

92

Sample value

Interactive card

Hover or focus the link for the gold top-line sweep.

Table

44px rows, mono headers, tabular figures, sticky header. Below 768px rows stack into labelled cards. Sample rows for layout only.

Sample roster
PosStatus
Sample Athlete DSG202721.2Pending
Sample Athlete APG202718.4Confirmed
Sample Athlete BSF202614.1Pending
Sample Athlete CC20289.7Confirmed
Empty roster
AthletePosClassPPGStatus

No athletes yet

Add athletes to your roster to see them here.

Loading, empty, error

Error copy always comes from friendlyErrorMessage, never the server's text.

Skeletons and spinner

No sessions yet

Find a coach and request your first session.

Paging

Numbered pages for tables; an explicit Load more for feeds (mobile scrolls infinitely).

Pagination and load more

Showing 20 results

Page header and details

Archivo uppercase title with a mono eyebrow. One per page; it is the h1 in product routes.

Page header

Coach

Team

Your roster and athletes you are following.

Divider and keys


LeftRight⌘K