/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */ "use client"; /* eslint-disable @typescript-eslint/no-non-null-assertion */ import { useState } from "react"; import type { Personality } from "@mosaic/shared"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { Badge } from "@/components/ui/badge"; import { Sparkles } from "lucide-react"; interface PersonalityPreviewProps { personality: Personality; } const SAMPLE_PROMPTS = [ "Explain quantum computing in simple terms", "What's the best way to organize my tasks?", "Help me brainstorm ideas for a new project", ]; const FORMALITY_LABELS: Record = { VERY_CASUAL: "Very Casual", CASUAL: "Casual", NEUTRAL: "Neutral", FORMAL: "Formal", VERY_FORMAL: "Very Formal", }; export function PersonalityPreview({ personality }: PersonalityPreviewProps): React.ReactElement { const [selectedPrompt, setSelectedPrompt] = useState(SAMPLE_PROMPTS[0]!); return (
{personality.name} {personality.description}
{personality.isDefault && Default}
{/* Personality Attributes */}
Tone: {personality.tone}
Formality: {FORMALITY_LABELS[personality.formalityLevel]}
{/* Sample Interaction */}
{SAMPLE_PROMPTS.map((prompt) => { const variant = selectedPrompt === prompt ? "default" : "outline"; return ( ); })}
{/* System Prompt Template */}