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
| Prop | Type | Default | Description | Required |
|---|---|---|---|---|
src | string | none | Optional 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 |
size | number | 24 | Square 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 |
animated | boolean | false | Pulse the three leading bars while true; a controlled signal driven from the consumer's hover/focus state (respects prefers-reduced-motion). Default false. | No |
background | boolean | false | Render the brand lime circle background behind a contrast mark (--logo-background / --logo-color). Default false. | No |
title | string | Digitaltableteur | Accessible name for the mark. Ignored when decorative. Default "Digitaltableteur". | No |
decorative | boolean | false | When true the mark is purely decorative and removed from the accessibility tree. Default false. | No |
className | string | none | Optional utility/spacing classes. | No |
Variants
- Available sizes:
16,24,40,64(default24).
Invalid combinations
- SHOULD NOT: When
srcis set, then do not setanimatedorbackground.animatedandbackgroundstyle the built-in mark only; withsrcset they are ignored. - SHOULD NOT: When
decorativeistrue, then do not settitle. A decorative logo is removed from the accessibility tree, sotitleis never announced. Droptitleor 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.
| Level | Rule | How it is checked |
|---|---|---|
| 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. | 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 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. | 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. |
| MUST | ARIA: Accessible name via title unless decorative. | Not yet verified: no evidence record. WCAG 4.1.2. |
| MUST | ARIA: Decorative renders aria-hidden. | Not yet verified: no evidence record. WCAG 4.1.2. |
| MUST | Required stories produce no axe violations at the configured severity. | Automated by npm run test:stories:matrix:ci. WCAG 2.5.8. |
| MUST | The 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. |
| MUST | The component remains legible and operable under a real browser forced-colors: active pass. | Automated by npm run test:stories:hc. |
| MUST | A 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/contentexports it too. - Styles: import
@digitaltableteur/react/style.cssonce at the app boundary. - Also available as the custom element
<dt-logo>; see the custom elements manifest.
Links
- Machine-readable contract (Design System Contract 1.0)
- Markdown version of this page
- Component index as JSON
- All components
- Source: The implementation lives in a private repository. This page, its Markdown twin and the contract are generated from it at build time and are the public source of truth.