Skip to content

Offer page & result copy editor (config-driven status messages) #417

Description

@hamin2006

Context

The applicant-facing offer letter and status copy are effectively uneditable by admins: the offer letter lives in raw form config JSON (edited via SQL every season), and most other decision screens are hardcoded in components. Settings shows a preview but has no editor.

Current behavior

  • Offer letter: config.application.pages.offerPage.content rendered by offerPage.tsx with {{...}} templating over app details + lpContext (teams etc.). No editor anywhere; settings preview only renders it.
  • Status labels/descriptions: config.application.status[] — labels feed pickers; description has no consumer; no editor.
  • Hardcoded screens (not even SQL-editable): rejected/closed/submitted copy in MainResultPage.tsx/GenericResult, accepted text in acceptedResult.tsx, submitted celebration in submittedResult.tsx, pending in pendingResult.tsx, decline text in offerPage.tsx.
  • Unknown statuses render the raw status id string to the applicant.

Desired behavior

  • Editor (natural home: Settings) for the offer-page content and per-status applicant-facing message, with live preview using the existing per-app preview picker.
  • Move hardcoded decision copy into per-status config with component defaults as fallback (so unconfigured forms behave exactly as today).
  • Support the existing {{tag}} substitution in edited copy; preview reflects substitutions with a chosen applicant.

Acceptance criteria

  • Offer letter editable in UI with template-tag help and live preview
  • Accepted/rejected/submitted/pending/declined messages editable per status where applicable, defaulting to today's text when unset
  • Unknown/terminal statuses never render a raw id string to applicants
  • Zero-migration for existing forms (defaults fill in)

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    BacklogNot in the works at the momentfeature

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions