import type { ReactNode } from 'react';
import { Button } from '@/components/ui/button';
import { Card, CardContent } from '@/components/ui/card';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Textarea } from '@/components/ui/textarea';
import { fileUrl } from '../lib/api';
import { BACKGROUNDS, QUALITIES, SIZES, useGenerateManager } from './useGenerateManager';
export const Generate = () => {
const manager = useGenerateManager();
if (manager.providers.length > 0 && manager.usableProviders.length === 0) {
return (
No provider is ready. Add an API key in the Providers panel first.
);
}
return (
manager.setN(Math.min(10, Math.max(1, Number(ev.target.value) || 1)))}
/>
{manager.job?.atelier && manager.running && (
{manager.job.atelier.status}…
)}
{manager.error &&
{manager.error}
}
{manager.job?.data && manager.job.data.length > 0 && (
{manager.job.data.map((image) => (
{image.revised_prompt ?? ''}
))}
)}
{manager.job?.atelier?.images.some((image) => image.error) && (
{manager.job.atelier.images
.filter((image) => image.error)
.map((image) => (
- {image.error}
))}
)}
);
};
const Field = ({ label, id, children }: { label: string; id: string; children: ReactNode }) => (
{children}
);
type ChoiceProps = {
label: string;
id: string;
value: string;
onChange: (value: string) => void;
options: readonly string[];
};
const Choice = ({ label, id, value, onChange, options }: ChoiceProps) => (
);