Data Import ReassurancePRO

An import section leading with an image tile that floats a live upload dropzone, then setting out the formats that are read and the records that come across as two checked hairline lists.

Onboarding38: Data Import Reassurance

An import section leading with an image tile that floats a live upload dropzone, then setting out the formats that are read and the records that come across as two checked hairline lists.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/onboarding38?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/onboarding38?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/onboarding38.tsx, the upload32 dropzone piece it floats on the tile (installed to components/beste/piece/upload32.tsx), and the badge23 and button21 components it uses for the eyebrow and the actions.

Quick start

The installed file exports onboarding38Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.

tsx
import { Onboarding38, onboarding38Demo } from "@/components/beste/block/onboarding38";

export default function ImportPage() {
  return <Onboarding38 {...onboarding38Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Onboarding38 } from "@/components/beste/block/onboarding38";
import { Upload32 } from "@/components/beste/piece/upload32";

export default function ImportPage() {
  return (
    <Onboarding38
      badge={{ label: "Bringing your data" }}
      heading="Send the messy export. That is the whole ask."
      description="We have not met a format that stopped us."
      media={
        <Upload32
          title="Import member records"
          hint="Drop a CSV or browse, we map the fields"
          file={{ name: "members_export_2026.csv", percent: 72 }}
        />
      }
      image={{ src: "/backdrops/blue.jpg", alt: "Soft blue gradient backdrop" }}
      groups={[
        {
          title: "Formats we read",
          items: ["CSV and TSV, any delimiter", "Excel workbooks, including multiple sheets"],
        },
        {
          title: "What comes across",
          items: ["Members, contacts, and reference numbers", "Appointment history"],
        },
      ]}
      reassurance="Anything we cannot map arrives as a note against the right member."
      buttons={[
        { label: "Start an import", href: "/import" },
        { label: "Read the migration guide", href: "/docs/migration" },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow above the heading, in the copy column
headingstringSection heading
descriptionstringSupporting paragraph, capped at max-w-md
mediaReactNodeLive asset on the tile, upload32 in the demo
image{ src: string; alt: string }Backdrop behind the media tile
groupsFormatGroup[][]Two checked lists, formats and records
reassurancestringWhat happens to data that cannot be mapped
buttonsActionLink[][]Actions, first solid and the rest outlined
classNamestringExtra classes for the outer section
ts
type ActionLink = {
  label: string;
  href: string;
};

type TileImage = {
  src: string;
  alt: string;
};

type FormatGroup = {
  title: string;
  items: string[];
};

Behavior notes

More Onboarding blocks

View all Onboarding
PRO

onboarding32

Data Import Split

A reversed split with an image tile floating a live import dropzone on the left, and an eyebrow, light heading, three monospace-numbered steps, and an accent button on the right.

PRO

onboarding26

Data Import Selector

Onboarding screen with import options from other platforms, CSV upload, and manual entry. Perfect for SaaS migration flows that help users bring existing data into the platform.

PRO

onboarding41

Migration Risk Register

A candid onboarding section listing what tends to go wrong on hairline rows, each with a tone-coded frequency chip, how often it has been seen, and the mitigation already in place.

PRO

onboarding33

Interactive Setup Checklist

A setup panel pairing a soft progress column, where an oversized percentage and accent bar react to what is ticked, with hairline checklist rows that each carry a description and a jump-in link.

PRO

onboarding35

Tracked Setup Sequence

A setup section listing four numbered steps with who owns each one, against a column that sticks while they scroll and floats a live step tracker on an image tile.

PRO

onboarding40

Division Of Labour Table

A responsibility table grouping migration tasks into phases on hairline rows, marking each as yours, ours, or shared with a check or a dash, and totalling the customer's time in one light figure.