Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Testimonial Sidebar Login Block for React

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.

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

Put one good quote beside the sign-in with this testimonial sidebar login block for React with Base UI. It's the sign-in of Peerhaven, a mentoring platform: the page's two side rails run its full height and one band crosses the screen between two rules. The form sits at the start of the band: a Field with the email Input, another with the Password Input and a "Forgot password?" link, the Shine Button, the only colored control, then an "or" rule and a Continue with Google Button with a two-letter tile in place of a logo. At the end, behind a divider that meets both rules at a plus mark, a mentee's pull-quote sits in an inset Frame: her words in large type, an Avatar of initials, her name and role, five stars drawn by the read-only Rating with the score in text beside them, and a "Read the story" link. The side is still; nothing moves in it. On a phone it's gone and the form takes the screen. It's built from Frame, Avatar, Rating, 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. Continue with Google shows where a real one would send you ("Nothing opens in this demo") with a way back. 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, and point the provider row at your OAuth redirect. The quote and the person are made up; "Read the story" is a # link for your own case study.

How are the stars kept honest for screen readers?

The stars only draw the score. The Rating is read-only and wrapped in an aria-hidden, inert box, so it adds no stops or radios to the page, and "Rated 5 out of 5" is written beside it in text. They're drawn in the foreground color rather than the catalog's warning color, so the Shine Button stays the only colored thing on the page.

Why is the Sign in button never disabled?

A disabled button can't explain itself, and keyboard users can't reach it. Here it stays enabled: pressing it with an empty or malformed email, or no password, marks those fields invalid, writes one sentence under each and moves focus to the first, which reads its problem out. Typing clears that field's problem. The browser's own validation bubbles are turned off with noValidate, so the messages look the same in every browser, and each field keeps a line for its problem even when there is none, so a problem never pushes the page.

Why is the quote a figure?

It's a figure: the blockquote holds her words and the figcaption, the last child, holds who said them, so assistive technology reads them as a quotation with its source. The frame around it is only a Frame with an inset panel; swap in your own customer, a different layout, or a logo you have the rights to use.

Why a two-letter tile instead of the Google logo?

A brand's logo comes with its own usage rules, so the block ships a neutral tile with two letters (Go) and says the provider's name in the button. Drop in the official mark from the provider's brand guidelines where the code marks the icon slot.

What do phone visitors see?

The framed quote is hidden below 1024 px (max-lg:hidden), so a phone shows the product's mark, the heading, the form, the Sign in button and then the Google row, with the button ending on the first screen.

  • Pro

    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.

  • 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

    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

    A split sign-in page for uptime monitoring: the form at the start and four figures on hairline cells at the end, with a 30 days and 12 months switch that rolls the digits to the other period's numbers.

  • Pro

    Social Buttons Login

    SSO and providers

    A full-height provider-first sign-in page for a photo-sharing app: four hairline rows for Google, GitHub, Apple and Microsoft with a Last used badge that moves, and an email form that opens in place.

  • 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.