diff --git a/frontend/src/components/Channels.tsx b/frontend/src/components/Channels.tsx index 0f1f7fe9..53523402 100644 --- a/frontend/src/components/Channels.tsx +++ b/frontend/src/components/Channels.tsx @@ -12,6 +12,7 @@ import { buildChannelColumns } from "./channelColumns"; import { notify } from "../lib/notifications"; import Tooltip from "./Tooltip"; import DataTable from "./DataTable"; +import Tabs, { type TabDef } from "./Tabs"; import ChannelLayoutGrid from "./ChannelLayoutGrid"; import { LoadingState, StateMessage } from "./QueryState"; import { useChannelTagActions } from "../lib/useChannelTagActions"; @@ -299,7 +300,7 @@ export default function Channels() { key={c.value || "all"} onClick={() => setFilters({ ...filters, sync: c.value })} aria-pressed={syncFilter === c.value} - className="pill text-xs px-2.5 py-1 rounded-full border" + className="pill text-xs px-2.5 py-1 rounded-lg border" > {t(c.labelKey)} @@ -431,20 +432,17 @@ export default function Channels() { }, [filters, search, sort, resetPage]); const cardPager = ; + const viewTabs: TabDef[] = ( + ["subscribed", "discovery", "hidden", "blocked"] as ChannelsView[] + ).map((v) => ({ id: v, label: t(`channels.tabs.${v}`) })); const tabs = (
-
- {(["subscribed", "discovery", "hidden", "blocked"] as ChannelsView[]).map((v) => ( - - ))} -
+ setView(id as ChannelsView)} + className="flex flex-wrap items-center gap-1" + />
{view === "subscribed" && statsBlock} {view === "subscribed" && layout === "cards" && sortControl} @@ -476,7 +474,7 @@ export default function Channels() { key={tg.id} onClick={() => toggleTagFilter(tg.id)} aria-pressed={tagFilter.includes(String(tg.id))} - className="pill text-xs px-2 py-1 rounded-full border" + className="pill text-xs px-2 py-1 rounded-lg border" > {tg.name} @@ -491,7 +489,7 @@ export default function Channels() { )}