Skip to content

UI: Fix trivial RefBlocks ARIA violations#33026

Merged
yannbf merged 2 commits into
nextfrom
a11y/fix-basic-refblocks-aria-issues
Nov 25, 2025
Merged

UI: Fix trivial RefBlocks ARIA violations#33026
yannbf merged 2 commits into
nextfrom
a11y/fix-basic-refblocks-aria-issues

Conversation

@Sidnioulz
Copy link
Copy Markdown
Contributor

@Sidnioulz Sidnioulz commented Nov 12, 2025

What I did

Incorrect use of aside: https://www.chromatic.com/test?appId=635781f3500dd2c49e189caf&id=6913769e99ba81e2674e5463

Error link missing button role: https://635781f3500dd2c49e189caf-siuwlkquds.chromatic.com/?path=/story/manager-sidebar-refs--errored

Tip

If I'm correct, adding the button role to isButton links might actually fix more a11y violations in Chromatic.

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories

Manual testing

ø

Documentation

ø

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli-storybook/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the @storybookjs/core team here.

core team members can create a canary release here or locally with gh workflow run --repo storybookjs/storybook publish.yml --field pr=<PR_NUMBER>

Summary by CodeRabbit

  • New Features

    • Links can now be marked to behave and be announced as buttons for keyboard and assistive tech.
  • Accessibility

    • Sidebar indicator uses a different underlying semantic element to better match its role and improve announced semantics.
  • Refactor

    • Internal ref handling simplified with no user-visible behavioral changes.

✏️ Tip: You can customize this high-level summary in your review settings.

@Sidnioulz Sidnioulz added bug accessibility ci:normal a11y: aria Accessibility issues related to ARIA markup usage labels Nov 12, 2025
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Nov 12, 2025

📝 Walkthrough

Walkthrough

Adds an isButton prop to Link (forwards to the anchor and sets role="button" when true), changes RefIndicator's container element from aside to div and updates its forwardRef generic to HTMLDivElement, and removes an explicit useRef<HTMLElement> annotation in Refs.tsx.

Changes

Cohort / File(s) Summary
Link component
code/core/src/components/components/typography/link/link.tsx
Add isButton?: boolean to LinkStylesProps/LinkProps; forward isButton to the rendered anchor and set role="button" when true.
RefIndicator container
code/core/src/manager/components/sidebar/RefIndicator.tsx
Change IndicatorPlacement from a styled.aside to styled.div; update forwardRef generic from HTMLElement to HTMLDivElement.
Refs ref type
code/core/src/manager/components/sidebar/Refs.tsx
Remove explicit useRef<HTMLElement>(null) annotation in favor of useRef(null) (ref type left implicit).

Sequence Diagram(s)

No sequence diagram — changes are prop/semantic/typing updates and do not alter control flow.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Review link.tsx to ensure isButton is only forwarded and role applied without altering navigation/event behavior.
  • Confirm RefIndicator.tsx consumers accept HTMLDivElement and that changing asidediv is acceptable for semantics/accessibility.
  • Check Refs.tsx for any places relying on the previous explicit HTMLElement type.

Possibly related issues

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 918de80 and b75ad9d.

📒 Files selected for processing (3)
  • code/core/src/components/components/typography/link/link.tsx (1 hunks)
  • code/core/src/manager/components/sidebar/RefIndicator.tsx (2 hunks)
  • code/core/src/manager/components/sidebar/Refs.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • code/core/src/manager/components/sidebar/Refs.tsx
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Use camelCase for variable and function names

Files:

  • code/core/src/components/components/typography/link/link.tsx
  • code/core/src/manager/components/sidebar/RefIndicator.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{ts,tsx}: Enable TypeScript strict mode
Export functions from modules for testing purposes

Files:

  • code/core/src/components/components/typography/link/link.tsx
  • code/core/src/manager/components/sidebar/RefIndicator.tsx
