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