import { ComponentPropsWithoutRef } from 'react'; import { AiMarkWithTooltipOrPopoverConfig } from '../../types/ai-marks'; import { LayoutUtilProps, Size } from '../../types'; /** * Props for headline text variants * @extends ComponentPropsWithoutRef * @extends LayoutUtilProps */ export type HeadlineProps = ComponentPropsWithoutRef & LayoutUtilProps & { /** * Headline text variant */ variant: "headline"; /** * Size of the headline text * @default medium */ size?: Extract; /** * Set the wrapping element's tagname */ el: T; /** * When set, renders the AI mark inline after the headline text. * Use `true` for the sparkle only, or pass tooltip/popover configuration. */ aiMark?: boolean | AiMarkWithTooltipOrPopoverConfig; inline?: never; subdued?: never; }; /** * Props for eyebrow text variant * @extends ComponentPropsWithoutRef<"span"> * @extends LayoutUtilProps */ export type EyebrowProps = ComponentPropsWithoutRef<"span"> & LayoutUtilProps & { /** * Eyebrow text variant */ variant: "eyebrow"; /** * Size of the eyebrow text * @default medium */ size?: Extract; el?: never; inline?: never; subdued?: never; aiMark?: never; }; /** * Props for body text variant * @extends ComponentPropsWithoutRef<"p"> * @extends LayoutUtilProps */ export type BodyTextProps = ComponentPropsWithoutRef<"p"> & LayoutUtilProps & { /** * Body text variant * @default body */ variant?: "body"; /** * Size of the body text * @default medium */ size?: Extract; /** * Deemphasized text styling * @default false */ subdued?: boolean; inline?: never; el?: never; aiMark?: never; }; /** * Props for inline body text variant * @extends ComponentPropsWithoutRef<"span"> * @extends LayoutUtilProps */ export type BodyTextInlineProps = ComponentPropsWithoutRef<"span"> & LayoutUtilProps & { /** * Body text variant */ variant?: "body"; /** * Size of the body text * @default medium */ size?: Extract; /** * Inline flag used for nesting BodyText inside BodyText */ inline: true; /** * Deemphasized text styling * @default false */ subdued?: boolean; el?: never; aiMark?: never; };