@1d1s/design-system 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface ThumbnailPickerProps {
|
|
3
|
+
/** 현재 미리보기 이미지 URL 목록 (순서 유지, blob:/data:/https: 모두 가능) */
|
|
4
|
+
previews: string[];
|
|
5
|
+
/** 파일 추가 선택 시 호출 — 여러 장 선택 가능, 남은 슬롯 수만큼 잘라 전달 */
|
|
6
|
+
onSelectFiles: (files: File[]) => void;
|
|
7
|
+
/** 특정 인덱스의 이미지를 제거할 때 호출 */
|
|
8
|
+
onRemove: (index: number) => void;
|
|
9
|
+
/**
|
|
10
|
+
* 최대 업로드 장수. 기본값은 무제한.
|
|
11
|
+
* `1` 로 주면 단일 업로드(첫 장 선택 후 추가 타일 숨김)로 동작한다.
|
|
12
|
+
*/
|
|
13
|
+
max?: number;
|
|
14
|
+
/** 정사각형 한 변 크기(px). 기본값 150. */
|
|
15
|
+
size?: number;
|
|
16
|
+
/**
|
|
17
|
+
* 허용 MIME 타입. OS 파일 선택창 필터(accept)와 실제 검증(드래그 드롭
|
|
18
|
+
* 포함)에 모두 사용된다. 기본값 JPG·PNG·GIF (webp/svg 등 차단).
|
|
19
|
+
*/
|
|
20
|
+
acceptedTypes?: string[];
|
|
21
|
+
/** 허용되지 않은 타입 선택 시 호출 (기본: 무시) — 토스트 등 피드백용 */
|
|
22
|
+
onInvalidFile?: (file: File) => void;
|
|
23
|
+
/** 하단 도움말 텍스트. 기본값 "JPG, PNG, GIF 파일을 업로드할 수 있습니다." */
|
|
24
|
+
helperText?: string;
|
|
25
|
+
/** 추가 타일 라벨. 기본값 "사진 추가". */
|
|
26
|
+
addLabel?: string;
|
|
27
|
+
/** 전체 비활성화 여부 */
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
/** 추가 className (바깥 래퍼) */
|
|
30
|
+
className?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* ThumbnailPicker
|
|
34
|
+
* 정사각형 썸네일 형태의 이미지 선택 컴포넌트. 단일·다중 업로드를 모두 지원한다.
|
|
35
|
+
*
|
|
36
|
+
* - `max` 미지정: 무제한 다중 업로드
|
|
37
|
+
* - `max={1}`: 단일 업로드
|
|
38
|
+
*
|
|
39
|
+
* 클릭 또는 드래그 앤 드롭으로 이미지를 추가하고, 각 썸네일의 제거 버튼으로
|
|
40
|
+
* 개별 삭제한다. 상태(어떤 이미지가 선택됐는지)는 소비처가 소유한다.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```tsx
|
|
44
|
+
* // 다중
|
|
45
|
+
* <ThumbnailPicker
|
|
46
|
+
* previews={urls}
|
|
47
|
+
* onSelectFiles={(files) => addFiles(files)}
|
|
48
|
+
* onRemove={(i) => removeAt(i)}
|
|
49
|
+
* />
|
|
50
|
+
* // 단일
|
|
51
|
+
* <ThumbnailPicker max={1} previews={url ? [url] : []} ... />
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function ThumbnailPicker({ previews, onSelectFiles, onRemove, max, size, acceptedTypes, onInvalidFile, helperText, addLabel, disabled, className, }: ThumbnailPickerProps): React.ReactElement;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ThumbnailPicker';
|