Skip to main content

Eyebrow

Info:Content
27

The small uppercase kicker that sits above a heading.

kicker overline tagline pretitle label

Live demo

live · @xtyle/astro

Eyebrow

The three-step hierarchy

Themable-derivation engine

One algorithm, a whole system

An eyebrow leads, a heading follows, body text grounds it — no bespoke CSS, just the stack's gap doing the spacing.

Tones and tracking

accent · normal

muted · normal

subtle · normal

accent · wide

muted · wide

The full color roster

A kicker can carry a status color from the full tone roster, in that tone's on-surface ink.

Deprecated

Now shipping

Experimental

Heads up

Eyebrow is the overline a section wears above its title: short, uppercase, tracked-out, and accent-toned by default. It is one element with no layout of its own: drop it as the first child of a Stack and the gap does the spacing.

tone swaps the accent ink for a quieter muted or subtle, or for any tone in the full roster (every semantic role, accent variant, or named hue) so a kicker can carry a status color, in that tone's on-surface ink derived to stay legible against the page. tracking widens the letter-spacing for a more deliberate label. Choose the as element to match the surrounding flow: a p for a standalone kicker, a span for one inline with other text.

When to use

How this component composes with the rest of the set.

Lead a Section or a Card header with an Eyebrow, then a Heading, then Text: a three-step hierarchy with no bespoke CSS.
Inside a gap-controlled Stack, the Eyebrow needs no margin; the stack's gap sets the rhythm.
Use tone="muted" where an accent kicker would compete with nearby accent color.

Props

3 props, straight from the manifest.

PropTypeDefaultBindingsDescription
as EyebrowTag
p span div
p
html svelte astro
The element to render: a block `p`/`div` kicker or an inline `span`.
tone EyebrowTone
muted subtle accent neutral danger success warn info accent-2 accent-3 accent-4 red orange yellow green blue purple brown pink cyan gray white black
accent
html svelte astro
Ink: accent by default, a quieter `muted` / `subtle`, or any tone in the full roster (semantic role, accent variant, or named hue) for a status-colored kicker in that tone's on-surface ink.
tracking EyebrowTracking
normal wide
normal
html svelte astro
Letter-spacing: `normal` (0.08em) or `wide` (0.12em) for a more deliberate label.

Anatomy

The named parts that make up the component, with their selectors.

eyebrow

.xtyle-eyebrow

The kicker root carrying the tone and tracking classes.

--font-sans --text-xs --weight-semibold --leading-tight --accent-vivid

Tokens & coverage

What the component consumes, checked live against what the algorithm produces.

Success:fully covered 27/27 consumed tokens produced default register: 299 tokens

Live coverage check against the xtyle-default register (derive(xtyleDefault, { anchors })coverComponent(manifest, register)). Every token this component consumes must be a key the algorithm produces.

--accent-2-vivid --accent-3-vivid --accent-4-vivid --accent-vivid --black-vivid --blue-vivid --brown-vivid --cyan-vivid --danger-vivid --fg-2 --fg-3 --font-sans --gray-vivid --green-vivid --info-vivid --leading-tight --neutral-vivid --orange-vivid --pink-vivid --purple-vivid --red-vivid --success-vivid --text-xs --warn-vivid --weight-semibold --white-vivid --yellow-vivid

Slots

default
html svelte astro

The kicker text.

Accessibility

An eyebrow is a visual label, not a heading. Keep the real Heading directly after it so the document outline stays correct.
The uppercasing is presentational (text-transform); the accessible text keeps its authored casing for screen readers.

Code

Tones and tracking

The accent default against the muted emphasis tone and a status color from the full roster, at both tracking widths.

<xtyle-eyebrow>Themable-derivation engine</xtyle-eyebrow>

<xtyle-eyebrow tone="muted" tracking="wide">By the numbers</xtyle-eyebrow>

<xtyle-eyebrow tone="success">Now shipping</xtyle-eyebrow>
<script lang="ts">
	import { Eyebrow } from "@xtyle/svelte";
</script>

<Eyebrow>Themable-derivation engine</Eyebrow>

<Eyebrow tone="muted" tracking="wide">By the numbers</Eyebrow>

<Eyebrow tone="success">Now shipping</Eyebrow>
---
import { Eyebrow } from "@xtyle/astro";
---

<Eyebrow>Themable-derivation engine</Eyebrow>

<Eyebrow tone="muted" tracking="wide">By the numbers</Eyebrow>

<Eyebrow tone="success">Now shipping</Eyebrow>