"use client"; import type { ThemeKey } from "@openstatus/theme-store"; import { Button } from "@openstatus/ui/components/ui/button"; import { ArrowRight } from "lucide-react"; import { useState } from "react"; import { CreatePageForm, type FormValues as CreatePageFormValues, } from "@/components/forms/onboarding/create-page"; import { OnboardingActions, OnboardingFormColumn, OnboardingLockedSummary, OnboardingResultColumn, OnboardingResultHeading, type OnboardingStep, OnboardingStepDescription, OnboardingStepHeader, OnboardingStepTitle, OnboardingStepper, } from "@/components/layout/onboarding-layout"; import { OnboardingStatusPagePreview } from "@/components/onboarding/status-page-preview"; import type { OnboardingPage } from "../client"; export function Step2({ stepperSteps, pageStatus, createdPageData, slugFallback, monitorSkipped, monitorName, isSubmitting, onSubmit, onSkip, onContinue, }: { stepperSteps: OnboardingStep[]; pageStatus: "skipped" | "completed" | null; createdPageData: OnboardingPage | undefined; slugFallback: string; monitorSkipped: boolean; monitorName: string | null; isSubmitting: boolean; onSubmit: (values: CreatePageFormValues) => Promise; onSkip: () => void; onContinue: () => void; }) { const isLocked = pageStatus === "completed" && !!createdPageData; // Live preview tracks the form values via `onValuesChange` below. Defaults // mirror the form's initial state so the preview renders something on first // paint before the user touches the inputs. const [previewValues, setPreviewValues] = useState({ slug: slugFallback, theme: "default-rounded", forceTheme: "system", components: monitorSkipped ? [{ name: "Website" }] : undefined, }); // Frozen at submit time so the locked preview shows what the user // actually published, not whatever they last typed before clicking submit. const [submittedValues, setSubmittedValues] = useState(null); const lockedPreviewValues = submittedValues ?? previewValues; return ( <> Publish a status page Pick a subdomain and a theme - your page goes live the moment you publish. Configure everything else later from page settings. {isLocked ? ( ) : ( { await onSubmit(values); setSubmittedValues(values); }} onValuesChange={setPreviewValues} /> )} {isLocked ? ( ) : ( <> )} Status Page Preview
); }