feat: initial conversational flow #37

Merged
talksik merged 39 commits from 33-conversational-flow-for-streams---story-mode into master 2026-03-19 23:29:41 +00:00
4 changed files with 8 additions and 11 deletions
Showing only changes of commit 78320f33c8 - Show all commits
@@ -11,7 +11,7 @@ export default function ControlsIndicator({ type }: ControlsIndicatorProps) {
const setRecordingMode = useMediaSettingsStore((s) => s.setRecordingMode); const setRecordingMode = useMediaSettingsStore((s) => s.setRecordingMode);
return ( return (
<div className="flex items-center gap-2 text-xs"> <div className="flex items-center gap-2 text-xs rounded-full pl-1 pr-3 py-1 bg-black/30 backdrop-blur-sm m-2">
<Button <Button
onClick={() => onClick={() =>
setRecordingMode(recordingMode === "video" ? "audio" : "video") setRecordingMode(recordingMode === "video" ? "audio" : "video")
@@ -39,6 +39,7 @@ export default function ControlsIndicator({ type }: ControlsIndicatorProps) {
</> </>
)} )}
</Button> </Button>
<div className="flex-1" />
<div className="text-muted-foreground"> <div className="text-muted-foreground">
Hold{" "} Hold{" "}
<kbd <kbd
+1 -3
View File
@@ -131,9 +131,7 @@ export default function Layout() {
return ( return (
<div className="flex h-screen flex-col"> <div className="flex h-screen flex-col">
<TopBar /> <TopBar />
<div className="relative flex-1 overflow-hidden"> <Outlet />
<Outlet />
</div>
</div> </div>
); );
} }
+3 -3
View File
@@ -13,10 +13,10 @@ export default function NetworkRoot() {
const path = particlePath(networkId!, []); const path = particlePath(networkId!, []);
return ( return (
<> <div className="flex flex-col h-full relative">
<ParticleListView path={path} /> <ParticleListView path={path} />
<ControlsIndicator type={"new"} />
<ComposeOverlay networkId={networkId!} /> <ComposeOverlay networkId={networkId!} />
</> <ControlsIndicator type={"new"} />
</div>
); );
} }
+2 -4
View File
@@ -265,10 +265,8 @@ export function StreamView({ path, streamParticle }: StreamViewProps) {
/> />
{/* Bottom overlay: stream info + reply */} {/* Bottom overlay: stream info + reply */}
<div className="absolute right-0 bottom-0 z-10 flex justify-center p-2"> <div className="absolute right-0 left-0 bottom-0 z-10">
<div className="flex w-full items-center gap-2.5 rounded-full pl-1 pr-2 py-1 bg-black/30 backdrop-blur-sm"> <ControlsIndicator type={"reply"} />
<ControlsIndicator type={"reply"} />
</div>
</div> </div>
</div> </div>
); );