remove grid view for streams

- Reduces surface area
- Reduces options for people (less cognitive load)
- One way to use the product
- List view works better for keyboard shortcuts
- List view has basics such as recency
This commit is contained in:
talksik
2026-04-08 08:21:54 -07:00
parent d8b4c488b5
commit f95ccf134d
4 changed files with 6 additions and 129 deletions
+4 -15
View File
@@ -2,25 +2,21 @@ import { useEffect, useState } from "react";
interface UseStreamKeyboardNavOptions {
streams: Array<{ id: string }>;
viewMode: "list" | "grid";
enabled: boolean;
onNavigate: (streamId: string) => void;
gridColumns?: number;
}
export function useStreamKeyboardNav({
streams,
viewMode,
enabled,
onNavigate,
gridColumns = 3,
}: UseStreamKeyboardNavOptions) {
const [selectedIndex, setSelectedIndex] = useState<number | null>(null);
// Reset selection to first item when streams change or view mode switches
useEffect(() => {
setSelectedIndex(streams.length > 0 ? 0 : null);
}, [streams.length, viewMode]);
}, [streams.length]);
useEffect(() => {
if (!enabled || streams.length === 0) return;
@@ -63,15 +59,8 @@ export function useStreamKeyboardNav({
// Arrow keys: move selection
let delta: number | null = null;
if (viewMode === "list") {
if (e.key === "ArrowDown") delta = 1;
else if (e.key === "ArrowUp") delta = -1;
} else {
if (e.key === "ArrowDown") delta = gridColumns;
else if (e.key === "ArrowUp") delta = -gridColumns;
else if (e.key === "ArrowRight") delta = 1;
else if (e.key === "ArrowLeft") delta = -1;
}
if (e.key === "ArrowDown") delta = 1;
else if (e.key === "ArrowUp") delta = -1;
if (delta !== null) {
e.preventDefault();
@@ -87,7 +76,7 @@ export function useStreamKeyboardNav({
// components (ToggleGroup, etc.) consume them for their own navigation.
window.addEventListener("keydown", handleKeyDown, true);
return () => window.removeEventListener("keydown", handleKeyDown, true);
}, [enabled, viewMode, gridColumns, streams, onNavigate]);
}, [enabled, streams, onNavigate]);
return { selectedIndex };
}