"use client"; import { ArrowUpRight, Check, Copy } from "@openstatus/icons"; import { Button } from "@openstatus/ui/components/ui/button"; import { ButtonGroup, ButtonGroupText, } from "@openstatus/ui/components/ui/button-group"; import { useCopyToClipboard } from "@openstatus/ui/hooks/use-copy-to-clipboard"; import { SHELL_CONTENT_COLUMN, SHELL_FORM_COLUMN, } from "@/components/layout/shell-columns"; import { Wordmark } from "@/components/layout/wordmark"; import { NavFeedback } from "@/components/nav/nav-feedback"; import { NavLogout } from "@/components/nav/nav-logout"; import { cn } from "@/lib/utils"; type StepStatus = "current" | "completed" | "upcoming"; export type OnboardingStep = { id: string; label: string; status: StepStatus; icon?: React.ReactNode; }; export function OnboardingLayout({ className, children, ...props }: React.ComponentProps<"div">) { return (
{children}
); } export function OnboardingStepper({ steps, className, ...props }: React.ComponentProps<"nav"> & { steps: OnboardingStep[] }) { return ( ); } export function OnboardingShell({ className, ...props }: React.ComponentProps<"div">) { return (
); } export function OnboardingFormColumn({ className, ...props }: React.ComponentProps<"section">) { return (
); } export function OnboardingResultColumn({ className, ...props }: React.ComponentProps<"section">) { return (
); } // ============================================================================= // Compound: form-column header // Use as: // Mirrors auth/login: same `font-cal` heading + `font-commit-mono` muted lead. // ============================================================================= export function OnboardingStepHeader({ className, ...props }: React.ComponentProps<"header">) { return
; } export function OnboardingStepTitle({ className, ...props }: React.ComponentProps<"h1">) { return (

); } export function OnboardingStepDescription({ className, ...props }: React.ComponentProps<"p">) { return (

); } export function OnboardingResultHeading({ className, ...props }: React.ComponentProps<"h2">) { return (

); } export function OnboardingActions({ className, ...props }: React.ComponentProps<"div">) { return (
); } // ============================================================================= // Compound: preview placeholder // Shared shell for the right-column previews (Step1 checks, Step2 iframe). // Renders decorative content behind a backdrop-blurred hint card. // // Use as: // // {decorativeContent} // // {hint} // // // ============================================================================= export function OnboardingPreviewPlaceholder({ className, ...props }: React.ComponentProps<"div">) { return (
); } export function OnboardingPreviewPlaceholderContent({ className, ...props }: React.ComponentProps<"div">) { return (
); } export function OnboardingPreviewPlaceholderOverlay({ className, ...props }: React.ComponentProps<"div">) { return (
); } export function OnboardingPreviewPlaceholderText({ className, ...props }: React.ComponentProps<"p">) { return (

); } // ============================================================================= // Locked-summary input // Shown after the step's form has been submitted — read-only display of the // committed value with copy + open affordances. // ============================================================================= export function OnboardingLockedSummary({ value, href, helper, className, ...props }: Omit, "children"> & { value: string; /** Optional external link target. When provided, an "Open" button is added. */ href?: string; helper?: React.ReactNode; }) { const { copy, isCopied } = useCopyToClipboard(); return (

{value} {href ? ( ) : null} {helper ? (

{helper}

) : null}
); }