Skip to main content
Version: 1.0.3

SignUp

Overview

The SignUp component provides a complete, production-ready registration form with support for comprehensive user registration flows. It includes all essential fields, password strength validation, CAPTCHA integration, social sign-up options, and extensive customization capabilities.

Key Features

  • Complete Registration Flow: First name, last name, email confirmation, password confirmation
  • Password Strength Validation: Configurable requirements with visual strength meter
  • CAPTCHA Integration: Built-in support for reCAPTCHA and similar services
  • Multiple Layouts: Centered and split layout options
  • Visual Themes: Default, modern, glass, and dark variants
  • Social Sign-Up: Google, GitHub, and Microsoft integration
  • Terms & Conditions: Built-in acceptance with configurable links
  • Customizable Content: Complete control over left panel content in split layout
  • Accessibility: Built with ARIA labels and keyboard navigation
  • Responsive: Works on all screen sizes
  • Animations: Smooth transitions with Framer Motion
  • Validation: Comprehensive form validation with real-time feedback

Installation

ignix add component signup

Previews

1. Centered Dark Layout

Complete registration form with dark theme and password strength validation.

Create Your Account

Join our community and start your journey today

Or sign up with

Already have an account?

2. Split Dark Layout

Enterprise registration with comprehensive left panel content and security features.

Create Your Account

Join our community and start your journey today

Or sign up with

Already have an account?

3. Complete Registration with CAPTCHA

Full registration flow with CAPTCHA verification for enhanced security.

Complete Registration with CAPTCHA

Create Your Account

Join our community and start your journey today

Security Verification
Complete the CAPTCHA
This helps prevent spam
Or sign up with

Already have an account?

Quick Start

Import the component and start using it:

import { SignUp } from '@site/src/components/UI/sign-up';

function RegistrationPage() {
const handleSubmit = async (data) => {
console.log('Registration data:', data);
// Your registration logic here
};

return (
<SignUp
type="centered"
variant="dark"
companyName="MyApp"
onSubmit={handleSubmit}
showSocialSignUp={true}
passwordStrength={{
minLength: 8,
requireUppercase: true,
requireLowercase: true,
requireNumbers: true,
requireSpecialChars: true,
showStrengthMeter: true,
}}
/>
);
}

Form Data Interface

interface SignUpFormData {
firstName: string;
lastName: string;
email: string;
confirmEmail: string;
password: string;
confirmPassword: string;
acceptTerms: boolean;
captchaToken?: string;
}

Accessibility

The SignUp component is built with accessibility in mind:

  • ARIA Labels: All interactive elements have appropriate ARIA labels
  • Keyboard Navigation: Full keyboard navigation support
  • Focus Management: Proper focus trapping and management
  • Screen Reader Support: All form elements are properly labeled
  • Color Contrast: Meets WCAG 2.1 AA standards for color contrast
  • Error Announcements: Form errors are announced to screen readers
  • Loading States: Loading states are properly communicated

Best Practices

1. Password Security

// Always enforce strong password policies
passwordStrength={{
minLength: 12,
requireUppercase: true,
requireLowercase: true,
requireNumbers: true,
requireSpecialChars: true,
showStrengthMeter: true,
}}

2. CAPTCHA Implementation

// Use CAPTCHA for public-facing registration forms
captchaConfig={{
enabled: true,
siteKey: process.env.REACT_APP_RECAPTCHA_SITE_KEY,
type: "checkbox",
theme: "light",
onVerify: (token) => {
// Verify token on your backend
verifyCaptchaToken(token);
}
}}

3. Terms & Conditions

// Always require explicit terms acceptance
termsConfig={{
onTermsClick: () => window.open('/terms', '_blank'),
onPrivacyClick: () => window.open('/privacy', '_blank'),
termsText: "By creating an account, you agree to our Terms of Service, Privacy Policy, and Cookie Policy.",
}}

Props

Basic Props

