SIGN IN SIGN UP

Add calendar event composer to record timeline (#24667)

## Summary

- add a **Create event** action to Calendar widgets and keep the
Calendar header visible in solo timeline tabs
- open a dedicated side-panel calendar composer instead of creating or
editing inline
- build the event header from the same shared composer rows and inputs
as the email composer
- reuse the complete email recipient picker for guests: contextual
people/member suggestions, resolved avatars, paste/edit/remove behavior,
keyboard selection, multi-select, and drag-and-drop reordering
- keep calendar-specific dates, timezone, invitations, conferencing,
provider setup, and OAuth recovery in the scrollable composer body
- prefill and require the current record guest so the created event
remains related to the record
- create events through the existing Google, Microsoft, or CalDAV
mutation and refresh the record calendar afterward

## Safety

Nothing is written when the user clicks **+**. The event is only created
from the final **Create event** button (or Cmd/Ctrl+Enter).

When invitations are enabled, the composer visibly warns that guests
will receive email. Because calendar-to-record association is
participant-based, creation stays disabled if invitations are turned off
or the current record guest is removed; this prevents a
successfully-created provider event from disappearing from the
originating record. The action is hidden without the
CREATE_CALENDAR_EVENT_TOOL permission and disabled when the record has
no resolvable guest email.

## Validation

- direct twenty-front tsgo ✅
- focused Jest: calendar defaults/transitions/association/account
eligibility/side-panel classification plus reused recipient parsing,
field behavior, and drag/drop — 8 suites / 69 tests ✅
- focused oxlint for all changed frontend files ✅
- focused oxfmt check ✅
- git diff check ✅

Merged the latest origin/main into this branch before pushing.
F
Félix Malfait committed
d14069353fe263eb2d0790d92ab396919a1005a0
Parent: 6ab1e69
Committed by GitHub <noreply@github.com> on 8/24/2026, 12:34:27 PM