diff --git a/env.example b/env.example
index ba23ec3..42b15fb 100644
--- a/env.example
+++ b/env.example
@@ -155,3 +155,12 @@ NEXT_PUBLIC_AFFILIATE_PROMOTEKIT_ID=""
# -----------------------------------------------------------------------------
NEXT_PUBLIC_TURNSTILE_SITE_KEY=""
TURNSTILE_SECRET_KEY=""
+
+# -----------------------------------------------------------------------------
+# AI
+# https://mksaas.com/docs/ai
+# -----------------------------------------------------------------------------
+FAL_API_KEY=""
+FIREWORKS_API_KEY=""
+OPENAI_API_KEY=""
+REPLICATE_API_TOKEN=""
diff --git a/src/ai/image/components/ImageGeneratorHeader.tsx b/src/ai/image/components/ImageGeneratorHeader.tsx
new file mode 100644
index 0000000..da13f29
--- /dev/null
+++ b/src/ai/image/components/ImageGeneratorHeader.tsx
@@ -0,0 +1,25 @@
+import { Button } from '@/components/ui/button';
+import { ArrowUpRightIcon } from 'lucide-react';
+import Link from 'next/link';
+import { QualityModeToggle } from './QualityModeToggle';
+
+export const ImageGeneratorHeader = () => {
+ return (
+
+ );
+};
diff --git a/src/ai/image/components/ImagePlayground.tsx b/src/ai/image/components/ImagePlayground.tsx
index 8efe05b..bf85603 100644
--- a/src/ai/image/components/ImagePlayground.tsx
+++ b/src/ai/image/components/ImagePlayground.tsx
@@ -11,6 +11,7 @@ import {
initializeProviderRecord,
} from '../lib/provider-config';
import type { Suggestion } from '../lib/suggestions';
+import { ImageGeneratorHeader } from './ImageGeneratorHeader';
import { ModelCardCarousel } from './ModelCardCarousel';
import { ModelSelect } from './ModelSelect';
import { PromptInput } from './PromptInput';
@@ -75,8 +76,11 @@ export function ImagePlayground({
};
return (
-
+
+ {/* header */}
+
+
{/* input prompt */}
void;
isLoading?: boolean;
@@ -62,10 +63,11 @@ export function PromptInput({
onKeyDown={handleKeyDown}
placeholder="Enter your prompt here"
rows={3}
- className="text-base bg-transparent border-muted-foreground p-2 resize-none placeholder:text-muted-foreground text-foreground focus-visible:ring-0 focus-visible:ring-offset-0"
+ className="text-base bg-transparent border-muted p-2 resize-none placeholder:text-muted-foreground text-foreground focus-visible:ring-0 focus-visible:ring-offset-0"
/>
+ {/* refresh suggestions */}
+ {/* suggestions */}
{suggestions.map((suggestion, index) => (
+ {/* submit prompt */}