fix: align usage display across provider cards by always rendering action buttons

Test and ConfigureUsage buttons are now always rendered instead of
conditionally, with a disabled style for providers that don't support
them (e.g. official subscriptions). This ensures consistent button
container width so the usage display aligns uniformly across all cards.
This commit is contained in:
Jason
2026-04-05 17:26:45 +08:00
parent f1fb3351c1
commit 9192b6f988
+30 -27
View File
@@ -246,34 +246,37 @@ export function ProviderActions({
<Copy className="h-4 w-4" />
</Button>
{onTest && (
<Button
size="icon"
variant="ghost"
onClick={onTest}
disabled={isTesting}
title={t("modelTest.testProvider", "测试模型")}
className={iconButtonClass}
>
{isTesting ? (
<Loader2 className="h-4 w-4 animate-spin" />
) : (
<TestTube2 className="h-4 w-4" />
)}
</Button>
)}
<Button
size="icon"
variant="ghost"
onClick={onTest || undefined}
disabled={isTesting}
title={t("modelTest.testProvider", "测试模型")}
className={cn(
iconButtonClass,
!onTest && "opacity-40 cursor-not-allowed text-muted-foreground",
)}
>
{isTesting ? (
<Loader2 className="h-4 w-4 animate-spin" />
) : (
<TestTube2 className="h-4 w-4" />
)}
</Button>
{onConfigureUsage && (
<Button
size="icon"
variant="ghost"
onClick={onConfigureUsage}
title={t("provider.configureUsage")}
className={iconButtonClass}
>
<BarChart3 className="h-4 w-4" />
</Button>
)}
<Button
size="icon"
variant="ghost"
onClick={onConfigureUsage || undefined}
title={t("provider.configureUsage")}
className={cn(
iconButtonClass,
!onConfigureUsage &&
"opacity-40 cursor-not-allowed text-muted-foreground",
)}
>
<BarChart3 className="h-4 w-4" />
</Button>
{onOpenTerminal && (
<Button