Skip to contentPorsche Design System
You are currently viewing an earlier release of the Porsche Design System.Switch to the latest Porsche Design System documentation.
SearchGitHub repository of Porsche Design SystemOpen settings sidebar
Switch Table of Contents Accessibility support Keyboard Key / stateFunctionTab, Shift-TabMoves focus to the scroll container or to next (or previous) focusable element.Enter, SpaceActivates the completed and current step-item.disabledStep-item still focusable. ARIA enhancements External ARIA provided by the aria property: Use the aria property to pass supported attributes to the native control inside the shadow DOM. Prefer a visible slotted label for the accessible name. Use aria-label when the label is hidden or missing, and aria-description for extra context that should not replace the name. Do not use aria-label to replace a different visible label (WCAG 2.5.3). ARIAUsagearia-labelDefines an accessible name when the visible label is insufficient or hidden; prefer a visible label for most cases.aria-descriptionProvides additional context for assistive technologies without replacing the accessible name. Internal ARIA that is managed by the component: ARIAUsagerole="switch"Indicates the element as switch element.aria-checked="BOOLEAN"Indicates the status of the switch element.role="status"When loading prop is set, the component announces the loading state (start and finish). Development considerations Labelling The switch accessible name comes from the default slot. Provide concise, descriptive text that states what the switch controls and its on/off meaning. Common do's and don'ts Do pass extra labelling through the aria prop (aria-label, aria-description). Do provide a clear slotted label that describes what the switch controls. Do use hide-label only when the label text remains in the slot for screen readers. Don't use an icon or visual state alone without descriptive label text. Don't add native aria-* attributes directly on the component host. Integration examples
ARIA on component host vs aria prop❌ Anti-pattern
<p-switch aria-label="Dark mode" aria-description="Toggles the color theme">
  Dark mode
</p-switch>
✅ Recommended
<p-switch aria="{'aria-label': 'Dark mode', 'aria-description': 'Toggles the color theme'}">
  Dark mode
</p-switch>
Switch without descriptive label❌ Anti-pattern
<p-switch name="notifications"></p-switch>
✅ Recommended
<p-switch name="notifications">
  Email notifications for order updates
</p-switch>
Hidden label without accessible name❌ Anti-pattern
<p-switch name="notifications" hide-label="true"></p-switch>
✅ Recommended
<p-switch name="notifications" hide-label="true">
  Email notifications for order updates
</p-switch>
Tests Automated TechnologySupportAXE-Core (WCAG 2.2 AA, Best-Practice)✅High-Contrast Mode (light/dark)✅Text-Zoom (200%)✅ Manual TechnologySupportKeyboard✅Screen reader (VoiceOver, NVDA)✅
v4.8.0v2v1
Global settingsColor SchemeAll color tokens use the light-dark() CSS function. Set the theme via the CSS color-scheme property: light for light mode, dark for dark mode, or light dark to follow the user's system preference.LightDarkLight DarkDirectionThe dir global attribute in HTML changes the direction of text and other content within an element. It's most often used on the <html> tag to set the entire page's direction, which is crucial for supporting languages that are written from right to left (RTL), such as Arabic and Hebrew. For example, using <html dir="rtl"> makes the entire page display from right to left, adjusting the layout and text flow accordingly.LTR (left-to-right)RTL (right-to-left)Text ZoomTo ensure accessibility and comply with WCAG 2.2 AA standards, it is mandatory for web content to support text resizing up to at least 200% without loss of content or functionality. Using relative units like rem is a best practice for achieving this, as they allow the text to scale uniformly based on the user's browser settings.100%130%150%200%