From 1b3f1d94097ff7d53c03755a26ffa8b70b041e14 Mon Sep 17 00:00:00 2001 From: Jamie Brunton Date: Tue, 30 Dec 2025 20:48:14 +0000 Subject: [PATCH] Update --- .../src/components/ai/AiGeneratorDialog.tsx | 40 +- apps/admin/src/lib/openai.ts | 59 +- apps/web/.dockerignore | 30 + apps/web/.gitignore | 31 + apps/web/Dockerfile | 40 + apps/web/app/globals.css | 160 + apps/web/app/layout.tsx | 39 + apps/web/app/page.tsx | 19 + apps/web/app/privacy/page.tsx | 186 + apps/web/app/terms/page.tsx | 247 + apps/web/components/CTA.tsx | 60 + apps/web/components/Features.tsx | 94 + apps/web/components/Footer.tsx | 46 + apps/web/components/Hero.tsx | 170 + apps/web/components/HowItWorks.tsx | 80 + apps/web/components/Navbar.tsx | 103 + apps/web/docker-compose.prod.yml | 17 + apps/web/docker-compose.yml | 19 + apps/web/next.config.js | 6 + apps/web/package-lock.json | 1670 +++ apps/web/package.json | 28 + apps/web/postcss.config.js | 6 + apps/web/public/apple-touch-icon.png | Bin 0 -> 704962 bytes apps/web/public/favicon.png | Bin 0 -> 33387 bytes apps/web/public/favicon.svg | 10 + apps/web/public/logo.png | Bin 0 -> 69577 bytes apps/web/public/screenshots/home.png | Bin 0 -> 1177506 bytes apps/web/public/screenshots/matches.png | Bin 0 -> 1095893 bytes apps/web/public/screenshots/packs.png | Bin 0 -> 883242 bytes apps/web/public/screenshots/swipe.png | Bin 0 -> 628202 bytes apps/web/tailwind.config.js | 34 + apps/web/tsconfig.json | 26 + etc/ios screenshots | 0 ...iPhone 16 Pro - 2025-12-30 at 17.15.55.png | Bin 0 -> 1141975 bytes ...iPhone 16 Pro - 2025-12-30 at 17.15.59.png | Bin 0 -> 1177506 bytes ...iPhone 16 Pro - 2025-12-30 at 17.16.19.png | Bin 0 -> 773210 bytes ...iPhone 16 Pro - 2025-12-30 at 19.57.14.png | Bin 0 -> 1189567 bytes ...iPhone 16 Pro - 2025-12-30 at 19.57.35.png | Bin 0 -> 628202 bytes ...iPhone 16 Pro - 2025-12-30 at 19.57.51.png | Bin 0 -> 393543 bytes ...iPhone 16 Pro - 2025-12-30 at 20.01.31.png | Bin 0 -> 661062 bytes ...iPhone 16 Pro - 2025-12-30 at 20.02.50.png | Bin 0 -> 1095893 bytes ...iPhone 16 Pro - 2025-12-30 at 20.10.49.png | Bin 0 -> 883242 bytes ...iPhone 16 Pro - 2025-12-30 at 20.10.53.png | Bin 0 -> 989116 bytes package-lock.json | 11464 +++++++++++++++- package.json | 1 + 45 files changed, 14500 insertions(+), 185 deletions(-) create mode 100644 apps/web/.dockerignore create mode 100644 apps/web/.gitignore create mode 100644 apps/web/Dockerfile create mode 100644 apps/web/app/globals.css create mode 100644 apps/web/app/layout.tsx create mode 100644 apps/web/app/page.tsx create mode 100644 apps/web/app/privacy/page.tsx create mode 100644 apps/web/app/terms/page.tsx create mode 100644 apps/web/components/CTA.tsx create mode 100644 apps/web/components/Features.tsx create mode 100644 apps/web/components/Footer.tsx create mode 100644 apps/web/components/Hero.tsx create mode 100644 apps/web/components/HowItWorks.tsx create mode 100644 apps/web/components/Navbar.tsx create mode 100644 apps/web/docker-compose.prod.yml create mode 100644 apps/web/docker-compose.yml create mode 100644 apps/web/next.config.js create mode 100644 apps/web/package-lock.json create mode 100644 apps/web/package.json create mode 100644 apps/web/postcss.config.js create mode 100755 apps/web/public/apple-touch-icon.png create mode 100755 apps/web/public/favicon.png create mode 100644 apps/web/public/favicon.svg create mode 100644 apps/web/public/logo.png create mode 100644 apps/web/public/screenshots/home.png create mode 100644 apps/web/public/screenshots/matches.png create mode 100644 apps/web/public/screenshots/packs.png create mode 100644 apps/web/public/screenshots/swipe.png create mode 100644 apps/web/tailwind.config.js create mode 100644 apps/web/tsconfig.json create mode 100644 etc/ios screenshots create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 17.15.55.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 17.15.59.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 17.16.19.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 19.57.14.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 19.57.35.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 19.57.51.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 20.01.31.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 20.02.50.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 20.10.49.png create mode 100644 etc/ios_sim/Simulator Screenshot - iPhone 16 Pro - 2025-12-30 at 20.10.53.png 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 */} +
+ +