Skip to content

feat(meetings): add signed-in outsider state with register CTA #2878

Open

Description

@nunoeufrasio

Design: https://claude.ai/design/p/c70cdcac-911f-4337-9d87-3daed9d85f58?file=Meeting+Details.dc.html&via=share

Prototype settings panel: time / viewer / privacy / rsvpTracking / pastAccess / myRsvp / recur / via / pageStatus. Its look and feel differs from the current app on purpose — follow it.

Epic: #1765 · Meetings v2 epic: #1451 · Plan ID: E2-02 · Size: S · Depends on: E2-01

Delivery: this ships as part of meeting details V2, side by side with the existing page, behind MEETING_V2_ENABLED_FLAG. Do not modify, refactor or delete the existing meeting details page. V1 stays fully functional and is what untargeted users see. Parent: Meetings v2 epic #1451. Full rules in #1765.
Components: follow the prototype for design, but build it from the existing lfx-* components in app/shared/components/. Extend a wrapper before forking it; create a new component only when the design can't be expressed otherwise, and say so in the PR.


Scope. Explicit state for authenticated, !invited, !organizer. When canRegisterForMeeting() (!invited && !restricted && visibility === 'public'), show Register for Meeting with supporting copy explaining what registration gets you. Registration remains modal-based and authenticated-only (the public register endpoint hard-401s anonymous callers).

Acceptance criteria

  • Optimistic flip to the RSVP slot on successful registration preserved.
  • Copy states that registering adds you to the guest list and enables RSVP.
  • Registration modal reachable by keyboard; validation messages unchanged.

Filed from meeting-details-redesign-implementation-plan.md (revised 2026-09-23).

Metadata

Metadata

Assignees

Labels

meetingsAn epic, feature, story, task, or bug related to meetings.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions