Link
Preview appears after the next Storybook update.
<Link>Read the token guidelines</Link>When to use
Use it for
- Navigation: another page, a section of this page, an external resource.
- Inline in sentences (inline variant), or on its own under a card or a table (standalone).
- external for other sites: it opens a new tab and says so.
Not for
- Actions on this screen (save, delete, open a dialog): use Button.
- Navigation that should look like a button (a single call to action): use Button with render={<a href />}.
Do and don't
Every example is rendered with the real component, so it always matches what ships.
Link text says where it goes
Screen reader users jump between links out of context: "Read the token guidelines" works alone, "here" does not.
"Click here" or a bare URL
Both say nothing about the destination.
Accessibility
- Native <a href>: Enter follows it, it is announced as a link, Cmd or Ctrl+click opens a new tab.
- Inline links are underlined (WCAG 1.4.1): color is never the only cue inside text.
- external adds target=_blank, rel=noopener noreferrer, an icon and "(opens in a new tab)" for screen readers.
- Focus ring hugs the text with a 1px offset so it does not overlap neighbouring lines.
Content guidelines
- Describe the destination, not the action of clicking.
- Keep it short: three to six words is ideal.
- Do not end link text with punctuation or an arrow glyph.
From the code Generated from the component, not editable here.
Anatomy and tokens
Read from packages/react/src/components/Link/Link.module.css at build time. Every value is a token: open one to see its alias chain in both themes.
- Anchor
.link - Anchor, hover
@media (hover: hover) .link:hover - Anchor, focus
.link:focus-visible - Standalone variant (underline on hover)
.standalone - Subtle variant (inherits text color)
.subtle - External icon
.externalIcon
Motion and interaction
Link animates on hover. Try it in the preview at the top.
| When | What changes | Duration | Easing |
|---|---|---|---|
| Hover | Text color and underline | motion.duration.instant75 ms | motion.easing.standardsettles in place |
With reduced motion turned on, every change happens at once.
From the code Generated from the component, not editable here.
Props
Parsed from the TypeScript types in packages/react/src/components/Link/Link.tsx, so this table cannot drift from the code. It also accepts every native <a> attribute.
| Prop | Type | Default | Description |
|---|---|---|---|
variant | 'inline' | 'standalone' | 'subtle' | 'inline' | `inline` sits in running text (always underlined); `standalone` stands alone (underline on hover); `subtle` inherits the text color. Default `inline`. |
external | boolean | false | Opens in a new tab: adds target, rel, an icon and "(opens in a new tab)" for screen readers. |
render | ReactElement | none | Render a router link instead of `<a>`: `render={<RouterLink to="/tokens" />}`. |
Playground
Change the props and see the real Link update. Controls are generated from the TypeScript props; nothing here changes the system.
<Link href="#">Read the token guidelines</Link>Workbench
For contributors: every state with the accessibility panel, in the component workbench (Storybook). The stories double as visual test fixtures; the guidance on this page is the user documentation (open Link in Storybook).
Embed Storybook stories here (4)
Loads from https://bridge-storybook.floriangouloubi.com (set STORYBOOK_URL at build time). If Storybook is not running, the frames stay empty.
Inline
Standalone
External
AllStates
From the code Generated from the component, not editable here.
Changelog
- New
An exploration remembers the screen it changed, and every preview link and capture opens there
v1.0.0, Nov 11, 2026
- New
A design lead answers an exploration with the review bar at the bottom of its page: a comment, Comment (a question, no verdict), Needs changes, Looks right (its words go to the developers), Ask someone else to review, Not doing this and Copy link
v1.0.0, Nov 11, 2026
- New
Exploration page "..." menu: Rename (the pull request title and the exploration's name in its body, the branch and preview link unchanged) and Back to exploring (undoes Done exploring while no developer has pushed since: the developer section and the done marker leave the body, the
explorationlabel comes back,ready-for-devsgoes; a refused label write still succeeds through the body)v1.0.0, Nov 11, 2026
- New
Suggestions can link Figma nodes:
links.figma.nodes(optional{ nodeId, url?, name?, state?: "before" | "after" }[], payloads without it are unchanged)v1.0.0, Nov 11, 2026
- New
bridge audit counts every visible UI instance: router links outside a DS component's
renderprop (react-router, ra-coreLinkBase, next/link), anchors withhref, images and chart libraries (recharts, Nivo, Chart.js..., foreign with no DS equivalent)v1.0.0, Nov 11, 2026
- New
Actions: Button gains
dangervariant,lgsize,iconStart,iconEnd,fullWidthandrender(a link stays a link); loading keeps focusv1.0.0, Nov 11, 2026
- New
The toolbar reads a change of a private product: Bridge Studio hands a member's tab a short-lived read pass in the link's fragment, the toolbar takes it out of the address, keeps it for the tab and sends it with its reads through Bridge
v1.0.0, Nov 11, 2026
- New
The adoption report inside Bridge: Studio > Quality > a product opens
/studio/<team>/quality/report/?product=<key>(the whole Adoption row is the link; "Download JSON" moves to the report's header)v1.0.0, Nov 11, 2026
- New
Invites by email, the server side:
/api/inviteskeeps pending invites (email, role, team, who invited, expiry, only a hash of the link token) in an Upstash Redis store, emails a one-time link through Resend, and once the invitee signs in with GitHub gives their account access with the role's permission (Can view: read, Can edit: write, Reviewer: write plus a pull request listing them as design or tech owner, Admin: admin) using the Bridge Direct app's installation tokenv1.0.0, Nov 11, 2026
- New
Library access, server: /api/library-access stores who reads each team's Library (Anyone with the link, Anyone with a work email at listed domains, Only the team; admins only, checked on GitHub), emails readers a one-time sign-in link (15 minutes, only its hash kept, exact domain match, consumer domains refused), and opens a signed httpOnly session cookie for that team's Library (30 days, ended at once when the setting changes)
v1.0.0, Nov 11, 2026
- New
Library access, Studio and Library: Settings has a Library access band (who reads the library: Anyone with the link, Anyone with a work email at your domains, Only the team; admins change it, everyone else reads it) with Copy library link to share it with the company
v1.0.0, Nov 11, 2026
- New
A team's Bridge says who gets in: one screen per GitHub access state (sign in first, no access with "Ask your lead for access", Bridge not set up with the install link for admins only, read only outside the team), a team chip at the top of the Studio side nav with your access, and "Invite your team" (the team link, "Who can do what", Manage access on GitHub for admins) as an onboarding step and in Settings
v1.0.0, Nov 11, 2026
- Fix
Cloudflare Pages previews: read the HTML table Cloudflare really posts in its check run (
<strong>Preview URL:</strong>with an<a href>link, andBranch Preview URL:on preview branches), not only Markdown rowsv1.0.0, Nov 11, 2026
- Fix
"Done exploring" replaces "Promote to review" for explorations: the pieces the designer ticks go to the DS lead as requests with a link to the preview, the
explorationlabel gives way toready-for-devs, and developers take the branch as a starting point (git fetch origin,git checkout explore/<name>)v1.0.0, Nov 11, 2026
- Fix
Previews: a repository with one Vercel project reports its builds as plain "Vercel"; Bridge now reads the project from the build link, so those explorations get their preview
v1.0.0, Nov 11, 2026
- Fix
Figma plugin, Try it: a preview that failed before it had a link (a Vercel build rate limit) now says "This preview did not build" instead of waiting forever, and polling stops
v1.0.0, Nov 11, 2026
- Fix
Component specs for Figma: a content-box min-height or min-width counts its padding and border, as CSS draws it (checkbox, radio, switch, link rows were 3px short in Figma)
v1.0.0, Nov 11, 2026
- Fix
Hardening: deleting a Bridge account ends its connections in Claude and deletes the GitHub tokens Bridge kept sealed for them; the Figma plugin hand-off keeps the GitHub token sealed while it waits, bound to its own link; the hosted connector never merges (
bridge_merge_branchis neither listed nor run there, a person merges from Studio or GitHub)v1.0.0, Nov 11, 2026
- Fix
A page on the design copy's preview host reads the copy's changes even when neither the host nor the link named the repository (Cloudflare Pages sets no repository variable):
?bridge=1there is exploration #1 of the copy, never the design system's or the developers' change #1v1.0.0, Nov 11, 2026
- Fix
An exploration link opens from its own read, without waiting for the whole Changes list
v1.0.0, Nov 11, 2026
- Fix
Studio setup: "Invite your team" now invites people by email with a role (the Invite collaborators dialog) instead of sharing a link
v1.0.0, Nov 11, 2026
- Fix
The Install Bridge Direct link on team pages points to the real app, bridge-design-studio, by default
v1.0.0, Nov 11, 2026
- Fix
Every Studio link, redirect and Studio file fetch goes through
studioHref(path)(lib/team-path.ts, also exported fromlib/nav.ts), multi-team PR 2dv1.0.0, Nov 11, 2026
- Fix
Studio Components: the Open requests column leaves the table (teams triage requests in Jira); the component drawer still counts them with a link to GitHub
v1.0.0, Nov 11, 2026
- Fix
Library: the GitHub link moves from the top bar to the foot of the side nav, where Studio keeps the GitHub account
v1.0.0, Nov 11, 2026
- Fix
Click targets: token rows (name, copy, menu, uses chip), the Studio row menu, the logo link, changelog refs and Quality actions are at least 32px tall; standalone links at least 24px
v1.0.0, Nov 11, 2026
- Fix
Idle Pull and Push screens explain the flow in three steps instead of a Source card with a Change link
v1.0.0, Nov 11, 2026
- Fix
Plugin screens in the Field Guide layout: a Harbor intro with a line drawing on every idle, connect and result screen, a Source card, Settings as cards with a link to create a token, Deep Harbor tab indicator
v1.0.0, Nov 11, 2026