/**
 * @file Token.tsx
 * @input Uses React, ReactNode, StyleXStyles
 * @output Exports Token component, TokenProps, TokenColor, TokenColorMap types
 * @position Core implementation; consumed by index.ts, tested by Token.test.tsx
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/core/src/Token/TokenLink.tsx (interactive wrapper for href+onRemove)
 * - /packages/core/src/Token/Token.doc.mjs (props table, features, implementation notes)
 * - /packages/core/src/Token/Token.test.tsx (tests for new/changed behavior)
 * - /packages/core/src/Token/index.ts (exports if types change)
 * - /apps/storybook/stories/Token.stories.tsx (storybook stories)
 * - /packages/cli/assets/templates/blocks/components/Token/ (showcase blocks)
 */
import type { ReactNode } from 'react';
import type { BaseProps } from '../BaseProps';
import type { TokenColorMap } from './index';
/**
 * Token color type derived from TokenColorMap.
 * Extensible via module augmentation of TokenColorMap.
 */
export type TokenColor = keyof TokenColorMap;
export type TokenSize = 'sm' | 'md' | 'lg';
export interface TokenProps extends BaseProps<HTMLElement> {
    /** Ref forwarded to the root element */
    ref?: React.Ref<HTMLElement>;
    /**
     * The text label displayed in the token.
     */
    label: string;
    /**
     * The size of the token.
     * @default 'md'
     */
    size?: TokenSize;
    /**
     * The color variant of the token.
     * @default 'default'
     */
    color?: TokenColor;
    /**
     * Optional icon to display before the label.
     */
    icon?: ReactNode;
    /**
     * Whether the token is disabled.
     * @default false
     */
    isDisabled?: boolean;
    /**
     * Callback when the remove (X) button is clicked.
     * When provided, a remove button is rendered.
     */
    onRemove?: (e: React.MouseEvent) => void;
    /**
     * Click handler. When provided, the token renders as a `<span>` container
     * with an invisible `<button>` inside for accessibility.
     */
    onClick?: (e: React.MouseEvent) => void;
    /**
     * Link URL. When provided, the token renders as an `<a>`.
     */
    href?: string;
    /**
     * Accessible description for the token.
     */
    description?: string;
    /**
     * Content rendered after the label (before the remove button, if present).
     */
    endContent?: ReactNode;
    /**
     * Whether to visually hide the label (still accessible to screen readers).
     * @default false
     */
    isLabelHidden?: boolean;
}
/**
 * A chip/tag component for displaying entities inline.
 *
 * Renders as a `<span>` by default, `<a>` when `href` is provided, or a
 * `<span>` container with an invisible `<button>` when `onClick` is provided.
 * The invisible button pattern provides real button semantics for accessibility
 * while the container uses `:focus-within` to show focus outlines around the
 * entire token. When both `href` and `onRemove` are provided, the same
 * container pattern is used with an invisible `<a>` so the remove `<button>`
 * renders as a sibling of the link rather than nested inside it.
 *
 * @example
 * ```
 * <Token label="Tag" />
 * <Token label="Status" color="green" />
 * <Token label="Removable" onRemove={() => {}} />
 * <Token label="Clickable" onClick={() => {}} />
 * <Token label="Link" href="/path" />
 * ```
 */
export declare function Token({ label, size, color, icon, isDisabled, onRemove, onClick, href, description, endContent, isLabelHidden, xstyle, className, style, 'data-testid': testId, ref, }: TokenProps): import("react").JSX.Element;
export declare namespace Token {
    var displayName: string;
}
//# sourceMappingURL=Token.d.ts.map