Skip to content

FE: ModeTab (two-axis picker) + SubmissionModelTab (mode-conditional fields) #599

@0xdevcollins

Description

@0xdevcollins

Context

Part of the Bounty Configure (Host a Bounty) milestone. This is the net-new UI with no hackathon analog: the two-axis mode picker and the mode-conditional submission settings that drive all six combinations. Uses the plain taxonomy (claimType / entryType, see #317).

Tasks

  • components/organization/bounties/new/tabs/ModeTab.tsx: a two-axis picker for entryType (Open / Application (light) / Application (full)) x claimType (Single claim / Competition); for a Competition, let the organizer choose single vs multiple winners (1-3 prize positions). Shows the resulting plain label.
  • components/organization/bounties/new/tabs/SubmissionModelTab.tsx: render fields conditionally per the matrix below. For a Competition, force submissionVisibility = HIDDEN_UNTIL_DEADLINE (read-only).
  • tabs/schemas/modeSchema.ts, tabs/schemas/submissionModelSchema.ts: Zod rules mirroring the backend gate.

Mode -> field matrix (authoritative, from the publish gate)

Field Open + single claim Open + competition App (light) + single claim App (light) + competition App (full) + single claim App (full) + competition
entryType OPEN OPEN APPLICATION_LIGHT APPLICATION_LIGHT APPLICATION_FULL APPLICATION_FULL
claimType SINGLE_CLAIM COMPETITION SINGLE_CLAIM COMPETITION SINGLE_CLAIM COMPETITION
submissionVisibility ORGANIZER_ONLY HIDDEN (forced) ORGANIZER_ONLY HIDDEN (forced) ORGANIZER_ONLY HIDDEN (forced)
reputationMinimum required hidden hidden hidden hidden hidden
applicationWindowCloseAt hidden hidden required required required required
maxApplicants hidden required (>=2) optional optional optional optional
shortlistSize hidden hidden optional required (>=2) optional required (>=2)
submissionDeadline required required required required required required
Prize tiers (winners) 1 1-3 1 1-3 1 1-3

Acceptance criteria

  • Each combination shows / hides the correct fields.
  • The client blocks invalid combinations before publish (parity with the server gate).

References

  • Gate: boundless-nestjs src/modules/escrow-contract/integrations/bounty-publish.service.ts

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions