VisuallyHidden
Screen-reader-only content that is always visually hidden; it has no focus reveal. Renders a span by default.
Status: stable. Group: utility. Markdown version: /design-system/components/visually-hidden.md
When to use
Renders content only assistive tech perceives: the sr-only utility as a component. Use for context that sighted users get visually. It never becomes visible, so content that must appear on focus belongs in SkipLink.
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 |
|---|---|---|---|---|
children | React.ReactNode | none | No description in the contract. | Yes |
as | "div" | "h2" | "p" | "span" | span | Element to render (default span) | No |
className | string | none | No description in the contract. | No |
Variants
- Allowed
asvalues:div,h2,p,span(defaultspan).
Invalid combinations
The contract records no invalid combinations.
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 |
|---|---|---|
| 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. |
| MUST NOT | Maintainers: Do not bypass design tokens or skip forced-colors verification at beta. | Release review; not machine-checked. |
Install and import
- Install:
npm install @digitaltableteur/react(version 0.9.1, restricted access on npm). - Import:
import { VisuallyHidden } from "@digitaltableteur/react"; - Entry point:
@digitaltableteur/react/typographyexports it too. - Styles: import
@digitaltableteur/react/style.cssonce at the app boundary. - Also available as the custom element
<dt-visually-hidden>; 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.