diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialState.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialState.tsx
index 25bace52b6..2e8cf7a29b 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialState.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialState.tsx
@@ -3,7 +3,6 @@
import { Button, Divider, Flex, Grid, Heading, Text } from '@invoke-ai/ui-library';
import { useAppDispatch } from 'app/store/storeHooks';
import { InitialStateAddAStyleReference } from 'features/controlLayers/components/SimpleSession/InitialStateAddAStyleReference';
-import { InitialStateCardGridItem } from 'features/controlLayers/components/SimpleSession/InitialStateCardGridItem';
import { InitialStateEditImageCard } from 'features/controlLayers/components/SimpleSession/InitialStateEditImageCard';
import { InitialStateGenerateFromText } from 'features/controlLayers/components/SimpleSession/InitialStateGenerateFromText';
import { InitialStateUseALayoutImageCard } from 'features/controlLayers/components/SimpleSession/InitialStateUseALayoutImageCard';
@@ -29,18 +28,10 @@ export const InitialState = memo(() => {
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateAddAStyleReference.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateAddAStyleReference.tsx
index f41ad61ffa..0b97e5637e 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateAddAStyleReference.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateAddAStyleReference.tsx
@@ -2,12 +2,13 @@
import { Flex, Heading, Icon, Text } from '@invoke-ai/ui-library';
import { useAppStore } from 'app/store/nanostores/store';
-import { UploadImageIconButton } from 'common/hooks/useImageUploadButton';
+import { useImageUploadButton } from 'common/hooks/useImageUploadButton';
+import { InitialStateButtonGridItem } from 'features/controlLayers/components/SimpleSession/InitialStateButtonGridItem';
import { newCanvasFromImageDndTarget } from 'features/dnd/dnd';
import { DndDropTarget } from 'features/dnd/DndDropTarget';
import { newCanvasFromImage } from 'features/imageActions/actions';
import { memo, useCallback } from 'react';
-import { PiUserCircleGearBold } from 'react-icons/pi';
+import { PiUploadBold, PiUserCircleGearBold } from 'react-icons/pi';
import type { ImageDTO } from 'services/api/types';
const NEW_CANVAS_OPTIONS = { type: 'reference_image' } as const;
@@ -23,17 +24,19 @@ export const InitialStateAddAStyleReference = memo(() => {
},
[dispatch, getState]
);
+ const uploadApi = useImageUploadButton({ allowMultiple: false, onUpload });
return (
- <>
+
Add a Style Reference
Add an image to transfer its look.
-
-
+
+
+
- >
+
);
});
InitialStateAddAStyleReference.displayName = 'InitialStateAddAStyleReference';
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateButtonGridItem.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateButtonGridItem.tsx
new file mode 100644
index 0000000000..4861e4f475
--- /dev/null
+++ b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateButtonGridItem.tsx
@@ -0,0 +1,28 @@
+import type { GridItemProps } from '@invoke-ai/ui-library';
+import { Button, GridItem } from '@invoke-ai/ui-library';
+import { memo } from 'react';
+
+export const InitialStateButtonGridItem = memo(({ children, ...rest }: GridItemProps) => {
+ return (
+
+ {children}
+
+ );
+});
+
+InitialStateButtonGridItem.displayName = 'InitialStateButtonGridItem';
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateCardGridItem.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateCardGridItem.tsx
deleted file mode 100644
index 708b005db1..0000000000
--- a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateCardGridItem.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import { GridItem } from '@invoke-ai/ui-library';
-import { memo, type PropsWithChildren } from 'react';
-
-export const InitialStateCardGridItem = memo((props: PropsWithChildren) => {
- return (
-
- {props.children}
-
- );
-});
-
-InitialStateCardGridItem.displayName = 'InitialStateCardGridItem';
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateEditImageCard.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateEditImageCard.tsx
index d0c7d0032c..b6448f41d0 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateEditImageCard.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateEditImageCard.tsx
@@ -2,12 +2,13 @@
import { Flex, Heading, Icon, Text } from '@invoke-ai/ui-library';
import { useAppStore } from 'app/store/nanostores/store';
-import { UploadImageIconButton } from 'common/hooks/useImageUploadButton';
+import { useImageUploadButton } from 'common/hooks/useImageUploadButton';
+import { InitialStateButtonGridItem } from 'features/controlLayers/components/SimpleSession/InitialStateButtonGridItem';
import { newCanvasFromImageDndTarget } from 'features/dnd/dnd';
import { DndDropTarget } from 'features/dnd/DndDropTarget';
import { newCanvasFromImage } from 'features/imageActions/actions';
import { memo, useCallback } from 'react';
-import { PiPencilBold } from 'react-icons/pi';
+import { PiPencilBold, PiUploadBold } from 'react-icons/pi';
import type { ImageDTO } from 'services/api/types';
const NEW_CANVAS_OPTIONS = { type: 'raster_layer', withInpaintMask: true } as const;
@@ -23,17 +24,19 @@ export const InitialStateEditImageCard = memo(() => {
},
[dispatch, getState]
);
+ const uploadApi = useImageUploadButton({ allowMultiple: false, onUpload });
return (
- <>
+
Edit Image
Add an image to refine.
-
-
+
+
+
- >
+
);
});
InitialStateEditImageCard.displayName = 'InitialStateEditImageCard';
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateGenerateFromText.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateGenerateFromText.tsx
index 6d4fa5a2cf..67048c383f 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateGenerateFromText.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateGenerateFromText.tsx
@@ -1,6 +1,7 @@
/* eslint-disable i18next/no-literal-string */
-import { Flex, Heading, Icon, IconButton, Text } from '@invoke-ai/ui-library';
+import { Flex, Heading, Icon, Text } from '@invoke-ai/ui-library';
+import { InitialStateButtonGridItem } from 'features/controlLayers/components/SimpleSession/InitialStateButtonGridItem';
import { memo } from 'react';
import { PiCursorTextBold, PiTextAaBold } from 'react-icons/pi';
@@ -14,20 +15,14 @@ const focusOnPrompt = () => {
export const InitialStateGenerateFromText = memo(() => {
return (
- <>
+
Generate from Text
Enter a prompt and Invoke.
-
- }
- variant="link"
- h={8}
- />
+
+
- >
+
);
});
InitialStateGenerateFromText.displayName = 'InitialStateGenerateFromText';
diff --git a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateUseALayoutImageCard.tsx b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateUseALayoutImageCard.tsx
index 54d2ef6f75..955ace441f 100644
--- a/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateUseALayoutImageCard.tsx
+++ b/invokeai/frontend/web/src/features/controlLayers/components/SimpleSession/InitialStateUseALayoutImageCard.tsx
@@ -2,12 +2,13 @@
import { Flex, Heading, Icon, Text } from '@invoke-ai/ui-library';
import { useAppStore } from 'app/store/nanostores/store';
-import { UploadImageIconButton } from 'common/hooks/useImageUploadButton';
+import { useImageUploadButton } from 'common/hooks/useImageUploadButton';
+import { InitialStateButtonGridItem } from 'features/controlLayers/components/SimpleSession/InitialStateButtonGridItem';
import { newCanvasFromImageDndTarget } from 'features/dnd/dnd';
import { DndDropTarget } from 'features/dnd/DndDropTarget';
import { newCanvasFromImage } from 'features/imageActions/actions';
import { memo, useCallback } from 'react';
-import { PiRectangleDashedBold } from 'react-icons/pi';
+import { PiRectangleDashedBold, PiUploadBold } from 'react-icons/pi';
import type { ImageDTO } from 'services/api/types';
const NEW_CANVAS_OPTIONS = { type: 'control_layer', withResize: true } as const;
@@ -23,17 +24,19 @@ export const InitialStateUseALayoutImageCard = memo(() => {
},
[dispatch, getState]
);
+ const uploadApi = useImageUploadButton({ allowMultiple: false, onUpload });
return (
- <>
+
Use a Layout Image
Add an image to control composition.
-
-
+
+
+
- >
+
);
});
InitialStateUseALayoutImageCard.displayName = 'InitialStateUseALayoutImageCard';