# Content Placeholder
URL: /lynx/components/content-placeholder
Source: https://github.com/daangn/seed-design/blob/dev/docs/content/lynx/components/content-placeholder.mdx
이미지나 콘텐츠가 없거나 로딩되기 전인 영역을 채우는 플레이스홀더 컴포넌트입니다.
Lynx Engine 최소 버전: 3.6
사용 가능 버전: @seed-design/lynx-react@1.0.0, @seed-design/lynx-css@1.0.0
## Preview
```tsx
import { defaultPreset } from "@seed-design/lynx-react/content-placeholder-presets/default";
import { ContentPlaceholder } from "@/components/ui/content-placeholder";
export default function ContentPlaceholderPreview() {
return ;
}
```
## Installation
- npm: npx @seed-design/cli@latest add ui:content-placeholder
- pnpm: pnpm dlx @seed-design/cli@latest add ui:content-placeholder
- yarn: yarn dlx @seed-design/cli@latest add ui:content-placeholder
- bun: bun x @seed-design/cli@latest add ui:content-placeholder
## Usage
```tsx
import { ContentPlaceholder } from "@/components/ui/content-placeholder";
import { car } from "@seed-design/lynx-react/content-placeholder-presets/car";
```
## Props
## Examples
### Type Preset
12개 프리셋을 제공합니다. 사용할 프리셋만 개별 경로에서 import해 `preset`으로 전달합니다.
기본 모양은 `content-placeholder-presets/default`의 `defaultPreset`, 구매·판매 모양은 `content-placeholder-presets/buy-sell`의 `buySell`입니다. 나머지는 `car`, `commerce`, `coupon`, `food`, `group`, `image`, `jobs`, `business`, `post`, `realty` 경로와 같은 이름으로 import합니다.
`preset`을 생략하면 기본 이미지를 자동으로 넣지 않습니다. `children`으로 전달한 에셋만 표시합니다.
```tsx
import { HStack } from "@seed-design/lynx-react";
import { defaultPreset } from "@seed-design/lynx-react/content-placeholder-presets/default";
import { buySell } from "@seed-design/lynx-react/content-placeholder-presets/buy-sell";
import { car } from "@seed-design/lynx-react/content-placeholder-presets/car";
import { commerce } from "@seed-design/lynx-react/content-placeholder-presets/commerce";
import { coupon } from "@seed-design/lynx-react/content-placeholder-presets/coupon";
import { food } from "@seed-design/lynx-react/content-placeholder-presets/food";
import { group } from "@seed-design/lynx-react/content-placeholder-presets/group";
import { image } from "@seed-design/lynx-react/content-placeholder-presets/image";
import { jobs } from "@seed-design/lynx-react/content-placeholder-presets/jobs";
import { business } from "@seed-design/lynx-react/content-placeholder-presets/business";
import { post } from "@seed-design/lynx-react/content-placeholder-presets/post";
import { realty } from "@seed-design/lynx-react/content-placeholder-presets/realty";
import { ContentPlaceholder } from "@/components/ui/content-placeholder";
const presets = {
default: defaultPreset,
buySell,
car,
commerce,
coupon,
food,
group,
image,
jobs,
business,
post,
realty,
};
export default function ContentPlaceholderTypeExample() {
return (
{Object.entries(presets).map(([name, preset]) => (
))}
);
}
```
### Sizes
`width`와 `height`로 영역의 크기를 지정합니다. 에셋은 영역 높이의 절반으로 표시되며 최대 너비는 160px입니다.
```tsx
import { defaultPreset } from "@seed-design/lynx-react/content-placeholder-presets/default";
import { HStack, VStack, Text } from "@seed-design/lynx-react";
import { ContentPlaceholder } from "@/components/ui/content-placeholder";
const sizes = [
{ label: "48x48", width: 48, height: 48 },
{ label: "200x80", width: 200, height: 80 },
{ label: "200x120", width: 200, height: 120 },
{ label: "200x50", width: 200, height: 50 },
{ label: "300x300", width: 300, height: 300 },
{ label: "320x200", width: 320, height: 200 },
{ label: "40x120", width: 40, height: 120 },
{ label: "40x40", width: 40, height: 40 },
];
export default function ContentPlaceholderSizes() {
return (
{sizes.map(({ label, width, height }) => (
{label}
))}
);
}
```
### Customizing Asset
아이콘이나 이미지를 `children`으로 전달하면 프리셋을 대체합니다. 컴포넌트는 자식의 색을 바꾸지 않으므로, 모노크롬 아이콘에는 `tint-color`를 지정하세요.
```tsx
import IconAppleFill from "@karrotmarket/lynx-monochrome-icon/IconAppleFill";
import IconSparkle2Fill from "@karrotmarket/lynx-monochrome-icon/IconSparkle2Fill";
import IconDiamondFill from "@karrotmarket/lynx-monochrome-icon/IconDiamondFill";
import { HStack } from "@seed-design/lynx-react";
import { ContentPlaceholder } from "@/components/ui/content-placeholder";
export default function ContentPlaceholderSvgExample() {
return (
);
}
```
커스텀 아이콘 컴포넌트는 전달받은 `style`과 `tint-color`를 실제 ``에 연결해야 합니다. 직접 넣는 ``에는 `mode="aspectFit"`과 크기 스타일을 지정합니다.
```tsx
```
`tint-color`는 자식 아이콘에 전달하는 native 속성입니다.
## 웹 버전과의 차이
- 프리셋은 SEED 테마 클래스에 따라 light 또는 dark 이미지를 표시합니다.
- 커스텀 아이콘의 색은 `currentColor` 대신 `tint-color`로 지정합니다.