xref: /MusicFree/src/components/base/icon.tsx (revision da2a2959bbf8b96423ead2452a5f60867d05a8b3)
1// This file is generated by generate-assets.mjs. DO NOT MODIFY.
2import {SvgProps} from 'react-native-svg';
3
4import AlarmOutlineIcon from '@/assets/icons/alarm-outline.svg';
5import AlbumOutlineIcon from '@/assets/icons/album-outline.svg';
6import ArchiveBoxXMarkIcon from '@/assets/icons/archive-box-x-mark.svg';
7import ArrowDownTrayIcon from '@/assets/icons/arrow-down-tray.svg';
8import ArrowLeftIcon from '@/assets/icons/arrow-left.svg';
9import ArrowLongLeftIcon from '@/assets/icons/arrow-long-left.svg';
10import ArrowPathIcon from '@/assets/icons/arrow-path.svg';
11import ArrowRightEndOnRectangleIcon from '@/assets/icons/arrow-right-end-on-rectangle.svg';
12import ArrowUturnLeftIcon from '@/assets/icons/arrow-uturn-left.svg';
13import ArrowsLeftRightIcon from '@/assets/icons/arrows-left-right.svg';
14import Bars3Icon from '@/assets/icons/bars-3.svg';
15import BookmarkSquareIcon from '@/assets/icons/bookmark-square.svg';
16import ChatBubbleOvalLeftEllipsisIcon from '@/assets/icons/chat-bubble-oval-left-ellipsis.svg';
17import CheckCircleOutlineIcon from '@/assets/icons/check-circle-outline.svg';
18import CheckCircleIcon from '@/assets/icons/check-circle.svg';
19import CheckIcon from '@/assets/icons/check.svg';
20import CircleStackIcon from '@/assets/icons/circle-stack.svg';
21import ClockOutlineIcon from '@/assets/icons/clock-outline.svg';
22import CodeBracketSquareIcon from '@/assets/icons/code-bracket-square.svg';
23import Cog8ToothIcon from '@/assets/icons/cog-8-tooth.svg';
24import DocumentOutlineIcon from '@/assets/icons/document-outline.svg';
25import EllipsisVerticalIcon from '@/assets/icons/ellipsis-vertical.svg';
26import ExclamationCircleIcon from '@/assets/icons/exclamation-circle.svg';
27import FireOutlineIcon from '@/assets/icons/fire-outline.svg';
28import FireIcon from '@/assets/icons/fire.svg';
29import FolderMusicOutlineIcon from '@/assets/icons/folder-music-outline.svg';
30import FolderOutlineIcon from '@/assets/icons/folder-outline.svg';
31import FolderPlusIcon from '@/assets/icons/folder-plus.svg';
32import FontSizeIcon from '@/assets/icons/font-size.svg';
33import HandThumbUpIcon from '@/assets/icons/hand-thumb-up.svg';
34import HeartOutlineIcon from '@/assets/icons/heart-outline.svg';
35import HeartIcon from '@/assets/icons/heart.svg';
36import HomeOutlineIcon from '@/assets/icons/home-outline.svg';
37import IdentificationIcon from '@/assets/icons/identification.svg';
38import InboxArrowDownIcon from '@/assets/icons/inbox-arrow-down.svg';
39import InformationCircleIcon from '@/assets/icons/information-circle.svg';
40import JavascriptIcon from '@/assets/icons/javascript.svg';
41import LinkSlashIcon from '@/assets/icons/link-slash.svg';
42import LinkIcon from '@/assets/icons/link.svg';
43import LyricIcon from '@/assets/icons/lyric.svg';
44import MagnifyingGlassIcon from '@/assets/icons/magnifying-glass.svg';
45import MinusIcon from '@/assets/icons/minus.svg';
46import MotionPlayIcon from '@/assets/icons/motion-play.svg';
47import MusicalNoteIcon from '@/assets/icons/musical-note.svg';
48import PauseCircleOutlineIcon from '@/assets/icons/pause-circle-outline.svg';
49import PauseIcon from '@/assets/icons/pause.svg';
50import PencilOutlineIcon from '@/assets/icons/pencil-outline.svg';
51import PencilSquareIcon from '@/assets/icons/pencil-square.svg';
52import PlayCircleOutlineIcon from '@/assets/icons/play-circle-outline.svg';
53import PlayCircleIcon from '@/assets/icons/play-circle.svg';
54import PlayIcon from '@/assets/icons/play.svg';
55import PlaylistIcon from '@/assets/icons/playlist.svg';
56import PlusIcon from '@/assets/icons/plus.svg';
57import PowerOutlineIcon from '@/assets/icons/power-outline.svg';
58import RepeatSong1Icon from '@/assets/icons/repeat-song-1.svg';
59import RepeatSongIcon from '@/assets/icons/repeat-song.svg';
60import ShareIcon from '@/assets/icons/share.svg';
61import ShieldKeyholeOutlineIcon from '@/assets/icons/shield-keyhole-outline.svg';
62import ShuffleIcon from '@/assets/icons/shuffle.svg';
63import SkipLeftIcon from '@/assets/icons/skip-left.svg';
64import SkipRightIcon from '@/assets/icons/skip-right.svg';
65import SortOutlineIcon from '@/assets/icons/sort-outline.svg';
66import TShirtOutlineIcon from '@/assets/icons/t-shirt-outline.svg';
67import TranslationIcon from '@/assets/icons/translation.svg';
68import TrashOutlineIcon from '@/assets/icons/trash-outline.svg';
69import TrophyIcon from '@/assets/icons/trophy.svg';
70import UserIcon from '@/assets/icons/user.svg';
71import XMarkIcon from '@/assets/icons/x-mark.svg';
72
73export type IIconName =
74    | 'alarm-outline'
75    | 'album-outline'
76    | 'archive-box-x-mark'
77    | 'arrow-down-tray'
78    | 'arrow-left'
79    | 'arrow-long-left'
80    | 'arrow-path'
81    | 'arrow-right-end-on-rectangle'
82    | 'arrow-uturn-left'
83    | 'arrows-left-right'
84    | 'bars-3'
85    | 'bookmark-square'
86    | 'chat-bubble-oval-left-ellipsis'
87    | 'check-circle-outline'
88    | 'check-circle'
89    | 'check'
90    | 'circle-stack'
91    | 'clock-outline'
92    | 'code-bracket-square'
93    | 'cog-8-tooth'
94    | 'document-outline'
95    | 'ellipsis-vertical'
96    | 'exclamation-circle'
97    | 'fire-outline'
98    | 'fire'
99    | 'folder-music-outline'
100    | 'folder-outline'
101    | 'folder-plus'
102    | 'font-size'
103    | 'hand-thumb-up'
104    | 'heart-outline'
105    | 'heart'
106    | 'home-outline'
107    | 'identification'
108    | 'inbox-arrow-down'
109    | 'information-circle'
110    | 'javascript'
111    | 'link-slash'
112    | 'link'
113    | 'lyric'
114    | 'magnifying-glass'
115    | 'minus'
116    | 'motion-play'
117    | 'musical-note'
118    | 'pause-circle-outline'
119    | 'pause'
120    | 'pencil-outline'
121    | 'pencil-square'
122    | 'play-circle-outline'
123    | 'play-circle'
124    | 'play'
125    | 'playlist'
126    | 'plus'
127    | 'power-outline'
128    | 'repeat-song-1'
129    | 'repeat-song'
130    | 'share'
131    | 'shield-keyhole-outline'
132    | 'shuffle'
133    | 'skip-left'
134    | 'skip-right'
135    | 'sort-outline'
136    | 't-shirt-outline'
137    | 'translation'
138    | 'trash-outline'
139    | 'trophy'
140    | 'user'
141    | 'x-mark';
142
143interface IProps extends SvgProps {
144    /** 图标名称 */
145    name: IIconName;
146    /** 图标大小 */
147    size?: number;
148}
149
150const iconMap = {
151    'alarm-outline': AlarmOutlineIcon,
152    'album-outline': AlbumOutlineIcon,
153    'archive-box-x-mark': ArchiveBoxXMarkIcon,
154    'arrow-down-tray': ArrowDownTrayIcon,
155    'arrow-left': ArrowLeftIcon,
156    'arrow-long-left': ArrowLongLeftIcon,
157    'arrow-path': ArrowPathIcon,
158    'arrow-right-end-on-rectangle': ArrowRightEndOnRectangleIcon,
159    'arrow-uturn-left': ArrowUturnLeftIcon,
160    'arrows-left-right': ArrowsLeftRightIcon,
161    'bars-3': Bars3Icon,
162    'bookmark-square': BookmarkSquareIcon,
163    'chat-bubble-oval-left-ellipsis': ChatBubbleOvalLeftEllipsisIcon,
164    'check-circle-outline': CheckCircleOutlineIcon,
165    'check-circle': CheckCircleIcon,
166    check: CheckIcon,
167    'circle-stack': CircleStackIcon,
168    'clock-outline': ClockOutlineIcon,
169    'code-bracket-square': CodeBracketSquareIcon,
170    'cog-8-tooth': Cog8ToothIcon,
171    'document-outline': DocumentOutlineIcon,
172    'ellipsis-vertical': EllipsisVerticalIcon,
173    'exclamation-circle': ExclamationCircleIcon,
174    'fire-outline': FireOutlineIcon,
175    fire: FireIcon,
176    'folder-music-outline': FolderMusicOutlineIcon,
177    'folder-outline': FolderOutlineIcon,
178    'folder-plus': FolderPlusIcon,
179    'font-size': FontSizeIcon,
180    'hand-thumb-up': HandThumbUpIcon,
181    'heart-outline': HeartOutlineIcon,
182    heart: HeartIcon,
183    'home-outline': HomeOutlineIcon,
184    identification: IdentificationIcon,
185    'inbox-arrow-down': InboxArrowDownIcon,
186    'information-circle': InformationCircleIcon,
187    javascript: JavascriptIcon,
188    'link-slash': LinkSlashIcon,
189    link: LinkIcon,
190    lyric: LyricIcon,
191    'magnifying-glass': MagnifyingGlassIcon,
192    minus: MinusIcon,
193    'motion-play': MotionPlayIcon,
194    'musical-note': MusicalNoteIcon,
195    'pause-circle-outline': PauseCircleOutlineIcon,
196    pause: PauseIcon,
197    'pencil-outline': PencilOutlineIcon,
198    'pencil-square': PencilSquareIcon,
199    'play-circle-outline': PlayCircleOutlineIcon,
200    'play-circle': PlayCircleIcon,
201    play: PlayIcon,
202    playlist: PlaylistIcon,
203    plus: PlusIcon,
204    'power-outline': PowerOutlineIcon,
205    'repeat-song-1': RepeatSong1Icon,
206    'repeat-song': RepeatSongIcon,
207    share: ShareIcon,
208    'shield-keyhole-outline': ShieldKeyholeOutlineIcon,
209    shuffle: ShuffleIcon,
210    'skip-left': SkipLeftIcon,
211    'skip-right': SkipRightIcon,
212    'sort-outline': SortOutlineIcon,
213    't-shirt-outline': TShirtOutlineIcon,
214    translation: TranslationIcon,
215    'trash-outline': TrashOutlineIcon,
216    trophy: TrophyIcon,
217    user: UserIcon,
218    'x-mark': XMarkIcon,
219} as const;
220
221export default function Icon(props: IProps) {
222    const {name, size} = props;
223
224    const newProps = {
225        ...props,
226        width: props.width ?? size,
227        height: props.width ?? size,
228    } as SvgProps;
229
230    const Component = iconMap[name];
231
232    return <Component {...newProps} />;
233}
234