"use client"; import { Button } from "@openstatus/ui/components/ui/button"; import { useState } from "react"; import { FormCard, FormCardGroup } from "@/components/forms/form-card"; import { FormSheetContent, FormSheetDescription, FormSheetFooter, FormSheetHeader, FormSheetTitle, FormSheetTrigger, FormSheetWithDirtyProtection, } from "@/components/forms/form-sheet"; import { type DeclareIncidentValues, FormDeclareIncident, type FormValues, } from "./form"; export function FormSheetDeclareIncident({ children, open: controlledOpen, onOpenChange, defaultValues, onSubmit, footer, slack, }: { children?: React.ReactNode; open?: boolean; onOpenChange?: (open: boolean) => void; defaultValues?: Partial; onSubmit: (values: DeclareIncidentValues) => Promise; footer?: React.ReactNode; slack: "ready" | "reconnect" | "disconnected"; }) { const [internalOpen, setInternalOpen] = useState(false); const open = controlledOpen ?? internalOpen; const setOpen = onOpenChange ?? setInternalOpen; return ( {children ? ( {children} ) : null} Declare incident An internal record for the team: severity, commander and a timeline. Nothing is published until you create a status report. { await onSubmit(values); setOpen(false); }} /> {footer} ); }