Theme Configuration

Page layout, responsive breakpoints, and border radius presets

What the Theme tab controls

The Theme tab generates two kinds of tokens:

Page Layout

Page width, horizontal offset, and column gap — with optional tablet/mobile overrides.

Border Radius

A 5-token preset (none / small / medium / large / full) that powers the --hrd-* family.

These are static px tokens (no clamp()) — the responsive part comes from @media overrides for tablet and mobile.

Page Layout

Three values define your page structure:

Page Width

The maximum content width. Common values: 1200, 1440, 1920.

Offset (min.)

Horizontal page padding. Common values: 16, 24, 32, 48.

Column Gap

Gap between grid/flex columns. Common values: 16, 20, 24, 32.

Generated CSS variables

Layout produces six CSS variables — three "design system" names plus three Breakdance-aligned aliases:

Desktop (base) layout tokenscss
/* Design system tokens */
--page-width: 1440px;
--min-offset: 32px;
--page-gap: 24px;

/* Breakdance bridge (auto-derived) */
--bde-section-width: 1504px;            /* page-width + 2 * min-offset */
--bde-section-horizontal-padding: 32px; /* same value as --min-offset */
--bde-column-gap: 24px;                 /* same value as --page-gap */

Heads up: layout vars are NOT prefixed --hcl-*

Layout uses --page-width, --min-offset, and --page-gap (no prefix). Older docs may have shown --hcl-page-width etc. — that's not what BreakColorUI exports.

A bonus token

BreakColorUI also writes --hsx-bleed-offset — a max(...) expression you can use to align "bleed" elements with the section edge. It's automatically computed from the layout tokens.

Responsive Breakpoints

Layout supports cascading overrides for tablet and mobile, with smart inheritance built in.

Desktop (base)

The default. Defines page-width, min-offset, and page-gap for the desktop range.

Tablet (≤ 1024px)

Override min-offset and column gap. Inherits from Desktop if left untouched.

Mobile (≤ 768px)

Override min-offset and column gap. Inherits from Tablet, then Desktop.

Page width is desktop-only

Only offset and column gap can be overridden per breakpoint. --page-width is set once for desktop and used as the upper bound across all viewports. Tablet/mobile media queries don't redefine it.

Smart inheritance & auto-cleanup

The Theme tab persists only values that differ from the parent breakpoint. If you type a tablet offset that equals the desktop offset, BreakColorUI clears it automatically — keeping your config minimal and the cascade clean.

What this looks like in practice

  • Tablet inherits Desktop unless you override
  • Mobile inherits Tablet (or Desktop, if Tablet wasn't overridden)
  • Any value that matches its parent is set to undefined in storage
  • Blue dot indicators on the Tablet / Mobile tabs show breakpoints with real overrides
  • The "Responsive layout" toggle persists your intent even if no values currently differ

Example output

Generated CSS with tablet + mobile overridescss
html:root {
--page-width: 1440px;
--min-offset: 32px;
--page-gap: 24px;
--bde-section-width: 1504px;
--bde-section-horizontal-padding: 32px;
--bde-column-gap: 24px;
}

/* Tablet — only what differs from desktop */
@media (max-width: 1024px) {
html:root {
  --min-offset: 24px;
  --page-gap: 20px;
  --bde-section-width: 1488px;
  --bde-section-horizontal-padding: 24px;
  --bde-column-gap: 20px;
}
}

/* Mobile — only what differs from tablet */
@media (max-width: 768px) {
html:root {
  --min-offset: 16px;
  --page-gap: 16px;
  --bde-section-width: 1472px;
  --bde-section-horizontal-padding: 16px;
  --bde-column-gap: 16px;
}
}
Theme tab — Page Layout card with the Desktop / Tablet / Mobile tabs and the inheritance dots
Theme tab — Page Layout card with the Desktop / Tablet / Mobile tabs and the inheritance dots

Border Radius

A single preset chooses the values for the entire --hrd-* family. Switching presets updates all five tokens at once.

None

0px across the board (sharp UI)

Small

4 / 6 / 9px — subtle rounding

Medium (default)

6 / 8 / 12px — balanced rounding

Large

9 / 12 / 18px — softer surfaces

Full

10 / 16 / 24px plus pill-shaped buttons

Generated CSS variables

Border radius tokenscss
--hrd-s:    6px;     /* Small radius */
--hrd-m:    8px;     /* Medium radius */
--hrd-l:    12px;    /* Large radius */
--hrd-pill: 500px;   /* Pill-shaped (badges, tags) */
--hrd-atom: 6px;     /* Tight radius for buttons / atomic UI */

Naming note

The exported CSS uses --hrd-* (HeadSpin Radius). Inside the Theme tab, the radius preview tiles label them as "Radius 1 / 2 / 3 / Pill / Button" using the legacy --hcl-r* names — that's a UI label only. Use --hrd-s / -m / -l / -pill / -atom in your code.

Practical usage

Applying border radiuscss
.badge   { border-radius: var(--hrd-s); }
.card    { border-radius: var(--hrd-m); }
.hero    { border-radius: var(--hrd-l); }
.tag     { border-radius: var(--hrd-pill); }
.button  { border-radius: var(--hrd-atom); }

Configuring Theme

Configuration steps

  1. Open the Theme tab of your project
  2. Set Desktop layout — page width, offset, column gap
  3. (Optional) Toggle Responsive layout — unlocks Tablet + Mobile sub-tabs
  4. Override only what changes — empty fields inherit from the parent
  5. Pick a Border Radius preset — None / Small / Medium / Large / Full
  6. Hit save — the global save button appears once you've made changes
Theme tab — Border Radius card showing the 5 presets and the radius preview tiles
Theme tab — Border Radius card showing the 5 presets and the radius preview tiles

Putting it together

A complete page layout using theme tokenscss
.container {
max-width: var(--page-width);
padding-inline: var(--min-offset);
margin-inline: auto;
}

.grid-3 {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: var(--page-gap);
}

section { padding-block: var(--hss-l); }
.hero   { padding-block: var(--hss-xxl); border-radius: var(--hrd-l); }
.card   { padding: var(--hsp-l); border-radius: var(--hrd-m); }
.button { padding: var(--hsp-xs) var(--hsp-s); border-radius: var(--hrd-atom); }
.tag    { padding: var(--hsp-xs) var(--hsp-s); border-radius: var(--hrd-pill); }

Responsive without breakpoint logic

Notice you reference the same variables everywhere. Responsiveness comes from the @media blocks BreakColorUI exports — your component CSS stays viewport-agnostic.

Breakdance integration

The --bde-* aliases (--bde-section-width, --bde-section-horizontal-padding, --bde-column-gap) are what Breakdance reads internally for section sizing. Updating Page Width / Offset / Column Gap in BreakColorUI propagates to Breakdance's section settings automatically. See Tokens for the full Breakdance mapping (typography, colors, etc.).

Next