diff --git a/apps/admin/src/components/ai/AiGeneratorDialog.tsx b/apps/admin/src/components/ai/AiGeneratorDialog.tsx index 18156f3..f8f6a5f 100644 --- a/apps/admin/src/components/ai/AiGeneratorDialog.tsx +++ b/apps/admin/src/components/ai/AiGeneratorDialog.tsx @@ -3,6 +3,7 @@ import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Checkbox } from '@/components/ui/checkbox'; +import { Textarea } from '@/components/ui/textarea'; import { Dialog, DialogContent, @@ -44,6 +45,8 @@ export function AiGeneratorDialog({ // Default tone based on pack's explicit flag (5 for explicit packs, 3 for non-explicit) const [tone, setTone] = useState(context?.isExplicit ? 5 : 3); const isExplicit = tone >= 4; // For other generators that still use boolean + const [crudeLang, setCrudeLang] = useState(false); + const [inspiration, setInspiration] = useState(''); // Update tone when dialog opens with new context useEffect(() => { @@ -65,26 +68,26 @@ export function AiGeneratorDialog({ setLoading(true); try { if (type === 'pack') { - const result = await generatePack(context?.categoryName, isExplicit); + const result = await generatePack(context?.categoryName, isExplicit, crudeLang, inspiration || undefined); setGeneratedPack(result); } else if (type === 'questions') { if (!context?.packName) { toast.error('Pack name is required'); return; } - const result = await generateQuestions(context.packName, count, undefined, tone, context.packDescription || undefined, context.existingQuestions); + const result = await generateQuestions(context.packName, count, undefined, tone, context.packDescription || undefined, context.existingQuestions, crudeLang, inspiration || undefined); setGeneratedQuestions(result); // Select all questions by default setSelectedQuestionIndices(new Set(result.map((_, i) => i))); } else if (type === 'category-ideas') { - const result = await suggestCategories(context?.existingCategories || [], isExplicit); + const result = await suggestCategories(context?.existingCategories || [], isExplicit, crudeLang, inspiration || undefined); setGeneratedIdeas(result); } else if (type === 'category-pack-ideas') { if (!context?.categoryName) { toast.error('Category name is required'); return; } - const result = await suggestPacks(context.categoryName, context?.existingPacks || [], isExplicit); + const result = await suggestPacks(context.categoryName, context?.existingPacks || [], isExplicit, crudeLang, inspiration || undefined); setGeneratedPackIdeas(result); } } catch (error) { @@ -136,6 +139,8 @@ export function AiGeneratorDialog({ setGeneratedIdeas([]); setGeneratedPackIdeas([]); setSelectedQuestionIndices(new Set()); + setCrudeLang(false); + setInspiration(''); onOpenChange(false); }; @@ -212,6 +217,33 @@ export function AiGeneratorDialog({ )} + {/* Crude Language Toggle */} +
+ + + (vulgar, raw, everyday explicit words) +
+ + {/* Inspiration/Suggestions Textarea */} +
+ +