What it is
A hyperlink to a resource that has its own URL, styled with the system’s link colors and an optional trailing icon. It renders a real<a> element, so right-click, middle-click,
⌘-click, and copy-link-address all work the way a reader expects from any link on the web.
Live example
Exports
Choose Link when
- The destination has a real URL, and a reader would reasonably want to open it in a new tab, copy it, or right-click it.
- The action is navigation, not a change to application state.
- The control sits inline in a sentence, or beside other content, rather than standing alone as a page-level or region-level action.
Choose something else when
Anatomy
The icon is always trailing. There is no leading-icon variant recorded anywhere in source.
Variants, sizes, and states
Underline is the one themed axis:none (default), hover, or always. There is no
sizing prop — a Link inherits its font size from the surrounding text, which is why it has no
small/medium distinction the way Button does.
Edge and failure states
Tokens
Verified directly fromTextLink.overrides.ts — no per-component token emitter exists yet for
this concept, so this table is hand-confirmed rather than generated.
Composition
A Link is inline by default — it composes with surrounding text or sits beside other content, rather than occupying its own region. When several links belong together as a set of destinations rather than one sentence, that is a Menu or a list, not several adjacent Links.Content
Accessibility
- Renders a real
<a>withrole="link", confirmed by the component’s own test suite — keyboard and assistive-technology support come from the native element, not from ARIA added on top. - The trailing icon’s accessible treatment is unconfirmed — nothing in source marks it
aria-hidden, so whether a screen reader announces it alongside the link text has not been verified. - Link text must make sense out of context. A screen reader user can navigate a page by pulling up a list of all links in isolation from their surrounding sentences; “Click here” and “Read more” are indistinguishable from each other in that list.
Constraints
Known issues
Link: open issues
Divergences, open decisions, and undocumented gaps for Link.
Why it works this way
The naming collision with the package’s ownLink export is exactly why this page leads with
a warning instead of burying it in a footnote. A reader who imports the wrong Link gets
code that compiles, renders an anchor, and does something entirely unrelated — preserving
tracking parameters rather than applying any of the styling this page documents. That failure
mode is silent, which is the reason it is surfaced at the top of the page rather than left to
the divergence register alone.