import type { HTMLAttributes, JSX, JSXElementConstructor, ReactNode } from 'react'; export type BodyTextSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; export type BodyTextWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold'; export type BodyTextAlign = 'left' | 'center' | 'right' | 'justify'; export interface BodyTextProps extends HTMLAttributes { children?: ReactNode; /** * Font size variant (`xs`, `sm`, `md`, `lg`, `xl`). */ size?: BodyTextSize; /** * Font weight variant (`light`, `normal`, `medium`, `semibold`, `bold`). */ weight?: BodyTextWeight; /** * Shortcut prop adding `text-sm` class (retained for backward compatibility). */ small?: boolean; /** * Shortcut prop adding `font-semibold` class (retained for backward compatibility). */ strong?: boolean; /** * Muted secondary text color. */ muted?: boolean; /** * Error red text color. */ error?: boolean; /** * Success green text color. */ success?: boolean; /** * Warning amber text color. */ warning?: boolean; /** * Info blue text color. */ info?: boolean; /** * Renders `inline-flex items-center gap-2`. */ inline?: boolean; /** * Inverted text color for dark backgrounds. */ invert?: boolean; /** * Text alignment (`left`, `center`, `right`, `justify`). */ align?: BodyTextAlign; /** * Truncate single line with ellipsis. */ truncate?: boolean; /** * Multi-line line clamp count (`1`, `2`, `3`, `4`). */ clamp?: 1 | 2 | 3 | 4; /** * JSX element to render in place of `p` (e.g. `div`, `span`, `article`). */ as?: keyof JSX.IntrinsicElements | JSXElementConstructor; }