A quiet line of status or activity text with an optional icon, plain or set between rules.
<tp-marker>
Marker
Default density
Compact density
Restart from the initial state
Show the copyable source
Reading 4 filesWorked for 42sSwitched to release-2.4
Reading 4 filesWorked for 42sSwitched to release-2.4
<div style="display:grid;gap:var(--tp-space-6);max-inline-size:32rem;margin-inline:auto;inline-size:100%">
<tp-marker><tp-spinner slot="icon" size="sm"></tp-spinner>Reading 4 files</tp-marker>
<tp-marker variant="separator">Worked for 42s</tp-marker>
<tp-marker variant="border">Switched to release-2.4</tp-marker>
</div>
Usage
A Marker annotates a stream, such as a chat transcript or an activity log, without becoming a message itself. It adds no role, so meaning lives in its text; supply role="status" yourself when the content is a live update.
Variants
The default has no boundary. separator centres the content between two rules, for breaks in a timeline; border sets it above a rule, for a step that closes a section.
Variants
Default density
Compact density
Restart from the initial state
Show the copyable source
Priya joined the projectTodayDeployed to production
Priya joined the projectTodayDeployed to production
<div style="display:grid;gap:var(--tp-space-8);max-inline-size:32rem;margin-inline:auto;inline-size:100%">
<tp-marker>Priya joined the project</tp-marker>
<tp-marker variant="separator">Today</tp-marker>
<tp-marker variant="border">Deployed to production</tp-marker>
</div>
Tones
tone colors the text and icon: neutral (the default), accent, success or danger. Keep the outcome in the words too, since color alone is not announced.
Tones
Default density
Compact density
Restart from the initial state
Show the copyable source
Build queuedReview requested from PriyaAll 128 checks passedDeploy to production failed
Build queuedReview requested from PriyaAll 128 checks passedDeploy to production failed
<div style="display:grid;gap:var(--tp-space-6);max-inline-size:32rem;margin-inline:auto;inline-size:100%">
<tp-marker>Build queued</tp-marker>
<tp-marker tone="accent">Review requested from Priya</tp-marker>
<tp-marker variant="separator" tone="success">All 128 checks passed</tp-marker>
<tp-marker variant="border" tone="danger">Deploy to production failed</tp-marker>
</div>
Icons
The icon slot takes an Icon or a decorative Spinner. The icon region is hidden from assistive technology, so the text must carry the meaning on its own.
With icons
Default density
Compact density
Restart from the initial state
Show the copyable source
shimmer sweeps a highlight across the text while a status is still streaming, such as an agent step in progress. Remove it when the step finishes; reduced motion shows the text without the sweep. --tp-shimmer-color, --tp-shimmer-duration, --tp-shimmer-spread and --tp-shimmer-angle tune it.
shimmer works with every variant and leaves the icon and rules unchanged.
The highlight is derived from the text color: in a light color scheme the band fades the text, in a dark scheme it brightens it, so it follows tone and inherited colors. The band sweeps in the reading direction, right to left in a right-to-left context, and repeats every eight times --tp-duration-normal (2.24 s by default). Clearing shimmer restores ordinary text; setting it again restarts the sweep, also when it was cleared in the same frame.
Tune the effect with custom properties on the Marker or on any ancestor; they inherit, so one container can adjust every shimmer inside it.
The shimmer paints the text through the content’s background, so it suits text and inline phrasing such as strong or a link. A control placed in shimmering content loses its text paint. Shimmer changes no role, name or announcement.
Marker declares the ambient shimmer motion role on its marker-content part, with the start and stop phases, no context and non-blocking completion. A driver that claims it replaces the sweep; the gradient paint stays on the content for the driver to move through background-position.
Shimmer
Default density
Compact density
Restart from the initial state
Show the copyable source
To make the whole Marker the control, render its marker part as a native link or button through partContracts, keeping the supplied bind and content. partPresentation arranges the parts, for example to center the content or stack the icon above it.
A delegated link or button must preserve bind and content, supply its native attributes and have an accessible name.
Native hosts and layout
Default density
Compact density
Restart from the initial state
Show the copyable source
Opened pull request #482Worked for 42sPriya left the conversationAll 128 checks passed
Opened pull request #482Worked for 42sPriya left the conversationAll 128 checks passed
A Marker can label an Accordion item, so a step summary expands into its details, or sit around a Drawer trigger that opens the full record.
Accordion label and drawer
Default density
Compact density
Restart from the initial state
Show the copyable source
Worked for 1m 12s
Read the billing service, updated the proration rule and added two tests for mid-cycle seat changes.
Explored 3 filesbilling/proration.tsbilling/seats.tsbilling/proration.test.tsClose
Worked for 1m 12s
Read the billing service, updated the proration rule and added two tests for mid-cycle seat changes.
Explored 3 filesbilling/proration.tsbilling/seats.tsbilling/proration.test.tsClose
AttributePropertyTypeDefaultDescriptionvariantvariant'default' | 'separator' | 'border''default'Visual treatment only: separator sets the content between two rules, border above one.tonetonestring'neutral'Colors the text and the icon: accent, success or danger for an outcome the words also state.labellabelstring''The text when the default slot is empty.shimmershimmerbooleanfalseSweeps a highlight across the content text, for streaming or in-progress status.
Slots
SlotDescriptiondefaultThe text, or inline content such as a link or a Button.iconA decorative Icon or Spinner before the text, hidden from assistive technology.
CSS parts
PartDescription::part(marker)The row holding the icon and the content, and the rules of the separator and border treatments; a link or button delegate replaces it.::part(marker-content)The wrapper of the text, which the shimmer sweeps.::part(marker-icon)The wrapper of the icon slot, hidden from assistive technology.
CSS custom properties
PropertyDefaultDescription--tp-shimmer-color—The color of the highlight; by default derived from the text color.--tp-shimmer-duration—The time one sweep takes.--tp-shimmer-spread—Half the width of the highlight band.--tp-shimmer-angle—The tilt of the highlight band.--tp-shimmer-iterations—How many times the sweep plays; 1 plays a single sweep, as a reveal when a step completes.--tp-shimmer-direction—reverse runs the sweep against the reading direction.
Related
Components, widgets and patterns that use this one.