Skip to content

feat(a11y): WCAG AA Storybook gate and high-priority remediations - #564

Merged
brionmario merged 47 commits into
wso2:mainfrom
ajirthan:feat/a11y-wcag-baseline
Jul 23, 2026
Merged

feat(a11y): WCAG AA Storybook gate and high-priority remediations#564
brionmario merged 47 commits into
wso2:mainfrom
ajirthan:feat/a11y-wcag-baseline

Conversation

@ajirthan

@ajirthan ajirthan commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Integrate @storybook/addon-a11y + test-runner CI (WCAG 2.1 A/AA tags; fail PRs on new violations)
  • Fix high-priority first-party gaps (accessible names, keyboard, focus rings, reduced motion, contrast tokens)
  • Document known exceptions (brand #FF7300, Form.CardButton) with linked upstream issues
  • Add Accessibility guide (packages/oxygen-ui-docs/ACCESSIBILITY.md + Storybook page) and contributor policy

Related to #557 (Phase 1 — WCAG 2.1 AA baseline bootstrap). Does not close the epic (Phase 2 / WCAG 2.2 AA remains open).

Follow-ups

Test plan

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d1d3ec4a-ab04-4595-ad26-18eb3b9309b2

📥 Commits

Reviewing files that changed from the base of the PR and between 549074c and 2649d94.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (87)
  • .github/workflows/pr-builder.yml
  • packages/oxygen-ui-docs/.storybook/main.js
  • packages/oxygen-ui-docs/.storybook/preview.js
  • packages/oxygen-ui-docs/ACCESSIBILITY.md
  • packages/oxygen-ui-docs/package.json
  • packages/oxygen-ui-docs/stories/Accessibility.stories.tsx
  • packages/oxygen-ui-docs/stories/Animations/ParticleBackground.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppBreadcrumbs.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/CodeBlock.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Footer.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Header.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/ListingTable.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationBanner.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationPanel.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/PageTitle.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Sidebar.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/UserMenu.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/useAppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/DataDisplay/Tooltip.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Backdrop.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Dialog.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Progress.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Snackbar.stories.tsx
  • packages/oxygen-ui-docs/stories/GettingStarted.stories.tsx
  • packages/oxygen-ui-docs/stories/HowToContribute.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Button.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ButtonGroup.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Checkbox.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ComplexSelect.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/NumberField.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/SearchBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Select.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Slider.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Switch.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/TransferList.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/Container.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/ImageList.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/BottomNavigation.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Drawer.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Link.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Menu.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Stepper.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Tabs.stories.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/AppBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/ClickableCard.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/CreateServiceFormTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/DashboardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/EmptyStateTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/FormValidationTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/LoginTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/TabbedContentTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/Templates.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/WizardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/Colors.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/ThemeSwitcher.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/useThemeContent.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Modal.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popover.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popper.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/useColorScheme.stories.tsx
  • packages/oxygen-ui-docs/stories/Welcome.stories.tsx
  • packages/oxygen-ui/src/animations/ParticleBackground/ParticleBackground.tsx
  • packages/oxygen-ui/src/components/AppBreadcrumbs/AppBreadcrumbs.tsx
  • packages/oxygen-ui/src/components/CodeBlock/CodeBlock.tsx
  • packages/oxygen-ui/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx
  • packages/oxygen-ui/src/components/ComplexSelect/ComplexSelect.tsx
  • packages/oxygen-ui/src/components/Footer/FooterVersion.tsx
  • packages/oxygen-ui/src/components/Form/ElementWrapper.tsx
  • packages/oxygen-ui/src/components/Header/HeaderBrand.tsx
  • packages/oxygen-ui/src/components/Header/HeaderToggle.tsx
  • packages/oxygen-ui/src/components/ListingTable/ListingTable/ListingTableDataGrid.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableDensityControl.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableToolbar.tsx
  • packages/oxygen-ui/src/components/NotificationBanner/NotificationBanner.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationHeaderClose.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationItem.tsx
  • packages/oxygen-ui/src/components/PageTitle/PageTitleBackButton.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBar.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx
  • packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
  • packages/oxygen-ui/src/components/StatCard/StatCard.tsx
  • packages/oxygen-ui/src/components/ThemeSwitcher/ThemeSelect.tsx
  • packages/oxygen-ui/src/components/UserMenu/UserMenuTrigger.tsx
  • packages/oxygen-ui/src/components/accessibility.test.tsx
  • packages/oxygen-ui/src/styles/OxygenThemeBase.ts
  • pnpm-workspace.yaml
🚧 Files skipped from review as they are similar to previous changes (78)
  • packages/oxygen-ui-docs/stories/Animations/ParticleBackground.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/BottomNavigation.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/useAppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Menu.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Header.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/useColorScheme.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/EmptyStateTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/DataDisplay/Tooltip.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/LoginTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popover.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/FormValidationTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Backdrop.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Stepper.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Snackbar.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/DashboardTemplate.stories.tsx
  • packages/oxygen-ui-docs/.storybook/main.js
  • packages/oxygen-ui-docs/stories/Inputs/SearchBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Switch.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Tabs.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/TabbedContentTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/GettingStarted.stories.tsx
  • packages/oxygen-ui/src/components/StatCard/StatCard.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ButtonGroup.stories.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBar.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Drawer.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/Colors.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popper.stories.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationHeaderClose.tsx
  • packages/oxygen-ui-docs/stories/Theming/useThemeContent.stories.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableDensityControl.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Footer.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Modal.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Button.stories.tsx
  • packages/oxygen-ui/src/components/PageTitle/PageTitleBackButton.tsx
  • packages/oxygen-ui-docs/stories/Layout/Container.stories.tsx
  • packages/oxygen-ui-docs/stories/HowToContribute.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Slider.stories.tsx
  • packages/oxygen-ui/src/components/Header/HeaderToggle.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/AppBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Accessibility.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Sidebar.stories.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationItem.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ComplexSelect.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Progress.stories.tsx
  • packages/oxygen-ui/src/components/ThemeSwitcher/ThemeSelect.tsx
  • packages/oxygen-ui-docs/stories/Inputs/TransferList.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/CreateServiceFormTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/ClickableCard.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/WizardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppBreadcrumbs.stories.tsx
  • packages/oxygen-ui/src/components/CodeBlock/CodeBlock.tsx
  • packages/oxygen-ui-docs/stories/Templates/Templates.stories.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableToolbar.tsx
  • packages/oxygen-ui-docs/.storybook/preview.js
  • packages/oxygen-ui/src/components/Footer/FooterVersion.tsx
  • packages/oxygen-ui-docs/stories/Welcome.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Select.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/ImageList.stories.tsx
  • packages/oxygen-ui/src/components/ListingTable/ListingTable/ListingTableDataGrid.tsx
  • packages/oxygen-ui/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationPanel.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/CodeBlock.stories.tsx
  • pnpm-workspace.yaml
  • packages/oxygen-ui-docs/stories/Theming/ThemeSwitcher.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/UserMenu.stories.tsx
  • packages/oxygen-ui/src/components/NotificationBanner/NotificationBanner.tsx
  • packages/oxygen-ui-docs/package.json
  • packages/oxygen-ui-docs/stories/AppElements/PageTitle.stories.tsx
  • packages/oxygen-ui/src/components/accessibility.test.tsx
  • packages/oxygen-ui-docs/stories/Inputs/NumberField.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/ListingTable.stories.tsx
  • packages/oxygen-ui/src/components/AppBreadcrumbs/AppBreadcrumbs.tsx
  • packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
  • packages/oxygen-ui/src/animations/ParticleBackground/ParticleBackground.tsx
  • packages/oxygen-ui/src/components/Form/ElementWrapper.tsx
  • packages/oxygen-ui/src/components/ComplexSelect/ComplexSelect.tsx

📝 Walkthrough

Summary

  • Established a WCAG 2.1 AA accessibility baseline for Storybook with @storybook/addon-a11y, axe configuration, and CI test-runner enforcement.
  • Added accessibility documentation, contributor guidance, audit results, known exceptions, and follow-up tracking.
  • Improved accessible names, ARIA semantics, keyboard interaction, focus indicators, ref/prop forwarding, form labeling, and decorative icon handling across components and stories.
  • Added reduced-motion support for animations and global theme transitions.
  • Improved contrast for code syntax tokens, notification content, footer text, and related theme styles.
  • Added accessibility regression tests covering naming, labeling, refs, attributes, menus, and interactive state.
  • Added Storybook test scripts and CI tooling, including Playwright browser setup.
  • Documented temporary contrast and nested-interactive rule exceptions pending follow-up remediation.

Testing

  • Storybook accessibility tests reported 0 failures across 533 stories after remediation.
  • Automated checks passed; manual assistive-technology, zoom/reflow, focus, and exception-link verification remain follow-up activities.

Walkthrough

This change adds Storybook axe accessibility checks and CI execution, accessibility guidance and audit documentation, and regression tests. Oxygen UI components gain accessible names, semantic controls, focus handling, reduced-motion support, contrast updates, ref forwarding, and improved menu behavior. Storybook stories are updated with labels, semantic associations, keyboard guidance, and documented rule exceptions.

Sequence Diagram(s)

sequenceDiagram
  participant Developer
  participant Storybook
  participant Axe
  participant CI
  Developer->>Storybook: render accessible stories
  Storybook->>Axe: evaluate WCAG 2.1 AA rules
  Axe-->>Storybook: report violations
  CI->>Storybook: run built-story tests
  Storybook-->>CI: pass or fail results
Loading

Suggested reviewers: jeradrutnam, sm1990

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers summary and tests, but misses the required Purpose, checklist, and security sections from the template. Add the template headings with a brief Purpose, Related Issues/PRs, the full checklist, and Security checks entries.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: a WCAG AA Storybook accessibility gate with remediation work.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
packages/oxygen-ui/src/components/accessibility.test.tsx (1)

89-92: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Assert exact state for attribute values.

Using exact assertions is more precise and robust than negative assertions like not.toBe('').

  • packages/oxygen-ui/src/components/accessibility.test.tsx#L89-L92: Replace .not.toBe('') with .toBeNull() since SearchBar omits the attribute when the placeholder is empty.
  • packages/oxygen-ui/src/components/accessibility.test.tsx#L122-L126: Replace .not.toBe('') with .toBe('Search') since ListingTableToolbar falls back to the default 'Search' label.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/oxygen-ui/src/components/accessibility.test.tsx` around lines 89 -
92, Update the accessibility assertions in
packages/oxygen-ui/src/components/accessibility.test.tsx at lines 89-92 and
122-126: for SearchBar with an empty placeholder, assert the textbox aria-label
is null; for ListingTableToolbar, assert the aria-label is exactly "Search"
instead of using a negative empty-string assertion.
packages/oxygen-ui-docs/stories/Theming/useThemeContent.stories.tsx (1)

166-172: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Add an accessible name and role to the focusable scroll region.

Making the block focusable with tabIndex={0} allows keyboard users to scroll, but it's a best practice to also include a role="region" and an aria-label so that screen readers can announce its purpose. As per path instructions, this helps ensure proper correctness and best practices.

♻️ Proposed refactor
-        <Typography variant="body2" component="pre" tabIndex={0} sx={{ 
+        <Typography variant="body2" component="pre" tabIndex={0} role="region" aria-label="Code snippet" sx={{ 
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/oxygen-ui-docs/stories/Theming/useThemeContent.stories.tsx` around
lines 166 - 172, Update the focusable preformatted scroll region in the
useThemeContent story by adding role="region" and a descriptive aria-label
alongside tabIndex={0}, so assistive technologies announce its purpose while
preserving the existing keyboard-scroll behavior.

Source: Path instructions

packages/oxygen-ui/src/components/Form/ElementWrapper.tsx (1)

30-44: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use useId() for DOM ID generation.

Generating DOM IDs based on the name prop can lead to collisions if multiple forms on the same page use the same input names. Consider using React's useId() to guarantee globally unique IDs for accessibility attributes.

♻️ Proposed fix
 export const ElementWrapper = (props: ElementWrapperProps) => {
   const { label, name, children } = props
-  const labelId = `${name}-label`
+  const generatedId = React.useId()
+  const labelId = `${name}-${generatedId}-label`
 
   // MUI Select renders a non-labelable div[role="combobox"], so `htmlFor`
   // alone doesn't give it an accessible name. Link Select children to the
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/oxygen-ui/src/components/Form/ElementWrapper.tsx` around lines 30 -
44, Update ElementWrapper’s labelId generation to use React’s useId() rather
than deriving the DOM ID solely from name, while preserving the existing label
linkage and Select child enhancement behavior. Ensure the generated ID remains
suitable for labelId/htmlFor accessibility attributes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx`:
- Around line 72-89: Remove the top-level aria-label and aria-labelledby props
from the TextField invocation in SearchBarBase, while preserving their injection
through the htmlInput configuration so they apply only to the underlying input
element.

In `@packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx`:
- Around line 455-469: Update the popover component around the existing
disableRestoreFocus prop to also disable automatic and enforced focus whenever
popoverOpenedByClick is false. Keep autofocus and focus trapping enabled for
click/keyboard-opened popovers, while ensuring hover-only popovers leave focus
on the trigger.
- Around line 466-470: Update the popover content around SidebarItemPopoverList
to render a MenuItem instead of SidebarItemPopoverButton/ListItemButton,
preserving the existing styling and behavior while providing the MenuList’s
expected menu-item semantics.

---

Nitpick comments:
In `@packages/oxygen-ui-docs/stories/Theming/useThemeContent.stories.tsx`:
- Around line 166-172: Update the focusable preformatted scroll region in the
useThemeContent story by adding role="region" and a descriptive aria-label
alongside tabIndex={0}, so assistive technologies announce its purpose while
preserving the existing keyboard-scroll behavior.

In `@packages/oxygen-ui/src/components/accessibility.test.tsx`:
- Around line 89-92: Update the accessibility assertions in
packages/oxygen-ui/src/components/accessibility.test.tsx at lines 89-92 and
122-126: for SearchBar with an empty placeholder, assert the textbox aria-label
is null; for ListingTableToolbar, assert the aria-label is exactly "Search"
instead of using a negative empty-string assertion.

In `@packages/oxygen-ui/src/components/Form/ElementWrapper.tsx`:
- Around line 30-44: Update ElementWrapper’s labelId generation to use React’s
useId() rather than deriving the DOM ID solely from name, while preserving the
existing label linkage and Select child enhancement behavior. Ensure the
generated ID remains suitable for labelId/htmlFor accessibility attributes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 159b75f9-b913-477e-8560-44c24893cb7f

📥 Commits

Reviewing files that changed from the base of the PR and between 3ed8c2c and ef16ee8.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (87)
  • .github/workflows/pr-builder.yml
  • packages/oxygen-ui-docs/.storybook/main.js
  • packages/oxygen-ui-docs/.storybook/preview.js
  • packages/oxygen-ui-docs/ACCESSIBILITY.md
  • packages/oxygen-ui-docs/package.json
  • packages/oxygen-ui-docs/stories/Accessibility.stories.tsx
  • packages/oxygen-ui-docs/stories/Animations/ParticleBackground.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppBreadcrumbs.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/CodeBlock.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Footer.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Header.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/ListingTable.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationBanner.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationPanel.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/PageTitle.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Sidebar.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/UserMenu.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/useAppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/DataDisplay/Tooltip.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Backdrop.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Dialog.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Progress.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Snackbar.stories.tsx
  • packages/oxygen-ui-docs/stories/GettingStarted.stories.tsx
  • packages/oxygen-ui-docs/stories/HowToContribute.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Button.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ButtonGroup.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Checkbox.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ComplexSelect.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/NumberField.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/SearchBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Select.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Slider.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Switch.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/TransferList.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/Container.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/ImageList.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/BottomNavigation.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Drawer.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Link.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Menu.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Stepper.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Tabs.stories.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/AppBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/ClickableCard.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/CreateServiceFormTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/DashboardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/EmptyStateTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/FormValidationTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/LoginTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/TabbedContentTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/Templates.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/WizardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/Colors.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/ThemeSwitcher.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/useThemeContent.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Modal.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popover.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popper.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/useColorScheme.stories.tsx
  • packages/oxygen-ui-docs/stories/Welcome.stories.tsx
  • packages/oxygen-ui/src/animations/ParticleBackground/ParticleBackground.tsx
  • packages/oxygen-ui/src/components/AppBreadcrumbs/AppBreadcrumbs.tsx
  • packages/oxygen-ui/src/components/CodeBlock/CodeBlock.tsx
  • packages/oxygen-ui/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx
  • packages/oxygen-ui/src/components/ComplexSelect/ComplexSelect.tsx
  • packages/oxygen-ui/src/components/Footer/FooterVersion.tsx
  • packages/oxygen-ui/src/components/Form/ElementWrapper.tsx
  • packages/oxygen-ui/src/components/Header/HeaderBrand.tsx
  • packages/oxygen-ui/src/components/Header/HeaderToggle.tsx
  • packages/oxygen-ui/src/components/ListingTable/ListingTable/ListingTableDataGrid.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableDensityControl.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableToolbar.tsx
  • packages/oxygen-ui/src/components/NotificationBanner/NotificationBanner.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationHeaderClose.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationItem.tsx
  • packages/oxygen-ui/src/components/PageTitle/PageTitleBackButton.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBar.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx
  • packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
  • packages/oxygen-ui/src/components/StatCard/StatCard.tsx
  • packages/oxygen-ui/src/components/ThemeSwitcher/ThemeSelect.tsx
  • packages/oxygen-ui/src/components/UserMenu/UserMenuTrigger.tsx
  • packages/oxygen-ui/src/components/accessibility.test.tsx
  • packages/oxygen-ui/src/styles/OxygenThemeBase.ts
  • pnpm-workspace.yaml

Comment thread packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
Comment thread packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
@ajirthan
ajirthan force-pushed the feat/a11y-wcag-baseline branch from ef16ee8 to 5ed2b51 Compare July 20, 2026 08:43

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/oxygen-ui-docs/ACCESSIBILITY.md`:
- Around line 18-21: Update the audit results table and the corresponding
exception summary in ACCESSIBILITY.md to use consistent units: either reconcile
the listed rule counts with the 48 failed stories or explicitly label them as
violation instances. Clarify whether the 35 exception-bearing stories counts
overlapping stories between the color-contrast and nested-interactive groups,
and ensure the referenced sections use the same definitions.
- Line 85: Update the “Focus-indicator contrast” checklist entry in
ACCESSIBILITY.md to separate the WCAG 2.4.7 visible-focus verification from the
WCAG 1.4.11 focus-indicator contrast check, keeping the existing theme,
color-scheme, and :focus-visible audit details with the appropriate check.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 469ab9eb-9343-4ae2-b76b-4ef13b104a4b

📥 Commits

Reviewing files that changed from the base of the PR and between ef16ee8 and 549074c.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (87)
  • .github/workflows/pr-builder.yml
  • packages/oxygen-ui-docs/.storybook/main.js
  • packages/oxygen-ui-docs/.storybook/preview.js
  • packages/oxygen-ui-docs/ACCESSIBILITY.md
  • packages/oxygen-ui-docs/package.json
  • packages/oxygen-ui-docs/stories/Accessibility.stories.tsx
  • packages/oxygen-ui-docs/stories/Animations/ParticleBackground.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppBreadcrumbs.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/CodeBlock.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Footer.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Header.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/ListingTable.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationBanner.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationPanel.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/PageTitle.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Sidebar.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/UserMenu.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/useAppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/DataDisplay/Tooltip.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Backdrop.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Dialog.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Progress.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Snackbar.stories.tsx
  • packages/oxygen-ui-docs/stories/GettingStarted.stories.tsx
  • packages/oxygen-ui-docs/stories/HowToContribute.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Button.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ButtonGroup.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Checkbox.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ComplexSelect.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/NumberField.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/SearchBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Select.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Slider.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Switch.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/TransferList.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/Container.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/ImageList.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/BottomNavigation.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Drawer.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Link.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Menu.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Stepper.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Tabs.stories.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/AppBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/ClickableCard.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/CreateServiceFormTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/DashboardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/EmptyStateTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/FormValidationTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/LoginTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/TabbedContentTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/Templates.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/WizardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/Colors.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/ThemeSwitcher.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/useThemeContent.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Modal.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popover.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popper.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/useColorScheme.stories.tsx
  • packages/oxygen-ui-docs/stories/Welcome.stories.tsx
  • packages/oxygen-ui/src/animations/ParticleBackground/ParticleBackground.tsx
  • packages/oxygen-ui/src/components/AppBreadcrumbs/AppBreadcrumbs.tsx
  • packages/oxygen-ui/src/components/CodeBlock/CodeBlock.tsx
  • packages/oxygen-ui/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx
  • packages/oxygen-ui/src/components/ComplexSelect/ComplexSelect.tsx
  • packages/oxygen-ui/src/components/Footer/FooterVersion.tsx
  • packages/oxygen-ui/src/components/Form/ElementWrapper.tsx
  • packages/oxygen-ui/src/components/Header/HeaderBrand.tsx
  • packages/oxygen-ui/src/components/Header/HeaderToggle.tsx
  • packages/oxygen-ui/src/components/ListingTable/ListingTable/ListingTableDataGrid.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableDensityControl.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableToolbar.tsx
  • packages/oxygen-ui/src/components/NotificationBanner/NotificationBanner.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationHeaderClose.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationItem.tsx
  • packages/oxygen-ui/src/components/PageTitle/PageTitleBackButton.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBar.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx
  • packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
  • packages/oxygen-ui/src/components/StatCard/StatCard.tsx
  • packages/oxygen-ui/src/components/ThemeSwitcher/ThemeSelect.tsx
  • packages/oxygen-ui/src/components/UserMenu/UserMenuTrigger.tsx
  • packages/oxygen-ui/src/components/accessibility.test.tsx
  • packages/oxygen-ui/src/styles/OxygenThemeBase.ts
  • pnpm-workspace.yaml
🚧 Files skipped from review as they are similar to previous changes (69)
  • packages/oxygen-ui-docs/stories/Navigation/Stepper.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popper.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Drawer.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/DashboardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Welcome.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/useThemeContent.stories.tsx
  • packages/oxygen-ui/src/components/StatCard/StatCard.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/CodeBlock.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Dialog.stories.tsx
  • packages/oxygen-ui/src/components/PageTitle/PageTitleBackButton.tsx
  • packages/oxygen-ui-docs/stories/Utils/Modal.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/useColorScheme.stories.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationItem.tsx
  • packages/oxygen-ui-docs/stories/Templates/WizardTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Navigation/Link.stories.tsx
  • packages/oxygen-ui-docs/stories/Theming/Colors.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/CreateServiceFormTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/Container.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/LoginTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Backdrop.stories.tsx
  • packages/oxygen-ui/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/ClickableCard.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/PageTitle.stories.tsx
  • packages/oxygen-ui-docs/stories/Accessibility.stories.tsx
  • packages/oxygen-ui/src/components/Header/HeaderToggle.tsx
  • packages/oxygen-ui-docs/stories/Feedback/Progress.stories.tsx
  • packages/oxygen-ui/src/components/Footer/FooterVersion.tsx
  • packages/oxygen-ui/src/components/CodeBlock/CodeBlock.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Button.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationBanner.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/Header.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/TabbedContentTemplate.stories.tsx
  • packages/oxygen-ui-docs/stories/Surfaces/AppBar.stories.tsx
  • packages/oxygen-ui-docs/stories/DataDisplay/Tooltip.stories.tsx
  • packages/oxygen-ui/src/styles/OxygenThemeBase.ts
  • packages/oxygen-ui-docs/package.json
  • packages/oxygen-ui/src/components/SearchBar/SearchBar.tsx
  • packages/oxygen-ui/src/components/NotificationPanel/NotificationHeaderClose.tsx
  • packages/oxygen-ui-docs/stories/Templates/Templates.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/NumberField.stories.tsx
  • packages/oxygen-ui/src/components/Form/ElementWrapper.tsx
  • packages/oxygen-ui-docs/stories/AppElements/AppBreadcrumbs.stories.tsx
  • packages/oxygen-ui/src/components/ThemeSwitcher/ThemeSelect.tsx
  • packages/oxygen-ui-docs/stories/Inputs/ComplexSelect.stories.tsx
  • packages/oxygen-ui-docs/stories/Templates/FormValidationTemplate.stories.tsx
  • packages/oxygen-ui/src/components/ListingTable/ListingTable/ListingTableDataGrid.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Select.stories.tsx
  • packages/oxygen-ui-docs/stories/HowToContribute.stories.tsx
  • packages/oxygen-ui/src/components/NotificationBanner/NotificationBanner.tsx
  • packages/oxygen-ui-docs/stories/Animations/ParticleBackground.stories.tsx
  • packages/oxygen-ui-docs/stories/GettingStarted.stories.tsx
  • packages/oxygen-ui-docs/stories/Utils/Popover.stories.tsx
  • packages/oxygen-ui/src/components/SearchBar/SearchBarBase.tsx
  • packages/oxygen-ui/src/components/AppBreadcrumbs/AppBreadcrumbs.tsx
  • packages/oxygen-ui-docs/.storybook/preview.js
  • packages/oxygen-ui/src/components/UserMenu/UserMenuTrigger.tsx
  • packages/oxygen-ui/src/components/ListingTable/shared/ListingTableToolbar.tsx
  • packages/oxygen-ui-docs/stories/AppElements/useAppShell.stories.tsx
  • packages/oxygen-ui-docs/stories/AppElements/ListingTable.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/SearchBar.stories.tsx
  • packages/oxygen-ui-docs/stories/Layout/ImageList.stories.tsx
  • packages/oxygen-ui/src/components/accessibility.test.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Checkbox.stories.tsx
  • packages/oxygen-ui/src/components/Sidebar/SidebarItem.tsx
  • packages/oxygen-ui-docs/stories/AppElements/NotificationPanel.stories.tsx
  • packages/oxygen-ui-docs/stories/Inputs/Slider.stories.tsx
  • packages/oxygen-ui/src/animations/ParticleBackground/ParticleBackground.tsx
  • packages/oxygen-ui/src/components/ComplexSelect/ComplexSelect.tsx

Comment thread packages/oxygen-ui-docs/ACCESSIBILITY.md Outdated
Comment thread packages/oxygen-ui-docs/ACCESSIBILITY.md Outdated
ajirthan added 20 commits July 21, 2026 12:00
ajirthan added 27 commits July 21, 2026 14:02
Click/keyboard-opened menus ignore mouse-leave; hover-opened menus use a
short leave delay so the pointer can reach the sibling popover paper.
Call onToggleExpand on hover-open only when the item is not already
expanded, so the full sidebar reflects nested items inspected via hover.
Treat only trimmed non-empty aria values as accessible names so a
whitespace aria-label cannot block placeholder-based naming.
Spread consumer props first, then apply menu-owned aria-controls,
aria-expanded, and a meaningful aria-label so open state cannot be
clobbered.
@ajirthan
ajirthan force-pushed the feat/a11y-wcag-baseline branch from 1262b8c to 2649d94 Compare July 21, 2026 08:58
@brionmario
brionmario merged commit 1c2971a into wso2:main Jul 23, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants