/**
 * @file Text.tsx
 * @input Uses React, HTMLAttributes, ReactNode
 * @output Exports Text component, TextProps, TextType, TextSize types
 * @position Core implementation; consumed by index.ts, tested by Text.test.tsx
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/core/src/Text/Text.doc.mjs (props table, features, implementation notes)
 * - /packages/core/src/Text/Text.test.tsx (tests for new/changed behavior)
 * - /packages/core/src/Text/index.ts (exports if types change)
 * - /apps/storybook/stories/Text.stories.tsx (storybook stories)
 * - /packages/cli/assets/templates/blocks/components/Text/ (showcase blocks)
 */
import { type ReactNode } from 'react';
import type { TextType, TextSize, TextColor, BuiltinTextColor, TextWeight, TextDisplay, TextJustify, WordBreak, TextWrap } from '../theme/types';
import type { LayerPlacement } from '../Layer';
import type { BaseProps } from '../BaseProps';
export type { TextType, TextSize };
export interface TextProps extends Omit<BaseProps, 'children'> {
    /** Ref forwarded to the root element */
    ref?: React.Ref<HTMLElement>;
    /**
     * Semantic text type. Determines size, weight, and line-height from theme.
     * @default 'body'
     */
    type?: TextType;
    /**
     * Explicit font size override. When set, overrides the size from `type`
     * but preserves other type properties (font-family, default color).
     *
     * ⚠️ Lint rule: Prefer using `type` alone. Use `size` only for custom
     * UI elements that need explicit size control (metrics, callouts).
     */
    size?: TextSize;
    /**
     * Text color. Defaults vary by type:
     * - 'supporting' → 'secondary'
     * - others → 'primary'
     */
    color?: TextColor;
    /**
     * Font weight override.
     */
    weight?: TextWeight;
    /**
     * Display type. Text defaults to inline.
     * Note: Silently overridden to 'block' when maxLines > 0 or hasCapsize is true.
     * @default 'inline'
     */
    display?: TextDisplay;
    /**
     * Maximum lines before truncation. 0 = no truncation.
     * When set, shows tooltip on hover if content is truncated.
     * @default 0
     */
    maxLines?: number;
    /**
     * Control tooltip behavior for truncated text.
     * - `true` (default when maxLines > 0): show tooltip at default position
     * - `false`: disable tooltip
     * - Position value: show tooltip at specific position
     * @default true
     */
    hasTruncateTooltip?: boolean | LayerPlacement;
    /**
     * Word break behavior for truncated text.
     * @default 'break-all' for maxLines=1, 'break-word' otherwise
     */
    wordBreak?: WordBreak;
    /**
     * Text wrapping behavior.
     */
    textWrap?: TextWrap;
    /**
     * Text alignment (justification). Uses logical values (start/end)
     * for i18n/RTL compatibility.
     * @default 'start'
     */
    justify?: TextJustify;
    /**
     * Enable optical alignment (text-box-trim).
     * Forces block display.
     * @default false
     */
    hasCapsize?: boolean;
    /**
     * Strikethrough decoration.
     * @default false
     */
    hasStrikethrough?: boolean;
    /**
     * Use tabular (monospace) numbers for alignment.
     * @default false
     */
    hasTabularNumbers?: boolean;
    /**
     * Text content
     */
    children: ReactNode;
    /**
     * HTML element to render.
     * Includes h1-h3 for display types that need heading semantics.
     * @default 'span'
     */
    as?: 'span' | 'p' | 'div' | 'label' | 'h1' | 'h2' | 'h3';
}
/**
 * Resolve the StyleX baseline color. Built-in colors map to their own color
 * style; custom (theme-defined) colors fall back to the `primary` baseline —
 * their actual color comes from theme CSS (`.astryx-text.<color>` /
 * `.astryx-heading.<color>`), which the rendered `color` class targets.
 *
 * Exported so Heading applies the same custom-color fallback as Text.
 */
export declare function resolveStyleColor(color: TextColor): BuiltinTextColor;
/**
 * Semantic text component. Renders text with type-based styling from the theme.
 *
 * @example
 * ```
 * <Text type="body">Body text</Text>
 * <Text type="large">Large body text</Text>
 * <Text type="label">Form label</Text>
 * <Text type="supporting">Helper text</Text>
 * <Text type="code">{'const x = 1;'}</Text>
 * <Text type="display-1" as="h1">Hero Title</Text>
 * <Text type="display-2">$1.2M Revenue</Text>
 * <Text type="body" maxLines={2}>Clamped text</Text>
 * ```
 */
export declare function Text({ type, size, color, weight, display, maxLines, hasTruncateTooltip, wordBreak, textWrap, justify, hasCapsize, hasStrikethrough, hasTabularNumbers, xstyle, className, style, as: Component, children, ref, ...props }: TextProps): import("react").JSX.Element;
export declare namespace Text {
    var displayName: string;
}
//# sourceMappingURL=Text.d.ts.map