import React from 'react'; import { Text as RNText, TextProps as RNTextProps } from 'react-native'; import { SizeValue } from '../../core/theme/sizes'; import { SpacingProps } from '../../core/utils'; export type HTMLTextVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'small' | 'caption' | 'strong' | 'b' | 'i' | 'em' | 'u' | 'sub' | 'sup' | 'mark' | 'code' | 'kbd' | 'blockquote' | 'cite'; export interface TextProps extends SpacingProps { /** Text node children. Optional if using translation via `tx`. */ children?: React.ReactNode; /** Translation key (if provided, overrides children when found) */ tx?: string; /** Params for translation interpolation */ txParams?: Record; /** Text variant (mirrors semantic HTML tags) */ variant?: HTMLTextVariant; /** Size can be a size token or number (overrides variant fontSize) */ size?: SizeValue; /** Text color (overrides theme text color) */ color?: string; /** Shorthand alias for `color`. Accepts `'dimmed'`, theme palette names, `'primary.6'` syntax, or any CSS color string. */ c?: string; /** Semantic color variant (overrides color prop). Supports text palette plus status colors */ colorVariant?: 'primary' | 'secondary' | 'muted' | 'disabled' | 'link' | 'success' | 'warning' | 'error' | 'info'; /** Font weight (supports all CSS font-weight values) */ weight?: 'normal' | 'medium' | 'semibold' | 'bold' | 'light' | 'black' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900' | number; /** Text alignment */ align?: 'left' | 'center' | 'right' | 'justify'; /** Line height as a multiplier (e.g., 1.5) or absolute value */ lineHeight?: number; /** Letter spacing (tracking) in pixels or em units */ tracking?: number; /** Convert text to uppercase */ uppercase?: boolean; /** Additional styles (overrides computed styles) */ style?: any; /** Custom font family (overrides theme font) */ fontFamily?: string; /** Shorthand alias for `fontFamily` */ ff?: string; /** For platform-specific rendering on web */ as?: HTMLTextVariant; /** Whether text is selectable (default: true) */ selectable?: boolean; /** Called when text is pressed */ onPress?: () => void; /** Called when the text layout is calculated */ onLayout?: (event: any) => void; /** Value to display (overrides children, useful for numbers) */ value?: string | number; /** Maximum number of lines to display (native + web) */ numberOfLines?: RNTextProps['numberOfLines']; /** Ellipsis strategy when text exceeds available space */ ellipsizeMode?: RNTextProps['ellipsizeMode']; /** Element id. On web this is the DOM `id` — headings need one to be a link target. */ id?: string; /** React Native alias for `id`; used when the two platforms need different values. */ nativeID?: string; } export declare const Text: React.ForwardRefExoticComponent>;