promptenhancer / src /components /PromptEnhancer.tsx
Tobs248's picture
# Rolle
eee3ce2 verified
Raw
History Blame Contribute Delete
6.97 kB
tsx
import React from 'react'
import { PromptInput } from './PromptInput'
import { ModelSelector } from './ModelSelector'
import { OptimizationResult } from './OptimizationResult'
import { ComparisonView } from './ComparisonView'
import { LoadingState } from './LoadingState'
import { ErrorMessage } from './ErrorMessage'
import { useAppStore } from '@/store/useAppStore'
/**
* Main component for the Prompt Enhancement application
* Orchestrates the different components and handles the main workflow
*/
export function PromptEnhancer() {
const {
prompt,
selectedModel,
isOptimizing,
result,
error,
showComparison,
canOptimize,
optimizePrompt,
setShowComparison
} = useAppStore()
return (
<div className="max-w-6xl mx-auto space-y-8">
{/* Header Section */}
<div className="text-center">
<h2 className="text-3xl font-bold text-gray-900 dark:text-gray-100 mb-4">
KI-Prompt Optimierung
</h2>
<p className="text-lg text-gray-600 dark:text-gray-400 max-w-3xl mx-auto">
Transformiere deine Prompts in präzise, effektive Anweisungen für maximale KI-Performance.
Wähle deine Ziel-KI und lass unser System die Optimierung übernehmen.
</p>
</div>
{/* Main Input Section */}
<div className="grid lg:grid-cols-2 gap-8">
{/* Input Column */}
<div className="space-y-6">
<div className="card p-6">
<h3 className="text-xl font-semibold text-gray-900 dark:text-gray-100 mb-4">
Dein Prompt
</h3>
<PromptInput />
</div>
<div className="card p-6">
<h3 className="text-xl font-semibold text-gray-900 dark:text-gray-100 mb-4">
Ziel-KI auswählen
</h3>
<ModelSelector />
</div>
{/* Action Buttons */}
<div className="flex flex-col sm:flex-row gap-4">
<button
onClick={optimizePrompt}
disabled={!canOptimize()}
className="flex-1 btn-primary text-lg py-3 disabled:opacity-50 disabled:cursor-not-allowed"
>
{isOptimizing ? (
<>
<div className="w-5 h-5 border-2 border-white border-t-transparent rounded-full animate-spin mr-2" />
Optimiere...
</>
) : (
'Prompt optimieren'
)}
</button>
{result && (
<button
onClick={() => setShowComparison(!showComparison)}
className="btn-secondary px-6"
>
{showComparison ? 'Einzelansicht' : 'Vergleich anzeigen'}
</button>
)}
</div>
</div>
{/* Output Column */}
<div className="space-y-6">
{error && <ErrorMessage />}
{isOptimizing && <LoadingState />}
{result && !showComparison && <OptimizationResult />}
{result && showComparison && <ComparisonView />}
{!result && !isOptimizing && !error && (
<div className="card p-8 text-center">
<div className="w-16 h-16 bg-gradient-to-br from-primary-500 to-secondary-500 rounded-full flex items-center justify-center mx-auto mb-4">
<svg className="w-8 h-8 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>
</div>
<h3 className="text-xl font-semibold text-gray-900 dark:text-gray-100 mb-2">
Bereit zur Optimierung
</h3>
<p className="text-gray-600 dark:text-gray-400">
Gib deinen Prompt ein und wähle eine Ziel-KI aus, um zu beginnen.
</p>
</div>
)}
</div>
</div>
{/* Features Section */}
<div className="card p-8 mt-12">
<h3 className="text-2xl font-bold text-gray-900 dark:text-gray-100 mb-6 text-center">
Warum Prompt Enhancer verwenden?
</h3>
<div className="grid md:grid-cols-3 gap-8">
<div className="text-center">
<div className="w-12 h-12 bg-primary-100 dark:bg-primary-900 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-6 h-6 text-primary-600 dark:text-primary-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" />
</svg>
</div>
<h4 className="text-lg font-semibold text-gray-900 dark:text-gray-100 mb-2">
KI-spezifische Optimierung
</h4>
<p className="text-gray-600 dark:text-gray-400">
Jede KI-Plattform hat einzigartige Anforderungen. Unsere Engine berücksichtigt das.
</p>
</div>
<div className="text-center">
<div className="w-12 h-12 bg-secondary-100 dark:bg-secondary-900 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-6 h-6 text-secondary-600 dark:text-secondary-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6" />
</svg>
</div>
<h4 className="text-lg font-semibold text-gray-900 dark:text-gray-100 mb-2">
Messbare Verbesserungen
</h4>
<p className="text-gray-600 dark:text-gray-400">
Strukturierte, spezifischere und ausführbarere Prompts für bessere KI-Ergebnisse.
</p>
</div>
<div className="text-center">
<div className="w-12 h-12 bg-green-100 dark:bg-green-900 rounded-lg flex items-center justify-center mx-auto mb-4">
<svg className="w-6 h-6 text-green-600 dark:text-green-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
</svg>
</div>
<h4 className="text-lg font-semibold text-gray-900 dark:text-gray-100 mb-2">
Produktionsreif
</h4>
<p className="text-gray-600 dark:text-gray-400">
Robuste Fehlerbehandlung, Optimierung und Benutzerfreundlichkeit in jedem Detail.
</p>
</div>
</div>
</div>
</div>
)
}
</html>