import { type AnchorHTMLAttributes, type ReactNode } from 'react';
import { type VariantProps } from 'class-variance-authority';
/**
* Link is the semantic anchor primitive for inline navigation —
* privacy / terms in form copy, external "remote support" links in
* sidebars, in-paragraph references inside info-tip body copy.
*
* For action affordances that *look* like a link but trigger UI rather
* than navigation, use `` instead — the semantic
* boundary matters for screen readers and keyboard users.
*/
declare const linkVariants: (props?: ({
variant?: "default" | "social" | null | undefined;
intent?: "default" | "subtle" | "inverted" | null | undefined;
weight?: "strong" | "normal" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface LinkProps extends Omit, 'href'>, VariantProps {
/** Anchor target. Required — the whole point of the component. */
href: string;
/**
* `social` detects a supported web URL and supplies its brand logo and
* name. Children and startIcon override the automatic content. Unknown
* websites use a globe and hostname; invalid URLs are non-interactive.
* Bare domains and protocol-relative URLs are normalised to HTTPS.
*/
variant?: 'default' | 'social' | null;
/**
* Flag the link as opening in a new browsing context. Automatically
* adds `target="_blank"` + `rel="noopener noreferrer"` and renders a
* decorative trailing `ExternalLink` icon plus an i18n'd "Opens in a
* new tab" label for assistive tech. Defaults to true for `social`
* unless an explicit target requests the current/named browsing context.
*/
external?: boolean;
/**
* Render the trailing external-link glyph. Default `true` — set to
* `false` for surfaces (footer, social rows, dense nav) where the
* indicator adds visual noise. The `target` / `rel` / "opens in new
* tab" screen-reader text are still applied.
*/
externalIcon?: boolean;
/**
* Render the link in a non-interactive disabled state. Strips `href`,
* adds `aria-disabled` + `role="link"`, suppresses the underline.
* Prefer hiding the link entirely when possible — disabled links are
* a usability anti-pattern outside of state-machine flows.
*/
disabled?: boolean;
/** Optional leading icon (inline-start). */
startIcon?: ReactNode;
/** Optional trailing icon (inline-end). Ignored when `external`. */
endIcon?: ReactNode;
/** @deprecated No effect: the icon layout follows the icon props. Kept so existing callers compile. */
hasIcon?: 'yes' | 'no' | null;
}
export declare const Link: import("react").ForwardRefExoticComponent>;
export {};
//# sourceMappingURL=link.d.ts.map