"use client"; import { useEffect } from "react"; import { MODELS } from "@turbostarter/ai/image/constants"; import { useTranslation } from "@turbostarter/i18n"; import { Button } from "@turbostarter/ui-web/button"; import { Form, FormControl, FormField, FormItem, } from "@turbostarter/ui-web/form"; import { Icons } from "@turbostarter/ui-web/icons"; import { Composer } from "~/modules/common/ai/composer"; import { ModelSelector } from "~/modules/common/ai/composer/model-selector"; import { AspectSelector } from "./aspect-selector"; import { ImageCountSelector } from "./image-count-selector"; import { useComposer } from "./use-composer"; interface ImageComposerProps { id?: string; prompt?: string; reset?: () => void; } export const ImageComposer = ({ id, prompt: initialPrompt, reset, }: ImageComposerProps) => { const { t } = useTranslation(["ai", "common"]); const { form, model, onSubmit } = useComposer({ id }); const prompt = form.watch("prompt"); useEffect(() => { if (initialPrompt) { form.setValue("prompt", initialPrompt); form.setFocus("prompt"); reset?.(); } }, [initialPrompt, form, reset]); return (
( { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); return form.handleSubmit(onSubmit)(); } }} /> )} />
m.id === model)?.dimensions ?? []} />
); };