UNPKG

lumir-design-system-shared

Version:

Lumir Design System - Shared Components & Tokens

71 lines (70 loc) 2.91 kB
import React from 'react'; import { ResponsiveOrSingle } from '../../types/responsive'; type TextVariant = 'hero-1' | 'hero-2' | 'title-1' | 'title-2' | 'heading-1' | 'heading-2' | 'heading-3' | 'body-1' | 'body-2' | 'reading' | 'label-1' | 'label-2' | 'caption-1' | 'caption-2' | 'caption-3'; type FontWeight = 'regular' | 'medium' | 'bold'; type TextAlign = 'left' | 'center' | 'right' | 'justify'; type TextTransform = 'none' | 'capitalize' | 'uppercase' | 'lowercase'; export interface TextProps extends React.HTMLAttributes<HTMLElement> { /** * 텍스트 요소의 HTML 태그를 지정합니다. */ as?: 'p' | 'span' | 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'label'; /** * 텍스트의 스타일 변형을 지정합니다. 반응형 객체 또는 단일 값을 받습니다. * hero-1=48px, hero-2=36px, title-1=30px, title-2=24px, heading-1/2=20px, * heading-3/body-1/reading=16px, body-2/label-1=14px, label-2/caption-1/2/3=12px */ variant?: ResponsiveOrSingle<TextVariant>; /** * 텍스트의 굵기를 지정합니다. 반응형 객체 또는 단일 값을 받습니다. */ weight?: ResponsiveOrSingle<FontWeight>; /** * 텍스트의 정렬 방향을 지정합니다. 반응형 객체 또는 단일 값을 받습니다. */ textAlign?: ResponsiveOrSingle<TextAlign>; /** * 텍스트 변형(대문자, 소문자 등)을 지정합니다. 반응형 객체 또는 단일 값을 받습니다. */ transform?: ResponsiveOrSingle<TextTransform>; /** * 텍스트가 한 줄에 표시되고 넘칠 경우 생략 부호로 표시할지 여부를 지정합니다. */ noWrap?: boolean; /** * 텍스트가 지정된 라인 수 이후 생략 부호로 표시할지 여부를 지정합니다. */ truncate?: number; /** * 텍스트의 내용물을 지정합니다. */ children: React.ReactNode; } /** * Text 컴포넌트는 순수한 타이포그래피 프리미티브입니다. * Fluent Design System의 타이포그래피 계층 구조를 따르며, 시멘틱 토큰을 사용하여 일관된 스타일을 제공합니다. * 색상은 Surface 프리미티브와 조합하여 사용하세요. * * @example * ```tsx * <Text variant="title-1" weight="bold"> * 제목 텍스트 * </Text> * * // Surface와 조합하여 색상 적용 * <Surface foreground="primary-foreground-1-rest"> * <Text variant="body-1">색상이 적용된 텍스트</Text> * </Surface> * * // 반응형 사용 예시 * <Text * variant={{ mobile: 'body-1', desktop: 'title-1' }} * weight={{ mobile: 'regular', desktop: 'bold' }} * textAlign={{ mobile: 'center', desktop: 'left' }} * > * 반응형 텍스트 * </Text> * ``` */ export declare const Text: React.ForwardRefExoticComponent<TextProps & React.RefAttributes<HTMLElement>>; export {};