Skip to main content

Design system components

Logo

Logo atom; the Digitaltableteur mark by default (monochrome currentColor, square footprint, optional controlled pulse), or any custom PNG/JPEG/SVG logo via src.

Status: stable. Group: display. Markdown version: /design-system/components/logo.md

When to use

The logo atom. Renders the Digitaltableteur mark by default; monochrome via currentColor so it inherits the surface's ink, square footprint. It renders only an svg or img and has no link prop; to make a home link, wrap it in a link. Pass src to render any custom logo image (PNG, JPEG, or SVG) inside the same square box.

When not to use

The contract records no forbidden uses.

Look-alikes

The contract names no look-alike with a deciding condition.

Props

Logo props
PropTypeDefaultDescriptionRequired
srcstringnoneOptional image URL (PNG, JPEG, or SVG) rendered instead of the built-in Digitaltableteur mark. title becomes the alt text; animated and background apply to the built-in mark only and are ignored when src is set.No
sizenumber24Square render box in pixels; any number works. Default 24. The size variant values (16, 24, 40, 64) are the recommended presets, not the only allowed values.No
animatedbooleanfalsePulse the three leading bars while true; a controlled signal driven from the consumer's hover/focus state (respects prefers-reduced-motion). Default false.No
backgroundbooleanfalseRender the brand lime circle background behind a contrast mark (--logo-background / --logo-color). Default false.No
titlestringDigitaltableteurAccessible name for the mark. Ignored when decorative. Default "Digitaltableteur".No
decorativebooleanfalseWhen true the mark is purely decorative and removed from the accessibility tree. Default false.No
classNamestringnoneOptional utility/spacing classes.No

Variants

  • Available sizes: 16, 24, 40, 64 (default 24).

Invalid combinations

  • SHOULD NOT: When src is set, then do not set animated or background. animated and background style the built-in mark only; with src set they are ignored.
  • SHOULD NOT: When decorative is true, then do not set title. A decorative logo is removed from the accessibility tree, so title is never announced. Drop title or make the logo non-decorative.

Keyboard

The contract records no keyboard interaction.

Rules

Every item under When not to use is a MUST NOT. MUST and SHOULD follow RFC 2119.

Logo rules
LevelRuleHow it is checked
SHOULD NOTWhen src is set, then do not set animated or background. animated and background style the built-in mark only; with src set they are ignored.Checked by the MCP tool validate_component_usage (rule logo-src-ignores-mark-options). Also enforced in code: Logo.tsx src branch returns before background/animated are applied.
SHOULD NOTWhen decorative is true, then do not set title. A decorative logo is removed from the accessibility tree, so title is never announced. Drop title or make the logo non-decorative.Checked by the MCP tool validate_component_usage (rule logo-decorative-ignores-title). Also enforced in code: Logo.tsx: title is not rendered when decorative.
MUSTARIA: Accessible name via title unless decorative.Not yet verified: no evidence record. WCAG 4.1.2.
MUSTARIA: Decorative renders aria-hidden.Not yet verified: no evidence record. WCAG 4.1.2.
MUSTRequired stories produce no axe violations at the configured severity.Automated by npm run test:stories:matrix:ci. WCAG 2.5.8.
MUSTThe accessibility tree (role, name, state) matches the committed snapshot for every required story.Automated by npm run test:stories:matrix:ci. WCAG 1.3.1, 4.1.2.
MUSTThe component remains legible and operable under a real browser forced-colors: active pass.Automated by npm run test:stories:hc.
MUSTA human completed an end-to-end accessibility review of this component.Manual review, last on 2026-11-04.

Install and import

  • Install: npm install @digitaltableteur/react (version 0.9.1, restricted access on npm).
  • Import: import { Logo } from "@digitaltableteur/react";
  • Entry point: @digitaltableteur/react/content exports it too.
  • Styles: import @digitaltableteur/react/style.css once at the app boundary.
  • Also available as the custom element <dt-logo>; see the custom elements manifest.