shadcn.io is not affiliated with official shadcn/ui
Social Connect Onboarding Block for React
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.
Installation
Overview
Collect a new user's public profiles without a form that feels like one, with this links step for React with Base 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.