Skip to content
패키지 목록

Icon System

@hua-labs/ui
3 Providers
SSR-safe

3개 아이콘 라이브러리 통합 시스템. Lucide, Phosphor, Iconsax 지원.

$npm install @hua-labs/ui

아이콘 프로바이더

Lucide

기본 내장 아이콘. Tree-shakeable.

  • ESM 기반 tree-shaking
  • strokeWidth 지원
  • 기본 포함

Phosphor

Weight 기반 아이콘. 6가지 스타일.

  • 동적 로딩
  • thin/light/regular/bold/duotone/fill
  • peerDependency

Iconsax

SVG 기반 아이콘. 동적 로딩.

  • 비동기 로딩
  • SVG 기반
  • 캐시 지원

기본 사용법

아이콘 컴포넌트

tsx
import { Icon } from '@hua-labs/ui';

// 기본 사용
<Icon name="heart" />
<Icon name="user" size={24} />
<Icon name="check" variant="success" />

// 애니메이션
<Icon name="loader" spin />
<Icon name="heart" pulse />
<Icon name="bell" bounce />

// 감정/상태 아이콘
<Icon emotion="happy" />
<Icon status="loading" spin />

IconProvider

tsx
import { Icon, IconProvider } from '@hua-labs/ui';

// 전역 설정
<IconProvider set="phosphor" weight="regular" size={20}>
  <App />
</IconProvider>

// 개별 오버라이드
<Icon name="heart" provider="lucide" size={32} />

프로바이더별 사용

tsx
// Lucide (기본)
<Icon name="heart" provider="lucide" strokeWidth={1.5} />

// Phosphor (weight 지원)
<Icon name="heart" provider="phosphor" weight="duotone" />

// Iconsax
<Icon name="heart" provider="iconsax" />

API Reference

<Icon />

PropType설명
nameAllIconName아이콘 이름 (필수)
sizenumber | string아이콘 크기
providerlucide | phosphor | iconsax아이콘 프로바이더
weightthin | light | regular | bold | duotone | fillPhosphor weight
variantdefault | primary | success | warning | error | muted색상 변형
spinboolean회전 애니메이션
pulseboolean펄스 애니메이션
emotionhappy | sad | neutral | excited | angry | love감정 아이콘
statusloading | success | error | warning | info상태 아이콘

<IconProvider />

PropTypeDefault
setlucide | phosphor | iconsaxphosphor
weightPhosphorWeightregular
sizenumber20
strokeWidthnumber1.25

특화 컴포넌트

tsx
import {
  LoadingIcon,
  SuccessIcon,
  ErrorIcon,
  EmotionIcon,
  StatusIcon
} from '@hua-labs/ui';

<LoadingIcon />        // 로딩 스피너
<SuccessIcon />        // 성공 체크
<ErrorIcon />          // 에러 표시
<EmotionIcon emotion="happy" />
<StatusIcon status="warning" />

아이콘 별칭

직관적인 이름으로 아이콘을 사용할 수 있습니다.

tsx
// 모두 같은 아이콘
<Icon name="back" />      // → arrowLeft
<Icon name="prev" />      // → arrowLeft
<Icon name="previous" />  // → arrowLeft
<Icon name="arrowLeft" /> // → arrowLeft

// 주요 별칭
// Navigation: back, prev → arrowLeft
// Actions: plus, new → add
// Status: spinner, loading → loader
// User: person, account, profile → user
// Settings: gear, config → settings

관련 패키지