// This file is generated by generate-assets.mjs. DO NOT MODIFY.
import {SvgProps} from 'react-native-svg';

import AlarmOutlineIcon from '@/assets/icons/alarm-outline.svg';
import AlbumOutlineIcon from '@/assets/icons/album-outline.svg';
import ArchiveBoxXMarkIcon from '@/assets/icons/archive-box-x-mark.svg';
import ArrowDownTrayIcon from '@/assets/icons/arrow-down-tray.svg';
import ArrowLeftIcon from '@/assets/icons/arrow-left.svg';
import ArrowLongLeftIcon from '@/assets/icons/arrow-long-left.svg';
import ArrowPathIcon from '@/assets/icons/arrow-path.svg';
import ArrowRightEndOnRectangleIcon from '@/assets/icons/arrow-right-end-on-rectangle.svg';
import ArrowUpTrayIcon from '@/assets/icons/arrow-up-tray.svg';
import ArrowUturnLeftIcon from '@/assets/icons/arrow-uturn-left.svg';
import ArrowsLeftRightIcon from '@/assets/icons/arrows-left-right.svg';
import Bars3Icon from '@/assets/icons/bars-3.svg';
import BookmarkSquareIcon from '@/assets/icons/bookmark-square.svg';
import ChatBubbleOvalLeftEllipsisIcon from '@/assets/icons/chat-bubble-oval-left-ellipsis.svg';
import CheckCircleOutlineIcon from '@/assets/icons/check-circle-outline.svg';
import CheckCircleIcon from '@/assets/icons/check-circle.svg';
import CheckIcon from '@/assets/icons/check.svg';
import CircleStackIcon from '@/assets/icons/circle-stack.svg';
import ClockOutlineIcon from '@/assets/icons/clock-outline.svg';
import CodeBracketSquareIcon from '@/assets/icons/code-bracket-square.svg';
import Cog8ToothIcon from '@/assets/icons/cog-8-tooth.svg';
import DocumentOutlineIcon from '@/assets/icons/document-outline.svg';
import EllipsisVerticalIcon from '@/assets/icons/ellipsis-vertical.svg';
import ExclamationCircleIcon from '@/assets/icons/exclamation-circle.svg';
import FireOutlineIcon from '@/assets/icons/fire-outline.svg';
import FireIcon from '@/assets/icons/fire.svg';
import FolderMusicOutlineIcon from '@/assets/icons/folder-music-outline.svg';
import FolderOutlineIcon from '@/assets/icons/folder-outline.svg';
import FolderPlusIcon from '@/assets/icons/folder-plus.svg';
import FontSizeIcon from '@/assets/icons/font-size.svg';
import HandThumbUpIcon from '@/assets/icons/hand-thumb-up.svg';
import HeartOutlineIcon from '@/assets/icons/heart-outline.svg';
import HeartIcon from '@/assets/icons/heart.svg';
import HomeOutlineIcon from '@/assets/icons/home-outline.svg';
import IdentificationIcon from '@/assets/icons/identification.svg';
import InboxArrowDownIcon from '@/assets/icons/inbox-arrow-down.svg';
import InformationCircleIcon from '@/assets/icons/information-circle.svg';
import JavascriptIcon from '@/assets/icons/javascript.svg';
import LinkSlashIcon from '@/assets/icons/link-slash.svg';
import LinkIcon from '@/assets/icons/link.svg';
import LyricIcon from '@/assets/icons/lyric.svg';
import MagnifyingGlassIcon from '@/assets/icons/magnifying-glass.svg';
import MinusIcon from '@/assets/icons/minus.svg';
import MotionPlayIcon from '@/assets/icons/motion-play.svg';
import MusicalNoteIcon from '@/assets/icons/musical-note.svg';
import PauseCircleOutlineIcon from '@/assets/icons/pause-circle-outline.svg';
import PauseIcon from '@/assets/icons/pause.svg';
import PencilOutlineIcon from '@/assets/icons/pencil-outline.svg';
import PencilSquareIcon from '@/assets/icons/pencil-square.svg';
import PlayCircleOutlineIcon from '@/assets/icons/play-circle-outline.svg';
import PlayCircleIcon from '@/assets/icons/play-circle.svg';
import PlayIcon from '@/assets/icons/play.svg';
import PlaylistIcon from '@/assets/icons/playlist.svg';
import PlusIcon from '@/assets/icons/plus.svg';
import PowerOutlineIcon from '@/assets/icons/power-outline.svg';
import RepeatSong1Icon from '@/assets/icons/repeat-song-1.svg';
import RepeatSongIcon from '@/assets/icons/repeat-song.svg';
import ShareIcon from '@/assets/icons/share.svg';
import ShieldKeyholeOutlineIcon from '@/assets/icons/shield-keyhole-outline.svg';
import ShuffleIcon from '@/assets/icons/shuffle.svg';
import SkipLeftIcon from '@/assets/icons/skip-left.svg';
import SkipRightIcon from '@/assets/icons/skip-right.svg';
import SortOutlineIcon from '@/assets/icons/sort-outline.svg';
import TShirtOutlineIcon from '@/assets/icons/t-shirt-outline.svg';
import TranslationIcon from '@/assets/icons/translation.svg';
import TrashOutlineIcon from '@/assets/icons/trash-outline.svg';
import TrophyIcon from '@/assets/icons/trophy.svg';
import UserIcon from '@/assets/icons/user.svg';
import XMarkIcon from '@/assets/icons/x-mark.svg';

