File size: 1,575 Bytes
faee5d2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
"use client";
import { useState } from "react";
import { Button } from "@/components/ui/button";
import { Wand2 } from "lucide-react";
import { Input } from "./ui/input";
interface ImagePromptInputProps {
onSubmit: (prompt: string) => void;
isEditing: boolean;
isLoading: boolean;
}
export function ImagePromptInput({
onSubmit,
isEditing,
isLoading,
}: ImagePromptInputProps) {
const [prompt, setPrompt] = useState("");
const handleSubmit = () => {
if (prompt.trim()) {
onSubmit(prompt.trim());
setPrompt("");
}
};
return (
<form onSubmit={handleSubmit} className="space-y-4 rounded-lg">
<div className="space-y-2">
<p className="text-sm font-medium text-foreground">
{isEditing
? "Describe how you want to edit the image"
: "Describe the image you want to generate"}
</p>
</div>
<Input
id="prompt"
className="border-secondary resize-none"
placeholder={
isEditing
? "Example: Make the background blue and add a rainbow..."
: "Example: A 3D rendered image of a pig with wings and a top hat flying over a futuristic city..."
}
value={prompt}
onChange={(e) => setPrompt(e.target.value)}
/>
<Button
type="submit"
disabled={!prompt.trim() || isLoading}
className="w-full bg-primary hover:bg-primary/90"
>
<Wand2 className="w-4 h-4 mr-2" />
{isEditing ? "Edit Image" : "Generate Image"}
</Button>
</form>
);
}
|