컴포넌트/Skeleton

Skeleton

로딩 상태를 표시하는 플레이스홀더 컴포넌트입니다.
다양한 형태와 프리셋을 지원하여 실제 콘텐츠 로딩 전 UI를 미리 보여줍니다.

설치

Terminal
npx @msub-core/ui-cli add skeleton

기본 사용

기본 Skeleton은 width, height, radius를 조절할 수 있습니다.

TSX
import { Skeleton } from "@msub-core/ui/components/skeleton"

<Skeleton height={20} width="100%" />
<Skeleton height={20} width="80%" />
<Skeleton height={20} width="60%" />

Skeleton Props

PropTypeDefaultRequiredDescription
widthstring | number-No너비 (CSS 값)
heightstring | number-No높이 (CSS 값)
radius"none" | "sm" | "default" | "lg" | "full""default"No모서리 둥글기
animation"pulse" | "shimmer" | "none""pulse"No애니메이션 타입

애니메이션

pulse(기본)와 shimmer 애니메이션을 지원합니다.

Pulse (기본)
Shimmer

SkeletonText

여러 줄의 텍스트 플레이스홀더입니다.

3줄 (기본)
5줄, 큰 텍스트

SkeletonText Props

PropTypeDefaultRequiredDescription
linesnumber3No줄 수
size"xs" | "sm" | "default" | "lg" | "xl""default"No텍스트 높이
gap"sm" | "default" | "lg""default"No줄 간격
lastLineWidthnumber60No마지막 줄 너비 비율 (%)

SkeletonCircle

원형 플레이스홀더로, 아바타 등에 사용합니다.

SkeletonImage

이미지 플레이스홀더로, 비율을 지정할 수 있습니다.

16:9
4:3
1:1

프리셋: SkeletonCard

카드 형태의 스켈레톤 프리셋입니다.

프리셋: SkeletonListItem

리스트 아이템 형태의 스켈레톤 프리셋입니다.

SkeletonListItem Props

PropTypeDefaultRequiredDescription
hasAvatarbooleantrueNo아바타 표시
avatarSize"sm" | "default" | "lg""default"No아바타 크기
linesnumber2No텍스트 줄 수
hasActionbooleanfalseNo우측 액션 버튼 표시

프리셋: SkeletonTable

테이블 형태의 스켈레톤 프리셋입니다.

SkeletonTable Props

PropTypeDefaultRequiredDescription
rowsnumber5No행 수
columnsnumber4No열 수
hasHeaderbooleantrueNo헤더 표시

실제 사용 예시

프로필 카드 로딩 상태

TSX
// 프로필 카드 로딩 상태
<div className="rounded-xl border p-6">
  <div className="flex items-center gap-4 mb-4">
    <SkeletonCircle size="xl" />
    <div className="flex-1 space-y-2">
      <Skeleton height={18} width="60%" />
      <Skeleton height={14} width="40%" />
    </div>
  </div>
  <SkeletonText lines={3} size="sm" />
  <div className="flex gap-2 mt-4">
    <Skeleton height={36} className="flex-1" radius="lg" />
    <Skeleton height={36} className="flex-1" radius="lg" />
  </div>
</div>

컴포넌트 목록

Skeleton

기본 사각형 플레이스홀더

SkeletonText

여러 줄 텍스트 플레이스홀더

SkeletonCircle

원형 플레이스홀더 (아바타)

SkeletonImage

이미지 플레이스홀더

SkeletonCard

카드 프리셋

SkeletonListItem

리스트 아이템 프리셋

SkeletonTable

테이블 프리셋