Get StartedFoundationsComponentsPatternsRulesDevelopAI & ToolsUpdates

Image Frame

사용자가 업로드한 이미지를 고정된 비율과 모서리로 표시하는 컴포넌트예요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/image-frame.json

Anatomy

Image Frame은 이미지를 표시하는 Image Area, Corner Radius, Border로 구성되어 있어요. 필요하면 네 모서리에 Overlay Element를 올릴 수 있어요.

Properties

Ratio

ratio 로 이미지 크기와 상관없이 고정된 비율로 표시할 수 있어요. 1 은 정사각형, 4 / 3 은 일반적인 사진 비율, 16 / 9 는 와이드스크린 비율이에요. 기본값은 4 / 3 이에요.

Size

1:1 비율에서는 권장 사이즈 가이드(24, 36, 48, 64 …)를 따르는 것을 권장해요. 구현 상의 스펙은 아니므로 너비는 className 이나 style 로 자유롭게 지정해요.

Fallback Image

이미지를 표시할 수 없는 경우 fallback 으로 지정한 요소가 보여요. 사용처에 맞게 Content Placeholder 를 넣어 콘텐츠 유형을 알려줄 수 있어요.

Border Radius

borderRadius 로 모서리를 둥글게 처리할 수 있어요. 기본값은 r2 (8px) 예요.

Stroke

stroke 를 켜면 이미지 가장자리에 $color.stroke.neutral-subtle 색의 1px 테두리가 그려져요. 배경과 비슷한 밝은 이미지에서도 경계가 보이게 해요.

Show Overlay

ImageFrameFloater 로 이미지 위에 보조 UI 요소(Overlay Element)를 표시할 수 있어요. Overlay 요소는 네 모서리를 기준으로 배치되며, 각 위치에는 하나의 요소만 표시해요.

요소용도
Badge상태, 분류, 강조할 라벨 표시
Indicator (ImageFrameIndicator)이미지 개수, 영상 길이 등 콘텐츠 메타 정보 전달
Reaction Button (ImageFrameReactionButton)사용자 상호작용 유도 (관심 버튼 등)
Icon (ImageFrameIcon)콘텐츠 타입 표시 (재생 아이콘 등)

여러 위치에 오버레이를 동시에 배치할 수 있어요.

Offset

offsetX, offsetY 로 이미지 모서리와 오버레이 사이 여백을 조절할 수 있어요. 기본값은 $dimension.x1_5 (6px) 예요.

Guidelines

Corner Radius 적용

기본 Corner Radius는 $radius.r2 (8px) 예요. 이미지 가로 크기가 48 이하인 경우에는 값을 줄이는 것을 권장해요.

가로 크기Corner Radius
24 이하r1 (4px)
48 이하r1_5 (6px)
그 이상r2 (8px)

Rounded 속성의 사용

이미지가 화면 가로 크기에 맞춰 꽉 차게 표시되는 경우에는 borderRadius="none" 으로 모서리 처리를 꺼요.

State

이미지는 로딩 중(loading), 로드 완료(loaded), 실패(error) 상태를 가져요. 현재 상태는 data-loading-state 속성으로 확인할 수 있어요.

이미지 파일이 큰 경우 평균 로딩 시간이 0.2초 이상이면 로딩 상태를 표시하는 것을 권장해요. 반대로 0.2초 미만이면 로딩 표시가 깜빡임을 일으켜 시각적으로 불편할 수 있어요. 로딩 표시는 기본적으로 Skeleton 방식을 권장하며, 필요에 따라 블러나 단색 방식을 선택할 수 있어요.

이미지 위에 Overlay 요소 표시하기

Overlay는 가독성을 우선하며 주 콘텐츠를 가리지 않아요. Overlay Element는 최대 2개를 권장하고, 표시되는 요소에 따라 위치를 조정할 수 있어요.

  • Badge 는 상태나 분류를 표현할 때만 사용하며, 시간·개수·길이 같은 메타 정보에는 사용하지 않아요.
  • Indicator 는 사용자가 콘텐츠를 보기 전에 알면 좋은 설명적 정보를 보여줄 때만 사용하며, 상태 표시나 강조 용도로 쓰지 않아요.
  • Reaction Button 은 명확한 사용자 액션이 있을 때만 사용하며, 별도의 터치 영역(40px)을 가져요. aria-label 을 반드시 지정해요.
  • Icon 은 콘텐츠 타입을 표시하는 용도로만 사용하며, 액션을 가지지 않아요.
1/5
Do· Overlay는 2개 이하

꼭 필요한 정보만 두 모서리 이내에 배치해요.

1/50:32+9
Don't· Overlay 3개 이상

3개 이상의 Overlay 요소는 이미지를 가려서 권장하지 않아요.

Props

ImageFrame

Prop

Type

ImageFrameFloater

Prop

Type

ImageFrameReactionButton

Prop

Type

ImageFrameIcon

Prop

Type

On this page