diff --git a/src/app/app/(chrome)/signups/[id]/layout.tsx b/src/app/app/(chrome)/signups/[id]/layout.tsx index 14e5556..2a6d834 100644 --- a/src/app/app/(chrome)/signups/[id]/layout.tsx +++ b/src/app/app/(chrome)/signups/[id]/layout.tsx @@ -7,7 +7,7 @@ import { countCommitmentsForSignup } from '@/services/commitments'; import { publicSignupUrl } from '@/lib/links'; import { SignupHeader } from '@/components/signup/SignupHeader'; import { TabsNav } from '@/components/signup/TabsNav'; -import { publishAction } from './actions'; +import { closeAction, publishAction } from './actions'; type LayoutProps = { children: React.ReactNode; @@ -51,6 +51,7 @@ export default async function SignupDetailLayout({ children, params }: LayoutPro status={sig.status} publicUrl={publicSignupUrl(sig.slug)} publishAction={publishAction.bind(null, id)} + closeAction={closeAction.bind(null, id)} /> ; @@ -57,25 +57,6 @@ export default async function SettingsTab({ params, searchParams }: PageParams) - - {sig.status === 'open' ? ( -
-

Danger zone

-

- Closing stops new signups but keeps the page visible. -

-
-
- -
-
-
- ) : null} ); } diff --git a/src/components/signup/SignupHeader.tsx b/src/components/signup/SignupHeader.tsx index 263218c..22c716b 100644 --- a/src/components/signup/SignupHeader.tsx +++ b/src/components/signup/SignupHeader.tsx @@ -10,6 +10,7 @@ interface SignupHeaderProps { status: string; publicUrl: string; publishAction: () => void | Promise; + closeAction: () => void | Promise; } export function SignupHeader({ @@ -19,6 +20,7 @@ export function SignupHeader({ status, publicUrl, publishAction, + closeAction, }: SignupHeaderProps) { const previewHref = `/app/signups/${signupId}/preview`; const exportHref = `/api/signups/${signupId}/export.csv`; @@ -62,6 +64,16 @@ export function SignupHeader({ ) : null} + {status === 'open' ? ( +
+ +
+ ) : null} {description ? (