← All @molecule/* packages · App templates
@molecule/app-oauth-logos-reactFeature · oauth-logos · App (browser) · v1.0.1 · Apache-2.0
Canonical OAuth provider brand logos (GitHub, Google, GitLab, Twitter/X, Apple, Facebook, Microsoft, LinkedIn, Discord) as React SVG components — identical across every app regardless of icon bond
npm install @molecule/app-oauth-logos-react@molecule/app-oauth-logos-react is a ready-made oauth-logos feature for the app (browser) side. It composes the core interfaces it needs, so it works with whichever providers your app has bonded.
import { OAuthProviderLogo } from '@molecule/app-oauth-logos-react'
;<button className={app.myButtonChrome}>
<OAuthProviderLogo provider="github" size={20} />
<span>Continue with GitHub</span>
</button>Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
Canonical OAuth provider brand logos.
Ships every logo as a self-contained React SVG component with a
normalized 24×24 viewBox and a mode prop ('brand' default — the
official multi-color mark — or 'mono' — currentColor for
uniform-theme button rows).
Unlike resolving icons through @molecule/app-icons, these logos
are bundled inline so every app renders pixel-identical marks
regardless of which icon-set bond is wired.
Exports:
<OAuthProviderLogo provider="github"|"google"|... /> — dispatcher.<GitHubLogo/>, <GoogleLogo/>, <GitLabLogo/>,
<TwitterLogo/> / <XLogo/>, <AppleLogo/>, <FacebookLogo/>,
<MicrosoftLogo/>, <LinkedInLogo/>, <DiscordLogo/>.OAuthProviderId, OAuthLogoProps types.import { OAuthProviderLogo } from '@molecule/app-oauth-logos-react'
;<button className={app.myButtonChrome}>
<OAuthProviderLogo provider="github" size={20} />
<span>Continue with GitHub</span>
</button>
feature
npm install @molecule/app-oauth-logos-react react
npm install -D @types/react
OAuthLogoPropsProps shared by all OAuth provider logo components.
interface OAuthLogoProps {
/**
* Rendered size in pixels (applied to both width and height). Defaults to 20.
*
* Every logo is authored at a normalized 24×24 viewBox so scaling is
* identical across providers at any size — the logo's visual weight
* matches exactly between apps.
*/
size?: number
/** Optional className on the outer SVG element. */
className?: string
/**
* Color mode. Defaults to `'brand'` (official multi-color marks).
* Use `'mono'` to render in `currentColor` — useful for uniform
* monochrome rows that match the button text color.
*/
mode?: 'brand' | 'mono'
/**
* Accessible label. Defaults to the provider's brand name
* (e.g., `"GitHub"`, `"Google"`). Pass `''` to mark the logo
* `aria-hidden` (typical when the button itself has an aria-label).
*/
ariaLabel?: string
/** Optional title rendered as `<title>` for hover tooltips. */
title?: string
}
OAuthProviderLogoPropsProps for {@link OAuthProviderLogo}.
interface OAuthProviderLogoProps extends OAuthLogoProps {
provider: OAuthProviderId | string
/** Rendered when `provider` has no registered logo (default: `null`). */
fallback?: React.ReactNode
}
OAuthProviderIdCanonical list of supported providers.
type OAuthProviderId =
| 'github'
| 'gitlab'
| 'google'
| 'twitter'
| 'x'
| 'apple'
| 'facebook'
| 'microsoft'
| 'linkedin'
| 'discord'
AppleLogo(props)Apple logo. Monochrome only — mode ignored.
function AppleLogo({
size = 20,
className,
ariaLabel = 'Apple',
title,
}: OAuthLogoProps): React.JSX.Element
props — Component props.DiscordLogo(props)Discord brand mark. mode='brand' renders the official blurple
logo; mode='mono' renders in currentColor.
function DiscordLogo({
size = 20,
className,
mode = 'brand',
ariaLabel = 'Discord',
title,
}: OAuthLogoProps): JSX.Element
props — Component props.FacebookLogo(props)Facebook "f" mark. mode='brand' renders the blue circle with white
"f"; mode='mono' renders a monochrome "f" in currentColor.
function FacebookLogo({
size = 20,
className,
mode = 'brand',
ariaLabel = 'Facebook',
title,
}: OAuthLogoProps): JSX.Element
props — Component props.GitHubLogo(props)GitHub Octocat brand mark.
Brand guideline: monochrome only — no brand color, so mode is ignored
(always uses currentColor). Typical placement: against a dark or
neutral background.
function GitHubLogo({
size = 20,
className,
ariaLabel = 'GitHub',
title,
}: OAuthLogoProps): JSX.Element
props — Component props.GitLabLogo(props)GitLab tanuki — official brand mark, normalized to a 24×24 viewBox.
mode='mono' renders a flat tanuki silhouette in currentColor.
function GitLabLogo({
size = 20,
className,
mode = 'brand',
ariaLabel = 'GitLab',
title,
}: OAuthLogoProps): JSX.Element
props — Component props.GoogleLogo(props)Google "G" mark — per Google brand guidelines the 4-color logo is
required when space allows. In mode='mono' the logo flattens to
currentColor for use inside monochrome button rows.
function GoogleLogo({
size = 20,
className,
mode = 'brand',
ariaLabel = 'Google',
title,
}: OAuthLogoProps): JSX.Element
props — Component props.LinkedInLogo(props)LinkedIn brand mark. mode='brand' renders the blue square with
white "in"; mode='mono' renders a monochrome "in" glyph.
function LinkedInLogo({
size = 20,
className,
mode = 'brand',
ariaLabel = 'LinkedIn',
title,
}: OAuthLogoProps): JSX.Element
props — Component props.MicrosoftLogo(props)Microsoft 4-square brand mark. mode='brand' renders the four
official squares; mode='mono' renders a flat 2×2 grid in
currentColor.
function MicrosoftLogo({
size = 20,
className,
mode = 'brand',
ariaLabel = 'Microsoft',
title,
}: OAuthLogoProps): JSX.Element
props — Component props.OAuthProviderLogo(props)Dispatcher: renders the canonical logo for a given provider id.
Use this in OAuth button rows so the button chrome (padding, radius, width, background) stays per-app while the logo itself is identical across every consumer.
function OAuthProviderLogo({
provider,
fallback = null,
...rest
}: OAuthProviderLogoProps): JSX.Element
props — Component props (see {@link OAuthProviderLogoProps}).TwitterLogo(props)X (formerly Twitter) brand mark. Monochrome only per X brand
guidelines; mode is ignored — always uses currentColor.
Use either <TwitterLogo/> or <XLogo/> — they render the same SVG.
function TwitterLogo({
size = 20,
className,
ariaLabel = 'X (Twitter)',
title,
}: OAuthLogoProps): JSX.Element
props — Component props.XLogoAlias of TwitterLogo — use the provider id that matches your OAuth config.
const XLogo: typeof TwitterLogo
Peer dependencies:
react ^18.0.0 || ^19.0.0react