"use client"; import type { ProviderDisplayMode } from "../providerPageStorage"; type ProviderMessageTranslator = ((key: string, values?: Record) => string) & { has?: (key: string) => boolean; }; function providerText( t: ProviderMessageTranslator, key: string, fallback: string, values?: Record ): string { if (typeof t.has === "function" && t.has(key)) { return t(key, values); } if (values) { return Object.entries(values).reduce( (acc, [name, value]) => acc.replaceAll(`{${name}}`, String(value)), fallback ); } return fallback; } interface ProviderDisplayModeControlProps { disabledConfigured: boolean; mode: ProviderDisplayMode; onChange(mode: ProviderDisplayMode): void; t: ProviderMessageTranslator; } export default function ProviderDisplayModeControl({ disabledConfigured, mode, onChange, t, }: ProviderDisplayModeControlProps) { const options: Array<{ mode: ProviderDisplayMode; label: string; icon: string; disabled?: boolean; title: string; }> = [ { mode: "all", label: providerText(t, "providerDisplayModeAll", "All"), icon: "view_module", title: providerText( t, "providerDisplayModeAllDesc", "Show every provider in grouped sections." ), }, { mode: "configured", label: providerText(t, "providerDisplayModeConfigured", "Configured"), icon: "check_circle", disabled: disabledConfigured, title: providerText( t, "providerDisplayModeConfiguredDesc", "Show providers with saved connections." ), }, { mode: "compact", label: providerText(t, "providerDisplayModeCompact", "Compact"), icon: "view_agenda", title: providerText( t, "providerDisplayModeCompactDesc", "Show configured and no-auth providers once in a single flat list." ), }, ]; return (
{options.map((option) => { const isActive = mode === option.mode; return ( ); })}
); }