{{-- Reusable attendance + notes modal. Single instance per page — drive it with `window.openAttendanceModal`: window.openAttendanceModal({ meetingId: 42, updateUrl: '/admin/meetings/42', subjectType: 'investor' | 'startup', // drives the row label subjectName: 'Mohamed Saad', currentStatus: 'coming', currentNotes: '...', onSaved: () => window.location.reload(), }); The modal shows a SINGLE subject row whose label switches between "Investor" / "Startup" based on `subjectType` — admins never see a confusing empty placeholder for the other side. `subjectType` is the meeting's `meetingable_type` mapped down to its bare key; an unknown value falls back to the generic "Customer" label so a bad data row still renders something readable. Legacy callers passing `recipientName` / `startupName` are still supported (see open() below); they map onto the new fields with investor as the default subjectType. The modal owns the PATCH itself (no per-page boilerplate) and shows the unified success toast on save. Triggered from the meetings index (attendance icon next to "view"), the meeting show page, and anywhere else admins need to update attendance + notes together. --}}
{{ __('admin.attendance_modal.subtitle') }}