Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Feature Tour Login Block for React

A split sign-in page for a spreadsheet that works like a database: the form beside a wide three-tab tour (Boards, Timeline, Reports), each tab a drawn greyscale view of one table and a sentence.

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

Give the sign-in a tour of the product with this feature showcase login block for React with Base UI. It's the sign-in of Gridfinch, a spreadsheet that works like a database: the page's two side rails run its full height and one band crosses the screen between two rules. The form takes five twelfths 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, seven twelfths of the band hold a three-tab Tabs tour: Boards, Timeline and Reports are each a drawn greyscale view of one table with a sentence about it, and the arrow keys move between the tabs. Every drawing has the same height, so switching never moves the page. On a phone the tour is gone and the form takes the screen. It's built from Tabs, Field, Input, Password Input, Shine Button and Guides, with a CSS entrance only. For a sign-in that shows what's inside.

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. The tour is drawn from typed data (the lanes and cards, the tasks and the eight days of rows are all made up) and nothing in it is a real table. To wire the form 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.

How do the tabs work with a keyboard?

It's a real tab list: Tab moves focus onto the selected tab, and the arrow keys move between Boards, Timeline and Reports, with Home and End jumping to the first and last; the panel under the list changes with the selected tab. A tab is selected as soon as it gets focus. The drawings are hidden from assistive technology and the sentence under each is real text, so a screen reader hears what the tab shows.

Why doesn't the page move when I switch tabs?

Every drawing sits in a box of the same height (15 rem) and each sentence reserves two lines, so whichever tab is selected, the panel is the same size. A panel that varied would need an unseen copy of each panel in one grid cell; fixed sizes make that unnecessary.

How are the drawings made, and can I use my own?

They're built from plain boxes and bars in greyscale, with lane and task data typed at the top of the file: the Boards lanes hold cards with literal width classes, the Timeline rows have literal column classes on a twelve-column week grid, and the Reports bars take their height from the eight values, with the total worked out from them. Replace a drawing with a real screenshot of your own, or an image you have the rights to use, and keep its alt text empty if the sentence says what it shows.

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 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 tour 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. The tour is a nice-to-have, so a phone user loses nothing needed to 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 split sign-in page for a product analytics tool: the form beside a What's new list of three releases with a slanted edge, each release a disclosure that opens its detail, and one GitHub row.

  • 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 features section for a release tool: a line tab switch (Plan, Ship, Review) that swaps one split band, with a drawing flush to the start rail and the copy on the end side.

  • 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

    App Download Login

    Split with a panel

    A reverse split sign-in page for a running tracker: a real QR code of a download link with an iOS and Android switch that re-encodes it, a copyable link, and the sign-in form beside it. On a phone the code gives way to a Get the app link.