diff --git a/invokeai/frontend/web/src/common/components/InvTabs/theme.ts b/invokeai/frontend/web/src/common/components/InvTabs/theme.ts index 70296bc3b5..3530d65ca7 100644 --- a/invokeai/frontend/web/src/common/components/InvTabs/theme.ts +++ b/invokeai/frontend/web/src/common/components/InvTabs/theme.ts @@ -42,9 +42,9 @@ const line = definePartsStyle(() => ({ px: 4, py: 1, fontSize: 'sm', - color: 'base.400', + color: 'base.200', _selected: { - color: 'blue.400', + color: 'blue.200', }, }, tabpanel: { diff --git a/invokeai/frontend/web/src/features/canvas/components/ClearCanvasHistoryButtonModal.tsx b/invokeai/frontend/web/src/features/canvas/components/ClearCanvasHistoryButtonModal.tsx index 28d3fb4024..422ec78640 100644 --- a/invokeai/frontend/web/src/features/canvas/components/ClearCanvasHistoryButtonModal.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/ClearCanvasHistoryButtonModal.tsx @@ -6,7 +6,7 @@ import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; import { clearCanvasHistory } from 'features/canvas/store/canvasSlice'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaTrash } from 'react-icons/fa'; +import { PiTrashSimpleFill } from 'react-icons/pi'; const ClearCanvasHistoryButtonModal = () => { const isStaging = useAppSelector(isStagingSelector); @@ -23,7 +23,7 @@ const ClearCanvasHistoryButtonModal = () => { } + leftIcon={} isDisabled={isStaging} > {t('unifiedCanvas.clearCanvasHistory')} diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx index 7823e068ea..10ccbc2376 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx @@ -19,14 +19,14 @@ import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { - FaArrowLeft, - FaArrowRight, - FaCheck, - FaEye, - FaEyeSlash, - FaSave, - FaTimes, -} from 'react-icons/fa'; + PiArrowLeftBold, + PiArrowRightBold, + PiCheckBold, + PiEyeBold, + PiEyeSlashBold, + PiFloppyDiskBold, + PiXBold, +} from 'react-icons/pi'; import { useGetImageDTOQuery } from 'services/api/endpoints/images'; const selector = createMemoizedSelector(selectCanvasSlice, (canvas) => { @@ -140,7 +140,7 @@ const IAICanvasStagingAreaToolbar = () => { } + icon={} onClick={handlePrevImage} colorScheme="invokeBlue" isDisabled={!shouldShowStagingImage} @@ -154,7 +154,7 @@ const IAICanvasStagingAreaToolbar = () => { } + icon={} onClick={handleNextImage} colorScheme="invokeBlue" isDisabled={!shouldShowStagingImage} @@ -164,7 +164,7 @@ const IAICanvasStagingAreaToolbar = () => { } + icon={} onClick={handleAccept} colorScheme="invokeBlue" /> @@ -180,7 +180,7 @@ const IAICanvasStagingAreaToolbar = () => { : t('unifiedCanvas.showResultsOff') } data-alert={!shouldShowStagingImage} - icon={shouldShowStagingImage ? : } + icon={shouldShowStagingImage ? : } onClick={handleToggleShouldShowStagingImage} colorScheme="invokeBlue" /> @@ -188,14 +188,14 @@ const IAICanvasStagingAreaToolbar = () => { tooltip={t('unifiedCanvas.saveToGallery')} aria-label={t('unifiedCanvas.saveToGallery')} isDisabled={!imageDTO || !imageDTO.is_intermediate} - icon={} + icon={} onClick={handleSaveToGallery} colorScheme="invokeBlue" /> } + icon={} onClick={handleDiscardStagingArea} colorScheme="error" fontSize={20} diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasMaskOptions.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasMaskOptions.tsx index e237b9e3e1..ea17c25b52 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasMaskOptions.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasMaskOptions.tsx @@ -25,7 +25,11 @@ import { memo, useCallback } from 'react'; import type { RgbaColor } from 'react-colorful'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; -import { FaMask, FaSave, FaTrash } from 'react-icons/fa'; +import { + PiExcludeBold, + PiFloppyDiskBackFill, + PiTrashSimpleFill, +} from 'react-icons/pi'; const IAICanvasMaskOptions = () => { const dispatch = useAppDispatch(); @@ -110,7 +114,7 @@ const IAICanvasMaskOptions = () => { } + icon={} isChecked={layer === 'mask'} isDisabled={isStaging} /> @@ -136,12 +140,16 @@ const IAICanvasMaskOptions = () => { onChange={handleChangeMaskColor} /> - } onClick={handleSaveMask}> + } + onClick={handleSaveMask} + > {t('unifiedCanvas.saveMask')} } + leftIcon={} onClick={handleClearMask} > {t('unifiedCanvas.clearMask')} diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx index 2bf6811d43..c08f3344ac 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx @@ -5,7 +5,7 @@ import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; -import { FaRedo } from 'react-icons/fa'; +import { PiArrowClockwiseBold } from 'react-icons/pi'; const IAICanvasRedoButton = () => { const dispatch = useAppDispatch(); @@ -34,7 +34,7 @@ const IAICanvasRedoButton = () => { } + icon={} onClick={handleRedo} isDisabled={!canRedo} /> diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasSettingsButtonPopover.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasSettingsButtonPopover.tsx index 892ddfe7f3..8dbdb8c9b3 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasSettingsButtonPopover.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasSettingsButtonPopover.tsx @@ -24,7 +24,7 @@ import type { ChangeEvent } from 'react'; import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; -import { FaWrench } from 'react-icons/fa'; +import { PiGearSixBold } from 'react-icons/pi'; const IAICanvasSettingsButtonPopover = () => { const dispatch = useAppDispatch(); @@ -114,7 +114,7 @@ const IAICanvasSettingsButtonPopover = () => { } + icon={} /> diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx index a75af33587..ec7ecacb6f 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx @@ -26,13 +26,13 @@ import type { RgbaColor } from 'react-colorful'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { - FaEraser, - FaEyeDropper, - FaFillDrip, - FaPaintBrush, - FaSlidersH, - FaTimes, -} from 'react-icons/fa'; + PiEraserBold, + PiEyedropperBold, + PiPaintBrushBold, + PiPaintBucketBold, + PiSlidersHorizontalBold, + PiXBold, +} from 'react-icons/pi'; const IAICanvasToolChooserOptions = () => { const dispatch = useAppDispatch(); @@ -198,7 +198,7 @@ const IAICanvasToolChooserOptions = () => { } + icon={} isChecked={tool === 'brush' && !isStaging} onClick={handleSelectBrushTool} isDisabled={isStaging} @@ -206,7 +206,7 @@ const IAICanvasToolChooserOptions = () => { } + icon={} isChecked={tool === 'eraser' && !isStaging} isDisabled={isStaging} onClick={handleSelectEraserTool} @@ -214,21 +214,21 @@ const IAICanvasToolChooserOptions = () => { } + icon={} isDisabled={isStaging} onClick={handleFillRect} /> } + icon={} isDisabled={isStaging} onClick={handleEraseBoundingBox} /> } + icon={} isChecked={tool === 'colorPicker' && !isStaging} isDisabled={isStaging} onClick={handleSelectColorPickerTool} @@ -238,7 +238,7 @@ const IAICanvasToolChooserOptions = () => { } + icon={} /> diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx index bfbd78be60..09b9141ae9 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx @@ -30,15 +30,15 @@ import { memo, useCallback, useMemo } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { - FaArrowsAlt, - FaCopy, - FaCrosshairs, - FaDownload, - FaLayerGroup, - FaSave, - FaTrash, - FaUpload, -} from 'react-icons/fa'; + PiCopyBold, + PiCrosshairSimpleBold, + PiDownloadSimpleBold, + PiFloppyDiskBold, + PiHandGrabbingBold, + PiStackBold, + PiTrashSimpleBold, + PiUploadSimpleBold, +} from 'react-icons/pi'; import IAICanvasMaskOptions from './IAICanvasMaskOptions'; import IAICanvasRedoButton from './IAICanvasRedoButton'; @@ -217,14 +217,14 @@ const IAICanvasToolbar = () => { } + icon={} isChecked={tool === 'move' || isStaging} onClick={handleSelectMoveTool} /> } + icon={} onClick={handleClickResetCanvasView} /> @@ -233,14 +233,14 @@ const IAICanvasToolbar = () => { } + icon={} onClick={handleMergeVisible} isDisabled={isStaging} /> } + icon={} onClick={handleSaveToGallery} isDisabled={isStaging} /> @@ -248,7 +248,7 @@ const IAICanvasToolbar = () => { } + icon={} onClick={handleCopyImageToClipboard} isDisabled={isStaging} /> @@ -256,7 +256,7 @@ const IAICanvasToolbar = () => { } + icon={} onClick={handleDownloadAsImage} isDisabled={isStaging} /> @@ -270,7 +270,7 @@ const IAICanvasToolbar = () => { } + icon={} isDisabled={isStaging} {...getUploadButtonProps()} /> @@ -278,7 +278,7 @@ const IAICanvasToolbar = () => { } + icon={} onClick={handleResetCanvas} colorScheme="error" isDisabled={isStaging} diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx index 544ef585b3..8a05e86476 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx @@ -5,7 +5,7 @@ import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; -import { FaUndo } from 'react-icons/fa'; +import { PiArrowCounterClockwiseBold } from 'react-icons/pi'; const IAICanvasUndoButton = () => { const dispatch = useAppDispatch(); @@ -33,7 +33,7 @@ const IAICanvasUndoButton = () => { } + icon={} onClick={handleUndo} isDisabled={!canUndo} /> diff --git a/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterConfig.tsx b/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterConfig.tsx index 67acf503d8..1031e6bf27 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterConfig.tsx +++ b/invokeai/frontend/web/src/features/controlAdapters/components/ControlAdapterConfig.tsx @@ -16,7 +16,7 @@ import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import type { ChangeEvent } from 'react'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaCopy, FaTrash } from 'react-icons/fa'; +import { PiCopyBold, PiTrashSimpleBold } from 'react-icons/pi'; import { useToggle } from 'react-use'; import ControlAdapterImagePreview from './ControlAdapterImagePreview'; @@ -106,7 +106,7 @@ const ControlAdapterConfig = (props: { id: string; number: number }) => { tooltip={t('controlnet.duplicate')} aria-label={t('controlnet.duplicate')} onClick={handleDuplicate} - icon={} + icon={} /> { aria-label={t('controlnet.delete')} colorScheme="error" onClick={handleDelete} - icon={} + icon={} /> { variant="ghost" icon={ { - + diff --git a/invokeai/frontend/web/src/features/controlAdapters/components/imports/ControlNetCanvasImageImports.tsx b/invokeai/frontend/web/src/features/controlAdapters/components/imports/ControlNetCanvasImageImports.tsx index bde576ef12..09b54c6375 100644 --- a/invokeai/frontend/web/src/features/controlAdapters/components/imports/ControlNetCanvasImageImports.tsx +++ b/invokeai/frontend/web/src/features/controlAdapters/components/imports/ControlNetCanvasImageImports.tsx @@ -7,7 +7,7 @@ import { } from 'features/canvas/store/actions'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaImage, FaMask } from 'react-icons/fa'; +import { PiExcludeBold, PiImageSquareBold } from 'react-icons/pi'; type ControlNetCanvasImageImportsProps = { id: string; @@ -29,17 +29,17 @@ const ControlNetCanvasImageImports = ( }, [id, dispatch]); return ( - + } + icon={} tooltip={t('controlnet.importImageFromCanvas')} aria-label={t('controlnet.importImageFromCanvas')} onClick={handleImportImageFromCanvas} /> } + icon={} tooltip={t('controlnet.importMaskFromCanvas')} aria-label={t('controlnet.importMaskFromCanvas')} onClick={handleImportMaskFromCanvas} diff --git a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx index 69741a45fc..ca63eb5270 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx +++ b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx @@ -3,7 +3,7 @@ import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; import type { InvIconButtonProps } from 'common/components/InvIconButton/types'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaTrash } from 'react-icons/fa'; +import { PiTrashSimpleBold } from 'react-icons/pi'; type DeleteImageButtonProps = Omit & { onClick: () => void; @@ -17,7 +17,7 @@ export const DeleteImageButton = memo((props: DeleteImageButtonProps) => { return ( } + icon={} tooltip={`${t('gallery.deleteImage')} (Del)`} aria-label={`${t('gallery.deleteImage')} (Del)`} isDisabled={isDisabled || !isConnected} diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx index 214633074f..7439d75c7c 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx @@ -1,7 +1,7 @@ import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaPlus } from 'react-icons/fa'; +import { PiPlusBold } from 'react-icons/pi'; import { useCreateBoardMutation } from 'services/api/endpoints/boards'; const AddBoardButton = () => { @@ -14,7 +14,7 @@ const AddBoardButton = () => { return ( } + icon={} isLoading={isLoading} tooltip={t('boards.addBoard')} aria-label={t('boards.addBoard')} diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsSearch.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsSearch.tsx index 193fdf0982..67ee4bf54c 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsSearch.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsSearch.tsx @@ -1,4 +1,3 @@ -import { CloseIcon } from '@chakra-ui/icons'; import { Input, InputGroup, InputRightElement } from '@chakra-ui/react'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; @@ -6,6 +5,7 @@ import { boardSearchTextChanged } from 'features/gallery/store/gallerySlice'; import type { ChangeEvent, KeyboardEvent } from 'react'; import { memo, useCallback, useEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; +import { PiXBold } from 'react-icons/pi'; const BoardsSearch = () => { const dispatch = useAppDispatch(); @@ -66,7 +66,7 @@ const BoardsSearch = () => { size="sm" variant="ghost" aria-label={t('boards.clearSearch')} - icon={} + icon={} /> )} diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx index 1f5368b089..20340713ed 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx @@ -151,7 +151,7 @@ const DeleteBoardModal = (props: Props) => { - + {t('boards.cancel')} diff --git a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx index 0b131b922a..32915eae8a 100644 --- a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx @@ -29,14 +29,15 @@ import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { - FaAsterisk, - FaCode, - FaHourglassHalf, - FaQuoteRight, - FaRulerVertical, - FaSeedling, -} from 'react-icons/fa'; -import { FaCircleNodes, FaEllipsis } from 'react-icons/fa6'; + PiAsteriskBold, + PiDotsThreeOutlineFill, + PiFlowArrowBold, + PiHourglassHighBold, + PiInfoBold, + PiPlantBold, + PiQuotesBold, + PiRulerBold, +} from 'react-icons/pi'; import { useGetImageDTOQuery } from 'services/api/endpoints/images'; import { useDebouncedMetadata } from 'services/api/hooks/useDebouncedMetadata'; @@ -210,7 +211,7 @@ const CurrentImageButtons = () => { aria-label={t('parameters.imageActions')} tooltip={t('parameters.imageActions')} isDisabled={!imageDTO} - icon={} + icon={} /> {imageDTO && } @@ -220,7 +221,7 @@ const CurrentImageButtons = () => { } + icon={} tooltip={`${t('nodes.loadWorkflow')} (W)`} aria-label={`${t('nodes.loadWorkflow')} (W)`} isDisabled={!imageDTO?.has_workflow} @@ -229,7 +230,7 @@ const CurrentImageButtons = () => { /> } + icon={} tooltip={`${t('parameters.usePrompt')} (P)`} aria-label={`${t('parameters.usePrompt')} (P)`} isDisabled={!metadata?.positive_prompt} @@ -237,7 +238,7 @@ const CurrentImageButtons = () => { /> } + icon={} tooltip={`${t('parameters.useSeed')} (S)`} aria-label={`${t('parameters.useSeed')} (S)`} isDisabled={metadata?.seed === null || metadata?.seed === undefined} @@ -245,7 +246,7 @@ const CurrentImageButtons = () => { /> } + icon={} tooltip={`${t('parameters.useSize')} (D)`} aria-label={`${t('parameters.useSize')} (D)`} isDisabled={ @@ -258,7 +259,7 @@ const CurrentImageButtons = () => { /> } + icon={} tooltip={`${t('parameters.useAll')} (A)`} aria-label={`${t('parameters.useAll')} (A)`} isDisabled={!metadata} @@ -274,7 +275,7 @@ const CurrentImageButtons = () => { } + icon={} tooltip={`${t('parameters.info')} (I)`} aria-label={`${t('parameters.info')} (I)`} isChecked={shouldShowImageDetails} @@ -286,7 +287,7 @@ const CurrentImageButtons = () => { } + icon={} isChecked={shouldShowProgressInViewer} onClick={handleClickProgressImagesToggle} /> diff --git a/invokeai/frontend/web/src/features/gallery/components/GallerySettingsPopover.tsx b/invokeai/frontend/web/src/features/gallery/components/GallerySettingsPopover.tsx index e60dab8257..0554f87f45 100644 --- a/invokeai/frontend/web/src/features/gallery/components/GallerySettingsPopover.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/GallerySettingsPopover.tsx @@ -19,7 +19,7 @@ import { import type { ChangeEvent } from 'react'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaWrench } from 'react-icons/fa'; +import { RiSettings4Fill } from 'react-icons/ri'; import BoardAutoAddSelect from './Boards/BoardAutoAddSelect'; @@ -61,7 +61,7 @@ const GallerySettingsPopover = () => { tooltip={t('gallery.gallerySettings')} aria-label={t('gallery.gallerySettings')} size="sm" - icon={} + icon={} /> diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx index 2361e5a294..86967af520 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx @@ -2,6 +2,7 @@ import { useStore } from '@nanostores/react'; import { $customStarUI } from 'app/store/nanostores/customStarUI'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { InvMenuItem } from 'common/components/InvMenu/InvMenuItem'; +import { InvMenuDivider } from 'common/components/InvMenu/wrapper'; import { imagesToChangeSelected, isModalOpenChanged, @@ -11,8 +12,13 @@ import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { addToast } from 'features/system/store/systemSlice'; import { memo, useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaDownload, FaFolder, FaTrash } from 'react-icons/fa'; -import { MdStar, MdStarBorder } from 'react-icons/md'; +import { + PiDownloadSimpleBold, + PiFoldersBold, + PiStarBold, + PiStarFill, + PiTrashSimpleBold, +} from 'react-icons/pi'; import { useBulkDownloadImagesMutation, useStarImagesMutation, @@ -90,7 +96,7 @@ const MultipleSelectionMenuItems = () => { <> {areAllStarred && ( } + icon={customStarUi ? customStarUi.on.icon : } onClickCapture={handleUnstarSelection} > {customStarUi ? customStarUi.off.text : `Unstar All`} @@ -98,23 +104,27 @@ const MultipleSelectionMenuItems = () => { )} {(areAllUnstarred || (!areAllStarred && !areAllUnstarred)) && ( } + icon={customStarUi ? customStarUi.on.icon : } onClickCapture={handleStarSelection} > {customStarUi ? customStarUi.on.text : `Star All`} )} {isBulkDownloadEnabled && ( - } onClickCapture={handleBulkDownload}> + } + onClickCapture={handleBulkDownload} + > {t('gallery.downloadSelection')} )} - } onClickCapture={handleChangeBoard}> + } onClickCapture={handleChangeBoard}> {t('boards.changeBoard')} + } + icon={} onClickCapture={handleDeleteSelection} > {t('gallery.deleteSelection')} diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx index dbcca55ff6..17c37aae1a 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx @@ -4,6 +4,7 @@ import { useAppToaster } from 'app/components/Toaster'; import { $customStarUI } from 'app/store/nanostores/customStarUI'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { InvMenuItem } from 'common/components/InvMenu/InvMenuItem'; +import { InvMenuDivider } from 'common/components/InvMenu/wrapper'; import { useCopyImageToClipboard } from 'common/hooks/useCopyImageToClipboard'; import { setInitialCanvasImage } from 'features/canvas/store/canvasSlice'; import { @@ -25,18 +26,18 @@ import { memo, useCallback } from 'react'; import { flushSync } from 'react-dom'; import { useTranslation } from 'react-i18next'; import { - FaAsterisk, - FaCopy, - FaDownload, - FaExternalLinkAlt, - FaFolder, - FaQuoteRight, - FaSeedling, - FaShare, - FaTrash, -} from 'react-icons/fa'; -import { FaCircleNodes } from 'react-icons/fa6'; -import { MdStar, MdStarBorder } from 'react-icons/md'; + PiAsteriskBold, + PiCopyBold, + PiDownloadSimpleBold, + PiFlowArrowBold, + PiFoldersBold, + PiPlantBold, + PiQuotesBold, + PiShareFatBold, + PiStarBold, + PiStarFill, + PiTrashSimpleBold, +} from 'react-icons/pi'; import { useStarImagesMutation, useUnstarImagesMutation, @@ -155,12 +156,12 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { as="a" href={imageDTO.image_url} target="_blank" - icon={} + icon={} > {t('common.openInNewTab')} {isClipboardAPIAvailable && ( - } onClickCapture={handleCopyImage}> + } onClickCapture={handleCopyImage}> {t('parameters.copyImage')} )} @@ -169,17 +170,18 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { download={true} href={imageDTO.image_url} target="_blank" - icon={} + icon={} w="100%" > {t('parameters.downloadImage')} + ) : ( - + ) } onClickCapture={handleLoadWorkflow} @@ -188,7 +190,7 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { {t('nodes.loadWorkflow')} : } + icon={isLoadingMetadata ? : } onClickCapture={handleRecallPrompt} isDisabled={ isLoadingMetadata || @@ -199,21 +201,22 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { {t('parameters.usePrompt')} : } + icon={isLoadingMetadata ? : } onClickCapture={handleRecallSeed} isDisabled={isLoadingMetadata || metadata?.seed === undefined} > {t('parameters.useSeed')} : } + icon={isLoadingMetadata ? : } onClickCapture={handleUseAllParameters} isDisabled={isLoadingMetadata || !metadata} > {t('parameters.useAll')} + } + icon={} onClickCapture={handleSendToImageToImage} id="send-to-img2img" > @@ -221,34 +224,36 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { {isCanvasEnabled && ( } + icon={} onClickCapture={handleSendToCanvas} id="send-to-canvas" > {t('parameters.sendToUnifiedCanvas')} )} - } onClickCapture={handleChangeBoard}> + + } onClickCapture={handleChangeBoard}> {t('boards.changeBoard')} {imageDTO.starred ? ( } + icon={customStarUi ? customStarUi.off.icon : } onClickCapture={handleUnstarImage} > {customStarUi ? customStarUi.off.text : t('gallery.unstarImage')} ) : ( } + icon={customStarUi ? customStarUi.on.icon : } onClickCapture={handleStarImage} > {customStarUi ? customStarUi.on.text : t('gallery.starImage')} )} + } + icon={} onClickCapture={handleDelete} > {t('gallery.deleteImage')} diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageGalleryContent.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageGalleryContent.tsx index fed5eecce8..458661b3f3 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageGalleryContent.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageGalleryContent.tsx @@ -15,7 +15,8 @@ import { InvButtonGroup } from 'common/components/InvButtonGroup/InvButtonGroup' import { galleryViewChanged } from 'features/gallery/store/gallerySlice'; import { memo, useCallback, useRef } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaImages, FaServer } from 'react-icons/fa'; +import { PiImagesBold } from 'react-icons/pi'; +import { RiServerLine } from 'react-icons/ri'; import BoardsList from './Boards/BoardsList/BoardsList'; import GalleryBoardName from './GalleryBoardName'; @@ -83,7 +84,7 @@ const ImageGalleryContent = () => { isChecked={galleryView === 'images'} onClick={handleClickImages} w="full" - leftIcon={} + leftIcon={} data-testid="images-tab" > {t('parameters.images')} @@ -94,7 +95,7 @@ const ImageGalleryContent = () => { isChecked={galleryView === 'assets'} onClick={handleClickAssets} w="full" - leftIcon={} + leftIcon={} data-testid="assets-tab" > {t('gallery.assets')} diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImage.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImage.tsx index 78689795ba..3e0d206607 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImage.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImage.tsx @@ -19,8 +19,7 @@ import { useScrollIntoView } from 'features/gallery/hooks/useScrollIntoView'; import type { MouseEvent } from 'react'; import { memo, useCallback, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaTrash } from 'react-icons/fa'; -import { MdStar, MdStarBorder } from 'react-icons/md'; +import { PiStarBold, PiStarFill, PiTrashSimpleFill } from 'react-icons/pi'; import { useGetImageDTOQuery, useStarImagesMutation, @@ -112,10 +111,10 @@ const GalleryImage = (props: HoverableImageProps) => { const starIcon = useMemo(() => { if (imageDTO?.starred) { - return customStarUi ? customStarUi.on.icon : ; + return customStarUi ? customStarUi.on.icon : ; } if (!imageDTO?.starred && isHovered) { - return customStarUi ? customStarUi.off.icon : ; + return customStarUi ? customStarUi.off.icon : ; } }, [imageDTO?.starred, isHovered, customStarUi]); @@ -177,7 +176,7 @@ const GalleryImage = (props: HoverableImageProps) => { {isHovered && shift && ( } + icon={} tooltip={t('gallery.deleteImage')} styleOverrides={imageIconStyleOverrides} /> diff --git a/invokeai/frontend/web/src/features/modelManager/components/SyncModels/SyncModelsButton.tsx b/invokeai/frontend/web/src/features/modelManager/components/SyncModels/SyncModelsButton.tsx index 8bd63b40c4..06875df44e 100644 --- a/invokeai/frontend/web/src/features/modelManager/components/SyncModels/SyncModelsButton.tsx +++ b/invokeai/frontend/web/src/features/modelManager/components/SyncModels/SyncModelsButton.tsx @@ -3,7 +3,7 @@ import type { InvButtonProps } from 'common/components/InvButton/types'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaSync } from 'react-icons/fa'; +import { PiArrowsClockwiseBold } from 'react-icons/pi'; import { useSyncModels } from './useSyncModels'; @@ -21,7 +21,7 @@ export const SyncModelsButton = memo( } + leftIcon={} minW="max-content" {...props} > diff --git a/invokeai/frontend/web/src/features/modelManager/components/SyncModels/SyncModelsIconButton.tsx b/invokeai/frontend/web/src/features/modelManager/components/SyncModels/SyncModelsIconButton.tsx index 790484d753..33b0c97c32 100644 --- a/invokeai/frontend/web/src/features/modelManager/components/SyncModels/SyncModelsIconButton.tsx +++ b/invokeai/frontend/web/src/features/modelManager/components/SyncModels/SyncModelsIconButton.tsx @@ -3,7 +3,7 @@ import type { InvIconButtonProps } from 'common/components/InvIconButton/types'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaSync } from 'react-icons/fa'; +import { PiArrowsClockwiseBold } from 'react-icons/pi'; import { useSyncModels } from './useSyncModels'; @@ -19,7 +19,7 @@ export const SyncModelsIconButton = memo( return ( } + icon={} tooltip={t('modelManager.syncModels')} aria-label={t('modelManager.syncModels')} isLoading={isLoading} diff --git a/invokeai/frontend/web/src/features/modelManager/subpanels/ModelManagerPanel/ModelListItem.tsx b/invokeai/frontend/web/src/features/modelManager/subpanels/ModelManagerPanel/ModelListItem.tsx index 0e5ef5b35a..e9c0dc670b 100644 --- a/invokeai/frontend/web/src/features/modelManager/subpanels/ModelManagerPanel/ModelListItem.tsx +++ b/invokeai/frontend/web/src/features/modelManager/subpanels/ModelManagerPanel/ModelListItem.tsx @@ -1,4 +1,3 @@ -import { DeleteIcon } from '@chakra-ui/icons'; import { Badge, Flex, useDisclosure } from '@chakra-ui/react'; import { useAppDispatch } from 'app/store/storeHooks'; import { InvButton } from 'common/components/InvButton/InvButton'; @@ -11,6 +10,7 @@ import { addToast } from 'features/system/store/systemSlice'; import { makeToast } from 'features/system/util/makeToast'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; +import { PiTrashSimpleBold } from 'react-icons/pi'; import type { LoRAModelConfigEntity, MainModelConfigEntity, @@ -109,7 +109,7 @@ const ModelListItem = (props: ModelListItemProps) => { } + icon={} aria-label={t('modelManager.deleteConfig')} colorScheme="error" /> diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/BottomLeftPanel/ViewportControls.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/BottomLeftPanel/ViewportControls.tsx index e4ac98a109..452e21ca9d 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/BottomLeftPanel/ViewportControls.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/BottomLeftPanel/ViewportControls.tsx @@ -8,11 +8,11 @@ import { import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { - FaExpand, - // FaInfo, - FaMapMarkerAlt, -} from 'react-icons/fa'; -import { FaMagnifyingGlassMinus, FaMagnifyingGlassPlus } from 'react-icons/fa6'; + PiFrameCornersBold, + PiMagnifyingGlassMinusBold, + PiMagnifyingGlassPlusBold, + PiMapPinBold, +} from 'react-icons/pi'; import { useReactFlow } from 'reactflow'; const ViewportControls = () => { @@ -52,19 +52,19 @@ const ViewportControls = () => { tooltip={t('nodes.zoomInNodes')} aria-label={t('nodes.zoomInNodes')} onClick={handleClickedZoomIn} - icon={} + icon={} /> } + icon={} /> } + icon={} /> {/* { } isChecked={shouldShowMinimapPanel} onClick={handleClickedToggleMiniMapPanel} - icon={} + icon={} /> ); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/AddNodeButton.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/AddNodeButton.tsx index c4b6bc3b23..1e99a521db 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/AddNodeButton.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopPanel/AddNodeButton.tsx @@ -3,7 +3,7 @@ import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; import { addNodePopoverOpened } from 'features/nodes/store/nodesSlice'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaPlus } from 'react-icons/fa'; +import { PiPlusBold } from 'react-icons/pi'; const AddNodeButton = () => { const dispatch = useAppDispatch(); @@ -16,7 +16,7 @@ const AddNodeButton = () => { } + icon={} onClick={handleOpenAddNodePopover} pointerEvents="auto" /> diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/ReloadSchemaButton.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/ReloadSchemaButton.tsx index 08f3a4485e..abdeecbca5 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/ReloadSchemaButton.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/ReloadSchemaButton.tsx @@ -2,7 +2,7 @@ import { useAppDispatch } from 'app/store/storeHooks'; import { InvButton } from 'common/components/InvButton/InvButton'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaSyncAlt } from 'react-icons/fa'; +import { PiArrowsClockwiseBold } from 'react-icons/pi'; import { receivedOpenAPISchema } from 'services/api/thunks/schema'; const ReloadNodeTemplatesButton = () => { @@ -15,7 +15,7 @@ const ReloadNodeTemplatesButton = () => { return ( } + leftIcon={} tooltip={t('nodes.reloadNodeTemplates')} aria-label={t('nodes.reloadNodeTemplates')} onClick={handleReloadSchema} diff --git a/invokeai/frontend/web/src/features/parameters/components/ImageSize/LockAspectRatioButton.tsx b/invokeai/frontend/web/src/features/parameters/components/ImageSize/LockAspectRatioButton.tsx index 869cf73d02..a52729d7ed 100644 --- a/invokeai/frontend/web/src/features/parameters/components/ImageSize/LockAspectRatioButton.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/ImageSize/LockAspectRatioButton.tsx @@ -2,7 +2,7 @@ import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; import { useImageSizeContext } from 'features/parameters/components/ImageSize/ImageSizeContext'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaLock, FaLockOpen } from 'react-icons/fa6'; +import { PiLockSimpleFill, PiLockSimpleOpenBold } from 'react-icons/pi'; export const LockAspectRatioButton = memo(() => { const { t } = useTranslation(); @@ -18,7 +18,13 @@ export const LockAspectRatioButton = memo(() => { onClick={onClick} variant={ctx.aspectRatioState.isLocked ? 'outline' : 'ghost'} size="sm" - icon={ctx.aspectRatioState.isLocked ? : } + icon={ + ctx.aspectRatioState.isLocked ? ( + + ) : ( + + ) + } /> ); }); diff --git a/invokeai/frontend/web/src/features/parameters/components/ImageSize/SetOptimalSizeButton.tsx b/invokeai/frontend/web/src/features/parameters/components/ImageSize/SetOptimalSizeButton.tsx index b51e7a0aad..92bba667bf 100644 --- a/invokeai/frontend/web/src/features/parameters/components/ImageSize/SetOptimalSizeButton.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/ImageSize/SetOptimalSizeButton.tsx @@ -8,7 +8,7 @@ import { } from 'features/parameters/util/optimalDimension'; import { memo, useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { IoSparkles } from 'react-icons/io5'; +import { RiSparklingFill } from 'react-icons/ri'; export const SetOptimalSizeButton = memo(() => { const { t } = useTranslation(); @@ -42,7 +42,7 @@ export const SetOptimalSizeButton = memo(() => { onClick={onClick} variant="ghost" size="sm" - icon={} + icon={} colorScheme={isSizeTooSmall || isSizeTooLarge ? 'warning' : 'base'} /> ); diff --git a/invokeai/frontend/web/src/features/parameters/components/ImageSize/SwapDimensionsButton.tsx b/invokeai/frontend/web/src/features/parameters/components/ImageSize/SwapDimensionsButton.tsx index d5d0921bea..46f0c1476e 100644 --- a/invokeai/frontend/web/src/features/parameters/components/ImageSize/SwapDimensionsButton.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/ImageSize/SwapDimensionsButton.tsx @@ -2,7 +2,7 @@ import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; import { useImageSizeContext } from 'features/parameters/components/ImageSize/ImageSizeContext'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { IoSwapVertical } from 'react-icons/io5'; +import { PiArrowsDownUpBold } from 'react-icons/pi'; export const SwapDimensionsButton = memo(() => { const { t } = useTranslation(); @@ -17,7 +17,7 @@ export const SwapDimensionsButton = memo(() => { onClick={onClick} variant="ghost" size="sm" - icon={} + icon={} /> ); }); diff --git a/invokeai/frontend/web/src/features/parameters/components/ImageToImage/InitialImageDisplay.tsx b/invokeai/frontend/web/src/features/parameters/components/ImageToImage/InitialImageDisplay.tsx index 0a317bce47..145f056136 100644 --- a/invokeai/frontend/web/src/features/parameters/components/ImageToImage/InitialImageDisplay.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/ImageToImage/InitialImageDisplay.tsx @@ -12,7 +12,11 @@ import { import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; -import { FaRulerVertical, FaUndo, FaUpload } from 'react-icons/fa'; +import { + PiArrowCounterClockwiseBold, + PiRulerBold, + PiUploadSimpleBold, +} from 'react-icons/pi'; import type { PostUploadAction } from 'services/api/types'; import InitialImage from './InitialImage'; @@ -80,20 +84,20 @@ const InitialImageDisplay = () => { } + icon={} {...getUploadButtonProps()} /> } + icon={} onClick={handleUseSizeInitialImage} isDisabled={!initialImage} /> } + icon={} onClick={handleReset} isDisabled={!initialImage} /> diff --git a/invokeai/frontend/web/src/features/parameters/components/Seed/ParamSeedShuffle.tsx b/invokeai/frontend/web/src/features/parameters/components/Seed/ParamSeedShuffle.tsx index a8f805824d..bbbbf8534b 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Seed/ParamSeedShuffle.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Seed/ParamSeedShuffle.tsx @@ -5,7 +5,7 @@ import randomInt from 'common/util/randomInt'; import { setSeed } from 'features/parameters/store/generationSlice'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaShuffle } from 'react-icons/fa6'; +import { PiShuffleBold } from 'react-icons/pi'; export const ParamSeedShuffle = memo(() => { const dispatch = useAppDispatch(); @@ -24,7 +24,7 @@ export const ParamSeedShuffle = memo(() => { size="sm" isDisabled={shouldRandomizeSeed} onClick={handleClickRandomizeSeed} - leftIcon={} + leftIcon={} flexShrink={0} > {t('parameters.shuffle')} diff --git a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamUpscaleSettings.tsx b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamUpscaleSettings.tsx index 0e91ffedce..d36921e34e 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamUpscaleSettings.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Upscale/ParamUpscaleSettings.tsx @@ -13,7 +13,7 @@ import { useIsAllowedToUpscale } from 'features/parameters/hooks/useIsAllowedToU import { useIsQueueMutationInProgress } from 'features/queue/hooks/useIsQueueMutationInProgress'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaExpand } from 'react-icons/fa'; +import { PiFrameCornersBold } from 'react-icons/pi'; import type { ImageDTO } from 'services/api/types'; import ParamESRGANModel from './ParamRealESRGANModel'; @@ -42,7 +42,7 @@ const ParamUpscalePopover = (props: Props) => { } + icon={} aria-label={t('parameters.upscale')} /> diff --git a/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemIconButton.tsx b/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemIconButton.tsx index c921ca7ee6..bd7b12feb4 100644 --- a/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemIconButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemIconButton.tsx @@ -3,7 +3,7 @@ import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; import { useCancelCurrentQueueItem } from 'features/queue/hooks/useCancelCurrentQueueItem'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaTimes } from 'react-icons/fa'; +import { PiXBold } from 'react-icons/pi'; type Props = { sx?: ChakraProps['sx']; }; @@ -19,7 +19,7 @@ const CancelCurrentQueueItemIconButton = ({ sx }: Props) => { isLoading={isLoading} aria-label={t('queue.cancel')} tooltip={t('queue.cancelTooltip')} - icon={} + icon={} onClick={cancelQueueItem} colorScheme="error" sx={sx} diff --git a/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx index e277a45c01..9252d861e2 100644 --- a/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx @@ -5,7 +5,7 @@ import ClearQueueConfirmationAlertDialog from 'features/queue/components/ClearQu import { useClearQueue } from 'features/queue/hooks/useClearQueue'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaTrash } from 'react-icons/fa'; +import { PiTrashSimpleFill } from 'react-icons/pi'; type Props = InvButtonProps; @@ -20,7 +20,7 @@ const ClearQueueButton = (props: Props) => { isDisabled={isDisabled} isLoading={isLoading} tooltip={t('queue.clearTooltip')} - leftIcon={} + leftIcon={} colorScheme="error" onClick={disclosure.onOpen} data-testid={t('queue.clear')} diff --git a/invokeai/frontend/web/src/features/queue/components/ClearQueueIconButton.tsx b/invokeai/frontend/web/src/features/queue/components/ClearQueueIconButton.tsx index 02e795a466..1ec0d22ce8 100644 --- a/invokeai/frontend/web/src/features/queue/components/ClearQueueIconButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/ClearQueueIconButton.tsx @@ -5,7 +5,7 @@ import ClearQueueConfirmationAlertDialog from 'features/queue/components/ClearQu import { useClearQueue } from 'features/queue/hooks/useClearQueue'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaTrash } from 'react-icons/fa'; +import { PiTrashSimpleBold } from 'react-icons/pi'; type Props = Omit; @@ -21,7 +21,7 @@ const ClearQueueIconButton = (props: Props) => { isLoading={isLoading} aria-label={t('queue.clear')} tooltip={t('queue.clearTooltip')} - icon={} + icon={} colorScheme="error" onClick={disclosure.onOpen} data-testid={t('queue.clear')} diff --git a/invokeai/frontend/web/src/features/queue/components/InvokeQueueBackButton.tsx b/invokeai/frontend/web/src/features/queue/components/InvokeQueueBackButton.tsx index 128ac0a865..2467623255 100644 --- a/invokeai/frontend/web/src/features/queue/components/InvokeQueueBackButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/InvokeQueueBackButton.tsx @@ -4,7 +4,7 @@ import { InvButton } from 'common/components/InvButton/InvButton'; import { QueueIterationsNumberInput } from 'features/queue/components/QueueIterationsNumberInput'; import { useQueueBack } from 'features/queue/hooks/useQueueBack'; import { memo } from 'react'; -import { IoSparkles } from 'react-icons/io5'; +import { RiSparkling2Fill } from 'react-icons/ri'; import { QueueButtonTooltip } from './QueueButtonTooltip'; @@ -24,7 +24,7 @@ export const InvokeQueueBackButton = memo(() => { isLoading={isLoading || isLoadingDynamicPrompts} loadingText={invoke} isDisabled={isDisabled} - rightIcon={} + rightIcon={} tooltip={} variant="solid" zIndex={1} diff --git a/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx b/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx index 3c42ea0523..45a95951f9 100644 --- a/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx @@ -1,7 +1,7 @@ import { usePauseProcessor } from 'features/queue/hooks/usePauseProcessor'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaPause } from 'react-icons/fa'; +import { PiPauseFill } from 'react-icons/pi'; import QueueButton from './common/QueueButton'; @@ -20,7 +20,7 @@ const PauseProcessorButton = ({ asIconButton }: Props) => { tooltip={t('queue.pauseTooltip')} isDisabled={isDisabled} isLoading={isLoading} - icon={} + icon={} onClick={pauseProcessor} colorScheme="gold" /> diff --git a/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx index fc6670ff46..5fed44e8fa 100644 --- a/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx @@ -1,7 +1,7 @@ import { usePruneQueue } from 'features/queue/hooks/usePruneQueue'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { BsStars } from 'react-icons/bs'; +import { RiSparklingFill } from 'react-icons/ri'; import QueueButton from './common/QueueButton'; @@ -20,7 +20,7 @@ const PruneQueueButton = ({ asIconButton }: Props) => { asIconButton={asIconButton} label={t('queue.prune')} tooltip={t('queue.pruneTooltip', { item_count: finishedCount })} - icon={} + icon={} onClick={pruneQueue} colorScheme="invokeBlue" /> diff --git a/invokeai/frontend/web/src/features/queue/components/QueueActionsMenuButton.tsx b/invokeai/frontend/web/src/features/queue/components/QueueActionsMenuButton.tsx index de6cde6676..e2d4d8e532 100644 --- a/invokeai/frontend/web/src/features/queue/components/QueueActionsMenuButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/QueueActionsMenuButton.tsx @@ -17,8 +17,8 @@ import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { setActiveTab } from 'features/ui/store/uiSlice'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaPause, FaPlay, FaTimes } from 'react-icons/fa'; -import { FaList } from 'react-icons/fa6'; +import { PiPauseFill, PiPlayFill, PiXBold } from 'react-icons/pi'; +import { RiListCheck, RiPlayList2Fill } from 'react-icons/ri'; import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; export const QueueActionsMenuButton = memo(() => { @@ -64,12 +64,12 @@ export const QueueActionsMenuButton = memo(() => { } + icon={} /> } + icon={} onClick={cancelQueueItem} isLoading={isLoadingCancelQueueItem} isDisabled={isDisabledCancelQueueItem} @@ -78,7 +78,7 @@ export const QueueActionsMenuButton = memo(() => { {isResumeEnabled && ( } + icon={} onClick={resumeProcessor} isLoading={isLoadingResumeProcessor} isDisabled={isDisabledResumeProcessor} @@ -88,7 +88,7 @@ export const QueueActionsMenuButton = memo(() => { )} {isPauseEnabled && ( } + icon={} onClick={pauseProcessor} isLoading={isLoadingPauseProcessor} isDisabled={isDisabledPauseProcessor} @@ -97,7 +97,9 @@ export const QueueActionsMenuButton = memo(() => { )} - {t('queue.openQueue')} + } onClick={openQueue}> + {t('queue.openQueue')} + {queueSize > 0 && ( diff --git a/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx b/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx index d362f942a5..0313ae8179 100644 --- a/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx @@ -2,7 +2,7 @@ import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; import { useQueueFront } from 'features/queue/hooks/useQueueFront'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaBoltLightning } from 'react-icons/fa6'; +import { AiFillThunderbolt } from 'react-icons/ai'; import { QueueButtonTooltip } from './QueueButtonTooltip'; @@ -16,7 +16,7 @@ const QueueFrontButton = () => { isLoading={isLoading} onClick={queueFront} tooltip={} - icon={} + icon={} size="lg" /> ); diff --git a/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx b/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx index 6d05bae26b..cf62f8cb2a 100644 --- a/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx +++ b/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx @@ -1,7 +1,7 @@ import { useResumeProcessor } from 'features/queue/hooks/useResumeProcessor'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaPlay } from 'react-icons/fa'; +import { PiPlayFill } from 'react-icons/pi'; import QueueButton from './common/QueueButton'; @@ -20,7 +20,7 @@ const ResumeProcessorButton = ({ asIconButton }: Props) => { tooltip={t('queue.resumeTooltip')} isDisabled={isDisabled} isLoading={isLoading} - icon={} + icon={} onClick={resumeProcessor} colorScheme="green" /> diff --git a/invokeai/frontend/web/src/features/settingsAccordions/ControlSettingsAccordion/ControlSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/ControlSettingsAccordion/ControlSettingsAccordion.tsx index a6346fbfa9..00d67cd894 100644 --- a/invokeai/frontend/web/src/features/settingsAccordions/ControlSettingsAccordion/ControlSettingsAccordion.tsx +++ b/invokeai/frontend/web/src/features/settingsAccordions/ControlSettingsAccordion/ControlSettingsAccordion.tsx @@ -20,7 +20,7 @@ import { import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { Fragment, memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaPlus } from 'react-icons/fa'; +import { PiPlusBold } from 'react-icons/pi'; const selector = createMemoizedSelector( selectControlAdaptersSlice, @@ -103,7 +103,7 @@ export const ControlSettingsAccordion: React.FC = memo(() => { > } + leftIcon={} onClick={addControlNet} data-testid="add controlnet" flexGrow={1} @@ -113,7 +113,7 @@ export const ControlSettingsAccordion: React.FC = memo(() => { } + leftIcon={} onClick={addIPAdapter} data-testid="add ip adapter" flexGrow={1} @@ -123,7 +123,7 @@ export const ControlSettingsAccordion: React.FC = memo(() => { } + leftIcon={} onClick={addT2IAdapter} data-testid="add t2i adapter" flexGrow={1} diff --git a/invokeai/frontend/web/src/features/settingsAccordions/GenerationSettingsAccordion/GenerationSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/GenerationSettingsAccordion/GenerationSettingsAccordion.tsx index 6942b790a4..0159969a1c 100644 --- a/invokeai/frontend/web/src/features/settingsAccordions/GenerationSettingsAccordion/GenerationSettingsAccordion.tsx +++ b/invokeai/frontend/web/src/features/settingsAccordions/GenerationSettingsAccordion/GenerationSettingsAccordion.tsx @@ -63,7 +63,7 @@ export const GenerationSettingsAccordion = memo(() => { - + diff --git a/invokeai/frontend/web/src/features/settingsAccordions/ImageSettingsAccordion/ImageSettingsAccordion.tsx b/invokeai/frontend/web/src/features/settingsAccordions/ImageSettingsAccordion/ImageSettingsAccordion.tsx index dfbfe3d3c4..d1f1b62871 100644 --- a/invokeai/frontend/web/src/features/settingsAccordions/ImageSettingsAccordion/ImageSettingsAccordion.tsx +++ b/invokeai/frontend/web/src/features/settingsAccordions/ImageSettingsAccordion/ImageSettingsAccordion.tsx @@ -88,7 +88,7 @@ export const ImageSettingsAccordion = memo(() => { )} - + diff --git a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsMenu.tsx b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsMenu.tsx index 292aa61b6b..87bc2a2376 100644 --- a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsMenu.tsx +++ b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsMenu.tsx @@ -12,8 +12,12 @@ import HotkeysModal from 'features/system/components/HotkeysModal/HotkeysModal'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaBug, FaCog, FaDiscord, FaGithub, FaKeyboard } from 'react-icons/fa'; -import { FaWrench } from 'react-icons/fa6'; +import { + PiBugBeetleBold, + PiKeyboardBold, + PiToggleRightFill, +} from 'react-icons/pi'; +import { RiDiscordFill, RiGithubFill, RiSettings4Line } from 'react-icons/ri'; import SettingsModal from './SettingsModal'; const SettingsMenu = () => { @@ -34,7 +38,7 @@ const SettingsMenu = () => { as={InvIconButton} variant="link" aria-label={t('accessibility.menu')} - icon={} + icon={} boxSize={8} /> @@ -45,7 +49,7 @@ const SettingsMenu = () => { as="a" href={githubLink} target="_blank" - icon={} + icon={} > {t('common.githubLabel')} @@ -55,7 +59,7 @@ const SettingsMenu = () => { as="a" href={`${githubLink}/issues`} target="_blank" - icon={} + icon={} > {t('common.reportBugLabel')} @@ -65,7 +69,7 @@ const SettingsMenu = () => { as="a" href={discordLink} target="_blank" - icon={} + icon={} > {t('common.discordLabel')} @@ -73,12 +77,12 @@ const SettingsMenu = () => { - }> + }> {t('common.hotkeysLabel')} - }> + }> {t('common.settingsLabel')} diff --git a/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx b/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx index 94e0f76678..4734d1f797 100644 --- a/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx +++ b/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx @@ -5,7 +5,7 @@ import { InvTooltip } from 'common/components/InvTooltip/InvTooltip'; import type { UsePanelReturn } from 'features/ui/hooks/usePanel'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { MdPhotoLibrary } from 'react-icons/md'; +import { PiImagesSquareBold } from 'react-icons/pi'; type Props = { panelApi: UsePanelReturn; @@ -34,7 +34,7 @@ const FloatingGalleryButton = (props: Props) => { } + icon={} p={0} h={48} borderEndRadius={0} diff --git a/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx b/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx index 32ac805fa8..466da87d85 100644 --- a/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx +++ b/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx @@ -10,8 +10,8 @@ import { useQueueBack } from 'features/queue/hooks/useQueueBack'; import type { UsePanelReturn } from 'features/ui/hooks/usePanel'; import { memo, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaSlidersH } from 'react-icons/fa'; -import { IoSparkles } from 'react-icons/io5'; +import { PiSlidersHorizontalBold } from 'react-icons/pi'; +import { RiSparklingFill } from 'react-icons/ri'; import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; import { spinAnimationSlow } from 'theme/animations'; @@ -34,7 +34,7 @@ const FloatingSidePanelButtons = (props: Props) => { !isDisabled && queueStatus?.processor.is_processing ? ( ) : ( - + ), [isDisabled, queueStatus?.processor.is_processing] ); @@ -61,7 +61,7 @@ const FloatingSidePanelButtons = (props: Props) => { aria-label={t('accessibility.showOptionsPanel')} onClick={props.panelApi.expand} sx={floatingButtonStyles} - icon={} + icon={} /> , + icon: , content: , }, { id: 'img2img', translationKey: 'common.img2img', - icon: , + icon: , content: , }, { id: 'unifiedCanvas', translationKey: 'common.unifiedCanvas', - icon: , + icon: , content: , }, { id: 'nodes', translationKey: 'common.nodes', - icon: , + icon: , content: , }, { id: 'modelManager', translationKey: 'modelManager.modelManager', - icon: , + icon: , content: , }, { id: 'queue', translationKey: 'queue.queue', - icon: , + icon: , content: , }, ]; diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryButton.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryButton.tsx index ee50166655..4bbd21c6e1 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryButton.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryButton.tsx @@ -3,7 +3,7 @@ import { InvButton } from 'common/components/InvButton/InvButton'; import { WorkflowLibraryModalContext } from 'features/workflowLibrary/context/WorkflowLibraryModalContext'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaFolderOpen } from 'react-icons/fa'; +import { PiBooksBold } from 'react-icons/pi'; import WorkflowLibraryModal from './WorkflowLibraryModal'; @@ -14,7 +14,7 @@ const WorkflowLibraryButton = () => { return ( } + leftIcon={} onClick={disclosure.onOpen} pointerEvents="auto" > diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/DownloadWorkflowMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/DownloadWorkflowMenuItem.tsx index d5d1d1d30e..3e510a1e83 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/DownloadWorkflowMenuItem.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/DownloadWorkflowMenuItem.tsx @@ -2,14 +2,18 @@ import { InvMenuItem } from 'common/components/InvMenu/InvMenuItem'; import { useDownloadWorkflow } from 'features/workflowLibrary/hooks/useDownloadWorkflow'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaDownload } from 'react-icons/fa'; +import { PiDownloadSimpleBold } from 'react-icons/pi'; const DownloadWorkflowMenuItem = () => { const { t } = useTranslation(); const downloadWorkflow = useDownloadWorkflow(); return ( - } onClick={downloadWorkflow}> + } + onClick={downloadWorkflow} + > {t('workflows.downloadWorkflow')} ); diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem.tsx index 47b74e41da..2ac22abfa1 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/NewWorkflowMenuItem.tsx @@ -8,7 +8,7 @@ import { addToast } from 'features/system/store/systemSlice'; import { makeToast } from 'features/system/util/makeToast'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaCircleNodes } from 'react-icons/fa6'; +import { PiFlowArrowBold } from 'react-icons/pi'; const NewWorkflowMenuItem = () => { const { t } = useTranslation(); @@ -41,7 +41,7 @@ const NewWorkflowMenuItem = () => { return ( <> - } onClick={onClick}> + } onClick={onClick}> {t('nodes.newWorkflow')} diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem.tsx index 8146a09b33..5a28b279f0 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowAsMenuItem.tsx @@ -9,7 +9,7 @@ import { getWorkflowCopyName } from 'features/workflowLibrary/util/getWorkflowCo import type { ChangeEvent } from 'react'; import { memo, useCallback, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaClone } from 'react-icons/fa'; +import { PiCopyBold } from 'react-icons/pi'; const SaveWorkflowAsButton = () => { const currentName = useAppSelector((s) => s.workflow.name); @@ -35,7 +35,7 @@ const SaveWorkflowAsButton = () => { return ( <> - } onClick={onOpenCallback}> + } onClick={onOpenCallback}> {t('workflows.saveWorkflowAs')} diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem.tsx index cecd24b129..da479b83d3 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SaveWorkflowMenuItem.tsx @@ -2,13 +2,13 @@ import { InvMenuItem } from 'common/components/InvMenu/InvMenuItem'; import { useSaveLibraryWorkflow } from 'features/workflowLibrary/hooks/useSaveWorkflow'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaSave } from 'react-icons/fa'; +import { PiFloppyDiskBold } from 'react-icons/pi'; const SaveLibraryWorkflowMenuItem = () => { const { t } = useTranslation(); const { saveWorkflow } = useSaveLibraryWorkflow(); return ( - } onClick={saveWorkflow}> + } onClick={saveWorkflow}> {t('workflows.saveWorkflow')} ); diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx index c9f3b949e7..19b3501b70 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/SettingsMenuItem.tsx @@ -2,7 +2,7 @@ import { InvMenuItem } from 'common/components/InvMenu/InvMenuItem'; import WorkflowEditorSettings from 'features/nodes/components/flow/panels/TopRightPanel/WorkflowEditorSettings'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaCog } from 'react-icons/fa'; +import { RiSettings4Line } from 'react-icons/ri'; const DownloadWorkflowMenuItem = () => { const { t } = useTranslation(); @@ -10,7 +10,7 @@ const DownloadWorkflowMenuItem = () => { return ( {({ onOpen }) => ( - } onClick={onOpen}> + } onClick={onOpen}> {t('nodes.workflowSettings')} )} diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/UploadWorkflowMenuItem.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/UploadWorkflowMenuItem.tsx index 7e6652c592..3e5faa1a0c 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/UploadWorkflowMenuItem.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/UploadWorkflowMenuItem.tsx @@ -3,7 +3,7 @@ import { useLoadWorkflowFromFile } from 'features/workflowLibrary/hooks/useLoadW import { memo, useCallback, useRef } from 'react'; import { useDropzone } from 'react-dropzone'; import { useTranslation } from 'react-i18next'; -import { FaUpload } from 'react-icons/fa'; +import { PiUploadSimpleBold } from 'react-icons/pi'; const UploadWorkflowMenuItem = () => { const { t } = useTranslation(); @@ -27,7 +27,7 @@ const UploadWorkflowMenuItem = () => { multiple: false, }); return ( - } {...getRootProps()}> + } {...getRootProps()}> {t('workflows.uploadWorkflow')} diff --git a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu.tsx b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu.tsx index 2301e2aeb8..a703b5e903 100644 --- a/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu.tsx +++ b/invokeai/frontend/web/src/features/workflowLibrary/components/WorkflowLibraryMenu/WorkflowLibraryMenu.tsx @@ -16,7 +16,7 @@ import SettingsMenuItem from 'features/workflowLibrary/components/WorkflowLibrar import UploadWorkflowMenuItem from 'features/workflowLibrary/components/WorkflowLibraryMenu/UploadWorkflowMenuItem'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaEllipsis } from 'react-icons/fa6'; +import { PiDotsThreeOutlineFill } from 'react-icons/pi'; const WorkflowLibraryMenu = () => { const { t } = useTranslation(); @@ -31,7 +31,7 @@ const WorkflowLibraryMenu = () => { } + icon={} pointerEvents="auto" />