**/*.{ts,tsx,js,jsx,json,html,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{ts,tsx,js,jsx,json,html,mjs}: Use ESLint and Prettier for code style enforcement
Run 'yarn prettier --write ' to format code after making changes
Run 'yarn lint:js:cmd ' to check for ESLint issues after making changes

Files:

  • code/core/src/components/components/typography/link/link.tsx
  • code/core/src/manager/components/sidebar/RefIndicator.tsx
code/**/!(*.test).{ts,tsx,js,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

code/**/!(*.test).{ts,tsx,js,mjs}: Use 'logger' from 'storybook/internal/node-logger' for server-side (Node.js) logging, not console.log/console.warn/console.error
Use 'logger' from 'storybook/internal/client-logger' for client-side (browser) logging, not console.log/console.warn/console.error
Do not use console.log, console.warn, or console.error directly unless in isolated files where importing loggers would significantly increase bundle size

Files:

  • code/core/src/components/components/typography/link/link.tsx
  • code/core/src/manager/components/sidebar/RefIndicator.tsx
🧠 Learnings (3)
📓 Common learnings
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Tabs/Tabs.stories.tsx:222-227
Timestamp: 2025-11-05T09:36:55.944Z
Learning: Repo: storybookjs/storybook PR: 32458 — In code/core/src/components/components/Button/Button.tsx (React/TypeScript), ButtonProps includes ariaLabel?: string | false and the component maps it to the DOM aria-label. Convention: ariaLabel is mandatory on all Button usages — provide a descriptive string for icon-only buttons; set ariaLabel=false when the button’s children already serve as the accessible name. Do not suggest using a raw aria-label prop on Button call sites.
📚 Learning: 2025-11-05T09:36:55.944Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Tabs/Tabs.stories.tsx:222-227
Timestamp: 2025-11-05T09:36:55.944Z
Learning: Repo: storybookjs/storybook PR: 32458 — In code/core/src/components/components/Button/Button.tsx (React/TypeScript), ButtonProps includes ariaLabel?: string | false and the component maps it to the DOM aria-label. Convention: ariaLabel is mandatory on all Button usages — provide a descriptive string for icon-only buttons; set ariaLabel=false when the button’s children already serve as the accessible name. Do not suggest using a raw aria-label prop on Button call sites.

Applied to files:

  • code/core/src/components/components/typography/link/link.tsx
📚 Learning: 2025-11-05T09:38:47.712Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Select/Select.tsx:200-204
Timestamp: 2025-11-05T09:38:47.712Z
Learning: Repo: storybookjs/storybook — Guidance: Until Storybook 11 is released, do not suggest using React.useId anywhere (e.g., in code/core/src/components/components/Select/Select.tsx) to maintain compatibility with React 17 runtimes. Prefer advising: accept a caller-provided props.id and, if needed, generate a client-only fallback id to minimize SSR hydration issues — but avoid useId. Resume prompting for useId after Storybook 11.

Applied to files:

  • code/core/src/manager/components/sidebar/RefIndicator.tsx
🧬 Code graph analysis (1)
code/core/src/components/components/typography/link/link.tsx (1)
code/core/src/components/index.ts (1)
  • A (7-7)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: normal
  • GitHub Check: Core Unit Tests, windows-latest
🔇 Additional comments (3)
code/core/src/components/components/typography/link/link.tsx (1)

22-28: LGTM: Clean interface extension.

The isButton prop is properly added to the public API with appropriate typing.

code/core/src/manager/components/sidebar/RefIndicator.tsx (2)

36-45: LGTM: Correct semantic HTML fix.

Changing from aside to div addresses the ARIA violation mentioned in the PR objectives. The aside element has specific semantic meaning (tangentially related content) that wasn't appropriate here.


134-134: LGTM: Type signature correctly updated.

The forwardRef generic parameter is appropriately updated to HTMLDivElement to match the element type change from aside to div. This maintains type consistency.


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

@nx-cloud
Copy link
Copy Markdown

nx-cloud Bot commented Nov 12, 2025

View your CI Pipeline Execution ↗ for commit b75ad9d

Command Status Duration Result
nx run-many -t build --parallel=3 ✅ Succeeded 42s View ↗

☁️ Nx Cloud last updated this comment at 2025-11-25 17:32:22 UTC

@storybook-app-bot
Copy link
Copy Markdown

storybook-app-bot Bot commented Nov 12, 2025

Package Benchmarks

Commit: b75ad9d, ran on 25 November 2025 at 17:21:55 UTC

No significant changes detected, all good. 👏

@github-actions github-actions Bot added the Stale label Nov 25, 2025
@Sidnioulz Sidnioulz force-pushed the a11y/fix-basic-refblocks-aria-issues branch 2 times, most recently from 4fb9eb6 to 062b955 Compare November 25, 2025 14:50
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
code/core/src/components/components/typography/link/link.tsx (2)

22-28: isButton prop wiring and styling look coherent

The addition of isButton to LinkStylesProps and the corresponding style variant on A are consistent and non‑breaking (default is false), and the visual reset to a text‑like button is appropriate for a link-acting-as-button pattern.

If you expect isButton to be used frequently, consider documenting it alongside Link in your docs/Storybook stories so consumers know to prefer isButton over manually setting role="button".

Also applies to: 168-177


188-209: Add Space key activation to achieve full ARIA button semantics

The Link component with role="button" lacks Space key handling. Browser behavior for <a> elements activates on Enter (native link behavior) but not Space—ARIA role="button" elements should respond to both per the ARIA Authoring Practices Guide. Current usages in the codebase (Description.tsx, RefBlocks.tsx) rely on click/Enter, but adding Space support completes the keyboard accessibility contract.

Consider adding an onKeyDown handler to trigger the same onClick logic when Space is pressed and preventing default to avoid page scroll. Optionally, document that isButton usages should omit href or consider a tabIndex={0} fallback if isButton links ever appear outside normal tab flow.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4fb9eb6 and 062b955.

📒 Files selected for processing (3)
  • code/core/src/components/components/typography/link/link.tsx (1 hunks)
  • code/core/src/manager/components/sidebar/RefIndicator.tsx (2 hunks)
  • code/core/src/manager/components/sidebar/Refs.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • code/core/src/manager/components/sidebar/Refs.tsx
  • code/core/src/manager/components/sidebar/RefIndicator.tsx
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Use camelCase for variable and function names

Files:

  • code/core/src/components/components/typography/link/link.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{ts,tsx}: Enable TypeScript strict mode
Export functions from modules for testing purposes

Files:

  • code/core/src/components/components/typography/link/link.tsx
**/*.{ts,tsx,js,jsx,json,html,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{ts,tsx,js,jsx,json,html,mjs}: Use ESLint and Prettier for code style enforcement
Run 'yarn prettier --write ' to format code after making changes
Run 'yarn lint:js:cmd ' to check for ESLint issues after making changes

Files:

  • code/core/src/components/components/typography/link/link.tsx
code/**/!(*.test).{ts,tsx,js,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

code/**/!(*.test).{ts,tsx,js,mjs}: Use 'logger' from 'storybook/internal/node-logger' for server-side (Node.js) logging, not console.log/console.warn/console.error
Use 'logger' from 'storybook/internal/client-logger' for client-side (browser) logging, not console.log/console.warn/console.error
Do not use console.log, console.warn, or console.error directly unless in isolated files where importing loggers would significantly increase bundle size

Files:

  • code/core/src/components/components/typography/link/link.tsx
🧠 Learnings (2)
📓 Common learnings
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Tabs/Tabs.stories.tsx:222-227
Timestamp: 2025-11-05T09:36:55.944Z
Learning: Repo: storybookjs/storybook PR: 32458 — In code/core/src/components/components/Button/Button.tsx (React/TypeScript), ButtonProps includes ariaLabel?: string | false and the component maps it to the DOM aria-label. Convention: ariaLabel is mandatory on all Button usages — provide a descriptive string for icon-only buttons; set ariaLabel=false when the button’s children already serve as the accessible name. Do not suggest using a raw aria-label prop on Button call sites.
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32594
File: code/core/src/components/components/Popover/WithPopover.tsx:7-9
Timestamp: 2025-10-01T15:24:01.060Z
Learning: In the Storybook repository, "react-aria-components/patched-dist/*" (e.g., "react-aria-components/patched-dist/Dialog", "react-aria-components/patched-dist/Popover", "react-aria-components/patched-dist/Tooltip") are valid import paths created by a patch applied to the react-aria-components package. These imports should not be flagged as broken or invalid until a maintainer explicitly states they are no longer acceptable.
📚 Learning: 2025-11-05T09:36:55.944Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Tabs/Tabs.stories.tsx:222-227
Timestamp: 2025-11-05T09:36:55.944Z
Learning: Repo: storybookjs/storybook PR: 32458 — In code/core/src/components/components/Button/Button.tsx (React/TypeScript), ButtonProps includes ariaLabel?: string | false and the component maps it to the DOM aria-label. Convention: ariaLabel is mandatory on all Button usages — provide a descriptive string for icon-only buttons; set ariaLabel=false when the button’s children already serve as the accessible name. Do not suggest using a raw aria-label prop on Button call sites.

Applied to files:

  • code/core/src/components/components/typography/link/link.tsx
🧬 Code graph analysis (1)
code/core/src/components/components/typography/link/link.tsx (1)
code/core/src/components/index.ts (1)
  • A (7-7)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: normal
  • GitHub Check: Core Unit Tests, windows-latest
🔇 Additional comments (1)
code/core/src/components/components/typography/link/link.tsx (1)

188-200: role handling may unintentionally override consumer-provided role

Because role={isButton ? 'button' : undefined} is always passed after {...rest}, any role provided by the caller is effectively ignored, and when isButton is false the explicit undefined will clear a caller’s role.
[submit_recommended_refactor]
A safer pattern is to let explicit consumer intent win when present, e.g.:

-export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
-  (
-    {
-      cancel = true,
-      children,
-      onClick = undefined,
-      withArrow = false,
-      containsIcon = false,
-      className = undefined,
-      style = undefined,
-      isButton = false,
-      ...rest
-    },
-    ref
-  ) => (
+export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
+  (
+    {
+      cancel = true,
+      children,
+      onClick = undefined,
+      withArrow = false,
+      containsIcon = false,
+      className = undefined,
+      style = undefined,
+      isButton = false,
+      role,
+      ...rest
+    },
+    ref
+  ) => (
     <A
-      {...rest}
+      {...rest}
       ref={ref}
       isButton={isButton}
-      role={isButton ? 'button' : undefined}
+      role={isButton ? 'button' : role}
       onClick={onClick && cancel ? (e) => cancelled(e, onClick) : onClick}
       className={className}
     >

This preserves existing behavior while still enforcing role="button" when isButton is true, but allows advanced consumers to override if needed.

Please double-check against your intended public API: if Link is meant to own all role semantics, you may decide to keep the existing behavior.

Also applies to: 203-209

@Sidnioulz Sidnioulz force-pushed the a11y/fix-basic-refblocks-aria-issues branch from 062b955 to 918de80 Compare November 25, 2025 16:40
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
code/core/src/components/components/typography/link/link.tsx (1)

198-217: Consider adding Space key handler when role="button" is set.

The addition of role="button" correctly addresses the ARIA violations mentioned in the PR objectives. However, when an element has role="button", users expect it to respond to the Space key in addition to Enter. Currently, the component only handles click events.

For complete button semantics, consider adding a keyboard event handler:

  ) => (
    <A
      {...rest}
      ref={ref}
      isButton={isButton}
      role={isButton ? 'button' : undefined}
      onClick={onClick && cancel ? (e) => cancelled(e, onClick) : onClick}
+     onKeyDown={
+       isButton && onClick
+         ? (e) => {
+             if (e.key === ' ' || e.key === 'Spacebar') {
+               e.preventDefault();
+               if (cancel) {
+                 cancelled(e as any, onClick);
+               } else {
+                 onClick(e as any);
+               }
+             }
+           }
+         : undefined
+     }
      className={className}
    >

Note: This enhancement can be deferred if the current implementation already meets your accessibility requirements.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 062b955 and 918de80.

📒 Files selected for processing (3)
  • code/core/src/components/components/typography/link/link.tsx (1 hunks)
  • code/core/src/manager/components/sidebar/RefIndicator.tsx (2 hunks)
  • code/core/src/manager/components/sidebar/Refs.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • code/core/src/manager/components/sidebar/RefIndicator.tsx
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Use camelCase for variable and function names

Files:

  • code/core/src/manager/components/sidebar/Refs.tsx
  • code/core/src/components/components/typography/link/link.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{ts,tsx}: Enable TypeScript strict mode
Export functions from modules for testing purposes

Files:

  • code/core/src/manager/components/sidebar/Refs.tsx
  • code/core/src/components/components/typography/link/link.tsx
**/*.{ts,tsx,js,jsx,json,html,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{ts,tsx,js,jsx,json,html,mjs}: Use ESLint and Prettier for code style enforcement
Run 'yarn prettier --write ' to format code after making changes
Run 'yarn lint:js:cmd ' to check for ESLint issues after making changes

Files:

  • code/core/src/manager/components/sidebar/Refs.tsx
  • code/core/src/components/components/typography/link/link.tsx
code/**/!(*.test).{ts,tsx,js,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

code/**/!(*.test).{ts,tsx,js,mjs}: Use 'logger' from 'storybook/internal/node-logger' for server-side (Node.js) logging, not console.log/console.warn/console.error
Use 'logger' from 'storybook/internal/client-logger' for client-side (browser) logging, not console.log/console.warn/console.error
Do not use console.log, console.warn, or console.error directly unless in isolated files where importing loggers would significantly increase bundle size

Files:

  • code/core/src/manager/components/sidebar/Refs.tsx
  • code/core/src/components/components/typography/link/link.tsx
🧠 Learnings (2)
📓 Common learnings
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Tabs/Tabs.stories.tsx:222-227
Timestamp: 2025-11-05T09:36:55.944Z
Learning: Repo: storybookjs/storybook PR: 32458 — In code/core/src/components/components/Button/Button.tsx (React/TypeScript), ButtonProps includes ariaLabel?: string | false and the component maps it to the DOM aria-label. Convention: ariaLabel is mandatory on all Button usages — provide a descriptive string for icon-only buttons; set ariaLabel=false when the button’s children already serve as the accessible name. Do not suggest using a raw aria-label prop on Button call sites.
📚 Learning: 2025-11-05T09:36:55.944Z
Learnt from: Sidnioulz
Repo: storybookjs/storybook PR: 32458
File: code/core/src/components/components/Tabs/Tabs.stories.tsx:222-227
Timestamp: 2025-11-05T09:36:55.944Z
Learning: Repo: storybookjs/storybook PR: 32458 — In code/core/src/components/components/Button/Button.tsx (React/TypeScript), ButtonProps includes ariaLabel?: string | false and the component maps it to the DOM aria-label. Convention: ariaLabel is mandatory on all Button usages — provide a descriptive string for icon-only buttons; set ariaLabel=false when the button’s children already serve as the accessible name. Do not suggest using a raw aria-label prop on Button call sites.

Applied to files:

  • code/core/src/components/components/typography/link/link.tsx
🧬 Code graph analysis (1)
code/core/src/components/components/typography/link/link.tsx (1)
code/core/src/components/index.ts (1)
  • A (7-7)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: normal
  • GitHub Check: Core Unit Tests, windows-latest
🔇 Additional comments (1)
code/core/src/manager/components/sidebar/Refs.tsx (1)

97-97: LGTM!

Removing the explicit HTMLElement type annotation allows TypeScript to correctly infer the type as HTMLDivElement based on the updated RefIndicator component's ref type. This aligns with the change from aside to div in RefIndicator.

@Sidnioulz Sidnioulz force-pushed the a11y/fix-basic-refblocks-aria-issues branch from 918de80 to b75ad9d Compare November 25, 2025 17:12
@yannbf yannbf merged commit 5b805ce into next Nov 25, 2025
67 checks passed
@yannbf yannbf deleted the a11y/fix-basic-refblocks-aria-issues branch November 25, 2025 17:46
@github-actions github-actions Bot mentioned this pull request Nov 25, 2025
13 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a11y: aria Accessibility issues related to ARIA markup usage accessibility bug ci:normal Stale

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants