added icons for proxy groups

This commit is contained in:
coolcoala
2025-07-26 06:52:36 +03:00
parent 0a0b5b6612
commit 8186a6841a

View File

@@ -37,6 +37,7 @@ interface IProxyGroup {
now: string; now: string;
hidden: boolean; hidden: boolean;
all: (string | { name: string })[]; all: (string | { name: string })[];
icon?: string;
} }
// --- Вспомогательная функция для цвета задержки --- // --- Вспомогательная функция для цвета задержки ---
@@ -112,6 +113,7 @@ export const ProxySelectors: React.FC = () => {
(localStorage.getItem(STORAGE_KEY_SORT_TYPE) as ProxySortType) || (localStorage.getItem(STORAGE_KEY_SORT_TYPE) as ProxySortType) ||
"default", "default",
); );
const enable_group_icon = verge?.enable_group_icon ?? true;
useEffect(() => { useEffect(() => {
if (!proxies?.groups) return; if (!proxies?.groups) return;
@@ -291,21 +293,31 @@ export const ProxySelectors: React.FC = () => {
disabled={isGlobalMode || isDirectMode} disabled={isGlobalMode || isDirectMode}
> >
<SelectTrigger className="w-100"> <SelectTrigger className="w-100">
<Tooltip> <div className="flex items-center gap-2 truncate">
<TooltipTrigger asChild> <span className="truncate">
<span className="truncate"> <SelectValue placeholder={t("Select a group...")} />
<SelectValue placeholder={t("Select a group...")} /> </span>
</span> </div>
</TooltipTrigger>
<TooltipContent>
<p>{selectedGroup}</p>
</TooltipContent>
</Tooltip>
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>
{selectorGroups.map((group: IProxyGroup) => ( {selectorGroups.map((group: IProxyGroup) => (
<SelectItem key={group.name} value={group.name}> <SelectItem key={group.name} value={group.name}>
{group.name} <div className="flex items-center gap-2">
{enable_group_icon && group.icon && (
<img
src={
group.icon.startsWith("data")
? group.icon
: group.icon.startsWith("<svg")
? `data:image/svg+xml;base64,${btoa(group.icon)}`
: group.icon
}
className="w-4 h-4 rounded-sm"
alt={group.name}
/>
)}
<span>{group.name}</span>
</div>
</SelectItem> </SelectItem>
))} ))}
</SelectContent> </SelectContent>