import { defineComponent, h, markRaw } from 'vue'; import { RiLayoutColumnLine, RiStarFill, RiArrowRightLine, RiArrowLeftLine, RiSendPlaneFill, RiAddFill, RiAddLine, RiArchiveDrawerLine, RiArchiveLine, RiArrowDownLine, RiArrowDownSLine, RiArrowDropDownLine, RiArrowGoBackLine, RiArrowGoForwardLine, RiArrowRightSLine, RiArrowUpLine, RiArrowUpSLine, RiArticleLine, RiBallPenLine, RiBold, RiBookletLine, RiBookmarkFill, RiBookmarkLine, RiBrush2Fill, RiBrush3Fill, RiBrushLine, RiCake3Line, RiCalculatorLine, RiCalendarLine, RiCheckFill, RiCheckLine, RiClipboardLine, RiCloseLine, RiCodeBoxLine, RiCodeLine, RiCupLine, RiDeleteBackLine, RiDeleteBin6Line, RiDeleteColumn, RiDeleteRow, RiDoubleQuotesR, RiDownload2Line, RiDownloadLine, RiDraggable, RiEditLine, RiEmotionLine, RiEmotionUnhappyFill, RiEraserLine, RiErrorWarningLine, RiEyeCloseLine, RiEyeLine, RiFile2Line, RiFileCopyLine, RiFileDownloadLine, RiFileTextFill, RiFileUploadLine, RiFlagLine, RiFocus3Line, RiFolder5Fill, RiFolderAddLine, RiFolderLine, RiFolderOpenFill, RiFolderOpenLine, RiFolderTransferLine, RiFontColor, RiFontSize, RiFootballLine, RiForward5Line, RiGithubFill, RiGlobalLine, RiHeading, RiH1, RiH2, RiH3, RiH4, RiH5, RiH6, RiImageLine, RiInboxUnarchiveLine, RiInformationLine, RiInsertColumnLeft, RiInsertColumnRight, RiInsertRowBottom, RiInsertRowTop, RiItalic, RiKeyboardLine, RiLeafLine, RiLightbulbLine, RiLink, RiLinkUnlinkM, RiListCheck2, RiListOrdered, RiListUnordered, RiLoader4Line, RiLockLine, RiLockUnlockLine, RiLoopRightLine, RiMarkdownLine, RiEvernoteFill, RiMarkPenLine, RiMicLine, RiMoonClearLine, RiMovieLine, RiPagesLine, RiParagraph, RiPauseFill, RiPencilLine, RiPieChart2Line, RiPlaneLine, RiPlayFill, RiPriceTag3Line, RiQuestionLine, RiRefreshLine, RiReplay5Line, RiRestartLine, RiSave3Line, RiSearch2Line, RiSearchLine, RiSettings3Line, RiSettingsLine, RiShare2Line, RiShareLine, RiUserSharedLine, RiHistoryLine, RiSideBarLine, RiShieldCheckLine, RiShieldKeyholeLine, RiSingleQuotesR, RiSortAsc, RiSortDesc, RiSpeedLine, RiSplitCellsHorizontal, RiSplitCellsVertical, RiMergeCellsHorizontal, RiStarLine, RiStopCircleLine, RiStrikethrough, RiSubtractLine, RiSunLine, RiTableLine, RiText, RiTimerLine, RiUnderline, RiVolumeDownFill, RiVolumeMuteFill, RiWindowLine, RiShieldLine, RiAppleFill, RiNotionFill, RiMagicLine, RiAlignLeft, RiAlignCenter, RiAlignRight, RiAlignJustify, RiMicrosoftFill, RiSpaceShip2Line, RiEqualizer3Line, RiExpandWidthLine, RiPrinterLine, RiFileAddLine, RiPaletteLine, RiMore2Fill, RiMoreFill, RiUserLine, RiLogoutBoxRLine, RiExternalLinkLine, RiCloudLine, RiComputerLine, RiFingerprintLine, RiQrCodeLine, RiShieldStarLine, RiDatabase2Line, } from '@remixicon/vue'; const RemixIcons = { riAddFill: RiAddFill, riAddLine: RiAddLine, riArchiveDrawerLine: RiArchiveDrawerLine, riArchiveLine: RiArchiveLine, riArrowDownLine: RiArrowDownLine, riArrowDownSLine: RiArrowDownSLine, riArrowDropDownLine: RiArrowDropDownLine, riArrowGoBackLine: RiArrowGoBackLine, riArrowGoForwardLine: RiArrowGoForwardLine, riArrowRightSLine: RiArrowRightSLine, riArrowUpLine: RiArrowUpLine, riArrowUpSLine: RiArrowUpSLine, riArticleLine: RiArticleLine, riBallPenLine: RiBallPenLine, riBold: RiBold, riBookletLine: RiBookletLine, riBookmarkFill: RiBookmarkFill, riBookmarkLine: RiBookmarkLine, riBrush2Fill: RiBrush2Fill, riBrush3Fill: RiBrush3Fill, riBrushLine: RiBrushLine, riCake3Line: RiCake3Line, riCalculatorLine: RiCalculatorLine, riCalendarLine: RiCalendarLine, riCheckFill: RiCheckFill, riCheckLine: RiCheckLine, riClipboardLine: RiClipboardLine, riCloseLine: RiCloseLine, riCodeBoxLine: RiCodeBoxLine, riCodeLine: RiCodeLine, riCupLine: RiCupLine, riDeleteBackLine: RiDeleteBackLine, riDeleteBin6Line: RiDeleteBin6Line, riDeleteColumn: RiDeleteColumn, riDeleteRow: RiDeleteRow, riDoubleQuotesR: RiDoubleQuotesR, riDownload2Line: RiDownload2Line, riDownloadLine: RiDownloadLine, riDraggable: RiDraggable, riEditLine: RiEditLine, riEmotionLine: RiEmotionLine, riEmotionUnhappyFill: RiEmotionUnhappyFill, riEraserLine: RiEraserLine, riErrorWarningLine: RiErrorWarningLine, riEyeCloseLine: RiEyeCloseLine, riEyeLine: RiEyeLine, riFile2Line: RiFile2Line, riFileCopyLine: RiFileCopyLine, riFileDownloadLine: RiFileDownloadLine, riFileTextFill: RiFileTextFill, riFileUploadLine: RiFileUploadLine, riFlagLine: RiFlagLine, riFocus3Line: RiFocus3Line, riFolder5Fill: RiFolder5Fill, riFolderAddLine: RiFolderAddLine, riFolderLine: RiFolderLine, riFolderOpenFill: RiFolderOpenFill, riFolderOpenLine: RiFolderOpenLine, riFolderTransferLine: RiFolderTransferLine, riFontColor: RiFontColor, riFontSize: RiFontSize, riFootballLine: RiFootballLine, riGithubFill: RiGithubFill, riGlobalLine: RiGlobalLine, riHeading: RiHeading, riH1: RiH1, riH2: RiH2, riH3: RiH3, riH4: RiH4, riH5: RiH5, riH6: RiH6, riImageLine: RiImageLine, riInboxUnarchiveLine: RiInboxUnarchiveLine, riInformationLine: RiInformationLine, riInsertColumnLeft: RiInsertColumnLeft, riInsertColumnRight: RiInsertColumnRight, riInsertRowBottom: RiInsertRowBottom, riInsertRowTop: RiInsertRowTop, riItalic: RiItalic, riKeyboardLine: RiKeyboardLine, riLeafLine: RiLeafLine, riLightbulbLine: RiLightbulbLine, riLink: RiLink, riLinkUnlinkM: RiLinkUnlinkM, riListCheck2: RiListCheck2, riListOrdered: RiListOrdered, riListUnordered: RiListUnordered, riLoader4Line: RiLoader4Line, riLockLine: RiLockLine, riLockUnlockLine: RiLockUnlockLine, riLoopRightLine: RiLoopRightLine, riMarkdownLine: RiMarkdownLine, riMarkPenLine: RiMarkPenLine, riMicLine: RiMicLine, riMoonClearLine: RiMoonClearLine, riMovieLine: RiMovieLine, riPagesLine: RiPagesLine, riParagraph: RiParagraph, riPauseFill: RiPauseFill, riPencilLine: RiPencilLine, riPieChart2Line: RiPieChart2Line, riPlaneLine: RiPlaneLine, riPlayFill: RiPlayFill, riPriceTag3Line: RiPriceTag3Line, riQuestionLine: RiQuestionLine, riRefreshLine: RiRefreshLine, riRestartLine: RiRestartLine, riSave3Line: RiSave3Line, riSearch2Line: RiSearch2Line, riSearchLine: RiSearchLine, riSettings3Line: RiSettings3Line, riSettingsLine: RiSettingsLine, riShare2Line: RiShare2Line, riShareLine: RiShareLine, riUserSharedLine: RiUserSharedLine, riHistoryLine: RiHistoryLine, riSideBarLine: RiSideBarLine, riShieldCheckLine: RiShieldCheckLine, riShieldKeyholeLine: RiShieldKeyholeLine, riSingleQuotesR: RiSingleQuotesR, riSortAsc: RiSortAsc, riSortDesc: RiSortDesc, riSplitCellsHorizontal: RiSplitCellsHorizontal, riSplitCellsVertical: RiSplitCellsVertical, riMergeCellsHorizontal: RiMergeCellsHorizontal, riStarLine: RiStarLine, riStopCircleLine: RiStopCircleLine, riStrikethrough: RiStrikethrough, riSubtractLine: RiSubtractLine, riSunLine: RiSunLine, riTableLine: RiTableLine, riText: RiText, riTimerLine: RiTimerLine, riUnderline: RiUnderline, riVolumeDownFill: RiVolumeDownFill, riVolumeMuteFill: RiVolumeMuteFill, riWindowLine: RiWindowLine, riBack5: RiReplay5Line, riFoward5: RiForward5Line, riSpeedDial: RiSpeedLine, riShieldLine: RiShieldLine, riArrowRightLine: RiArrowRightLine, riArrowLeftLine: RiArrowLeftLine, riStarFill: RiStarFill, riSendPlaneFill: RiSendPlaneFill, riAppleFill: RiAppleFill, riMicrosoftFill: RiMicrosoftFill, riEvernoteFill: RiEvernoteFill, riNotionFill: RiNotionFill, riMagicLine: RiMagicLine, riAlignLeft: RiAlignLeft, riAlignCenter: RiAlignCenter, riAlignRight: RiAlignRight, riAlignJustify: RiAlignJustify, riSpaceShipLine: RiSpaceShip2Line, riLayoutColumnLine: RiLayoutColumnLine, riEqualizer3Line: RiEqualizer3Line, riExpandWidthLine: RiExpandWidthLine, riPrinterLine: RiPrinterLine, riFileAddLine: RiFileAddLine, riPaletteLine: RiPaletteLine, riMore2Fill: RiMore2Fill, riMoreFill: RiMoreFill, riUserLine: RiUserLine, riLogoutBoxRLine: RiLogoutBoxRLine, riExternalLinkLine: RiExternalLinkLine, riCloudLine: RiCloudLine, riComputerLine: RiComputerLine, riFingerprintLine: RiFingerprintLine, riQrCodeLine: RiQrCodeLine, riShieldStarLine: RiShieldStarLine, riDatabase2Line: RiDatabase2Line, }; const customIconPaths = { mdiRegex: { d: 'M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19Z', viewBox: '0 0 24 24', }, simpleNote: { d: 'M89.432 169.864a31.597 31.597 0 0 0 19.708-4.692 32.004 32.004 0 0 0 12.904-15.734c7.394-19.87-7.238-36.687-26.016-41.977a81.867 81.867 0 0 1-34.167-17.292c-9.434-7.925-15.757-18.98-17.834-31.182A54.977 54.977 0 0 1 43.438 43a74.815 74.815 0 0 0-19.732 36.593 75.21 75.21 0 0 0 2.792 41.555 74.602 74.602 0 0 0 24.446 33.576 73.696 73.696 0 0 0 38.487 15.14Zm15.385-147.636c-6.21-.795-12.504.5-17.916 3.685a28.814 28.814 0 0 0-12.038 13.94c-6.203 14.07 3.343 32.401 24.776 38.41a80.164 80.164 0 0 1 32.946 16.287c10.064 7.745 17.067 18.877 19.747 31.389a74.095 74.095 0 0 1 .69 18.061c10.995-13.386 17.003-30.257 16.978-47.672 0-43.615-38.228-73.495-65.183-74.1Z', viewBox: '0 0 192 192', }, obsidian: { d: 'M113.267 17.073a6 6 0 0 1 7.65 1.994l27.365 40.29a6.004 6.004 0 0 1 .938 4.456l-17.75 96.424a6.008 6.008 0 0 1-.614 1.75l-5.615 10.465a6 6 0 0 1-7.159 2.864l-40.966-13.455a5.998 5.998 0 0 1-3.623-3.292L43.896 91.043a6 6 0 0 1 .075-4.981l20.462-43.107a6 6 0 0 1 2.733-2.792l46.101-23.09Zm-46.804 49.59-10.477 22.07 14.724 33.593-3.134-46.802-1.113-8.861Zm15.11 38.283 3.132 46.777 23.595 7.75-26.727-54.527Zm38.451 51.181 16.637-90.375-24.142-14.339-31.464 25.212 38.969 79.502ZM78.167 63.561l28.341-22.708 1.394-7.672-31.566 15.81 1.831 14.57Zm41.066-25.616-.574 3.158 4.558 2.707-3.984-5.865Z', viewBox: '0 0 192 192', }, bear: { d: 'M97.665 1.128c8.311 3.043 17.861 7.524 24.151 13.841 8.731 8.5 17.108 8.707 28.933 8.618q3.397-.071 6.795-.15c4.452-.055 8.903-.083 13.355-.098l3.25-.02c17.367.035 38.424 2.628 51.395 15.32a155 155 0 0 1 7.219 8.676c16.208 20.308 53.693 38.321 79.179 41.653l2.79.031c5.164.297 7.845.92 11.625 4.5 4.945 10.272 1.381 21.158-2.168 31.305-8.635 23.016-25.063 36.792-46.832 46.695-8.535 3.858-16.575 5.498-25.813 6.563l-3.344.4a245 245 0 0 1-19.781 1.475c-8.284.336-14.656 1.591-21 7.125-4.533 6.349-5.677 14.834-5.062 22.437.559 3.236 1.347 6.389 2.187 9.563l.686 2.648c2.944 11.16 6.464 21.879 11.478 32.301a203 203 0 0 1 3.422 7.633c6.536 15.379 14.612 29.548 24.396 43.094 5.131 7.106 9.963 14.4 14.802 21.708a1051 1051 0 0 0 15.22 22.342l1.527 2.203 1.342 1.918c.94 1.59.94 1.59.94 3.59q-38.259.142-76.516.207c-11.844.021-23.688.049-35.532.095q-15.495.061-30.99.074c-5.464.006-10.927.018-16.391.047q-7.734.04-15.468.03-2.818 0-5.637.024c-26.945.211-50.96-6.983-70.654-26.102C4.46 307.713.234 278.529.153 247.331l-.008-2.273q-.022-5.938-.029-11.877c-.005-4.061-.03-8.123-.058-12.184q-.025-4.73-.025-9.459a658 658 0 0 0-.024-4.49c-.066-8.014.164-15.09 3.348-22.549a958 958 0 0 0 2-6.625c1.046-3.434 2.084-6.789 3.562-10.062 1.51-3.481 2.57-6.943 3.594-10.59 11.452-36.955 30.745-83.577 60.844-109.723h2l-.08-2.348c-.912-31.08-.912-31.08 6.431-41.585 4.437-4.574 10.3-3.979 15.957-2.438', viewBox: '0 0 329 357', }, }; function createSvgIcon(iconName, d, viewBox = '0 0 24 24') { return defineComponent({ name: iconName, props: { size: { type: [String, Number], default: 24 }, color: { type: String, default: 'currentColor' }, }, render() { return h( 'svg', { width: this.size, height: this.size, viewBox, fill: this.color, xmlns: 'http://www.w3.org/2000/svg', }, [h('path', { d })] ); }, }); } const CustomIcons = Object.fromEntries( Object.entries(customIconPaths).map(([name, { d, viewBox }]) => [ name, createSvgIcon(name, d, viewBox), ]) ); export default { install(app) { app.component( 'v-remixicon', defineComponent({ name: 'v-remixicon', props: { name: { type: String, required: true }, size: { type: [String, Number], default: 24 }, color: { type: String, default: 'currentColor' }, }, render() { const RemixIcon = RemixIcons?.[this.name]; if (RemixIcon) { return h(markRaw(RemixIcon), { size: String(this.size), color: this.color, }); } const CustomIcon = CustomIcons?.[this.name]; if (CustomIcon) { return h(CustomIcon, { size: this.size, color: this.color }); } console.warn(`[v-remixicon] Unknown icon: "${this.name}"`); return h('span', { style: `display:inline-block;width:${this.size}px;height:${this.size}px`, }); }, }) ); }, };