diff --git a/.storybook/order.json b/.storybook/order.json
index 78e57f80..b2317a6b 100644
--- a/.storybook/order.json
+++ b/.storybook/order.json
@@ -8,7 +8,7 @@
"Development",
["Engineering Rules", "Breakpoints"],
"Accessibility",
- ["Accessibility"],
+ ["About the Standard", "Accessibility in Design", "Accessibility in Code", "Testing Accessibility"],
"Design Tokens",
["Colors"]
]
diff --git a/src/stories/accessibility/accessibility.stories.mdx b/src/stories/accessibility/about_the_standard.stories.mdx
similarity index 82%
rename from src/stories/accessibility/accessibility.stories.mdx
rename to src/stories/accessibility/about_the_standard.stories.mdx
index 6a061343..a3919997 100644
--- a/src/stories/accessibility/accessibility.stories.mdx
+++ b/src/stories/accessibility/about_the_standard.stories.mdx
@@ -1,10 +1,8 @@
import { Meta } from '@storybook/addon-docs'
-
+
-# Accessibility
-
-## About the Standard
+# About the Standard
The standard that we (and all others) refer to is WCAG 2
https://www.w3.org/WAI/standards-guidelines/wcag/
@@ -21,14 +19,3 @@ Content must be POUR:
There are three levels within this standard: A, AA and AAA. **The long-term goal should be to reach the AA level**. But one could start fixing all issues that prevent us from reaching A level.
There is a (german) testing and certification option for websites as well. But we didn’t see reaching the certification as a goal for now.
-
-## A11y in Design
-
-- All text on background must reach at last AA readability (Check tool)
-- No font size should be below 14px
-- Touch-target size should always be at least 44x44px
-- Good resources: Material Design Accessibility
-
-## A11y in Code
-
-TBD
diff --git a/src/stories/accessibility/accessibility_in_code.stories.mdx b/src/stories/accessibility/accessibility_in_code.stories.mdx
new file mode 100644
index 00000000..d70bc35f
--- /dev/null
+++ b/src/stories/accessibility/accessibility_in_code.stories.mdx
@@ -0,0 +1,76 @@
+import { Meta } from '@storybook/addon-docs'
+
+
+
+# Accessibility in Code
+
+General remark: Use these rules thoughtfully. Always keep in mind that accessibility is not only about following rules, but about the best way to serve the needs of users.
+
+## Markup
+
+Use native HTML elements wherever it makes semantically sense. Most HTML elements convey a semantic meaning and provide additional functionality, that users can benefit from or even depend on.
+
+### Examples
+
+- use a `button`, when an interaction triggers some action on the page, e.g. opening a modal, submitting a form, loading data, swiping a slider, etc.
+- use an `a` tag with an `href` attribute for links, i.e. when the interaction navigates the user to a different page (or a different part of the page).
+- use a `ul` or `ol`, whenever you want to group some items together in a list and want the user to know how many items the list contains. This does not only apply to "regular" text items, but can be anything, e.g. a gallery of images, a list of teasers, navigation items, etc.
+- use headline tags (`h1`, `h2`, etc.) for headlines and use them in a logical order.
+
+Complete [list of HTML elements](https://developer.mozilla.org/en-US/docs/Web/HTML/Element).
+
+## Images
+
+### Alternative text
+
+Make sure _every_ image has an `alt` attribute, either with
+
+- a descriptive text (think of how you would describe the image to someone on the phone) or
+- an empty string. This only applies to images that are purely decorative and don't contribute anything to the content.
+
+If it's an image uploaded by the user, decide whether
+
+- we can define a general rule, e.g. "avatar of _name of the user_". (Keep in mind that this is usually less valuable of an information. You should also be careful not to create redundancy.) Or
+- we should give the user the possibility to enter their own alternative text.
+
+More information about [writing good alt text](https://webaim.org/techniques/alttext/).
+
+### Responsive Images
+
+Make sure images are served only as big as necessary.
+
+## Interactive components
+
+- Make sure every form element has an associated `label`.
+- Make sure every interactive element can be reached by using only the keyboard and the tab order is logical.
+- Use an appropriate native element if possible (see [Markup](#Markup)).
+- Use ARIA roles, properties and states if there is no such component provided by HTML out of the box.
+- Use [React Aria](https://react-spectrum.adobe.com/react-aria/) for helper methods and the [ARIA Authoring Practices Guide](https://www.w3.org/WAI/ARIA/apg/patterns/) as a reference for common component patterns.
+
+## Zooming and font size
+
+- Don't use pixels values unless you explicitly want the value to stay consistent no matter the font size (which might be the case for borders and shadows for example).
+- Use `rem` for most of the things and `em` when it makes sense (font sizes, line-height).
+
+## Content structure and order
+
+- Make sure every page has a title. There should only be one `h1` per page.
+- Make sure heading levels are in a logical order.
+- Use [landmarks](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/landmark_role), such as `nav`, `main`, `section`, etc. It helps users navigate the page quicker.
+- Don't move around items arbitrarily with CSS (be careful with `order`, `float` or `grid` for example). It can result in a [confusing experience for keyboard users](https://www.matuzo.at/blog/the-dark-side-of-the-grid-part-2/).
+
+## Hiding content
+
+Depending on the use case there are several [ways to hide content](https://kittygiraudel.com/2021/02/17/hiding-content-responsibly/). Think about whether the content should be
+
+- visible
+- machine readable (announced by a screen reader)
+
+and based on that decide which approach is most appropriate.
+
+### Examples
+
+- Visible but not machine readable (example: decorative icons)
+- Invisible but machine readable (example: context for icon-only buttons)
+- Invisible and not machine readable (example: offscreen content such as a closed modal window)
+- Visible and machine readable (example: most stuff)
diff --git a/src/stories/accessibility/accessibility_in_design.stories.mdx b/src/stories/accessibility/accessibility_in_design.stories.mdx
new file mode 100644
index 00000000..b9921e9b
--- /dev/null
+++ b/src/stories/accessibility/accessibility_in_design.stories.mdx
@@ -0,0 +1,10 @@
+import { Meta } from '@storybook/addon-docs'
+
+
+
+# Accessibility in Design
+
+- All text on background must reach at last AA readability (Check tool)
+- No font size should be below 14px
+- Touch-target size should always be at least 44x44px
+- Good resources: Material Design Accessibility
diff --git a/src/stories/accessibility/testing_accessibility.stories.mdx b/src/stories/accessibility/testing_accessibility.stories.mdx
new file mode 100644
index 00000000..96bc9d9b
--- /dev/null
+++ b/src/stories/accessibility/testing_accessibility.stories.mdx
@@ -0,0 +1,13 @@
+import { Meta } from '@storybook/addon-docs'
+
+
+
+# Testing Accessibility
+
+- [Quick accessibility tests anyone can do](https://tetralogical.com/blog/2022/01/18/quick-accessibility-tests-anyone-can-do/).
+- If you write **code**, install [axe Linter](https://marketplace.visualstudio.com/items?itemName=deque-systems.vscode-axe-linter).
+- Use the **keyboard** to test tab behavior, focus visibility and order ([Intro to keyboard testing](https://webaim.org/techniques/keyboard/)).
+- Use a **screen reader** at least when testing complex components ([Intro to using a screen reader](https://tetralogical.com/blog/2021/09/29/browsing-with-a-desktop-screen-reader/)).
+- **Zoom** in and out (ctrl +/-) and change the font size in your browser settings.
+- Test responsiveness and touch usability on **mobile** devices ([Intro to mobile accessibility](https://developer.mozilla.org/en-US/docs/Learn/Accessibility/Mobile)).
+- Check the Accessibility tab in Storybook.