Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Split Quote Stepper Login Block for React

A split sign-in page for a project tool for makers: the form beside a narrow stepper of three customer quotes with Previous and Next buttons, a count and the arrow keys. It never turns by itself.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

Let customers vouch for you beside the sign-in with this split login block for React with Base UI. It's the sign-in of Makerwick, a project tool for makers: the page's two side rails run its full height and one band crosses the screen between two rules. The form takes two thirds of the band at its end: a Field with the email Input, another with the Password Input and a "Forgot password?" link, and the Shine Button, the only colored control. At the start, behind a divider that meets both rules at a plus mark, a narrow stepper shows one customer quote at a time, with an Avatar of initials, the person's name and role, Previous and Next icon Buttons around "1 of 3", and the arrow keys while focus is inside it. The three quotes share one grid cell, so the tallest holds the height and nothing moves as you step. It never turns by itself and doesn't swipe; for that, see the carousel version. On a phone the stepper is gone and the form takes the screen. It's built from Avatar, Button, Field, Input, Password Input, Shine Button and Guides, with a CSS entrance only. For a sign-in that carries one proof.

FAQ

What happens when I sign in, and what stays in the page?

Nothing leaves the page. Sign in waits under a spinner for less than a second, then shows "You're signed in" with the address you typed, and a polite status message says nothing was sent; Sign out brings the form back with your email still filled in. To wire it for real, post the email and password to your auth endpoint where the code says so, keep the busy state until it answers, then redirect, or show its error under the field it concerns. The three quotes are typed data and the people in them are made up: replace them with customers who agreed to be quoted.

How does stepping work, and what do the keys do?

Previous and Next wrap around, so a button is never disabled under your finger or focus. While focus is anywhere in the stepper, the arrow keys move it too: the end arrow goes to the next quote and the start arrow to the previous one, which is the right arrow in left-to-right and the left arrow in right-to-left. After you move it, a polite status message reads "Quote 2 of 3" and the person's name; nothing is read out on load. The listener is a capture listener on the stepper, so it works on every base, including React Aria, whose buttons stop keys from bubbling.

Why doesn't the page move when the quote changes?

All three quotes sit in one grid cell. The one on show is visible; the other two are invisible, out of the tab order and hidden from assistive technology, but they still take their space, so the cell is as tall as the longest quote and the controls under it stay put. The quote fades with a CSS transition, which is off under reduced motion.

Why doesn't it turn by itself or swipe?

A quote that changes under the cursor is hard to read and harder to quote back, so this one moves only when you ask. It has no swipe either: it is a stepper of three buttons and two keys. The carousel version of this page does swipe, and turns itself only after you press Play.

Why is the form first in the page when the side comes first on screen?

The form comes first in the markup, so Tab order and the reading order for a screen reader start with the sign-in and the heading, and on a phone, where the side is gone, nothing has to be reordered. The side is placed at the start of the band with two grid classes (lg:col-start-1 lg:row-start-1) and the divider is its end border. It follows the page direction, so in a right-to-left layout the side sits at the right.

What do phone visitors see?

The stepper is hidden below 1024 px (max-lg:hidden), so a phone shows the product's mark, the heading, the form and the Sign in button, which ends on the first screen. Because the quotes aren't part of signing in, a phone loses nothing it needs.

  • Pro

    A sign-in page for a video review tool with three customer quotes in a carousel under the form: swipe or pick a segment, and press Play to turn it over by itself, one quote every seven seconds. It starts paused.

  • Pro

    A split sign-in page for a mentoring platform: the form with a Continue with Google row beside one pull-quote in an inset frame, with initials, a name and role, five stars and a Read the story link.

  • Pro

    Split Product Sketch Login

    Split with a panel

    A split sign-in page for a grocery delivery service: the form at the end beside a drawn sketch of the product (a basket, a delivery slot and a total in an inset frame), with Remember me and a simulated sign-in.

  • Pro

    Benefits Accordion Login

    Split with a panel

    A split sign-in page for a freelancer back office: the form with Remember me beside five benefits as an accordion, one open at a time and the first open to start, with ruled rows.

  • Pro

    A centre-mode quote carousel for a support inbox: a centred header with a Shine Button above one hairline band, where the active quote sits in the middle on a raised card with its neighbours peeking in, with previous and next buttons, a dot per quote and arrow-key control.

  • Pro

    A full-height sign-in page for a password manager with four hairline cells under the form, each a button whose hover card says what the safeguard is and where it stops.