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() {
)}