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