Files
Termix/plugins/sso/src/frontend/OidcLoginButtons.tsx
T

40 lines
1.0 KiB
TypeScript
Raw Normal View History

2026-10-01 16:20:16 -05:00
import { useState } from "react";
import { Button } from "@termix/plugin-sdk/ui";
import {
useTranslation,
type LoginMethodUIProps,
} from "@termix/plugin-sdk/frontend";
/** One button per enabled provider. */
export function OidcLoginButtons({
instances,
disabled,
startRedirect,
}: LoginMethodUIProps) {
const { t } = useTranslation();
const [loadingId, setLoadingId] = useState<string | null>(null);
return (
<>
{instances.map((instance) => (
<Button
key={instance.id}
onClick={async () => {
setLoadingId(instance.id);
try {
await startRedirect(instance.id);
} finally {
setLoadingId(null);
}
}}
disabled={disabled || loadingId !== null}
className="w-full bg-accent-brand hover:bg-accent-brand/90 text-background font-bold"
>
{loadingId === instance.id
? t("loading")
: t("loginWithProvider", { name: instance.label })}
</Button>
))}
</>
);
}