Login pages and sign up screens
Sign-in, sign-up and everything around it, with real validation and calm success states.
Switch category
Marketing
- Hero17
- Features15
- Logo clouds8
- Stats8
- Pricing11
- Testimonials11
- Call to action11
- FAQ7
- Newsletter12
- Banners9
- Popups and consent7
- Services7
- Use cases6
- Security and trust7
- Changelog and roadmap6
- Launch and waitlist6
- Product tour6
- Press and awards10
- AI features6
- App download5
- Donations and support4
- Problem and solution5
- Objections5
- Calculators10
- Quiz and product finder5
- Free trial5
- Referral and partners10
- Community5
- Open source5
- Manifesto5
- Offer5
- Lead magnet4
- Scroll stories20
- Scroll journeys13
- Scroll effects13
- Scroll reveals and transitions15
Content
- Blog16
- Gallery7
- Team8
- About11
- Content8
- Process7
- Contact8
- Comparison5
- Integrations5
- Error pages5
- Careers7
- Case studies6
- Portfolio6
- Events and webinars6
- Help center6
- Legal pages5
- Documentation4
- Search results5
- Resources and downloads4
- Podcast4
- Editorial15
- Authors and interviews10
- Glossary5
- Recipes5
- Data stories10
- Long reads5
- Surveys and feedback14
- Form states12
- Request forms16
- Applications and sign-ups13
- Address, payment and consent12
App
- Authentication9
- Dashboards6
- Tables6
- Settings5
- AI and chat16
- Calendar5
- Inbox and messages5
- Notifications6
- Files6
- Projects6
- Profiles6
- Onboarding6
- Billing and usage10
- Developer settings15
- Security and access10
- Import, export and history15
- Automation and builders14
- AI answers18
- AI writing and creation13
- AI setup14
- AI assistants9
E-Commerce
Industries
- Menus7
- Appointments6
- Listings6
- Courses6
- Rooms and stays5
- Classes and schedules6
- Medical practice5
- Law firm5
- Salon and spa5
- Automotive5
- Travel5
- Sports club5
- Coworking5
- Museum5
- Cinema5
- School5
- Trades5
- Insurance5
- Banking5
- Personal brand15
- Speakers and media kits10
- Creators15
- Coaching and consulting10
- Artists and musicians15
- Dental practice5
- Veterinary practice5
- Therapy practice5
- Weddings and events5
- Architecture studio5
- Tax advisor5
- Estate agent5
- Florist5
- Winery5
- Daycare5
- Driving school5
- Care services5
- Festival5
Elements
- Buttons20
- Forms and inputs22
- Pickers and selections21
- Special input fields20
- Cards10
- Overlays21
- Navigation elements15
- Menu bars and switchers14
- Data display15
- Progress and states13
- Lists, trees and timelines17
- Charts22
- Comparison charts22
- Statistical charts20
- KPI, live and map charts22
- Text effects15
- Text accents16
- Backgrounds19
- Beams, particles and motion18
- Media19
- Code and JSON8
- Panels and splitters4
Every screen around the account
Authentication is the door to your product, and every extra second there costs signups. The nine screens here come with real validation, password managers that fill the right fields, and calm success states that say what happens next.
Sign in and Split with quote are the entry, the split version adds a quote or a picture on desktop. Sign up asks for the minimum and checks the password while you type. Forgot password and Magic link cover the way back in, One-time code takes a six digit code with paste and SMS autofill. Two-factor setup walks through the QR code, Onboarding steps follows the first sign in, Accept invite welcomes a new team member.
Set autocomplete on every field, the components do it for email, current password and new password. Show the password rules before the first error, not after. The screens handle the interface, the actual sign in comes from your auth provider through onSubmit.
Authentication
Details
What Authentication brings along, read from the registry and the source.
- Area
- App
- Variants
- 9
- Version
- 1.0.1 · since 1.0.0
- File
- components/ui/auth.tsx
- npm packages
- None
- Languages
- English and German, 99 texts of its own
- Studio
- Adjust in code
- Build with AI
- Over MCP in Claude, Cursor, Copilot and Codex
Props
The AuthProps interface from components/ui/auth.tsx, with the comments from the code.
variantoptionalAuthVariantsign-insplitsign-upforgot-passwordone-time-codemagic-linktwo-factoronboarding-stepsinvite-accept
brandrequired{ name: string; href?: string; logo?: React.ReactNode }titleoptionalReact.ReactNodedescriptionoptionalReact.ReactNodeprovidersoptionalAuthProvider[]Passkey, single sign-on and similar, shown above the form
signUpHrefoptionalstringLinks around the form
signInHrefoptionalstringforgotHrefoptionalstringtermsHrefoptionalstringprivacyHrefoptionalstringmediaoptionalReact.ReactNodesplit: picture and quote on the side
quoteoptional{ text: string; author: string; role?: string }benefitsoptionalstring[]sign-up: reasons next to the form
emailoptionalstringone-time-code, magic-link: the address the code or link was sent to
twoFactoroptional{ qr: React.ReactNode; secret: string; backupCodes?: string[] }two-factor: the code picture and the secret for manual entry
onboardingoptional{ domain: string; useCases: { id: string; label: string; description: string; icon: IconName }[] }onboarding-steps: the domain suffix and the use cases to choose from
inviteoptional{ inviter: { name: string; email: string }; workspace: { name: string; logo?: React.ReactNode; members: string[]; total: number }; role: string; email: string }invite-accept
onSubmitoptional(values: Record<string, string>) => void | string | Promise<void | string>Called with the form values. Return a string to show it as an error. Without it the block simulates a short request, so demos feel real.
Built-in texts
Authentication writes these texts itself. The language follows the KitProvider, the labels prop replaces single ones.
Show all 99 texts
| Key | English | German |
|---|---|---|
| English Email | German E-Mail | |
| workEmail | English Work email | German Geschäftliche E-Mail |
| password | English Password | German Passwort |
| name | English Full name | German Vollständiger Name |
| show | English Show password | German Passwort anzeigen |
| hide | English Hide password | German Passwort verbergen |
| forgot | English Forgot password? | German Passwort vergessen? |
| remember | English Keep me signed in for 30 days | German 30 Tage angemeldet bleiben |
| signIn | English Sign in | German Anmelden |
| signingIn | English Signing in… | German Wird angemeldet… |
| signedIn | English Signed in. Taking you to your workspace… | German Angemeldet. Dein Arbeitsbereich öffnet sich… |
| or | English or | German oder |
| noAccount | English New here? | German Neu hier? |
| signUp | English Create an account | German Konto erstellen |
| haveAccount | English Already have an account? | German Schon ein Konto? |
| create | English Create account | German Konto erstellen |
| creating | English Creating account… | German Konto wird erstellt… |
| created | English Account created. Check your inbox to confirm your email. | German Konto erstellt. Bitte bestätige deine E-Mail-Adresse in deinem Postfach. |
| agree | English I agree to the | German Ich stimme den |
| terms | English terms | German Nutzungsbedingungen |
| and | English and the | German und der |
| privacy | English privacy policy | German Datenschutzerklärung |
| agreeEnd | English | German zu |
| required | English This field is required. | German Dieses Feld ist erforderlich. |
| invalidEmail | English Please enter a valid email address. | German Bitte gib eine gültige E-Mail-Adresse ein. |
| tooShort | English Use at least 8 characters. | German Mindestens 8 Zeichen, bitte. |
| acceptTerms | English Please accept the terms to continue. | German Bitte stimme den Bedingungen zu, um fortzufahren. |
| rule8 | English At least 8 characters | German Mindestens 8 Zeichen |
| ruleNumber | English One number | German Eine Ziffer |
| ruleCase | English Upper and lower case | German Groß- und Kleinbuchstaben |
| weak | English Weak | German Schwach |
| fair | English Fair | German Mittel |
| good | English Good | German Gut |
| strong | English Strong | German Stark |
| strength | English Password strength | German Passwortstärke |
| sendReset | English Send reset link | German Link zum Zurücksetzen senden |
| sending | English Sending… | German Wird gesendet… |
| checkInbox | English Check your inbox | German Schau in dein Postfach |
| resetSent | English If an account exists for {email}, a reset link is on its way. It is valid for 30 minutes. | German Wenn es ein Konto für {email} gibt, ist ein Link unterwegs. Er gilt 30 Minuten. |
| resend | English Send again | German Erneut senden |
| resendIn | English Send again in {s} s | German Erneut senden in {s} s |
| backToSignIn | English Back to sign in | German Zurück zur Anmeldung |
| codeTitle | English Enter the code | German Code eingeben |
| codeSent | English We sent a 6 digit code to {email}. | German Wir haben einen 6-stelligen Code an {email} geschickt. |
| digit | English Digit {n} of 6 | German Ziffer {n} von 6 |
| code | English Verification code | German Bestätigungscode |
| verify | English Verify | German Bestätigen |
| verifying | English Checking… | German Wird geprüft… |
| wrongCode | English That code did not work. Check the latest email and try again. | German Dieser Code passt nicht. Nimm den aus der neuesten E-Mail und versuch es noch einmal. |
| verified | English Verified. You are signed in. | German Bestätigt. Du bist angemeldet. |
| pasteHint | English You can paste the whole code. | German Du kannst den ganzen Code einfügen. |
| magicSend | English Email me a sign-in link | German Anmeldelink per E-Mail senden |
| magicTitle | English Your link is on its way | German Dein Link ist unterwegs |
| magicSent | English We sent a sign-in link to {email}. Open it on this device to continue. | German Wir haben einen Anmeldelink an {email} geschickt. Öffne ihn auf diesem Gerät. |
| magicExpires | English The link expires in 15 minutes. | German Der Link gilt 15 Minuten. |
| openMail | English Open email app | German E-Mail-App öffnen |
| otherEmail | English Use a different email | German Andere E-Mail verwenden |
| tfaStep1 | English Install an authenticator app | German Authenticator-App installieren |
| tfaStep1Text | English Any app that supports time based codes works. | German Jede App mit zeitbasierten Codes funktioniert. |
| tfaStep2 | English Scan the code | German Code scannen |
| tfaStep2Text | English Or enter this key by hand. | German Oder diesen Schlüssel von Hand eingeben. |
| tfaStep3 | English Enter the 6 digit code | German Den 6-stelligen Code eingeben |
| tfaStep3Text | English The code changes every 30 seconds. | German Der Code wechselt alle 30 Sekunden. |
| copy | English Copy | German Kopieren |
| copied | English Copied | German Kopiert |
| enable | English Turn on two-factor | German Zwei-Faktor einschalten |
| tfaDone | English Two-factor authentication is on | German Zwei-Faktor-Anmeldung ist aktiv |
| tfaBackup | English Keep these backup codes somewhere safe. Each one works once. | German Bewahre diese Ersatzcodes sicher auf. Jeder funktioniert einmal. |
| download | English Download codes | German Codes herunterladen |
| stepOf | English Step {n} of {total} | German Schritt {n} von {total} |
| back | English Back | German Zurück |
| continue | English Continue | German Weiter |
| skip | English Skip for now | German Später erledigen |
| finish | English Finish setup | German Einrichtung abschließen |
| obStep1 | English Name your workspace | German Benenne deinen Arbeitsbereich |
| obStep1Text | English This is where your team works together. You can change it later. | German Hier arbeitet dein Team zusammen. Du kannst den Namen später ändern. |
| obWorkspace | English Workspace name | German Name des Arbeitsbereichs |
| obUrl | English Workspace address | German Adresse des Arbeitsbereichs |
| obStep2 | English Invite your team | German Lade dein Team ein |
| obStep2Text | English Add colleagues by email. They get an invite right away. | German Füge Kolleginnen und Kollegen per E-Mail hinzu. Sie bekommen sofort eine Einladung. |
| obInvite | English Email addresses | German E-Mail-Adressen |
| obInviteHint | English Press Enter or comma after each address. | German Nach jeder Adresse Enter oder Komma drücken. |
| obRemove | English Remove {email} | German {email} entfernen |
| obStep3 | English What will you use it for? | German Wofür nutzt ihr es? |
| obStep3Text | English We set up templates that fit. Pick as many as you like. | German Wir richten passende Vorlagen ein. Wähle so viele, wie du magst. |
| obDone | English Your workspace is ready | German Dein Arbeitsbereich ist bereit |
| obDoneText | English {name} is set up with {count} invites sent. | German {name} ist eingerichtet, {count} Einladungen sind verschickt. |
| obOpen | English Open workspace | German Arbeitsbereich öffnen |
| invited | English {name} invited you to join | German {name} lädt dich ein in |
| joinAs | English Your role | German Deine Rolle |
| members | English members | German Mitglieder |
| signedInAs | English Signed in as | German Angemeldet als |
| switchAccount | English Switch account | German Konto wechseln |
| accept | English Accept invitation | German Einladung annehmen |
| accepting | English Joining… | German Du trittst bei… |
| decline | English Decline | German Ablehnen |
| joined | English Welcome to {workspace} | German Willkommen bei {workspace} |
| joinedText | English You are now a member. Your teammates can see you in the member list. | German Du bist jetzt Mitglied. Dein Team sieht dich in der Mitgliederliste. |
| declined | English Invitation declined. {name} has been told. | German Einladung abgelehnt. {name} wurde informiert. |
Accessibility
Read from the source of the component.
- Authentication handles the keys Enter, Arrow left, Arrow right, Backspace and Space itself.
- Sets aria-busy, aria-current, aria-describedby, aria-invalid, aria-label, aria-live, aria-pressed, aria-valuemax, aria-valuemin, aria-valuenow and aria-valuetext, so screen readers announce purpose and state.
- Uses the roles meter, separator and tone.
- Announces changes through a live region without moving focus.
- Every field has a label, visible or for screen readers.
- Adds text for screen readers where icons and graphics stand alone.
- Shows a visible focus ring when used with the keyboard.
- The server renders the starting state in full, JavaScript only adds the interaction.
Motion
- Rises in briefly the first time it comes into view (kit-rise, useInView).
- Brings animations of its own, calmly timed and without wobble.
- With reduced motion (prefers-reduced-motion) it stays still. 6 places in the code switch motion off then.
Frequent questions
How do I install Authentication?
With aiw add @ai-website/auth. The command puts components/ui/auth.tsx into your project, the code is yours from then on. It brings along button and icon. It needs no further npm packages.
Which variants does Authentication have?
9 variants, Sign in, Split with quote, Sign up, Forgot password, One-time code, Magic link, Two-factor setup, Onboarding steps and Accept invite. You pick one with the variant prop, for example variant="split".
Can I translate the texts of Authentication?
Yes. Authentication carries 99 texts of its own in English and German, such as “Email”, “Work email” and “Password”. The language follows the KitProvider, single texts change through the labels prop.
Can an AI assistant build with Authentication?
Yes. Through the MCP server of the aiw CLI, Claude, Cursor, GitHub Copilot, Windsurf, Codex and Gemini find Authentication with aiw_components and install it with aiw_add @ai-website/auth. Name the variant in your prompt, for example variant="sign-in", and the assistant writes your content straight into the props.
Similar components, Often combined with
Similar components
More from App, the same area of the kit.
Often combined with
Sections that usually sit next to Authentication on a page.
Loading the source