diff --git a/components/PromptHero.tsx b/components/PromptHero.tsx
index 095e2eb..7e8e2a9 100644
--- a/components/PromptHero.tsx
+++ b/components/PromptHero.tsx
@@ -538,12 +538,74 @@ export function PromptHero() {
/>
-
- );
- })}
-
+ {/* Controls Area */}
+
- {/* Hidden file inputs for upload */ }
+ {/* Left Controls: References */}
+ {/* For Meta AI: Only Subject is enabled (for video generation), Scene/Style disabled */}
+
+ {((settings.provider === 'meta'
+ ? ['subject']
+ : ['subject', 'scene', 'style']) as ReferenceCategory[]).map((cat) => {
+ const refs = references[cat] || [];
+ const hasRefs = refs.length > 0;
+ const isUploading = uploadingRefs[cat];
+
+ return (
+
+
toggleReference(cat)}
+ onDragOver={handleDragOver}
+ onDrop={(e) => handleDrop(e, cat)}
+ title={settings.provider === 'meta' && cat === 'subject'
+ ? "Upload image to animate into video"
+ : undefined}
+ className={cn(
+ "flex items-center gap-1.5 rounded-lg px-3 py-2 md:px-3 md:py-1.5 text-xs md:text-[10px] font-medium transition-all border relative overflow-hidden min-h-[44px] md:min-h-0",
+ hasRefs
+ ? "bg-purple-500/10 text-purple-200 border-purple-500/30 hover:bg-purple-500/20"
+ : "bg-white/5 text-white/40 border-white/5 hover:bg-white/10 hover:text-white/70 hover:border-white/10",
+ isUploading && "animate-pulse cursor-wait"
+ )}
+ >
+ {isUploading ? (
+
+ ) : hasRefs ? (
+
+ {refs.slice(0, 4).map((ref, idx) => (
+
+ ))}
+
+ ) : (
+
+ )}
+ {cat}
+ {refs.length > 0 && (
+ {refs.length}
+ )}
+
+ {/* Clear all button */}
+ {hasRefs && !isUploading && (
+
{ e.stopPropagation(); clearReferences(cat); }}
+ title={`Clear all ${cat} references`}
+ >
+
+
+ )}
+
+ );
+ })}
+
+
+ {/* Hidden file inputs for upload */}
+ {/* Right Controls: Settings & Generate */}
+
- {/* Settings Group */}
-
-
- {/* Image Count */}
-
-
- {settings.provider === 'meta' ? 4 : settings.imageCount}
-
+ {/* Settings Group */}
+
+
+ {/* Image Count */}
+
+
+ {settings.provider === 'meta' ? 4 : settings.imageCount}
+
-
+
- {/* Aspect Ratio */}
-
- Ratio:
- {settings.aspectRatio}
-
+ {/* Aspect Ratio */}
+
+ Ratio:
+ {settings.aspectRatio}
+
-
+
- {/* Precise Mode */}
-
setSettings({ preciseMode: !settings.preciseMode })}
- className={cn(
- "px-2 py-1 rounded-md text-[10px] font-medium transition-all flex items-center gap-1",
- settings.preciseMode
- ? "text-amber-300 bg-amber-500/10 ring-1 ring-amber-500/30"
- : "text-white/40 hover:text-white hover:bg-white/5"
- )}
- title="Precise Mode"
- >
- {/* 🍌 */}
- Precise
-
-
-
+ {/* Precise Mode */}
+
setSettings({ preciseMode: !settings.preciseMode })}
+ className={cn(
+ "px-2 py-1 rounded-md text-[10px] font-medium transition-all flex items-center gap-1",
+ settings.preciseMode
+ ? "text-amber-300 bg-amber-500/10 ring-1 ring-amber-500/30"
+ : "text-white/40 hover:text-white hover:bg-white/5"
+ )}
+ title="Precise Mode"
+ >
+ {/* 🍌 */}
+ Precise
+
+
+
- {/* Generate Button */}
-
-
- {isGenerating ? (
- <>
-
-
Dreaming...
- >
- ) : (
- <>
-
-
Generate
- >
- )}
-
-
+ {/* Generate Button */}
+
+
+ {isGenerating ? (
+ <>
+
+
Dreaming...
+ >
+ ) : (
+ <>
+
+
Generate
+ >
+ )}
+
+
-
+
- {/* Reference Preview Panel - shows when any references exist */ }
- {
- (references.subject?.length || references.scene?.length || references.style?.length) ? (
-