Skip to main content
Urbicon UI
source

RegisterPage

Pre-built registration page with invitation-gated signup. Uses blocks primitives, fully localizable and customizable.

01 Usage

Basic

Create account

Already have an account? Sign in
<script lang="ts">
  import { RegisterPage } from '@urbicon-ui/auth';
  import { goto } from '$app/navigation';
  import { page } from '$app/state';
  import { resolve } from '$app/paths';
</script>

<!-- The invitation link is /auth/register?token=<secret>&email=<invitee>; the
     token is the proof of invitation, so read both off the URL. -->
<RegisterPage
  token={page.url.searchParams.get('token') ?? ''}
  defaultEmail={page.url.searchParams.get('email') ?? ''}
  onSuccess={() => goto(resolve('/'))}
/>

02 Accessibility

The requirements list has a name

The password checklist is a real <ul> carrying aria-label, so a reader announces it as a named list with a known item count instead of four orphaned lines under a text field. It is also the only explanation for why the submit button is disabled — but it renders only once the password field has content, and not at all when showRequirements is false. In both of those states the button is disabled with no reachable reason at all, so supply your own explanation if you turn the checklist off.

Pass/fail is text, not colour

Each requirement is prefixed with a literal or character, not an icon and not a colour swap alone, so the state survives both a screen reader and a monochrome display. The data-met attribute mirrors it for CSS only. Note the list is not itself a live region: it updates as you type but is not announced on every keystroke, which would make the field unusable with speech output.

Mismatch is bound to the field

A confirm-password mismatch is passed to the field as the error prop, so Input sets aria-invalid and links the message through aria-describedby. The reader hears the problem while focus is on the field that has it — server-side failures go to the page-level live region instead.

Autofill hints

autoComplete is set on all four fields — name, email, and new-password on both password fields, which is the signal a password manager needs to offer a generated password rather than the saved one.

03 API Reference

20 props 1 required
Prop
Type
Default
Description

04 Types

Local type definitions used by this component.

6 types
Name
Kind
Category
Used by
Description

05 Installation

Import

import { RegisterPage } from '@urbicon-ui/auth';