affectUI › Screens › App screens

Onboarding / Website

First step of setting up an AI assistant: the website, docs and help center it should learn from as chips on the left; on the right the assistant's dashboard as a large loading state, where each domain lands in its Knowledge table.

Part of affectUI Pro. Install: npx shadcn@latest add https://www.affectui.com/r/onboarding-website.json · Import from @/components/ui/onboarding-website

When to use

  • The first step after sign-up for an AI assistant or agent that learns from a company's own pages
  • Flows where every answer visibly sets up the product people are about to use – the dashboard glides to where each answer lands

When not to use

  • In-app setup inside an existing workspace – use the Onboarding screen
  • Long forms with many fields – use the Stepper Form

Usage

import { OnboardingWebsiteScreen } from "@/components/ui/onboarding-website";

export default function Page() {
  return (
    <OnboardingWebsiteScreen
      email={session.user.email}
      defaultDomains={[session.user.email.split("@")[1]]}
      onContinue={(domains) => api.saveDomains(domains).then(() => router.push("/onboarding/brand"))}
      onLogout={signOut}
    />
  );
}

Props

NameTypeDefaultDescription
defaultDomainsstring[][]Domains already known, e.g. from the sign-up email; the first one is the company's own
onContinue(domains: string[]) => voidCalled with the cleaned-up domains (no https://, www. or paths) when Continue is pressed
onBack() => voidShows Back in the top bar – leave it out on the first step
onLogout() => voidCalled by Log out
emailstring"alex@northwind.com"The signed-in account, top right
productstring"Lumen"Your product's name, for the logo label and the footer
layout"inset" | "flat"The dashboard picture like the App Shell: main area as a rounded panel on the gray page, or edge to edge. Left out, it follows data-shell="flat" on an ancestor
autoFocusbooleanfalseFocus the first field when the step opens (Ready: Open dashboard) – turn it on in a real flow so the keyboard carries on from step to step
step / stepsnumber1 / 4Where this step sits in the flow – one dash per step under the top
autoTypestringTypes this into the field once on load, for demos and recordings; stops when someone types
classNamestringExtra class on the root

Accessibility

  • One form: Enter adds what's in the field as a chip, Enter on the empty field continues; comma or space adds too
  • Every chip has a remove button; Backspace in the empty field takes the last chip back
  • Invalid domains are marked with aria-invalid and explained in a polite live hint under the field
  • The dashboard on the right is decoration and hidden from assistive tech
  • Animations turn off with prefers-reduced-motion

Responsive

  • Fills its container – give it the full viewport height
  • The step sits centered in the left half; the dashboard starts at the middle and runs off the right edge
  • Below 900px the step takes the full width and the dashboard fades back behind it
  • Dark mode built in: switches when an ancestor (usually <html>) has the class dark or data-theme="dark"

Requirements

  • React 19
  • @hugeicons/react
  • @hugeicons/core-free-icons