export type IIconName =
    | 'alarm-outline'
    | 'album-outline'
    | 'archive-box-x-mark'
    | 'arrow-down-tray'
    | 'arrow-left'
    | 'arrow-long-left'
    | 'arrow-path'
    | 'arrow-right-end-on-rectangle'
    | 'arrow-up-tray'
    | 'arrow-uturn-left'
    | 'arrows-left-right'
    | 'bars-3'
    | 'bookmark-square'
    | 'chat-bubble-oval-left-ellipsis'
    | 'check-circle-outline'
    | 'check-circle'
    | 'check'
    | 'circle-stack'
    | 'clock-outline'
    | 'code-bracket-square'
    | 'cog-8-tooth'
    | 'document-outline'
    | 'ellipsis-vertical'
    | 'exclamation-circle'
    | 'fire-outline'
    | 'fire'
    | 'folder-music-outline'
    | 'folder-outline'
    | 'folder-plus'
    | 'font-size'
    | 'hand-thumb-up'
    | 'heart-outline'
    | 'heart'
    | 'home-outline'
    | 'identification'
    | 'inbox-arrow-down'
    | 'information-circle'
    | 'javascript'
    | 'link-slash'
    | 'link'
    | 'lyric'
    | 'magnifying-glass'
    | 'minus'
    | 'motion-play'
    | 'musical-note'
    | 'pause-circle-outline'
    | 'pause'
    | 'pencil-outline'
    | 'pencil-square'
    | 'play-circle-outline'
    | 'play-circle'
    | 'play'
    | 'playlist'
    | 'plus'
    | 'power-outline'
    | 'repeat-song-1'
    | 'repeat-song'
    | 'share'
    | 'shield-keyhole-outline'
    | 'shuffle'
    | 'skip-left'
    | 'skip-right'
    | 'sort-outline'
    | 't-shirt-outline'
    | 'translation'
    | 'trash-outline'
    | 'trophy'
    | 'user'
    | 'x-mark';

interface IProps extends SvgProps {
    /** 图标名称 */
    name: IIconName;
    /** 图标大小 */
    size?: number;
}

const iconMap = {
    'alarm-outline': AlarmOutlineIcon,
    'album-outline': AlbumOutlineIcon,
    'archive-box-x-mark': ArchiveBoxXMarkIcon,
    'arrow-down-tray': ArrowDownTrayIcon,
    'arrow-left': ArrowLeftIcon,
    'arrow-long-left': ArrowLongLeftIcon,
    'arrow-path': ArrowPathIcon,
    'arrow-right-end-on-rectangle': ArrowRightEndOnRectangleIcon,
    'arrow-up-tray': ArrowUpTrayIcon,
    'arrow-uturn-left': ArrowUturnLeftIcon,
    'arrows-left-right': ArrowsLeftRightIcon,
    'bars-3': Bars3Icon,
    'bookmark-square': BookmarkSquareIcon,
    'chat-bubble-oval-left-ellipsis': ChatBubbleOvalLeftEllipsisIcon,
    'check-circle-outline': CheckCircleOutlineIcon,
    'check-circle': CheckCircleIcon,
    check: CheckIcon,
    'circle-stack': CircleStackIcon,
    'clock-outline': ClockOutlineIcon,
    'code-bracket-square': CodeBracketSquareIcon,
    'cog-8-tooth': Cog8ToothIcon,
    'document-outline': DocumentOutlineIcon,
    'ellipsis-vertical': EllipsisVerticalIcon,
    'exclamation-circle': ExclamationCircleIcon,
    'fire-outline': FireOutlineIcon,
    fire: FireIcon,
    'folder-music-outline': FolderMusicOutlineIcon,
    'folder-outline': FolderOutlineIcon,
    'folder-plus': FolderPlusIcon,
    'font-size': FontSizeIcon,
    'hand-thumb-up': HandThumbUpIcon,
    'heart-outline': HeartOutlineIcon,
    heart: HeartIcon,
    'home-outline': HomeOutlineIcon,
    identification: IdentificationIcon,
    'inbox-arrow-down': InboxArrowDownIcon,
    'information-circle': InformationCircleIcon,
    javascript: JavascriptIcon,
    'link-slash': LinkSlashIcon,
    link: LinkIcon,
    lyric: LyricIcon,
    'magnifying-glass': MagnifyingGlassIcon,
    minus: MinusIcon,
    'motion-play': MotionPlayIcon,
    'musical-note': MusicalNoteIcon,
    'pause-circle-outline': PauseCircleOutlineIcon,
    pause: PauseIcon,
    'pencil-outline': PencilOutlineIcon,
    'pencil-square': PencilSquareIcon,
    'play-circle-outline': PlayCircleOutlineIcon,
    'play-circle': PlayCircleIcon,
    play: PlayIcon,
    playlist: PlaylistIcon,
    plus: PlusIcon,
    'power-outline': PowerOutlineIcon,
    'repeat-song-1': RepeatSong1Icon,
    'repeat-song': RepeatSongIcon,
    share: ShareIcon,
    'shield-keyhole-outline': ShieldKeyholeOutlineIcon,
    shuffle: ShuffleIcon,
    'skip-left': SkipLeftIcon,
    'skip-right': SkipRightIcon,
    'sort-outline': SortOutlineIcon,
    't-shirt-outline': TShirtOutlineIcon,
    translation: TranslationIcon,
    'trash-outline': TrashOutlineIcon,
    trophy: TrophyIcon,
    user: UserIcon,
    'x-mark': XMarkIcon,
} as const;

export default function Icon(props: IProps) {
    const {name, size} = props;

    const newProps = {
        ...props,
        width: props.width ?? size,
        height: props.width ?? size,
    } as SvgProps;

    const Component = iconMap[name];

    return <Component {...newProps} />;
}
