- builder: draft/published/closed status banners; creating a form now
lands on its edit page so Publish is immediately visible; a
members-only form shows a "no public link" note instead of a dead URL
- member-facing forms: /my-forms list + /my-forms/[id] fill
(MemberFillClient), "Forms" sidebar item for all members. Fixes the
long-standing gap where members-only forms had no fill surface
- starter templates: lib/form-templates.ts + a picker on /forms/new
(Liability waiver, Membership application, Event RSVP, Photo release,
Blank) that seeds builder state (no table)
- forms-client relabels members-only forms (was showing a misleading
/f/<space>/<slug> that always 404s for members-only)
- docs corrected per the audit pass: DATABASE_SCHEMA / DB_SCHEMA_MAP /
ARCHITECTURE / API_REFERENCE now reflect migrations 014-029, per-space
slug, /f/[space]/[slug], getPublicForm({space,slug}), invite roles;
HANDOFF pass-19 added with residual gaps
337 tests; build verified (Compiled successfully, exit 0). No deploy.
21 lines
545 B
TypeScript
21 lines
545 B
TypeScript
import { requireFormsManagerPage } from '@/lib/forms-guard'
|
|
import { PageHeader, PageTitle } from '@/components/ui/page-title'
|
|
import { NewFormClient } from '@/components/forms/new-form-client'
|
|
|
|
export const dynamic = 'force-dynamic'
|
|
|
|
export default async function NewFormPage() {
|
|
const { spaceSlug } = await requireFormsManagerPage()
|
|
|
|
return (
|
|
<>
|
|
<PageHeader>
|
|
<PageTitle>New form</PageTitle>
|
|
</PageHeader>
|
|
<div className="p-4 md:p-6">
|
|
<NewFormClient spaceSlug={spaceSlug} />
|
|
</div>
|
|
</>
|
|
)
|
|
}
|