lumir-design-system-01
Version:
Lumir Design System 01 - Professional & Clean
127 lines (126 loc) • 4.87 kB
TypeScript
import React from 'react';
import { IconName } from 'lumir-design-system-shared';
import { BadgeProps } from '../Badge';
import { ButtonProps } from '../Button';
import { TextDisplayProps } from '../TextDisplay';
type ObjectFitValue = 'fill' | 'contain' | 'cover' | 'none' | 'scaleDown' | 'stretch' | 'fitInside' | 'fillArea' | 'crop';
type ObjectPositionValue = 'center' | 'top' | 'bottom' | 'left' | 'right' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'cropCenter' | 'cropTop' | 'cropBottom' | 'cropLeft' | 'cropRight' | 'cropTopLeft' | 'cropTopRight' | 'cropBottomLeft' | 'cropBottomRight';
type AspectRatioValue = 'square' | 'landscape.classic' | 'landscape.wide' | 'landscape.ultraWide' | 'landscape.film' | 'portrait.classic' | 'portrait.tall' | 'portrait.book';
type ButtonVariant = 'filled' | 'outlined' | 'transparent';
type ButtonType = 'text-icon' | 'text-only' | 'icon-only';
type ButtonColorScheme = 'primary' | 'secondary' | 'cta';
type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
type ButtonPosition = 'top-right' | 'bottom-full' | 'bottom-right';
export interface CardProps {
/** 카드 variant (스타일 변형) */
variant?: 'filled' | 'outlined' | 'transparent';
/** 카드 메인 제목 (상품명, 이름 등) */
title: string;
/** 제목 옆에 표시할 뱃지 */
badge?: {
text: string;
color?: BadgeProps['color'];
iconName?: IconName;
size?: BadgeProps['size'];
style?: BadgeProps['style'];
layout?: BadgeProps['layout'];
type?: BadgeProps['type'];
};
/** 뱃지 표시 여부 */
showBadge?: boolean;
/** 상세 설명 텍스트 (브랜드명) */
description?: string;
/** 추가 정보 텍스트 (일정 등) */
additionalInfo?: string;
/** 상태 텍스트 */
statusText?: string;
/** 액션 버튼 설정 (Button 컴포넌트 props 제어) */
actionButton?: {
/** 버튼 텍스트 */
text?: string;
/** 버튼에 표시할 아이콘 */
iconName?: IconName;
/** 버튼 클릭 이벤트 */
onClick?: ButtonProps['onClick'];
/** 버튼 비활성화 상태 */
disabled?: ButtonProps['disabled'];
/** 버튼 로딩 상태 */
isLoading?: ButtonProps['isLoading'];
/** 추가 Button props */
buttonProps?: Partial<ButtonProps>;
};
/** 액션 버튼 표시 여부 */
showActionButton?: boolean;
/** 이미지 URL (프로필, 상품 이미지 등) */
imageUrl?: string;
/** 이미지 영역 표시 여부 */
showImage?: boolean;
/** 이미지 높이 (기본값: 242px) */
imageHeight?: string | number;
/** 이미지 object-fit 설정 (기본값: cover) */
imageObjectFit?: ObjectFitValue;
/** 이미지 object-position 설정 (기본값: center) */
imageObjectPosition?: ObjectPositionValue;
/** 이미지 aspect-ratio 설정 */
imageAspectRatio?: AspectRatioValue;
/** TextDisplay 크기 */
size?: TextDisplayProps['size'];
/** 텍스트 정렬 */
textStyle?: TextDisplayProps['style'];
/** 라벨 표시 여부 */
showLabel?: boolean;
/** 라벨 텍스트 */
labelText?: string;
/** 설명 표시 여부 */
showDescription?: boolean;
/** 캡션 표시 여부 */
showCaption?: boolean;
/** 캡션 텍스트 */
captionText?: string;
/** 클릭 이벤트 */
onClick?: () => void;
/** 커스텀 클래스명 */
className?: string;
/** 카드의 너비 (반응형 지원) */
width?: any;
/** 카드의 최소 너비 (반응형 지원) */
minWidth?: any;
/** 카드의 최대 너비 (반응형 지원) */
maxWidth?: any;
/** 뱃지 텍스트 */
badgeText?: string;
/** 뱃지 색상 */
badgeColor?: BadgeProps['color'];
/** 뱃지 아이콘 */
badgeIconName?: IconName;
/** 뱃지 크기 */
badgeSize?: BadgeProps['size'];
/** 뱃지 스타일 (variant) */
badgeStyle?: BadgeProps['style'];
/** 뱃지 레이아웃 */
badgeLayout?: BadgeProps['layout'];
/** 뱃지 형태 */
badgeType?: BadgeProps['type'];
/** 버튼 variant */
buttonVariant?: ButtonVariant;
/** 버튼 타입 */
buttonType?: ButtonType;
/** 버튼 색상 스키마 */
buttonColorScheme?: ButtonColorScheme;
/** 버튼 크기 */
buttonSize?: ButtonSize;
/** 버튼 위치 */
buttonPosition?: ButtonPosition;
/** 버튼 텍스트 */
buttonText?: string;
/** 버튼 아이콘 (leftIcon) */
buttonIcon?: IconName;
/** 버튼 오른쪽 아이콘 */
buttonRightIcon?: IconName;
/** 버튼 전체 너비 여부 */
buttonIsFullWidth?: boolean;
/** 버튼 선택 상태 */
buttonIsSelected?: boolean;
}
export declare const Card: React.FC<CardProps>;
export {};