Skip to content

[to share] Public form demo + infrastructure feedback#3424

Draft
twjeffery wants to merge 15 commits intodevfrom
tom/public-form
Draft

[to share] Public form demo + infrastructure feedback#3424
twjeffery wants to merge 15 commits intodevfrom
tom/public-form

Conversation

@twjeffery
Copy link
Copy Markdown
Collaborator

@twjeffery twjeffery commented Feb 13, 2026

What this is

A working public form demo built on the GoabPublicForm infrastructure, demonstrating the "one idea per page" pattern with V2 components.

Live demo: https://publicform.netlify.app

What's included

Demo app (apps/public-form-demo/)

  • 3-task form with section locking
  • Eligibility check (age gate → ineligible exit)
  • Review pages with summary cards
  • Results and confirmation pages
  • Application dashboard page
  • Start page

Infrastructure changes

  • 4 bug fixes
  • 6 enhancements
  • Styling updates to match Figma

Feedback

While building the demo, I ran into friction points and made changes to work around them. Everything is documented in apps/public-form-demo/FEEDBACK.md, what I encountered, what I did, and why.

Happy to walk through it together and/or discuss.


chrisolsen and others added 13 commits February 4, 2026 16:07
Adds support for validators that receive full page data, enabling
conditional validation patterns like "phone required if checkbox checked".

Changes:
- validators.ts: Add PageValidator type and ConditionalRequiredValidator factory
- public-form.ts: Add AnyValidator union type, PFField 'type' property

See public-form-pattern-feedback.md "Conditional Validation" section.
Bug fixes:
- Form.svelte: Add bubbles:true to _subformChange event (React wasn't receiving it)
- Form.svelte: Initialize dataBuffer in init() (validation failed on form re-entry)
- Form.svelte: Move resetErrors() before validation (fixed fields still showed errors)
- FormSummary.svelte: Add null check in showInSummary()

Enhancements:
- Form.svelte: Support PageValidator, skip validation for subform pages
- FormPage.svelte: Add error summary callout, description slot, errorSummaryPosition prop
- Subform.svelte: Add customization props (addButtonText, addButtonType, addButtonSize,
  addButtonIcon, addHeading, editHeading)

Styling:
- FormSummary.svelte: Rewrite to match Figma review cards (flexbox layout, typography)
- FormPage.svelte: Adjust heading/button margins to match Figma

See public-form-pattern-feedback.md for full details.
- public-form-page.tsx: Add errorSummaryPosition prop
- public-subform.tsx: Add subform customization props (addButtonText,
  addButtonType, addButtonSize, addButtonIcon, addHeading, editHeading)
Change "—Select month—" label text fix.
Complete public form demo at apps/public-form-demo/ demonstrating:
- 3-task form structure with eligibility check
- One idea per page pattern from Figma designs
- V2 components (Goabx*) with design tokens
- Task list with section locking
- Review pages with summary cards
- Results and ineligible exit pages

Live demo: https://publicform.netlify.app
Bumps @abgov/design-tokens from ^1.8.0 to ^2.0.1.
Required for V2 components (Goabx*) to display correct styling.
@twjeffery twjeffery changed the title [Draft] Public form demo + infrastructure feedback [to share] Public form demo + infrastructure feedback Feb 18, 2026
The digital service demo now includes a more up-to-date form alongside
the workspace. No need to maintain both — redirect publicform.netlify.app
to digital-service-demo-v2.netlify.app.
@netlify
Copy link
Copy Markdown

netlify bot commented Mar 16, 2026

Deploy Preview for goa-design-2 failed.

Name Link
🔨 Latest commit 0b95506
🔍 Latest deploy log https://app.netlify.com/projects/goa-design-2/deploys/69b888ae2299cf0008896e78

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants