Design system — page navigation

Design system

A scalable interface system built for performance, accessibility, and real-world product workflows.

  • Light / Dark
  • Token-driven
  • WCAG-minded
  • Component-based

System overview

How the interface behaves: tokens constrain color, type, surfaces, and spacing so composed UI stays consistent.

In practice

The same tokens compose into predictable UI: surface, label, field, and action working together.

Color system

Primary (brand ramp)

--brand-50
--brand-100
--brand-200
--brand-300
--brand-400
--brand-500
--brand-600
--brand-700
--brand-800
--brand-900

Secondary (violet ramp)

--secondary-50
--secondary-100
--secondary-200
--secondary-300
--secondary-400
--secondary-500
--secondary-600
--secondary-700
--secondary-800
--secondary-900

Semantic

--success
--warning
--danger
--info

Typography

Heading 1Heading 2Heading 3

Body text uses the default size and line height for long-form reading and UI copy.

Small text for captions, hints, and secondary metadata.

const primary = 'var(--brand-700)';

Surfaces & elevation

Surface steps stack from page (--surface-0) through raised cards; elevation uses shared shadow tokens. Toggle light/dark in the header to verify contrast.

--surface-0
--surface-1
--surface-2
--surface-3
--shadow-sm
--shadow-md
--shadow-lg

Spacing & radius

Spacing scale

  • --space-2
  • --space-3
  • --space-4
  • --space-5
  • --space-6

Corner radius

--radius-sm
--radius-md
--radius-lg

Layout & composition

Reusable layout primitives for responsive composition—grids, asides, and card patterns. Visual tokens live in System overview.

Grid

Three patterns cover most product layouts: a balanced four-column grid, a content-friendly three-column grid, and a main region paired with an aside.

On viewports below 768px, the grid examples are hidden so cards stay readable; the main + aside pattern below still demonstrates responsive behavior.

Balanced layout (4 columns)

Card 1.

Card 2.

Card 3.

Card 4.

Content-friendly layout (3 columns)

Card 1.

Card 2.

Card 3.

Grid with Aside

Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6

Article using the card styles for visual consistency.

Article using the card styles for visual consistency.

Actions

Interactive elements used to trigger user intent.

Buttons

Hierarchy is intentional: one primary action per region, secondary for supporting work, tertiary for lighter emphasis. Outline and ghost are style variants—not extra tiers. Destructive and warning styles are for risky or system-level states—not decoration.

Primary & supporting actions

Primary: the main CTA per block—the hierarchy anchor. Secondary and tertiary are the supporting tier below.

Primary

Secondary & tertiary

Alternatives that support the primary without competing with it.

Variants & styles

Outline, ghost, and icon placement—visual treatments, not hierarchy tiers.

Outline

Ghost

Quiet actions on bold or busy backgrounds—same style tier as outline, different surface.

Icon buttons

Leading, trailing, and icon-only patterns.

States

Disabled, loading, and link-styled actions.

As link

Destructive & system feedback

Use for irreversible actions, alerts, and validation—not for everyday navigation.

Sizes

Layout

Example: dialog actions

Typical footer: dismiss, commit, and destructive control aligned together.

Loaders

The Loader component is a small, customizable spinner used for showing loading states. It accepts width, heightand border props (strings or numbers) and sets matching CSS variables (--loader-width, --loader-height,--loader-border) so the pseudo-element spinner can be styled consistently. Place the loader inside a centered container or use a positioned parent (e.g. position: relative) when showing an overlay.

CTA Band

A prominent call-to-action band for demos, downloads, or contact.

Ready to align your study team?

Get a demo tailored to your protocol and timelines.

Core forms & validation

The patterns you reach for first: controls, validation, search, and a composed contact slice—ordered for product relevance.

Forms & Inputs

Flexible form and input system supporting text, selects, checkboxes, radios, sliders, file uploads, and validation. All controls are accessible, customizable, and support helpful messaging and state via props.

Example: inline review

Label, helper text, validation, and actions as they appear in a real panel.

Visible to your team only.
Enter a valid email address.

