UNPKG

lumir-design-system-shared

Version:

Lumir Design System - Shared Components & Tokens

73 lines (72 loc) 2.08 kB
import React from 'react'; export * from './generated'; import { GeneratedIconName } from './generated'; /** * 사이즈 토큰 기반 사이즈 타입 * xs=12px, sm=16px, md=20px, lg=24px, xl=28px, xxl=32px, xxxl=36px, xxxxl=40px */ export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl' | 'xxxxl'; /** * 사용 가능한 아이콘 이름 (생성된 타입 그대로 사용) */ export type IconName = GeneratedIconName; export interface IconProps { /** * 아이콘 이름 (생성된 컴포넌트 이름 그대로) */ name: IconName; /** * 아이콘 크기 (토큰 기반) * xs=12px, sm=16px, md=20px, lg=24px, xl=28px, xxl=32px, xxxl=36px, xxxxl=40px * @default 'md' */ size?: IconSize; /** * 추가 CSS 클래스 */ className?: string; /** * 인라인 스타일 */ style?: React.CSSProperties; /** * 접근성 라벨 */ 'aria-label'?: string; /** * 아이콘이 장식용인지 여부 * true인 경우 스크린 리더에서 무시됩니다 * @default false */ 'aria-hidden'?: boolean; /** * 클릭 이벤트 핸들러 */ onClick?: () => void; } /** * Icon 컴포넌트 * * 생성된 아이콘들을 토큰 기반 사이즈로 렌더링합니다. * 색상은 부모 컴포넌트의 Surface foreground 속성을 상속받습니다. * * **특징:** * - **Surface 통합**: 독립적인 색상 시스템 제거, Surface foreground 상속 * - **단순한 구조**: 사이즈만 제어, 색상은 부모에서 관리 * - **일관된 색상**: 텍스트와 동일한 색상 시스템 사용 * * @example * ```tsx * // Surface의 foreground 색상 상속 * <Surface foreground="primary-system01-1-rest"> * <Icon name="heart" size="lg" /> * <Text>같은 색상 적용</Text> * </Surface> * * // 상태별 색상 변화도 자동 적용 * <Surface foreground="primary-system01-1-hovered"> * <Icon name="settings" /> * </Surface> * ``` */ export declare const Icon: React.FC<IconProps>;