{"version":3,"sources":["../src/index.ts","../src/service.ts","../src/guard.ts","../src/helpers.ts","../src/SocialButtons.ts","../src/components/sign-in.component.ts","../src/components/sign-up.component.ts"],"sourcesContent":["export { AuthonService, AUTHON_CONFIG, type AuthonServiceConfig } from './service';\nexport { authGuard } from './guard';\nexport { provideAuthon } from './helpers';\nexport { renderSocialButtons } from './SocialButtons';\nexport type { SocialButtonsConfig } from './SocialButtons';\nexport { AuthonSignInComponent } from './components/sign-in.component';\nexport { AuthonSignUpComponent } from './components/sign-up.component';\nexport type {\n  PasskeyCredential,\n  Web3Chain,\n  Web3NonceResponse,\n  Web3Wallet,\n  Web3WalletType,\n} from '@authon/shared';\n","import { Authon } from '@authon/js';\nimport type { AuthonConfig } from '@authon/js';\nimport type {\n  AuthonUser,\n  PasskeyCredential,\n  Web3Chain,\n  Web3NonceResponse,\n  Web3Wallet,\n  Web3WalletType,\n} from '@authon/shared';\n\n/**\n * Injection token key for Authon configuration.\n * Used with Angular's InjectionToken.\n */\nexport const AUTHON_CONFIG = 'AUTHON_CONFIG';\n\nexport interface AuthonServiceConfig {\n  publishableKey: string;\n  config?: Omit<AuthonConfig, 'mode'>;\n}\n\n/**\n * Plain class wrapping @authon/js for Angular dependency injection.\n *\n * Since tsup cannot compile Angular decorators, this is a plain class.\n * Users should wrap it in their own injectable service:\n *\n * ```ts\n * import { Injectable } from '@angular/core';\n * import { AuthonService as BaseAuthonService } from '@authon/angular';\n *\n * @Injectable({ providedIn: 'root' })\n * export class AuthonService extends BaseAuthonService {\n *   constructor() {\n *     super({ publishableKey: 'pk_live_...' });\n *   }\n * }\n * ```\n *\n * Or use the `provideAuthon()` helper for standalone components.\n */\nexport class AuthonService {\n  private client: Authon;\n  private _user: AuthonUser | null = null;\n  private _isSignedIn = false;\n  private _isLoading = true;\n  private _listeners: Array<() => void> = [];\n\n  constructor(config: AuthonServiceConfig) {\n    this.client = new Authon(config.publishableKey, config.config);\n\n    this.client.on('signedIn', (user) => {\n      this._user = user as AuthonUser;\n      this._isSignedIn = true;\n      this._isLoading = false;\n      this.notifyListeners();\n    });\n\n    this.client.on('signedOut', () => {\n      this._user = null;\n      this._isSignedIn = false;\n      this.notifyListeners();\n    });\n\n    this.client.on('error', () => {\n      this._isLoading = false;\n      this.notifyListeners();\n    });\n\n    const existingUser = this.client.getUser();\n    if (existingUser) {\n      this._user = existingUser as AuthonUser;\n      this._isSignedIn = true;\n    }\n    this._isLoading = false;\n  }\n\n  get user(): AuthonUser | null {\n    return this._user;\n  }\n\n  get isSignedIn(): boolean {\n    return this._isSignedIn;\n  }\n\n  get isLoading(): boolean {\n    return this._isLoading;\n  }\n\n  async openSignIn(): Promise<void> {\n    await this.client.openSignIn();\n  }\n\n  async openSignUp(): Promise<void> {\n    await this.client.openSignUp();\n  }\n\n  async signOut(): Promise<void> {\n    await this.client.signOut();\n    this._user = null;\n    this._isSignedIn = false;\n    this.notifyListeners();\n  }\n\n  getToken(): string | null {\n    return this.client.getToken();\n  }\n\n  getClient(): Authon {\n    return this.client;\n  }\n\n  // ── Web3 ──\n\n  web3GetNonce(\n    address: string,\n    chain: Web3Chain,\n    walletType: Web3WalletType,\n    chainId?: number,\n  ): Promise<Web3NonceResponse> {\n    return this.client.web3GetNonce(address, chain, walletType, chainId);\n  }\n\n  web3Verify(\n    message: string,\n    signature: string,\n    address: string,\n    chain: Web3Chain,\n    walletType: Web3WalletType,\n  ): Promise<AuthonUser> {\n    return this.client.web3Verify(message, signature, address, chain, walletType);\n  }\n\n  web3LinkWallet(params: {\n    address: string;\n    chain: Web3Chain;\n    walletType: Web3WalletType;\n    chainId?: number;\n    message: string;\n    signature: string;\n  }): Promise<Web3Wallet> {\n    return this.client.linkWallet(params);\n  }\n\n  web3UnlinkWallet(walletId: string): Promise<void> {\n    return this.client.unlinkWallet(walletId);\n  }\n\n  web3GetWallets(): Promise<Web3Wallet[]> {\n    return this.client.listWallets();\n  }\n\n  // ── Passwordless ──\n\n  passwordlessSendCode(email: string, type: 'magic-link' | 'otp' = 'otp'): Promise<void> {\n    if (type === 'magic-link') {\n      return this.client.sendMagicLink(email);\n    }\n    return this.client.sendEmailOtp(email);\n  }\n\n  passwordlessVerifyCode(email: string, code: string): Promise<AuthonUser> {\n    return this.client.verifyPasswordless({ email, code });\n  }\n\n  // ── Passkeys ──\n\n  passkeyRegister(name?: string): Promise<PasskeyCredential> {\n    return this.client.registerPasskey(name);\n  }\n\n  passkeyAuthenticate(email?: string): Promise<AuthonUser> {\n    return this.client.authenticateWithPasskey(email);\n  }\n\n  passkeyList(): Promise<PasskeyCredential[]> {\n    return this.client.listPasskeys();\n  }\n\n  passkeyDelete(credentialId: string): Promise<void> {\n    return this.client.revokePasskey(credentialId);\n  }\n\n  /**\n   * Subscribe to auth state changes.\n   * Returns an unsubscribe function.\n   */\n  onStateChange(callback: () => void): () => void {\n    this._listeners.push(callback);\n    return () => {\n      this._listeners = this._listeners.filter((l) => l !== callback);\n    };\n  }\n\n  destroy(): void {\n    this.client.destroy();\n    this._listeners = [];\n  }\n\n  private notifyListeners(): void {\n    for (const listener of this._listeners) {\n      listener();\n    }\n  }\n}\n","import type { AuthonService } from './service';\n\n/**\n * Route guard factory for Angular Router (CanActivateFn style).\n *\n * Since tsup can't compile Angular decorators, this returns a plain function.\n * Users wire it up in their route config:\n *\n * ```ts\n * import { inject } from '@angular/core';\n * import { authGuard } from '@authon/angular';\n * import { AuthonService } from './authon.service'; // your injectable wrapper\n *\n * const routes = [\n *   {\n *     path: 'dashboard',\n *     component: DashboardComponent,\n *     canActivate: [() => {\n *       const authon = inject(AuthonService);\n *       return authGuard(authon, '/login');\n *     }],\n *   },\n * ];\n * ```\n */\nexport function authGuard(\n  authonService: AuthonService,\n  redirectTo = '/sign-in',\n): boolean | { path: string } {\n  if (authonService.isLoading) {\n    return false;\n  }\n\n  if (!authonService.isSignedIn) {\n    return { path: redirectTo };\n  }\n\n  return true;\n}\n","import { AuthonService, AUTHON_CONFIG, type AuthonServiceConfig } from './service';\n\n/**\n * Provider factory for Angular standalone components.\n *\n * Usage in app.config.ts:\n * ```ts\n * import { provideAuthon } from '@authon/angular';\n *\n * export const appConfig = {\n *   providers: [\n *     ...provideAuthon({ publishableKey: 'pk_live_...' }),\n *   ],\n * };\n * ```\n *\n * Then inject in your components:\n * ```ts\n * import { Inject } from '@angular/core';\n * import { AUTHON_CONFIG, AuthonService } from '@authon/angular';\n *\n * constructor(@Inject('AuthonService') private authon: AuthonService) {}\n * ```\n */\nexport function provideAuthon(config: AuthonServiceConfig) {\n  const service = new AuthonService(config);\n\n  return [\n    { provide: AUTHON_CONFIG, useValue: config },\n    { provide: 'AuthonService', useValue: service },\n  ];\n}\n","import { PROVIDER_COLORS, PROVIDER_DISPLAY_NAMES, type OAuthProviderType } from '@authon/shared';\nimport { getProviderButtonConfig, type Authon } from '@authon/js';\n\nexport interface SocialButtonsConfig {\n  /** Compact mode — icon-only square buttons in a row (default: false) */\n  compact?: boolean;\n  /** Gap between buttons in px (default: 10, compact default: 12) */\n  gap?: number;\n  /** Custom labels per provider */\n  labels?: Partial<Record<OAuthProviderType, string>>;\n  /** Icon size (default: 20, compact default: 24) */\n  iconSize?: number;\n  /** Border radius in px (default: 10) */\n  borderRadius?: number;\n  /** Button height in px (default: 48) */\n  height?: number;\n  /** Button size for compact mode in px (default: 48) */\n  size?: number;\n}\n\n/**\n * Renders social login buttons into a container element.\n *\n * Usage with Angular:\n * ```ts\n * import { AuthonService } from '@authon/angular';\n * import { renderSocialButtons } from '@authon/angular';\n *\n * @Component({ ... })\n * export class LoginComponent implements AfterViewInit, OnDestroy {\n *   @ViewChild('socialContainer') container!: ElementRef;\n *   private cleanup?: () => void;\n *\n *   constructor(private authon: AuthonService) {}\n *\n *   ngAfterViewInit() {\n *     this.cleanup = renderSocialButtons({\n *       client: this.authon.getClient(),\n *       container: this.container.nativeElement,\n *       compact: true,\n *       onError: (err) => console.error(err),\n *     });\n *   }\n *\n *   ngOnDestroy() {\n *     this.cleanup?.();\n *   }\n * }\n * ```\n */\nexport function renderSocialButtons(options: {\n  client: Authon;\n  container: HTMLElement;\n  onSuccess?: () => void;\n  onError?: (error: Error) => void;\n} & SocialButtonsConfig): () => void {\n  const {\n    client,\n    container,\n    onSuccess,\n    onError,\n    compact = false,\n    gap,\n    labels,\n    iconSize,\n    borderRadius = 10,\n    height = 48,\n    size = 48,\n  } = options;\n\n  const resolvedGap = gap ?? (compact ? 12 : 10);\n  const resolvedIconSize = iconSize ?? (compact ? 24 : 20);\n  let loadingProvider: string | null = null;\n  let buttons: HTMLButtonElement[] = [];\n\n  const handleClick = async (provider: OAuthProviderType, btn: HTMLButtonElement) => {\n    if (loadingProvider) return;\n    loadingProvider = provider;\n    btn.innerHTML = '<span style=\"display:inline-block;width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:authon-spin 0.6s linear infinite\"></span>';\n    buttons.forEach((b) => (b.disabled = true));\n\n    try {\n      await client.signInWithOAuth(provider);\n      onSuccess?.();\n    } catch (e: any) {\n      const error = e instanceof Error ? e : new Error(String(e));\n      onError?.(error);\n    } finally {\n      loadingProvider = null;\n      renderButtons(providers);\n    }\n  };\n\n  let providers: OAuthProviderType[] = [];\n\n  function renderButtons(providerList: OAuthProviderType[]) {\n    container.innerHTML = '';\n    buttons = [];\n\n    if (!document.getElementById('authon-spin-style')) {\n      const style = document.createElement('style');\n      style.id = 'authon-spin-style';\n      style.textContent = '@keyframes authon-spin{to{transform:rotate(360deg)}}';\n      document.head.appendChild(style);\n    }\n\n    const wrapper = document.createElement('div');\n    wrapper.style.display = 'flex';\n    wrapper.style.gap = `${resolvedGap}px`;\n\n    if (compact) {\n      wrapper.style.flexDirection = 'row';\n      wrapper.style.flexWrap = 'wrap';\n      wrapper.style.justifyContent = 'center';\n    } else {\n      wrapper.style.flexDirection = 'column';\n    }\n\n    for (const provider of providerList) {\n      const colors = PROVIDER_COLORS[provider] || { bg: '#333', text: '#fff' };\n      const displayName = PROVIDER_DISPLAY_NAMES[provider] || provider;\n      const config = getProviderButtonConfig(provider);\n      const iconSvg = config.iconSvg\n        .replace(/width=\"\\d+\"/, `width=\"${resolvedIconSize}\"`)\n        .replace(/height=\"\\d+\"/, `height=\"${resolvedIconSize}\"`);\n      const needsBorder = colors.bg.toLowerCase() === '#ffffff';\n\n      const btn = document.createElement('button');\n      btn.setAttribute('aria-label', `Sign in with ${displayName}`);\n      btn.style.display = 'flex';\n      btn.style.alignItems = 'center';\n      btn.style.justifyContent = 'center';\n      btn.style.border = needsBorder ? '1px solid #dadce0' : 'none';\n      btn.style.cursor = 'pointer';\n      btn.style.backgroundColor = colors.bg;\n      btn.style.color = colors.text;\n      btn.style.borderRadius = `${borderRadius}px`;\n      btn.style.transition = 'opacity 0.15s';\n      btn.style.fontFamily = 'inherit';\n\n      if (compact) {\n        btn.style.width = `${size}px`;\n        btn.style.height = `${size}px`;\n        btn.style.padding = '0';\n        btn.innerHTML = `<span style=\"display:flex;align-items:center\">${iconSvg}</span>`;\n      } else {\n        btn.style.width = '100%';\n        btn.style.height = `${height}px`;\n        btn.style.gap = '10px';\n        btn.style.paddingLeft = '16px';\n        btn.style.paddingRight = '16px';\n        const buttonLabel = labels?.[provider] ?? `Continue with ${displayName}`;\n        btn.innerHTML = `<span style=\"display:flex;align-items:center;flex-shrink:0\">${iconSvg}</span><span style=\"font-size:15px;font-weight:600;white-space:nowrap\">${buttonLabel}</span>`;\n      }\n\n      btn.addEventListener('click', () => handleClick(provider, btn));\n      btn.addEventListener('mouseenter', () => (btn.style.opacity = '0.85'));\n      btn.addEventListener('mouseleave', () => (btn.style.opacity = '1'));\n\n      buttons.push(btn);\n      wrapper.appendChild(btn);\n    }\n\n    container.appendChild(wrapper);\n  }\n\n  client.getProviders().then((p: OAuthProviderType[]) => {\n    providers = p;\n    if (providers.length > 0) {\n      renderButtons(providers);\n    }\n  });\n\n  return () => {\n    container.innerHTML = '';\n    buttons = [];\n  };\n}\n","import { Authon } from '@authon/js';\nimport type { AuthonConfig } from '@authon/js';\n\n/**\n * Embedded sign-in component for Angular 17+ standalone projects.\n *\n * Since tsup cannot compile Angular decorators, use this class directly\n * and annotate it in your application layer:\n *\n * ```ts\n * import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ElementRef, ViewChild } from '@angular/core';\n * import { AuthonSignInComponent } from '@authon/angular';\n *\n * @Component({\n *   selector: 'authon-sign-in',\n *   standalone: true,\n *   template: `<div #container></div>`,\n * })\n * export class SignInComponent extends AuthonSignInComponent implements OnInit, OnDestroy {\n *   @Input() override publishableKey!: string;\n *   @Input() override apiUrl = 'https://api.authon.dev';\n *   @Input() override theme: 'light' | 'dark' | 'auto' = 'auto';\n *   @Input() override locale?: string;\n *   @Output() override signIn = new EventEmitter<any>();\n *   @ViewChild('container', { static: true }) override containerRef!: ElementRef<HTMLDivElement>;\n *\n *   ngOnInit() { this.onInit(); }\n *   ngOnDestroy() { this.onDestroy(); }\n * }\n * ```\n *\n * Or, for a fully self-contained approach (Angular 17+):\n *\n * ```ts\n * import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ElementRef, ViewChild } from '@angular/core';\n * import { Authon } from '@authon/js';\n *\n * @Component({\n *   selector: 'authon-sign-in',\n *   standalone: true,\n *   template: `<div #container></div>`,\n * })\n * export class AuthonSignInComponent implements OnInit, OnDestroy {\n *   @Input() publishableKey!: string;\n *   @Input() apiUrl = 'https://api.authon.dev';\n *   @Input() theme: 'light' | 'dark' | 'auto' = 'auto';\n *   @Input() locale?: string;\n *   @Output() signIn = new EventEmitter<any>();\n *   @ViewChild('container', { static: true }) containerRef!: ElementRef<HTMLDivElement>;\n *\n *   private _authon: Authon | null = null;\n *   private _containerId = `authon-signin-${Math.random().toString(36).slice(2, 8)}`;\n *\n *   ngOnInit() {\n *     this.containerRef.nativeElement.id = this._containerId;\n *     this._authon = new Authon(this.publishableKey, {\n *       mode: 'embedded',\n *       containerId: this._containerId,\n *       apiUrl: this.apiUrl,\n *       theme: this.theme,\n *       locale: this.locale,\n *     });\n *     this._authon.on('signedIn', (user) => this.signIn.emit(user));\n *     this._authon.openSignIn();\n *   }\n *\n *   ngOnDestroy() {\n *     this._authon?.destroy();\n *   }\n * }\n * ```\n */\nexport class AuthonSignInComponent {\n  publishableKey!: string;\n  apiUrl = 'https://api.authon.dev';\n  theme: 'light' | 'dark' | 'auto' = 'auto';\n  locale?: string;\n  signIn: { emit: (user: unknown) => void } = { emit: () => {} };\n  containerRef!: { nativeElement: HTMLDivElement };\n\n  private _authon: Authon | null = null;\n  private _containerId = `authon-signin-${Math.random().toString(36).slice(2, 8)}`;\n\n  /**\n   * Call from ngOnInit().\n   */\n  onInit(): void {\n    this.containerRef.nativeElement.id = this._containerId;\n\n    const config: AuthonConfig = {\n      mode: 'embedded',\n      containerId: this._containerId,\n      apiUrl: this.apiUrl,\n      theme: this.theme,\n    };\n    if (this.locale) {\n      config.locale = this.locale;\n    }\n\n    this._authon = new Authon(this.publishableKey, config);\n    this._authon.on('signedIn', (user) => this.signIn.emit(user));\n    this._authon.openSignIn();\n  }\n\n  /**\n   * Call from ngOnDestroy().\n   */\n  onDestroy(): void {\n    this._authon?.destroy();\n    this._authon = null;\n  }\n}\n","import { Authon } from '@authon/js';\nimport type { AuthonConfig } from '@authon/js';\n\n/**\n * Embedded sign-up component for Angular 17+ standalone projects.\n *\n * Since tsup cannot compile Angular decorators, use this class directly\n * and annotate it in your application layer:\n *\n * ```ts\n * import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ElementRef, ViewChild } from '@angular/core';\n * import { AuthonSignUpComponent } from '@authon/angular';\n *\n * @Component({\n *   selector: 'authon-sign-up',\n *   standalone: true,\n *   template: `<div #container></div>`,\n * })\n * export class SignUpComponent extends AuthonSignUpComponent implements OnInit, OnDestroy {\n *   @Input() override publishableKey!: string;\n *   @Input() override apiUrl = 'https://api.authon.dev';\n *   @Input() override theme: 'light' | 'dark' | 'auto' = 'auto';\n *   @Input() override locale?: string;\n *   @Output() override signUp = new EventEmitter<any>();\n *   @ViewChild('container', { static: true }) override containerRef!: ElementRef<HTMLDivElement>;\n *\n *   ngOnInit() { this.onInit(); }\n *   ngOnDestroy() { this.onDestroy(); }\n * }\n * ```\n *\n * Or, for a fully self-contained approach (Angular 17+):\n *\n * ```ts\n * import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ElementRef, ViewChild } from '@angular/core';\n * import { Authon } from '@authon/js';\n *\n * @Component({\n *   selector: 'authon-sign-up',\n *   standalone: true,\n *   template: `<div #container></div>`,\n * })\n * export class AuthonSignUpComponent implements OnInit, OnDestroy {\n *   @Input() publishableKey!: string;\n *   @Input() apiUrl = 'https://api.authon.dev';\n *   @Input() theme: 'light' | 'dark' | 'auto' = 'auto';\n *   @Input() locale?: string;\n *   @Output() signUp = new EventEmitter<any>();\n *   @ViewChild('container', { static: true }) containerRef!: ElementRef<HTMLDivElement>;\n *\n *   private _authon: Authon | null = null;\n *   private _containerId = `authon-signup-${Math.random().toString(36).slice(2, 8)}`;\n *\n *   ngOnInit() {\n *     this.containerRef.nativeElement.id = this._containerId;\n *     this._authon = new Authon(this.publishableKey, {\n *       mode: 'embedded',\n *       containerId: this._containerId,\n *       apiUrl: this.apiUrl,\n *       theme: this.theme,\n *       locale: this.locale,\n *     });\n *     this._authon.on('signedIn', (user) => this.signUp.emit(user));\n *     this._authon.openSignUp();\n *   }\n *\n *   ngOnDestroy() {\n *     this._authon?.destroy();\n *   }\n * }\n * ```\n */\nexport class AuthonSignUpComponent {\n  publishableKey!: string;\n  apiUrl = 'https://api.authon.dev';\n  theme: 'light' | 'dark' | 'auto' = 'auto';\n  locale?: string;\n  signUp: { emit: (user: unknown) => void } = { emit: () => {} };\n  containerRef!: { nativeElement: HTMLDivElement };\n\n  private _authon: Authon | null = null;\n  private _containerId = `authon-signup-${Math.random().toString(36).slice(2, 8)}`;\n\n  /**\n   * Call from ngOnInit().\n   */\n  onInit(): void {\n    this.containerRef.nativeElement.id = this._containerId;\n\n    const config: AuthonConfig = {\n      mode: 'embedded',\n      containerId: this._containerId,\n      apiUrl: this.apiUrl,\n      theme: this.theme,\n    };\n    if (this.locale) {\n      config.locale = this.locale;\n    }\n\n    this._authon = new Authon(this.publishableKey, config);\n    this._authon.on('signedIn', (user) => this.signUp.emit(user));\n    this._authon.openSignUp();\n  }\n\n  /**\n   * Call from ngOnDestroy().\n   */\n  onDestroy(): void {\n    this._authon?.destroy();\n    this._authon = null;\n  }\n}\n"],"mappings":"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","names":["import_js","import_js","import_js"]}