Contact form

Use your legal name for agreements.
We only email about your request.
Required for contact.

Control gallery

Hold Cmd/Ctrl to multi-select.
Radios
Checkboxes
Please enter a valid email.

Inline Form Validation

Client-side rules with inline messages, an error summary, and accessible states.

Inline Async Validation

Debounced “email already taken?” check with loading state and accessible messages.

Type an email to check availability.

Search Suggest Chips

Type to filter suggestions and add tokens (Enter or comma). When the input is empty Backspace removes the last token. Use the Arrow keys to navigate suggestions and press Enter or click a suggestion to add it. Focusing the field shows recent suggestions when available.

    Examples: Accessibility Standards, Agentic Development, Engineering Management, Front-end Development…

    Pattern: contact & validation

    A composed slice—input, primary action, inline outcome, and success feedback—shows how tokens and components work together beyond isolated controls.

    Submit runs validation; async checks are demonstrated in the inline validation sections above.

    Advanced inputs

    Specialized pickers, uploads, and composite fields—useful for dense tools; keep them behind the core patterns when telling the system story.

    Combobox / Autocomplete

    Single-select and multi-select with chips. Arrow keys + Enter, click to choose.

    Single-select

    • Projects
    • Teams
    • Reports
    • Documents
    • Billing
    • Settings

    Multi-select

    • Front-end development
    • Accessibility
    • Design systems
    • TypeScript
    • UX research
    • Performance

    File Uploader

    Drag files here or browse. Shows basic validation and mock progress.

    File Uploader (Images)

    Drag & drop or browse. Shows live thumbnails with remove & size checks.

    Drop images here
    or click to — up to 10 files, max 10 MB each

    Meter / Score

    Linear score with thresholds + native <meter> styling. Drag to preview values.

    72Fair
    0–49: Poor • 50–74: Fair • 75–89: Good • 90–100: Excellent

    Date-Range Picker

    Select start and end dates using the calendar or the quick presets. Click a day to set the start date, then click another day to set the end date (clicking an earlier day will swap start and end). Use the presets for common ranges and the Clear button to reset.

    Use the arrow keys to move between days, Page Up/Page Down to move between months, Home/End to jump to the start/end of the week, and Enter or Space to select the focused date.

    April 2026
    Sun
    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    1
    2

    Date Picker

    Pick a single date with “Today” and “Clear”.

    April 2026
    Sun
    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    1
    2

    Date Input (Popover)

    Calendar opens on input/focus; ESC/outside to dismiss.

    Start date

    Navigation & structure

    Wayfinding, pagination, and command-driven shortcuts—tabs and accordion live at the end of this page.

    Pagination

    Reusable pager with first/prev/number/next/last, accessible keyboard shortcuts, and a page-size selector.

    Keyboard: ← → (prev/next), Home/End (first/last), PageUp/PageDown (skip pages). The demo uses a skip step of 5 pages.
    53 items • Page 1 of 7
    • Record #1
      Placeholder row for pagination demo.
    • Record #2
      Placeholder row for pagination demo.
    • Record #3
      Placeholder row for pagination demo.
    • Record #4
      Placeholder row for pagination demo.
    • Record #5
      Placeholder row for pagination demo.
    • Record #6
      Placeholder row for pagination demo.
    • Record #7
      Placeholder row for pagination demo.
    • Record #8
      Placeholder row for pagination demo.

    Command Palette

    Quickly jump to design system sections or run actions. Press /Ctrl + K or click the button to open the palette. Type to filter, use / to navigate, Enter to run, and Esc to close.

    Multi-step Modal Wizard

    Guided flow with validation per step. Reuses your modal system.

    Data & feedback

    Tables, filters, and feedback surfaces—empty, error, and success—so dense UIs stay understandable.

    Toasts

    Toasts are used to display brief, auto-dismissing notifications.

    Toasts

    Inline Alerts

    Success: Your settings have been saved.
    Info: New template guidance is available.
    Warning: A site has overdue tasks.

    Tooltips & Popovers

    Short hints (hover/focus) and richer, non-modal popovers (click/ESC/outside).

    Tooltips

    Link with tooltipHover/focus chip

    Popovers

    Popovers Examples

    Modals & Overlays

    Centered modal and slide-over overlay. Keyboard: ESC to close. Focus is trapped inside.

    Empty, error & success

    Reserve these surfaces for recoverable context—pair a short explanation with a clear next step, including positive confirmation after success.

    Empty list

    No projects match these filters.

    Clear filters or create a project to get started.

    Error

    Could not load results.

    Check your connection and try again.

    Success

    Changes saved.

    Your team can see the update.

    Pattern: data dashboard slice

    Filters, density, and tabular data are composed below—this block previews how those pieces align in one toolbar.

    Status: ActiveRegion: All

    See Data table and Filters for full implementations and accessibility behavior.

    Cards

    Modular card layouts with header support, variant styling, and interactive hover/focus states for clear content grouping and visual hierarchy.

    Quarterly roadmap

    Prioritized themes for the next cycle, with owners and target dates.

    Updated 2h ago · Strategy · 4 owners

    With Header

    This card has a header with an icon and text.

    This card has no header. Just content.

    This card uses extra classes for variant styles.

    Card 0 alternate styling.

    Card 1 alternate styling.

    Card 2 alternate styling.

    Card inverse styling.

    Data Table

    Sortable columns, sticky header, and client-side pagination.

    IDPhaseVersionStatusTask
    1000UI DesignISprint Planning12
    1001UI DevelopmentIIIn Review19
    1002Accessibility FixesIIIDeployed26
    1003Bugs & IssuesISprint Planning33
    1004UI DesignIIIn Review40
    1005UI DevelopmentIIIDeployed47
    1006Accessibility FixesISprint Planning54
    1007Bugs & IssuesIIIn Review61
    Click headers to sort. Rows per page selectable below.
    Page 1 / 4

    Metric Cards

    Small metric cards for dashboards and summaries.

    ...
    ...
    ...

    Timeline Sample

    A vertical timeline using the .timeline and .step classes for sequential layouts.

    1
    Step 1

    Start your project and set up the basics.

    2
    Step 2

    Develop features and iterate quickly.

    3
    Step 3

    Test, deploy, and monitor your app.

    Filters

    Toggle chips with counts, “Clear all,” and live results.

    0 selected

    Result 1

    Sample result

    Result 2

    Sample result

    Result 3

    Sample result

    Result 4

    Sample result

    Result 5

    Sample result

    Result 6

    Sample result

    Result 7

    Sample result

    Result 8

    Sample result

    Logic Pills (Selected Filters)

    Removable filter chips with AND/OR logic and quick “clear all”.

    No filters selected
    18 results

    Result 1

    Version: II • Status: Deployed • Phase: UI Design

    Result 2

    Version: I • Status: Sprint Planning • Phase: UI Development

    Result 3

    Version: II • Status: Sprint Planning • Phase: UI Development

    Result 4

    Version: I • Status: Deployed • Phase: UI Development

    Result 5

    Version: II • Status: Sprint Planning • Phase: UI Design

    Result 6

    Version: I • Status: Sprint Planning • Phase: UI Development

    Result 7

    Version: II • Status: Deployed • Phase: UI Development

    Result 8

    Version: I • Status: Sprint Planning • Phase: UI Development

    Result 9

    Version: II • Status: Sprint Planning • Phase: UI Design

    Result 10

    Version: I • Status: Deployed • Phase: UI Development

    Result 11

    Version: II • Status: Sprint Planning • Phase: UI Development

    Result 12

    Version: I • Status: Sprint Planning • Phase: UI Development

    Result 13

    Version: II • Status: Deployed • Phase: UI Design

    Result 14

    Version: I • Status: Sprint Planning • Phase: UI Development

    Result 15

    Version: II • Status: Sprint Planning • Phase: UI Development

    Result 16

    Version: I • Status: Deployed • Phase: UI Development

    Result 17

    Version: II • Status: Sprint Planning • Phase: UI Design

    Result 18

    Version: I • Status: Sprint Planning • Phase: UI Development
    Add:

    Media & interaction

    Interactive and visual content patterns.

    Page Hero

    A hero component that showcases key content and actions, with a visually striking background and prominent call-to-action buttons.

    Regulatory-readyCollaboration-first
    Tulio Solorzano

    Front End Engineering Manager and Developer with 20 years of experience spanning engineering management, front-end development, design, sprint planning and estimation, and product management. Passionate about building high-performing, collaborative teams at the intersection of design, software, and product. Currently leveraging my years of experience to use the power of AI for Agentic and Spec Driven development.

    98.7%on-time deliverables
    40%↓handoff friction
    21 CFRPart 11 aligned
    Live Study ViewMilestone Alerts
    How it works

    Logo Rotator Demo

    A demo of the LogoRotator component, rotating through 20 Cards with icons.

    Built with

    Technologies used on this site (not client logos).

    Image Slider

    Interactive image slider with:

    • Large main image area with smooth sliding transitions
    • Previous/Next arrow buttons
    • Clickable thumbnail navigation
    • Active image indicator
    • Keyboard navigation (left/right arrows)
    • Touch/drag/swipe support
    • Responsive layout
    • Customizable heading tag and class for info panel
    Sungold Cherry Tomatoes

    Sungold Cherry Tomatoes

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Image 1 description.

    Sungold Cherry Tomatoes
    Carolina Reaper Hot Pepper
    Jay's Red Ghost Scorpion Hot Pepper
    Sungold Cherry Tomatoes
    Carolina Reaper Hot Pepper
    Jay's Red Ghost Scorpion Hot Pepper
    Sungold Cherry Tomatoes
    Carolina Reaper Hot Pepper
    Jay's Red Ghost Scorpion Hot Pepper
    Sungold Cherry Tomatoes
    Carolina Reaper Hot Pepper
    Jay's Red Ghost Scorpion Hot Pepper

    Image Rotator

    ImageRotator cycles through an array of images on a configurable interval. Key props:

    • imagesarray of {src, alt}
    • intervalrotation period in milliseconds
    • transitionanimation style (fade, slide, zoom, flip, kenburns, dissolve, crossfade, none)
    • transitionDuration animation duration in ms (controls CSS and timing)
    • width / height sizing; accepts numbers or CSS strings

    The component renders layered slides for smooth enter/exit animations and honours prefers-reduced-motion. Remote images are left unoptimized in dev to avoid Next.js optimizer errors.

    Sungold Cherry Tomatoes
    Carolina Reaper Hot Pepper
    Jay's Red Ghost Scorpion Hot Pepper

    System principles

    Guidelines that define how the system is applied across interfaces.

    • One primary action per region

      Primary actions are used sparingly to maintain clarity and focus.

    • Semantic colors are reserved for feedback

      Warning and error states communicate system status, not hierarchy.

    • Core patterns precede advanced inputs

      Common interactions are prioritized before introducing complexity.

    • Consistency is driven by tokens

      Design tokens ensure alignment across components, themes, and states.

    • Accessibility is a baseline, not an afterthought

      All components are designed to meet contrast, focus, and usability standards.

    Built for real products

    This system is designed to scale across production environments, balancing performance, accessibility, and usability.

    Tabs & accordion

    Disclosure patterns placed here so the workflow example stays the primary narrative for multi-step content.

    Tabs

    Accessible tab interface with ARIA roles, keyboard navigation (←/→, Home/End), focus management, and horizontal scrolling for overflow. Only one tab panel is visible at a time, and all controls are screen reader friendly.

    Overview

    High-level snapshot of the study—sites, milestones, and current risks.

    Pill style tabs.

    Overview

    High-level snapshot of the study—sites, milestones, and current risks.

    Accordion

    Accessible accordion component with ARIA roles, keyboard navigation (↑/↓, Home/End), and smooth open/close animations. Only one panel is open at a time, and all controls are screen reader friendly.

    Use the sign-in screen, choose “Forgot password,” and follow the email link. Links expire after a short window for security.