diff --git a/components/tracks/Track.tsx b/components/tracks/Track.tsx index 65f3469..e49c009 100644 --- a/components/tracks/Track.tsx +++ b/components/tracks/Track.tsx @@ -57,6 +57,7 @@ export function Track({ const [isEditingName, setIsEditingName] = React.useState(false); const [nameInput, setNameInput] = React.useState(String(track.name || 'Untitled Track')); const [effectBrowserOpen, setEffectBrowserOpen] = React.useState(false); + const [showEffects, setShowEffects] = React.useState(false); const inputRef = React.useRef(null); const handleNameClick = () => { @@ -252,16 +253,17 @@ export function Track({
- {/* Left: Track Control Panel (Fixed Width) */} -
e.stopPropagation()} - > + {/* Top: Track Row (Control Panel + Waveform) */} +
+ {/* Left: Track Control Panel (Fixed Width) */} +
e.stopPropagation()} + > {/* Track Name & Collapse Toggle */}
- {/* Devices/Effects Section */} -
-
- - Devices ({track.effectChain.effects.length}) - + {/* Devices Toggle Button */} + {!track.collapsed && ( +
- - {/* Horizontal scrolling device rack */} -
-
- {track.effectChain.effects.length === 0 ? ( -
- No devices. Click + to add an effect. -
- ) : ( - track.effectChain.effects.map((effect) => ( - onToggleEffect?.(effect.id)} - onRemove={() => onRemoveEffect?.(effect.id)} - /> - )) - )} -
-
-
+ )} )}
@@ -472,6 +457,59 @@ export function Track({ ) )}
+
+ + {/* Bottom: Effects Section (Collapsible, Full Width) */} + {showEffects && !track.collapsed && ( +
+ {/* Effects Header */} +
+ + Devices ({track.effectChain.effects.length}) + +
+ + +
+
+ + {/* Horizontal scrolling device rack */} +
+
+ {track.effectChain.effects.length === 0 ? ( +
+ No devices. Click + to add an effect. +
+ ) : ( + track.effectChain.effects.map((effect) => ( + onToggleEffect?.(effect.id)} + onRemove={() => onRemoveEffect?.(effect.id)} + /> + )) + )} +
+
+
+ )} {/* Effect Browser Dialog */}