refactor: rename project Lyria Studio → Kithara Studio
- App name, UI text, page titles → Kithara Studio - Python module: lyria_client.py → kithara_client.py - Tailwind color classes: lyria-* → kithara-* - CSS custom properties: --lyria-* → --kithara-* - Database: lyria.db → kithara.db - Package name: kithara-studio-frontend - localStorage key: kithara-saved-searches - Add project logo (lyre icon, black on transparent, invert via CSS) Preserved as Google's property: - LYRIA_API_KEY, LYRIA_BASE_URL, LYRIA_DEFAULT_MODEL env vars - LYRIA_MODELS dict and model IDs (lyria-3-clip-preview, lyria-3-pro-preview) - Google Lyria API references in error messages and docstrings
This commit is contained in:
1 parent
6c1e1b4509
commit
816f8fbd2f
20 files changed
+191
-193
No files matched your search
@@ -107,7 +107,7 @@ export default function Generator({ onGenerate }: Props) {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="bg-lyria-panel rounded-lg p-5 border border-white/5">
|
||||
<div className="bg-kithara-panel rounded-lg p-5 border border-white/5">
|
||||
<h2 className="text-sm font-semibold text-white mb-4 uppercase tracking-wider">
|
||||
Generate
|
||||
</h2>
|
||||
@@ -116,13 +116,13 @@ export default function Generator({ onGenerate }: Props) {
|
||||
{/* Model & Duration */}
|
||||
<div className="flex gap-4">
|
||||
<div className="flex-1">
|
||||
<label className="block text-xs text-lyria-muted mb-1.5">
|
||||
<label className="block text-xs text-kithara-muted mb-1.5">
|
||||
Model
|
||||
</label>
|
||||
<select
|
||||
value={model}
|
||||
onChange={(e) => handleModelChange(e.target.value)}
|
||||
className="w-full bg-lyria-dark border border-white/10 rounded-md px-3 py-2 text-sm text-white focus:outline-none focus:border-lyria-accent"
|
||||
className="w-full bg-kithara-dark border border-white/10 rounded-md px-3 py-2 text-sm text-white focus:outline-none focus:border-kithara-accent"
|
||||
>
|
||||
{Object.entries(models).map(([key, info]) => (
|
||||
<option key={key} value={key}>
|
||||
@@ -133,7 +133,7 @@ export default function Generator({ onGenerate }: Props) {
|
||||
</div>
|
||||
|
||||
<div className="w-28">
|
||||
<label className="block text-xs text-lyria-muted mb-1.5">
|
||||
<label className="block text-xs text-kithara-muted mb-1.5">
|
||||
Duration ({duration}s)
|
||||
</label>
|
||||
<input
|
||||
@@ -142,12 +142,12 @@ export default function Generator({ onGenerate }: Props) {
|
||||
max={maxDuration}
|
||||
value={duration}
|
||||
onChange={(e) => setDuration(Number(e.target.value))}
|
||||
className="w-full mt-2 accent-lyria-accent"
|
||||
className="w-full mt-2 accent-kithara-accent"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center justify-between text-xs text-lyria-muted">
|
||||
<div className="flex items-center justify-between text-xs text-kithara-muted">
|
||||
<span>{currentModelInfo?.name || 'Clip Preview'}</span>
|
||||
<span>{duration}s / {maxDuration}s max</span>
|
||||
</div>
|
||||
@@ -160,8 +160,8 @@ export default function Generator({ onGenerate }: Props) {
|
||||
onClick={() => setPromptMode('basic')}
|
||||
className={`flex-1 py-1.5 text-xs font-medium rounded-md transition-colors ${
|
||||
promptMode === 'basic'
|
||||
? 'bg-lyria-accent text-black'
|
||||
: 'text-lyria-muted hover:text-white'
|
||||
? 'bg-kithara-accent text-black'
|
||||
: 'text-kithara-muted hover:text-white'
|
||||
}`}
|
||||
>
|
||||
Basic
|
||||
@@ -171,8 +171,8 @@ export default function Generator({ onGenerate }: Props) {
|
||||
onClick={() => setPromptMode('advanced')}
|
||||
className={`flex-1 py-1.5 text-xs font-medium rounded-md transition-colors ${
|
||||
promptMode === 'advanced'
|
||||
? 'bg-lyria-accent text-black'
|
||||
: 'text-lyria-muted hover:text-white'
|
||||
? 'bg-kithara-accent text-black'
|
||||
: 'text-kithara-muted hover:text-white'
|
||||
}`}
|
||||
>
|
||||
Advanced
|
||||
@@ -184,12 +184,12 @@ export default function Generator({ onGenerate }: Props) {
|
||||
{(promptMode === 'basic' || !isPro) && (
|
||||
<div>
|
||||
<div className="flex items-center justify-between mb-1.5">
|
||||
<label className="text-xs text-lyria-muted">Prompt</label>
|
||||
<label className="text-xs text-kithara-muted">Prompt</label>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setSuggestionsOpen(true)}
|
||||
disabled={!prompt.trim()}
|
||||
className="text-xs text-lyria-accent hover:text-lyria-accent/80 transition-colors disabled:opacity-40"
|
||||
className="text-xs text-kithara-accent hover:text-kithara-accent/80 transition-colors disabled:opacity-40"
|
||||
>
|
||||
Get Suggestions ✨
|
||||
</button>
|
||||
@@ -198,7 +198,7 @@ export default function Generator({ onGenerate }: Props) {
|
||||
value={prompt}
|
||||
onChange={(e) => setPrompt(e.target.value)}
|
||||
placeholder="Dark distorted kickdrum with atmospheric synth pads, 180 BPM..."
|
||||
className="w-full h-24 bg-lyria-dark border border-white/10 rounded-md px-3 py-2 text-sm text-white placeholder:text-lyria-muted/50 focus:outline-none focus:border-lyria-accent resize-none"
|
||||
className="w-full h-24 bg-kithara-dark border border-white/10 rounded-md px-3 py-2 text-sm text-white placeholder:text-kithara-muted/50 focus:outline-none focus:border-kithara-accent resize-none"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
@@ -207,12 +207,12 @@ export default function Generator({ onGenerate }: Props) {
|
||||
{promptMode === 'advanced' && isPro && (
|
||||
<div>
|
||||
<div className="flex items-center justify-between mb-1.5">
|
||||
<label className="text-xs text-lyria-muted">Structured Prompt</label>
|
||||
<label className="text-xs text-kithara-muted">Structured Prompt</label>
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setSuggestionsOpen(true)}
|
||||
disabled={Object.values(structuredPrompt).every(v => !v?.trim())}
|
||||
className="text-xs text-lyria-accent hover:text-lyria-accent/80 transition-colors disabled:opacity-40"
|
||||
className="text-xs text-kithara-accent hover:text-kithara-accent/80 transition-colors disabled:opacity-40"
|
||||
>
|
||||
Get Suggestions ✨
|
||||
</button>
|
||||
@@ -231,7 +231,7 @@ export default function Generator({ onGenerate }: Props) {
|
||||
<button
|
||||
type="submit"
|
||||
disabled={isLoading || (promptMode === 'basic' ? !prompt.trim() : Object.values(structuredPrompt).every(v => !v?.trim()))}
|
||||
className="w-full py-2.5 bg-lyria-accent text-white text-sm font-medium rounded-md hover:bg-lyria-accent/90 disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
|
||||
className="w-full py-2.5 bg-kithara-accent text-white text-sm font-medium rounded-md hover:bg-kithara-accent/90 disabled:opacity-40 disabled:cursor-not-allowed transition-colors"
|
||||
>
|
||||
{isLoading ? 'Generating...' : 'Generate'}
|
||||
</button>
|
||||
|
||||
Reference in new issue
Block a user