Skip to content

fix(a11y): use external link to focus main content#1460

Merged
danielroe merged 1 commit intonpmx-dev:mainfrom
OrbisK:fix/a11y-external-link
Feb 13, 2026
Merged

fix(a11y): use external link to focus main content#1460
danielroe merged 1 commit intonpmx-dev:mainfrom
OrbisK:fix/a11y-external-link

Conversation

@OrbisK
Copy link
Contributor

@OrbisK OrbisK commented Feb 13, 2026

No description provided.

@vercel
Copy link

vercel bot commented Feb 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
npmx.dev Ready Ready Preview, Comment Feb 13, 2026 8:23am
2 Skipped Deployments
Project Deployment Actions Updated (UTC)
docs.npmx.dev Ignored Ignored Preview Feb 13, 2026 8:23am
npmx-lunaria Ignored Ignored Feb 13, 2026 8:23am

Request Review

@codecov
Copy link

codecov bot commented Feb 13, 2026

Codecov Report

❌ Patch coverage is 0% with 1 line in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
app/app.vue 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 13, 2026

📝 Walkthrough

Walkthrough

This pull request simplifies the skip-link navigation mechanism in app/app.vue by converting the to prop from a bound object containing route hash, query, and parameters to a straightforward string target of #main-content. Additionally, app/components/Link/Base.vue has been updated to propagate all component props to the underlying NuxtLink element via v-bind, enabling more flexible prop forwarding without requiring explicit prop declarations.

Possibly related PRs

Suggested reviewers

  • knowler
  • danielroe
🚥 Pre-merge checks | ❌ 2
❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request has no description provided by the author, making it impossible to verify if the stated objectives align with the changeset. Add a clear description explaining the accessibility improvements, why the skip link was changed from a bound object to a simple external link, and how this benefits users navigating to main content.
Merge Conflict Detection ⚠️ Warning ❌ Merge conflicts detected (20 files):

⚔️ app/app.vue (content)
⚔️ app/components/AppFooter.vue (content)
⚔️ app/components/AppHeader.vue (content)
⚔️ app/components/Link/Base.vue (content)
⚔️ app/components/Package/TrendsChart.vue (content)
⚔️ app/components/Package/VersionDistribution.vue (content)
⚔️ app/components/Package/Versions.vue (content)
⚔️ app/utils/versions.ts (content)
⚔️ i18n/locales/en.json (content)
⚔️ i18n/locales/fr-FR.json (content)
⚔️ i18n/schema.json (content)
⚔️ lunaria/files/en-GB.json (content)
⚔️ lunaria/files/en-US.json (content)
⚔️ lunaria/files/fr-FR.json (content)
⚔️ package.json (content)
⚔️ pnpm-lock.yaml (content)
⚔️ shared/utils/constants.ts (content)
⚔️ test/nuxt/components/PackageVersions.spec.ts (content)
⚔️ test/unit/app/utils/versions.spec.ts (content)
⚔️ test/unit/shared/utils/package-analysis.spec.ts (content)

These conflicts must be resolved before merging into main.
Resolve conflicts locally and push changes to this branch.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
⚔️ Resolve merge conflicts (beta)
  • Auto-commit resolved conflicts to branch fix/a11y-external-link
  • Post resolved changes as copyable diffs in a comment

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
app/components/Link/Base.vue (1)

76-76: Consider using useAttrs() instead of v-bind="props" to avoid passing custom props to NuxtLink.

Using v-bind="props" forwards all component props—including custom ones like variant, size, block, classicon, and noUnderline—to NuxtLink. Since NuxtLink doesn't declare these props, Vue's attribute fallthrough will render them as HTML attributes on the anchor element (e.g., <a variant="button-primary" ...>), which is invalid HTML.

A cleaner approach is to use useAttrs() to capture only the undeclared attributes (like external) that should pass through:

♻️ Suggested refactor using useAttrs()
 <script setup lang="ts">
 import type { NuxtLinkProps } from '#app'
 
+const attrs = useAttrs()
+
 const props = withDefaults(
   defineProps<

Then in the template:

   <NuxtLink
-    v-bind="props"
+    v-bind="attrs"
     v-else

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


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

@danielroe danielroe added this pull request to the merge queue Feb 13, 2026
Merged via the queue into npmx-dev:main with commit 2d805c5 Feb 13, 2026
17 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