"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 (
);
}
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}
);
}