Centered Card Sign-in
A centred login card with email, a toggleable password field and a submit button.
3 frameworksBeginner
A branded gradient panel beside the form, carrying the logo and tagline through props.
<!--
A gradient brand panel and a form panel. Below md the gradient panel becomes a
short header strip above the form (order-first) rather than vanishing - it
carries the brand, so it stays, just reduced. Text on the gradient is solid
white/blue-100 for reliable contrast on the coloured surface.
-->
<div class="mx-auto grid w-full max-w-4xl overflow-hidden rounded-2xl border border-gray-200 shadow-sm md:grid-cols-2 dark:border-gray-800">
<div class="flex flex-col justify-center gap-2 bg-gradient-to-br from-blue-600 via-indigo-600 to-purple-700 p-8 md:p-10">
<p class="text-lg font-bold text-white">Adysre</p>
<p class="text-sm text-blue-100">One login for every tool your team runs on.</p>
</div>
<div class="bg-white p-6 sm:p-8 dark:bg-gray-950">
<h1 class="text-xl font-bold tracking-tight text-gray-900 dark:text-gray-100">Sign in</h1>
<form class="mt-6 space-y-4" action="#" method="post">
<div>
<label for="grad-email" class="block text-sm font-medium text-gray-700 dark:text-gray-300">Email</label>
<input id="grad-email" name="email" type="email" autocomplete="email" required placeholder="you@company.com" class="mt-1.5 w-full rounded-lg border border-gray-300 bg-white px-3.5 py-2.5 text-sm text-gray-900 placeholder:text-gray-500 focus-visible:border-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:placeholder:text-gray-400 dark:focus-visible:ring-blue-400" />
</div>
<div>
<label for="grad-password" class="block text-sm font-medium text-gray-700 dark:text-gray-300">Password</label>
<input id="grad-password" name="password" type="password" autocomplete="current-password" required placeholder="••••••••" class="mt-1.5 w-full rounded-lg border border-gray-300 bg-white px-3.5 py-2.5 text-sm text-gray-900 placeholder:text-gray-500 focus-visible:border-transparent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:placeholder:text-gray-400 dark:focus-visible:ring-blue-400" />
</div>
<button type="submit" class="w-full rounded-lg bg-blue-600 px-5 py-2.5 text-sm font-semibold text-white transition-colors hover:bg-blue-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 focus-visible:ring-offset-white motion-reduce:transition-none dark:focus-visible:ring-blue-400 dark:focus-visible:ring-offset-gray-950">Sign in</button>
</form>
</div>
</div>| Prop | Type | Default | Description |
|---|---|---|---|
brand | string | 'Adysre' | Brand |
tagline | string | - | Tagline |
onSubmit | (data: { email: string; password: string }) => void | - | Called with the form's values when it is submitted. |
className | string | - | Additional classes merged onto the root element. |
Set `brand` and `tagline` for the coloured panel; text on it is solid white and `blue-100` for reliable contrast on the gradient. Below `md` the columns stack so nothing overflows a phone.