Skip to main content
Urbicon UI
source

VerifyEmailPage

A page that verifies the email token from the URL on mount and shows the result. It has no loginUrl of its own; render the onward link through the links snippet.

01 Usage

Basic

The live preview mocks a successful verification via the fetcher prop (the static docs site has no auth backend). The snippet shows the production setup.

Verify email

Loading...

Verifying your email...

<script lang="ts">
  import { VerifyEmailPage } from '@urbicon-ui/auth';
  import { page } from '$app/state';

  // Token from the verification link, e.g. /verify-email?token=...
  const token = $derived(page.url.searchParams.get('token') ?? '');
</script>

<VerifyEmailPage {token} />

02 Accessibility

One region for a process the user never started

Verification fires on mount from the token in the URL, so the user takes no action and has nothing to watch. The spinner and the success share one polite role="status" region, so their swap is a single announced change; a rejected link goes to the assertive role="alert" region beside it. The Spinner is a live region in its own right, and here it renders without one: nested regions leave the same text carrying two urgencies at once, and ARIA does not say which wins. The page keeps to its own regions instead of the shell's shared ones, which would put two regions on the page for the same event.

The spinner has words next to it

The loading state renders the localized "verifying" text inside the live region alongside the spinner. A spinner alone conveys nothing to a screen reader; the text is what actually gets announced.

Focus stays where it was

Nothing on this page moves focus when the result arrives. The live region carries the announcement instead. A user who tabs away mid-verification is not returned to the result.

03 API Reference

12 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 { VerifyEmailPage } from '@urbicon-ui/auth';