Two-column sign-up with a cover image
A two column signup page with a cover image.
Preview
Built with
The components this screen renders, through their own templates. Changing one of them, or a token they read, changes this screen.
Design system gaps
What the design system lacks to render the original as it is. The screen fills each gap with native HTML on semantic tokens until a component or a token covers it.
- Password fields are Text fields: the Text field has no input type yet, so the password shows as plain text.
- Links are native links on semantic tokens: there is no Link component yet.
- The "Or continue with" separator is two Dividers around a label: the Divider has no label.
Changes from the original
- Brand logos (Apple, Google, GitHub, Meta) are dropped: Material Symbols has none and no brand icon source is decided; the buttons keep their text.
- The cover image is a token-drawn placeholder.
- Rebuilt as static HTML with the design system's component templates; every color, type style, radius, border and spacing comes from its tokens.
- The original visual design (Tailwind classes, the Geist font) is not reused.
- Lucide and Tabler icons are remapped to Material Symbols; brand logos (Apple, Google, GitHub, Meta) are dropped, the buttons keep their text.
- Placeholder images are drawn with semantic tokens.
- No script: behaviour that needs JavaScript (collapsing the sidebar, toasts, drag and drop, client-side tables) is dropped or simplified, and each screen says so.
Code
The HTML the screen renders, from apps/docs/screens/shadcn-ui/signup-02.screen.mjs, with the stylesheets of @quantum-ds/tokens, the reference implementation (packages/components/src/) and apps/docs/screens/screens.css.
HTML
<div class="scr-viewport">
<div class="scr-screen scr-auth" data-layout="split">
<div class="scr-auth__main">
<div class="scr-auth__top">
<a class="scr-brand" href="#">
<span class="scr-brand__mark">
<span
class="ds-icon"
data-size="small"
data-color="current"
aria-hidden="true"
>view_agenda</span>
</span>
Acme Inc.
</a>
</div>
<div class="scr-auth__center">
<div class="scr-auth__panel">
<form class="scr-form" action="#" method="post">
<div class="scr-stack">
<div class="scr-heading" data-align="center">
<h1 class="scr-title">Create your account</h1>
<p class="scr-lede">Fill in the form below to create your account</p>
</div>
<div class="ds-text-field" data-size="medium">
<label
class="ds-text-field__label"
data-part="label"
for="signup-02-name"
>Full Name</label>
<input
type="text"
class="ds-text-field__control"
data-part="control"
id="signup-02-name"
name="name"
placeholder="John Doe"
required
autocomplete="name"
>
</div>
<div class="ds-text-field" data-size="medium">
<label
class="ds-text-field__label"
data-part="label"
for="signup-02-email"
>Email</label>
<input
type="text"
class="ds-text-field__control"
data-part="control"
id="signup-02-email"
name="email"
placeholder="m@example.com"
required
aria-describedby="signup-02-email-description"
autocomplete="email"
inputmode="email"
>
<p
class="ds-text-field__description"
data-part="description"
id="signup-02-email-description"
>We'll use this to contact you. We will not share your email with anyone else.</p>
</div>
<div class="ds-text-field" data-size="medium">
<label
class="ds-text-field__label"
data-part="label"
for="signup-02-password"
>Password</label>
<input
type="text"
class="ds-text-field__control"
data-part="control"
id="signup-02-password"
name="signup-02-password"
required
aria-describedby="signup-02-password-description"
autocomplete="new-password"
>
<p
class="ds-text-field__description"
data-part="description"
id="signup-02-password-description"
>Must be at least 8 characters long.</p>
</div>
<div class="ds-text-field" data-size="medium">
<label
class="ds-text-field__label"
data-part="label"
for="signup-02-confirm-password"
>Confirm Password</label>
<input
type="text"
class="ds-text-field__control"
data-part="control"
id="signup-02-confirm-password"
name="signup-02-confirm-password"
required
aria-describedby="signup-02-confirm-password-description"
autocomplete="new-password"
>
<p
class="ds-text-field__description"
data-part="description"
id="signup-02-confirm-password-description"
>Please confirm your password.</p>
</div>
<button
type="submit"
class="ds-button"
data-emphasis="accent"
data-intent="neutral"
data-size="medium"
>
<span
class="ds-button__label"
data-part="label"
>Create Account</span>
</button>
<div class="scr-separator">
<hr class="ds-divider" data-orientation="horizontal">
<span class="scr-separator__label">Or continue with</span>
<hr class="ds-divider" data-orientation="horizontal">
</div>
<button
type="button"
class="ds-button"
data-emphasis="subtle"
data-intent="neutral"
data-size="medium"
>
<span
class="ds-button__label"
data-part="label"
>Sign up with GitHub</span>
</button>
<p class="scr-hint" data-align="center">
Already have an account?
<a class="scr-link" href="#">Sign in</a>
</p>
</div>
</form>
</div>
</div>
</div>
<div class="scr-auth__aside">
<div class="scr-cover" aria-hidden="true">
<span
class="ds-icon"
data-size="large"
data-color="current"
aria-hidden="true"
>landscape</span>
</div>
</div>
</div>
</div>