Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/app/app/(chrome)/signups/[id]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)}
/>
<TabsNav
signupId={id}
Expand Down
21 changes: 1 addition & 20 deletions src/app/app/(chrome)/signups/[id]/settings/page.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { redirect } from 'next/navigation';
import { getOrganizerSession, toActor } from '@/auth/session';
import { loadSignupForOrganizer } from '@/services/signups.cached';
import { closeAction, updateBasicsAction } from '../actions';
import { updateBasicsAction } from '../actions';

type PageParams = {
params: Promise<{ id: string }>;
Expand Down Expand Up @@ -57,25 +57,6 @@ export default async function SettingsTab({ params, searchParams }: PageParams)
</button>
</div>
</form>

{sig.status === 'open' ? (
<div className="border-danger/30 bg-danger/5 rounded-xl border p-6">
<h2 className="text-danger text-sm font-semibold">Danger zone</h2>
<p className="text-ink-muted mt-1 text-sm">
Closing stops new signups but keeps the page visible.
</p>
<div className="mt-4 flex flex-wrap gap-2">
<form action={closeAction.bind(null, id)}>
<button
type="submit"
className="hover:bg-surface-raised rounded-lg border border-surface-sunk bg-white px-4 py-2 text-sm font-medium transition"
>
Close signup
</button>
</form>
</div>
</div>
) : null}
</section>
);
}
12 changes: 12 additions & 0 deletions src/components/signup/SignupHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ interface SignupHeaderProps {
status: string;
publicUrl: string;
publishAction: () => void | Promise<void>;
closeAction: () => void | Promise<void>;
}

export function SignupHeader({
Expand All @@ -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`;
Expand Down Expand Up @@ -62,6 +64,16 @@ export function SignupHeader({
</button>
</form>
) : null}
{status === 'open' ? (
<form action={closeAction}>
<button
type="submit"
className="bg-brand inline-flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium text-white transition hover:brightness-110"
>
Close signup
</button>
</form>
) : null}
</div>
</div>
{description ? (
Expand Down
Loading