diff --git a/apps/web/src/modules/marketing/home/mesh-stream.tsx b/apps/web/src/modules/marketing/home/mesh-stream.tsx index 1a1e21b..55d0402 100644 --- a/apps/web/src/modules/marketing/home/mesh-stream.tsx +++ b/apps/web/src/modules/marketing/home/mesh-stream.tsx @@ -121,6 +121,13 @@ export interface MeshStreamProps { emptyLabel?: string; /** footer content (stats / progress bar / timers) */ footer?: React.ReactNode; + /** + * When true (live dashboard), the message list gets a fixed viewport + * with overflow-y-auto — standard chat UI. When false (landing demo), + * the list grows intrinsically so wheel events pass through to the + * page scroll instead of being captured by the list. + */ + scrollable?: boolean; } export const MeshStream = ({ @@ -130,6 +137,7 @@ export const MeshStream = ({ peersHint, emptyLabel = "Waiting for messages…", footer, + scrollable = false, }: MeshStreamProps) => { const [focusedPeer, setFocusedPeer] = useState(null); const [hoveredKey, setHoveredKey] = useState(null); @@ -140,7 +148,12 @@ export const MeshStream = ({ : messages; return ( -
+
{/* peers sidebar */}
-
    +
      {filtered.length === 0 && (
    1. { channelLabel="live-stream" emptyLabel={emptyLabel} footer={footer} + scrollable />
);