Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Social Connect Onboarding Block for Radix UI

A setup panel with four profile links (X, LinkedIn, GitHub and a website) that check a handle as you type, turn into Saved with an Edit, and fill a drawn link-in-bio card.

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

Collect a new user's public profiles without a form that feels like one, with this links step for React with Radix UI. It is a setup panel of Tendrilby, a link-in-bio page, in two cells ruled by Guides. At the start four rows (X, LinkedIn, GitHub and a website) each hold a handle in an Input Group behind a typed prefix such as “github.com/”. As you type, the line under the field says “Looks good” or what the service accepts, in words. Save turns a valid row into “Saved”, with the field read-only, and Edit opens it again. At the end a drawn link-in-bio card lists the saved links in place and keeps a dashed empty slot for each of the rest. Continue is the one Shine Button, quiet until one link is saved.

FAQ

What does each field accept?

X: letters, numbers and underscores, 15 at most. LinkedIn: letters, numbers and dashes, 3 to 100. GitHub: letters, numbers and single dashes, 39 at most, not starting with a dash. A website: an address such as example.com, with an optional path. The patterns are in PATTERNS and the sentence for each is hint in NETWORKS; they check the shape only.

When does the check run?

On every keystroke, in a line that is always reserved under the field so a message never moves the rows. That line is plain text and not a live region, so a screen reader is not interrupted while you type; pressing Save speaks the result in the status line, and a refused Save explains why and puts focus back in the field.

What do Save and Edit do?

Save keeps the handle in this tab and turns the row into “Saved”: the field becomes read-only and the button reads Edit. Edit makes the field editable again and focuses it. A row with nothing typed, or with a handle the service would not accept, answers Save with a sentence and no change.

What stays local in the demo, and how do I wire it?

Everything. Nothing is looked up, so a handle that does not exist is accepted if its shape is right, and the card is a drawing of the page. In your app save the links where save says so, and if you want to confirm that a profile exists, do it on your server and answer in the same line under the field.

Why is Continue quiet at first?

The step needs one saved link. Continue stays visible but quiet until there is one (X starts saved), and pressing it early says so and focuses the first field. Skip for now leaves the step.

How does it look on a phone?

The card moves above the rows and shrinks to one row, the owner's initials and name, while the links it would show are named in the sentence under it. The rows stack with the field full width and Save under it, and the foot pins to the bottom of the screen.