const OidcScreen = ({ openModal, tweaks }) => ( <>

OIDC clients

Register the apps that use Sign in with Swop — your hosted identity surface. Each client gets its own redirect, scopes, and token lifetimes.

}>New client
{OIDC_CLIENTS.map(c => (
{c.name}
{c.id}
Type
{c.type}
Redirect
{c.redirect}
Configure }>Preview
))}
Preview flow}> ); const AuthMethodCards = ({ layout }) => { const methods = [ { k: "passkey", label: "Passkey", desc: "Face ID, Touch ID, security keys", icon: , tag: "Recommended", on: true }, { k: "email", label: "Email", desc: "One-time code · passwordless", icon: , on: true }, { k: "sso", label: "SSO · OIDC", desc: "Google, Microsoft, Okta", icon: , on: true }, { k: "wallet", label: "External wallet", desc: "MetaMask, WalletConnect, Coinbase", icon: , on: false }, ]; if (layout === "list") { return (
{methods.map(m => (
{m.icon}
{m.label} {m.tag && {m.tag}}
{m.desc}
{}}/>
))}
); } if (layout === "inline") { return (
{methods.map(m => (
{m.icon} {m.label}
))}
); } // stacked grid return (
{methods.map(m => (
{m.icon}
{}}/>
{m.label} {m.tag && {m.tag}}
{m.desc}
))}
); }; Object.assign(window, { OidcScreen, AuthMethodCards });