CodeForPhilly / CodeForPhilly/codeforphilly-ng

ExternalLink component for the 16 hand-rolled "(opens in new tab)" links

Open
#167 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
TypeScript
Stars
1
Forks
1
Avg merge
5d 3h
Merged PRs (30d)
9

Description

## Context

PR #157 added a new-tab cue to every `target="_blank"` link in `apps/web`: ` (opens in new tab)` where the link has visible text, or appended to the `aria-label` where it does not. That is 16 copies across 9 files (`AppFooter`, `AppHeader`, `ProjectCard`, `ActivityCard`, `LoginPlaceholder`, `Account`, `PersonDetail`, `ProjectDetail`, `Volunteer`).

## Problem

The cue text, the `rel="noopener noreferrer"`, and the `target` are re-typed at every site. A future link will forget one of them, and changing the wording (or adding a visual icon) means touching 16 places.

## Proposal

An `ExternalLink` component in `apps/web/src/components/` that takes `href` + children, sets `target`/`rel`, and appends the sr-only cue (or merges it into a supplied `aria-label`). Migrate the 16 sites; the existing accessible-name assertions in the test suite (regex matchers on `/\(opens in new tab\)$/`) cover the migration.

Deferred from `plans/a11y-mechanical.md` (PR #157).

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.