import "./text_link.css"; import { type TextProps } from "./text"; import { type IconName } from "./icon"; import { type StyleProps } from "./style_props"; export interface TextLinkProps extends Omit, StyleProps { /** Optional leading icon. */ icon?: IconName; /** A URL — renders a real anchor (``; middle-click / open-in-new-tab * work). For in-app routing, wrap `TextLink` in your own pressable. */ href?: string; } /** * Text that NAVIGATES — `href` renders a real anchor, inked and ruled ON REACH * (hover, keyboard focus), because a run already wearing the destination ink * does not also need the browser's rest underline; with no `href` it is plain * underlined text you drop inside your own pressable (a table cell, a custom * row), or a MARKER that a value leads somewhere (a record reference) — those * carry no ink, so the rule stays at rest and is the whole of what they have. * Colour comes from `color` (it inherits every `Text` prop) — the neutral, * configurable counterpart to `Link`, which is fixed blue + `role="link"` for the * "this opens somewhere else" signal. * * It does NOT act. An `onPress` here used to resolve to `role="button"`, so one * export was three components — a link, a button, and a passive marker — behind one * name, inside `OptionList`, `FilterChip` and others. * * The act mode briefly became its own surface-less component and is now gone * entirely: it made underline mean two things separable only by ink, and it competed * with the `Button` colour ladder for the job `muted` already does. **Underlined text * GOES somewhere or REVEALS something; anything that MUTATES carries a control * surface** — `Button` in chrome, `InlineButton` on a field. * * The reveal half is the one narrow exception, and this component is how you build * it: an in-prose DISCLOSURE (a transcript under its player, a long value under its * summary) wrapped in your own pressable, `color="muted"` so it never wears the * navigation blue. It exists because the rule used to end "a quiet verb that cannot * sit against a text column belongs in chrome" — and a disclosure cannot go to * chrome, it belongs to the thing above it. The two controls that fit chrome both * fail here: a `muted` Button is transparent and undecorated at rest (a hover-only * affordance), and an `Accordion` is a list row nested inside a list row. The INK is * what keeps underline unambiguous — blue leaves, muted stays. See composition.md * §"Commit & feedback surfaces". */ export declare function TextLink(props: TextLinkProps): import("react").JSX.Element;