Botão social
Botões de login para 24 provedores mais marcas personalizadas. Nomeando a marca fornece seu logotipo, cor e etiqueta acessível juntos, de modo que uma pilha deles não pode se separar. Renda um botão por padrão, ou uma âncora quando dado um href, uma vez que um início OAuth é uma navegação.
Instalação
Você pode adicionar o componente de botão social usando o nosso CLI ou manualmente:
Modo escuro pronto - este componente segue tokens semânticos BoardUI automaticamente. Configurar a mudança de tema.
O CLI copia a fonte do componente (com suas dependências internas) em seu projeto e instala quaisquer pacotes npm necessários.
npx boardui@latest add social-buttonUsando um pacote de UI compartilhado ou aliases de importação personalizados? Configure seus caminhos de instalação antes de executar o CLI. Exemplos de copy-paste usam as importações padrão.
Marcas
Todos os 24 logótipos enviam em linha com o componente, de modo que uma instalação puxa nenhum pacote de ícones. As marcas de cores completas vêm do SVG Logos (CC0), dos glifos monocromáticos de Ícones Simples (CC0) e das quatro marcas Ícones Simples já não carregam dos Ícones Bootstrap (MIT). A Amazon não tem nenhuma marca de cores completas a montante, por isso sob white Regressa ao seu glifo afinado.
type SocialBrand = | "google" | "apple" | "github" | "gitlab" | "microsoft" | "x" | "facebook" | "linkedin" | "discord" | "slack" | "figma" | "notion" | "dropbox" | "spotify" | "twitch" | "reddit" | "tiktok" | "instagram" | "telegram" | "whatsapp" | "amazon" | "bitbucket" | "auth0" | "okta" | "custom";Aparência
colorful é o padrão: a própria cor da marca na mesma receita gradiente-e-sombra que o botão primário, por isso ele lê como um controle BoardUI em vez de um widget colado. black é a mesma forma em sólido de alto contraste. white é delineado, e o único que mostra a marca multicolor de cada provedor, uma vez que em um preenchimento saturado que a arte lutaria contra o fundo. Para uma pilha de vários provedores, prefira white: uma coluna de preenchimentos de marcas concorrentes não faz uma única opção legível.
{/* Colorful: the brand colour in the primary Button's gradient (default) */}<SocialButton brand="google" appearance="colorful" />
{/* Black: the same shape in high-contrast solid */}<SocialButton brand="google" appearance="black" />
{/* White: outlined, and the one that shows the real multi-colour mark */}<SocialButton brand="google" appearance="white" />Tamanhos
medium (36px) e small(32px) são os tamanhos próprios do botão base para o pixel, raio e tamanho do glifo incluído, de modo que estes se sentam em uma forma ao lado de um botão sem um meio passo no ritmo. Ambos carregam uma largura fixa (300px e 250px) de modo que uma coluna de provedores se alinha por conta própria; fullWidth Dá isso de volta ao contentor.
<SocialButton brand="slack" size="medium" /> {/* 36px, like Button medium */}<SocialButton brand="slack" size="small" /> {/* 32px, like Button small */}
{/* Drop the fixed width when the container should decide */}<SocialButton brand="slack" fullWidth />Apenas Ícone
Um botão quadrado que mostra apenas o logotipo, para a linha de alternativas sob um campo de e-mail. O nome da marca move- se para aria-label, então o controle ainda se anuncia.
<SocialButton brand="google" appearance="white" iconOnly /><SocialButton brand="apple" appearance="white" iconOnly /><SocialButton brand="github" appearance="white" iconOnly />
{/* The brand name stays as the accessible name when the label is hidden */}Marca personalizada
Para um provedor de identidade que não é construído em, passe brand="custom" com uma configApenas ícone é necessário: label por omissão a SSO e cor ao preto.
import { RiShieldKeyholeLine } from "@remixicon/react";
<SocialButton brand="custom" config={{ icon: <RiShieldKeyholeLine className="size-5" />, label: "Okta SSO", color: "#0f172a", }}/>
{/* label defaults to "SSO" and color to black */}<SocialButton brand="custom" config={{ icon: <RiShieldKeyholeLine className="size-5" /> }} />Rótulos
O rótulo padrão é Continuar com <Brand>. Passar as crianças para dizer outra coisa, uma vez que uma tela de inscrição e uma tela de login geralmente querem uma redação diferente.
<SocialButton brand="google" /> {/* Continue with Google */}<SocialButton brand="google">Sign up with Google</SocialButton><SocialButton brand="google">Log in</SocialButton>Botões e ligações
Passando href torna uma âncora em vez de um botão. A maioria dos fluxos de OAuth começa navegando para um URL do provedor, e uma âncora dá a semântica correta, o meio- clique e o comportamento do teclado de graça.
{/* An OAuth start is a navigation, so pass href and get an anchor */}<SocialButton brand="github" href="/api/auth/github" />
{/* Otherwise it is a button */}<SocialButton brand="github" onClick={() => signIn("github")} />Marcas comerciais
Os logotipos são marcas comerciais de seus respectivos proprietários, incluídos aqui para que você possa construir uma tela de login. Vários provedores publicam regras para seus botões de login cobrindo cores, espaço claro e redação, Google e Apple em particular, então verifique aqueles antes de enviar um login de produção.