返回 AiToEarn
1 /**
2 * MaterialSelectionModal - 类型定义
3 * 素材选择器弹窗的类型定义
4 */
5
6 import type { MediaGroup, MediaItem } from '@/api/materials/material.types'
7
8 /**
9 * 媒体类型
10 */
11 export type MediaType = 'video' | 'img'
12
13 /**
14 * 素材选择器弹窗属性
15 */
16 export interface MaterialSelectionModalProps {
17 /** 弹窗是否打开 */
18 open: boolean
19 /** 弹窗状态改变回调 */
20 onOpenChange: (open: boolean) => void
21 /**
22 * 允许的媒体类型
23 * - 单个类型:'video' 或 'img'
24 * - 多个类型:['video', 'img'] 同时支持视频和图片
25 * 注意:图片支持多选,视频仅单选
26 */
27 mediaTypes: MediaType | MediaType[]
28 /** 选中回调:图片返回数组,视频返回单个 */
29 onSelect: (media: MediaItem | MediaItem[]) => void
30 }
31
32 /**
33 * 分组卡片属性
34 */
35 export interface GroupCardProps {
36 /** 分组数据 */
37 group: MediaGroup
38 /** 点击回调 */
39 onClick: (group: MediaGroup) => void
40 }
41
42 /**
43 * 可选择媒体卡片属性
44 */
45 export interface SelectableMediaCardProps {
46 /** 媒体数据 */
47 media: MediaItem
48 /** 是否选中 */
49 selected: boolean
50 /** 是否为多选模式 */
51 multiSelect: boolean
52 /** 点击回调 */
53 onClick: (media: MediaItem) => void
54 }
55
56 // 重新导出类型供外部使用
57 export type { MediaGroup, MediaItem }
58
58 lines TYPESCRIPT