/**
 * @file Link.tsx
 * @input Uses React, AnchorHTMLAttributes, ReactNode
 * @output Exports Link component, LinkProps
 * @position Core implementation; consumed by index.ts, tested by Link.test.tsx
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/core/src/Link/Link.doc.mjs (props table, features, implementation notes)
 * - /packages/core/src/Link/Link.test.tsx (tests for new/changed behavior)
 * - /packages/core/src/Link/index.ts (exports if types change)
 * - /apps/storybook/stories/Link.stories.tsx (storybook stories)
 * - /packages/cli/assets/templates/blocks/components/Link/ (showcase blocks)
 */
import type { ReactNode } from 'react';
import type { BaseProps } from '../BaseProps';
import type { TextType, TextSize, TextColor, TextWeight, TextDisplay } from '../theme/types';
import type { LinkComponentType } from './types';
export interface LinkProps extends BaseProps<HTMLAnchorElement | HTMLButtonElement> {
    /** Ref forwarded to the root element */
    ref?: React.Ref<HTMLAnchorElement | HTMLButtonElement>;
    /**
     * Custom component to render instead of `<a>`.
     * Overrides the provider-level default set by LinkProvider.
     * Must accept href, className, style, and children props.
     * Only used when href is provided.
     */
    as?: LinkComponentType;
    /**
     * Accessible label for the link.
     * Used as aria-label when content is not self-descriptive
     * (e.g. icon-only links). When children are text, this is
     * unnecessary — the link text itself serves as the label.
     */
    label?: string;
    /**
     * Link destination URL.
     * When undefined, renders as a `<button>` with link styling
     * for semantic correctness and accessibility.
     */
    href?: string;
    /**
     * Whether the link should always display an underline.
     * When false, underline only appears on hover.
     * @default false
     */
    hasUnderline?: boolean;
    /**
     * Whether the link is disabled.
     * A disabled link renders as a plain anchor without an href (and without
     * target/rel/onClick), so it cannot be focused or activated — no
     * navigation and no onClick, even via programmatic focus or assistive
     * technology activation.
     * @default false
     */
    isDisabled?: boolean;
    /**
     * Whether the link opens in a new tab with an external link icon.
     * When true, sets target="_blank" and rel="noopener noreferrer".
     * @default false
     */
    isExternalLink?: boolean;
    /**
     * Screen-reader text appended to an external link to announce that it opens
     * in a new tab (the visual icon is decorative). Override for localization.
     * @default '(opens in new tab)'
     */
    newTabLabel?: string;
    /**
     * Where to open the linked document.
     * Overridden to "_blank" when isExternalLink is true.
     */
    target?: string;
    /**
     * Link relationship (e.g. "noopener noreferrer").
     * Automatically includes "noopener noreferrer" when isExternalLink is true.
     */
    rel?: string;
    /**
     * Causes the browser to download the linked URL. A string value
     * specifies the suggested filename.
     */
    download?: string | boolean;
    /**
     * Referrer policy for the link.
     */
    referrerPolicy?: React.HTMLAttributeReferrerPolicy;
    /**
     * Click handler. Fires before navigation (when href is set),
     * or as the primary action (when href is undefined).
     */
    onClick?: React.MouseEventHandler<HTMLAnchorElement | HTMLButtonElement>;
    /**
     * Tooltip text to display on hover.
     */
    tooltip?: string;
    /**
     * Whether the link is standalone (not inline within text).
     * Applies base font sizing when true.
     * @default false
     */
    isStandalone?: boolean;
    /**
     * Semantic text type for Text. Determines base typography.
     *
     * Use `type="inherit"` for inline links inside an existing `Text` element so
     * the link adopts the surrounding text's size and line-height instead of
     * imposing its own (e.g. a link within a `large` paragraph).
     * @default 'body'
     */
    type?: TextType;
    /**
     * Explicit font size override. Forwarded to Text.
     */
    size?: TextSize;
    /**
     * Font weight override. Forwarded to Text.
     */
    weight?: TextWeight;
    /**
     * Text color. Forwarded to Text.
     * @default 'accent'
     */
    color?: TextColor;
    /**
     * Display type for Text. Forwarded to Text.
     * @default 'inline'
     */
    display?: TextDisplay;
    /**
     * Maximum lines before truncation. Forwarded to Text.
     * @default 0
     */
    maxLines?: number;
    /**
     * Link content (required).
     */
    children: ReactNode;
}
/**
 * A styled anchor link component.
 *
 * Uses Text internally for typography styling.
 * Wrap your app in <Theme> to apply a theme.
 *
 * @example
 * ```
 * <Link href="/docs">Documentation</Link>
 * <Link href="https://github.com" isExternalLink>GitHub</Link>
 * <Link href="/settings" color="secondary">Settings</Link>
 * <Link href="/privacy" hasUnderline>Privacy Policy</Link>
 * <Link label="Close dialog" href="/home"><Icon icon="x" /></Link>
 * <Text type="large">
 *   Read our <Link href="/terms" type="inherit">terms</Link> first.
 * </Text>
 * ```
 */
export declare function Link({ as, label, href, hasUnderline, isDisabled, isExternalLink, newTabLabel: newTabLabelFromProps, target: targetFromProps, onClick, tooltip, isStandalone, type, size, weight, color, display, maxLines, children, rel: relFromProps, xstyle, className, style, ref, ...props }: LinkProps): import("react").JSX.Element;
export declare namespace Link {
    var displayName: string;
}
//# sourceMappingURL=Link.d.ts.map