1
0
forked from baron/baron-sso

locales sync 및 포맷 반영

This commit is contained in:
2026-02-25 16:48:11 +09:00
parent 3cfece2a33
commit 6d80b04a55
9 changed files with 125 additions and 32 deletions

View File

@@ -81,9 +81,14 @@ const CreateIdpModal = ({
<div className="fixed inset-0 bg-black/60 flex items-center justify-center z-50 backdrop-blur-sm">
<Card className="w-full max-w-lg shadow-2xl animate-in zoom-in-95 duration-200">
<CardHeader>
<CardTitle>{t("ui.dev.clients.federation.add_title", "Add Identity Provider")}</CardTitle>
<CardTitle>
{t("ui.dev.clients.federation.add_title", "Add Identity Provider")}
</CardTitle>
<CardDescription>
{t("msg.dev.clients.federation.add_subtitle", "Connect an external OIDC provider.")}
{t(
"msg.dev.clients.federation.add_subtitle",
"Connect an external OIDC provider.",
)}
</CardDescription>
</CardHeader>
<CardContent>
@@ -146,16 +151,22 @@ const CreateIdpModal = ({
<Button type="button" variant="outline" onClick={onClose}>
{t("ui.common.cancel", "Cancel")}
</Button>
<Button
type="submit"
disabled={mutation.isPending || formData.display_name.trim() === "" || formData.issuer_url.trim() === ""}
<Button
type="submit"
disabled={
mutation.isPending ||
formData.display_name.trim() === "" ||
formData.issuer_url.trim() === ""
}
>
{mutation.isPending ? (
<div className="h-4 w-4 border-2 border-white/30 border-t-white rounded-full animate-spin mr-2" />
) : (
<Save size={16} className="mr-2" />
)}
{mutation.isPending ? t("msg.common.saving", "Saving...") : t("ui.common.save", "Save Configuration")}
{mutation.isPending
? t("msg.common.saving", "Saving...")
: t("ui.common.save", "Save Configuration")}
</Button>
</div>
</form>
@@ -170,7 +181,11 @@ export function ClientFederationPage() {
const [isCreateModalOpen, setCreateModalOpen] = useState(false);
if (!clientId) {
return <div className="p-8 text-center text-destructive">Client ID is missing</div>;
return (
<div className="p-8 text-center text-destructive">
Client ID is missing
</div>
);
}
const { data, isLoading, error } = useQuery({
@@ -187,7 +202,10 @@ export function ClientFederationPage() {
{t("ui.dev.clients.federation.title", "Identity Federation")}
</h1>
<p className="text-muted-foreground">
{t("msg.dev.clients.federation.subtitle", "Manage external identity providers for this application.")}
{t(
"msg.dev.clients.federation.subtitle",
"Manage external identity providers for this application.",
)}
</p>
</div>
<Button onClick={() => setCreateModalOpen(true)} className="gap-2">
@@ -216,20 +234,34 @@ export function ClientFederationPage() {
</TableRow>
) : error ? (
<TableRow>
<TableCell colSpan={4} className="h-24 text-center text-destructive">
<TableCell
colSpan={4}
className="h-24 text-center text-destructive"
>
{(error as Error).message}
</TableCell>
</TableRow>
) : data?.length === 0 ? (
<TableRow>
<TableCell colSpan={4} className="h-24 text-center text-muted-foreground">
{t("msg.dev.clients.federation.empty", "No IdP configurations found.")}
<TableCell
colSpan={4}
className="h-24 text-center text-muted-foreground"
>
{t(
"msg.dev.clients.federation.empty",
"No IdP configurations found.",
)}
</TableCell>
</TableRow>
) : (
data?.map((config: IdpConfig) => (
<tr key={config.id} className="border-b transition-colors hover:bg-muted/50">
<TableCell className="font-medium">{config.display_name}</TableCell>
<tr
key={config.id}
className="border-b transition-colors hover:bg-muted/50"
>
<TableCell className="font-medium">
{config.display_name}
</TableCell>
<TableCell>{config.provider_type.toUpperCase()}</TableCell>
<TableCell>
<span
@@ -247,7 +279,11 @@ export function ClientFederationPage() {
<Button variant="ghost" size="icon" className="h-8 w-8">
<Edit className="h-4 w-4" />
</Button>
<Button variant="ghost" size="icon" className="h-8 w-8 text-destructive">
<Button
variant="ghost"
size="icon"
className="h-8 w-8 text-destructive"
>
<Trash2 className="h-4 w-4" />
</Button>
</div>