Content Placeholder
이미지나 콘텐츠가 로드되지 않았을 때, 해당 영역의 성격을 전달하는 대체 시각 요소예요.
설치
pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/content-placeholder.jsonradix-ui, class-variance-authority, lucide-react 를 설치하고 아래 코드를 components/ui/content-placeholder.tsx 에 복사해요.
Anatomy
Content Placeholder는 Root 컨테이너와 Asset으로 구성돼요. 컨테이너의 사이즈에 따라 내부 Asset을 자연스럽게 표시해요.
- Asset은 컨테이너 높이의 50%를 차지해요.
- Asset의 최소 너비는 16px, 최대 너비는 160px이며 정방형 비율을 유지해요.
Properties
Type
기본 타입과 서비스나 카테고리별 타입을 제공해요. 이미지가 없거나 표시할 수 없는 상태일 때 대체 이미지로 사용해요. type 을 지정하지 않으면 default 타입이 표시돼요.
Size
Content Placeholder는 부모 요소를 가득 채워요(width: 100%, height: 100%). 부모의 크기와 모서리를 지정해서 원하는 크기로 사용해요.
Custom Asset
children 으로 svg 요소를 넘기면 프리셋에 없는 아이콘을 사용할 수 있어요. 넘긴 요소에도 Asset 스타일(크기, 색상)이 그대로 적용돼요.
Guidelines
콘텐츠 성격에 맞는 Type 사용하기
대체 이미지만 보고도 어떤 콘텐츠인지 짐작할 수 있도록, 영역이 담을 콘텐츠의 성격에 맞는 Type을 골라요. 성격을 특정하기 어렵다면 default 를 사용해요.
중고차 목록의 썸네일에는 car 타입을 사용해요.
콘텐츠와 관계없는 Type은 사용자에게 혼란을 줘요.
Skeleton과 구분하기
Content Placeholder는 이미지를 불러오지 못했거나 이미지가 없는 최종 상태를 나타내요. 아직 불러오는 중이라면 Skeleton을 사용해요.
Props
Prop
Type