PropTypeDefaultDescription
type'centered' | 'split''centered'Layout type - centered or split layout
variant'default' | 'modern' | 'glass' | 'dark''default'Visual theme variant for the form
companyNamestring'YourBrand'Company/brand name displayed in split layout
logoReact.ReactNode-Custom logo component
loadingbooleanfalseLoading state for form submission
errorstring''Error message to display above the form
showSocialSignUpbooleantrueShow/hide social sign-up buttons
showLoginLinkbooleantrueShow/hide login link
loginTextstring'Already have an account?'Custom text for login link
onSubmit(data: SignUpFormData) => void-Callback function when form is submitted
onLogin() => void-Callback function when user clicks login link
onGoogleSignUp() => void-Callback function for Google sign-up
onGitHubSignUp() => void-Callback function for GitHub sign-up
onMicrosoftSignUp() => void-Callback function for Microsoft sign-up
classNamestring-Additional className for the component

Terms & Conditions Props

PropTypeDefaultDescription
termsConfig.termsUrlstring-Terms & Conditions URL
termsConfig.privacyUrlstring-Privacy Policy URL
termsConfig.termsTextstring | React.ReactNode-Custom terms text
termsConfig.privacyTextstring | React.ReactNode-Custom privacy text
termsConfig.onTermsClick() => void-Callback when terms link is clicked
termsConfig.onPrivacyClick() => void-Callback when privacy link is clicked

Password Strength Props

PropTypeDefaultDescription
passwordStrength.minLengthnumber8Minimum password length
passwordStrength.requireUppercasebooleantrueRequire uppercase letters
passwordStrength.requireLowercasebooleantrueRequire lowercase letters
passwordStrength.requireNumbersbooleantrueRequire numbers
passwordStrength.requireSpecialCharsbooleantrueRequire special characters
passwordStrength.showStrengthMeterbooleanfalseShow password strength meter
passwordStrength.strengthLabelsObject{weak: 'Weak', medium: 'Medium', strong: 'Strong'}Custom strength labels

CAPTCHA Props

PropTypeDefaultDescription
captchaConfig.enabledbooleanfalseWhether CAPTCHA is enabled
captchaConfig.siteKeystring-Site key for reCAPTCHA
captchaConfig.type'checkbox' | 'invisible' | 'score''checkbox'CAPTCHA type
captchaConfig.theme'light' | 'dark''light'CAPTCHA theme
captchaConfig.size'normal' | 'compact''normal'CAPTCHA size
captchaConfig.onVerify(token: string) => void-Callback when CAPTCHA is verified
captchaConfig.onExpire() => void-Callback when CAPTCHA expires
captchaConfig.onError(error: any) => void-Callback when CAPTCHA errors

Split Background Props

PropTypeDefaultDescription
splitBackground.gradientstring-Background gradient classes for left panel
splitBackground.textColorstring-Text color for left panel
splitBackground.companyNameColorstring-Override company name color
splitBackground.descriptionColorstring-Override description color
splitBackground.leftPanelClassNamestring-Custom left panel className
splitBackground.backgroundImagestring-Background image URL
splitBackground.overlayColorstring-Overlay color for background image
splitBackground.rightPanelClassNamestring-Custom right panel className

Button Style Props

PropTypeDefaultDescription
buttonStyle.gradientstring-Background gradient classes for sign up button
buttonStyle.hoverGradientstring-Hover gradient classes for sign up button
buttonStyle.textColorstring-Text color for sign up button
buttonStyle.shadowstring-Button shadow classes
buttonStyle.hoverShadowstring-Hover shadow classes
buttonStyle.classNamestring-Custom button className

Left Panel Content Props (Split Layout Only)

PropTypeDefaultDescription
leftPanelContent.titlestring | React.ReactNode-Custom title text or component
leftPanelContent.descriptionstring | React.ReactNode-Custom description text or component
leftPanelContent.subtitlestring | React.ReactNode-Custom subtitle text or component
leftPanelContent.featuresArray<Feature>-Features/benefits list with icons and colors
leftPanelContent.testimonialsArray<Testimonial>-Customer testimonials/quotes
leftPanelContent.statisticsArray<Statistic>-Statistics to display with values and labels
leftPanelContent.customContentReact.ReactNode-Complete custom content (overrides all other content)
leftPanelContent.footerTextstring | React.ReactNode-Custom footer text or component
leftPanelContent.hideBrandingbooleanfalseHide default logo and company name
leftPanelContent.contentClassNamestring-Additional className for content container
leftPanelContent.layoutObject-Layout options (align, maxWidth, animate)
leftPanelContent.animationConfigObject-Animation timing configuration