Tag
Label – Category
Tags are compact labels used to categorize or highlight content, helping users quickly identify status, type, or context. A Tag is static and carries no interaction of its own.
Ready to use
Tags label, categorise, or highlight content in a compact form. They help users identify the status, context, or type of information quickly and consistently. A Tag can include an optional icon.
A Tag is static — it carries no interaction of its own. It has no selected, hover or disabled state, and never responds to a click.
Anatomy
Section titled “Anatomy”- Tag
- Star
- Tag text
When to use it
Section titled “When to use it”Use a Tag when:
- You need to indicate the status or category of an element (Success, Danger, Info, Warning).
- You’re displaying read-only metadata — a search result’s attributes, the filters already applied to a list.
- You need a compact, non-interactive label that adapts to whatever surface it sits on.
Avoid Tags when:
- The user is meant to toggle it on or off to filter something — a Tag has none of the states that interaction needs.
- The action is a primary CTA — use buttons.
- The layout is dense and tags would add visual noise without hierarchy.
- A plain Label or Badge would suffice.
Properties
Section titled “Properties”Colour
Seven colours, matching Figma one-for-one. Default is the unmodified tag; Primary and Secondary carry brand colour; Success, Danger, Info and Warning carry status meaning. Each sets the fill, the border and the label colour together.
Surface
There is no light/dark property to pick. Each colour is defined twice — once for light surfaces, once for dark — and the tag chooses between them from the surrounding scheme. Spec the colour; the surface takes care of itself.
This replaces the old Contrast toggle. A designer no longer chooses between a tinted and a solid treatment: on a light surface a status tag is solid, on a dark one it is tinted, and that pairing is fixed.
Icon
Optional leading icon (Has Icon in Figma, defaulting to the Star glyph), useful for reinforcing the meaning — a check for Success, a warning for Danger. Decorative icons should stay hidden from assistive tech.
Brand
Typography and corner radius are brand-owned, so the same tag is a different shape and weight per brand. Toyota and Lexus render a full pill; KINTO uses a small radius. Lexus sets its own typeface, size and letter-spacing, which makes Lexus tags noticeably larger than Toyota’s. Don’t pin a tag’s width or height in a spec — let it hug its label.
Platform considerations
Section titled “Platform considerations”Desktop
Tags sit comfortably inline next to titles or metadata. Keep their padding consistent across surfaces so the rhythm of a page holds.
Tablet
Same inline placement. Watch tag density inside cards — too many tags in one row crowd the layout quickly.
Mobile
Stack tags onto multiple rows rather than truncating the labels. Keep the leading icon (if any) at its natural size so the meaning still reads.
Best practices
Section titled “Best practices”Tags work on light and dark surfaces alike. Every colour carries a value for each, and the tag reads the surrounding scheme to pick — so a tag dropped into a dark hero or a .is-contrast region needs no adjustment.
Do
Use tags to clarify type or status, keep labels short and clear, and let the tag size itself around its text. Pair a status colour with a word or an icon that carries the same meaning, so the message survives for anyone who can’t distinguish the hue.
Don't
Don’t use tags as buttons (reach for the actual Button component) or as filter controls, don’t lean on colour alone to carry status, and don’t pack too many tags into a small space — visual noise hides the meaning.
Content guidelines
Section titled “Content guidelines”Tag text should be short, ideally one or two words, and name the status or category in plain language (“In stock”, “Available”, “Sold out”). Use sentence case (“In stock”, not “IN STOCK”) and skip trailing punctuation.
A tag is a .tng-tag container holding plain text, with an optional leading .tng-icon. Mark a decorative icon aria-hidden so it doesn’t double-announce the label.
A tag has no light or dark modifier. It reads the surrounding tng-scheme and picks its own fill, border and label colour to suit the surface — so the same markup is correct on a white card and on a dark hero, and nesting a tag inside a .is-contrast region needs no change at the tag itself. Every example below carries a Neutral and a Contrast tab; the markup is identical in both, only the surface differs.
<div class="tng-tag"> <i aria-hidden class="tng-icon icon-star"></i> <span>Tag text</span></div>Variants
Section titled “Variants”Six colour variants sit alongside the neutral default. Each sets the fill, border and label colour, and each has its own value per surface.
Colour is the only thing that separates them, so it must never be the only signal of meaning — pair the variant with text or an icon that carries the same meaning for anyone who can’t distinguish the hue.
Primary
Section titled “Primary”<div class="tng-tag is-primary"> <i aria-hidden class="tng-icon icon-star"></i> <span>Tag text</span></div>Secondary
Section titled “Secondary”<div class="tng-tag is-secondary"> <i aria-hidden class="tng-icon icon-star"></i> <span>Tag text</span></div>Success
Section titled “Success”<div class="tng-tag is-success"> <i aria-hidden class="tng-icon icon-star"></i> <span>Tag text</span></div>Danger
Section titled “Danger”<div class="tng-tag is-danger"> <i aria-hidden class="tng-icon icon-star"></i> <span>Tag text</span></div><div class="tng-tag is-info"> <i aria-hidden class="tng-icon icon-star"></i> <span>Tag text</span></div>Warning
Section titled “Warning”A tag is a compact, static label — it categorises or highlights content and carries no interaction of its own, so it follows no WAI-ARIA pattern; it meets WCAG 2.1 AA by leaning on plain text semantics. An accessible tag reads the same whether the user sees it or hears it: its label is real text, any decorative icon stays out of the assistive-technology tree, and its status is never carried by colour alone.
The styleguide ships no dismissible tag, no selected state, and no interactive affordance of any kind. Don’t bolt a close button or a click handler onto a tag — if the user is meant to act on it, reach for a component built for interaction.
For designers
Section titled “For designers”- The label text against its fill, and every fill/border pairing, must maintain accessible contrast. Each of the seven colours is defined twice — once per surface — so both halves need checking, not just the one you happen to be designing on. Source: WCAG 1.4.3 Contrast (Minimum).
- The colour pairs are supplied per brand, so contrast is a per-brand property. Don’t assume a combination that passes on Toyota passes on Lexus or KINTO. KINTO is in preview, and its default pair is currently known not to meet AA.
- Status must never be conveyed by colour alone — pair each variant (
.is-success,.is-danger,.is-info,.is-warning) with text or an icon so the meaning survives for colour-blind and monochrome users. A meaningful icon must not merely duplicate the label; a decorative one carries no meaning at all. Source: WCAG 1.4.1 Use of Color. - A tag adapts to the surface it sits on rather than being specced light or dark, so it stays legible inside a dark hero or a nested contrast region without adjustment. What it does not do is adapt to an arbitrary background image or brand colour placed behind it — that pairing is untested.
- Tags use no animation or flashing and introduce no visual noise, so they raise no motion concern.
For developers
Section titled “For developers”A plain tag is just text inside a .tng-tag container — it takes no role and no interactive semantics, and a screen reader announces its label like any other text. One decision shapes whether that stays accessible, and it’s wired per element in the Labelling elements section below: whether the leading icon is decorative. Beyond that, one rule holds everywhere — never let a status variant’s colour be the only signal of meaning.
There is no Focus order section here because a tag contributes no tab stops at all. It holds no focusable content, so it never enters the tab sequence.
Labelling elements
Section titled “Labelling elements”Give every element the role, name, and state assistive technology needs.
Tag / Label
The .tng-tag container carries no role — it is presentational. Its accessible name is its own text content (the <span> label), so keep that label short and self-describing; it announces as plain text with no added ARIA.
Decorative icon
The leading <i class="tng-icon"> is decorative: mark it aria-hidden="true" so it is removed from the accessibility tree and never doubles the label. If an icon genuinely adds meaning the label doesn’t, surface that meaning in text rather than leaving it on a hidden icon.
Source: WCAG 4.1.2 Name, Role, Value.
Content / Copy guidelines
Section titled “Content / Copy guidelines”Tags should use short, descriptive and consistent labels. The tone should be neutral, informative, and suitable for metadata or UI contexts.
- Text: Mandatory. One to three short words (e.g. “Hybrid”, “Low stock”, “Special edition”).
- Capitalisation: Sentence case (e.g. “In progress”).
- Max length: Aim for 18 characters or fewer to ensure layout stability.
- Icons: Optional. Should visually support the text meaning, not repeat it.
- Do not use emojis or punctuation in Tag labels.
- Avoid using verbs in a Tag label — a tag names a state, it does not ask for an action.