UNPKG

@frank-auth/react

Version:

Flexible and customizable React UI components for Frank Authentication

1 lines 7.37 kB
{"version":3,"file":"index.cjs","sources":["../../../../../src/components/auth/sign-in/index.tsx"],"sourcesContent":["/**\n * @frank-auth/react - Sign In Components Index\n *\n * Main entry point for all sign-in related components.\n * Exports all sign-in variants and utilities.\n */\n\n// ============================================================================\n// Main Components\n// ============================================================================\n\nexport { SignInForm } from './sign-in-form';\nexport { SignInModal } from './sign-in-modal';\nexport { SignInButton } from './sign-in-button';\nexport { SignInCard } from './sign-in-card';\nexport { SignIn, OrganizationSignIn, PasswordlessSignIn, ProgressiveSignIn, SecureSignIn, InvitationSignIn,\n MultiOrganizationSignIn, SSOSignIn, URLBasedSignIn, SubdomainSignIn } from './sign-in';\n\n// ============================================================================\n// Component Types\n// ============================================================================\n\n// ============================================================================\n// Shared Types and Interfaces\n// ============================================================================\n\nexport interface BaseSignInProps {\n /**\n * Sign-in methods to show\n */\n methods?: ('password' | 'oauth' | 'magic-link' | 'passkey' | 'sso')[];\n\n /**\n * Initial email value\n */\n email?: string;\n\n /**\n * Initial organization ID\n */\n organizationId?: string;\n\n /**\n * Redirect URL after successful sign-in\n */\n redirectUrl?: string;\n\n /**\n * Success callback\n */\n onSuccess?: (result: any) => void;\n\n /**\n * Error callback\n */\n onError?: (error: Error) => void;\n\n /**\n * Custom title\n */\n title?: string;\n\n /**\n * Custom subtitle\n */\n subtitle?: string;\n\n /**\n * Form size\n */\n size?: 'sm' | 'md' | 'lg';\n\n /**\n * Whether to show branding\n */\n showBranding?: boolean;\n\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\nexport interface SignInFormProps extends BaseSignInProps {\n /**\n * Show sign-up link\n */\n showSignUpLink?: boolean;\n\n /**\n * Show forgot password link\n */\n showForgotPasswordLink?: boolean;\n\n /**\n * Show organization selector\n */\n showOrganizationSelector?: boolean;\n\n /**\n * Form variant\n */\n variant?: 'default' | 'minimal' | 'compact';\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Custom footer content\n */\n footer?: React.ReactNode;\n\n /**\n * Custom header content\n */\n header?: React.ReactNode;\n}\n\nexport interface SignInModalProps extends BaseSignInProps {\n /**\n * Whether the modal is open\n */\n isOpen?: boolean;\n\n /**\n * Callback for when modal should close\n */\n onClose?: () => void;\n\n /**\n * Modal size\n */\n modalSize?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n /**\n * Whether modal can be closed by clicking backdrop\n */\n closeOnBackdropClick?: boolean;\n\n /**\n * Whether modal can be closed by pressing escape\n */\n closeOnEscape?: boolean;\n\n /**\n * Custom modal className\n */\n modalClassName?: string;\n\n /**\n * Show close button\n */\n showCloseButton?: boolean;\n}\n\nexport interface SignInButtonProps {\n /**\n * Button text\n */\n children?: React.ReactNode;\n\n /**\n * Button variant\n */\n variant?: 'solid' | 'bordered' | 'light' | 'flat' | 'faded' | 'shadow' | 'ghost';\n\n /**\n * Button color\n */\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n\n /**\n * Button size\n */\n size?: 'sm' | 'md' | 'lg';\n\n /**\n * Full width button\n */\n fullWidth?: boolean;\n\n /**\n * Button icon\n */\n startContent?: React.ReactNode;\n endContent?: React.ReactNode;\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Modal mode - opens sign-in in modal instead of navigation\n */\n modalMode?: boolean;\n\n /**\n * Props to pass to the sign-in modal\n */\n modalProps?: Partial<SignInModalProps>;\n\n /**\n * Navigation URL (when not in modal mode)\n */\n href?: string;\n\n /**\n * Custom onClick handler\n */\n onClick?: () => void;\n\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\nexport interface SignInCardProps extends BaseSignInProps {\n /**\n * Card variant\n */\n variant?: 'shadow' | 'bordered' | 'flat';\n\n /**\n * Custom className\n */\n className?: string;\n\n /**\n * Card padding\n */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n\n /**\n * Card radius\n */\n radius?: 'none' | 'sm' | 'md' | 'lg';\n\n /**\n * Whether card has shadow\n */\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n\n /**\n * Whether card is blurred\n */\n isBlurred?: boolean;\n\n /**\n * Custom footer content\n */\n footer?: React.ReactNode;\n\n /**\n * Custom header content\n */\n header?: React.ReactNode;\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Get default sign-in configuration based on features\n */\nexport const getDefaultSignInConfig = (features: any) => {\n const methods: ('password' | 'oauth' | 'magic-link' | 'passkey' | 'sso')[] = [];\n\n if (features.signIn) methods.push('password');\n if (features.oauth) methods.push('oauth');\n if (features.magicLink) methods.push('magic-link');\n if (features.passkeys) methods.push('passkey');\n if (features.sso) methods.push('sso');\n\n return {\n methods,\n showSignUpLink: features.signUp,\n showForgotPasswordLink: features.passwordReset,\n };\n};\n\n/**\n * Sign-in validation helpers\n */\nexport const signInValidation = {\n email: (email: string) => {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n },\n\n password: (password: string) => {\n return password.length >= 8;\n },\n\n organizationId: (orgId: string) => {\n return orgId.length > 0;\n },\n};\n\n// ============================================================================\n// Default Export - Main Sign In Form\n// ============================================================================\n\nexport { SignInForm as default } from './sign-in-form';"],"names":["getDefaultSignInConfig","features","methods","signInValidation","email","password","orgId"],"mappings":"gFA6Qa,MAAAA,EAA0BC,GAAkB,CACrD,MAAMC,EAAuE,CAAC,EAE9E,OAAID,EAAS,QAAgBC,EAAA,KAAK,UAAU,EACxCD,EAAS,OAAeC,EAAA,KAAK,OAAO,EACpCD,EAAS,WAAmBC,EAAA,KAAK,YAAY,EAC7CD,EAAS,UAAkBC,EAAA,KAAK,SAAS,EACzCD,EAAS,KAAaC,EAAA,KAAK,KAAK,EAE7B,CACH,QAAAA,EACA,eAAgBD,EAAS,OACzB,uBAAwBA,EAAS,aACrC,CACJ,EAKaE,EAAmB,CAC5B,MAAQC,GACe,6BACD,KAAKA,CAAK,EAGhC,SAAWC,GACAA,EAAS,QAAU,EAG9B,eAAiBC,GACNA,EAAM,OAAS,CAE9B"}