cfba4fe9e9
The yellow side tab on /executive-meetings previously opened a bespoke textarea panel I added in #590. The user pointed out (screenshot) that it should be the exact same composer card they use on /notes — yellow background, color picker, label menu, checklist toggle, "حفظ" Save, paper-plane Send. Changes: - Extracted Composer + its inline helpers (ChecklistEditor, KindToggle, ColorPicker, LabelMenu, newItemId) out of pages/notes.tsx into a new shared module at components/notes/composer.tsx. - Extracted SendNoteDialog out of pages/notes.tsx into a new shared module at components/notes/send-note-dialog.tsx. - pages/notes.tsx now imports both modules; behavior of the notes page is unchanged. - pages/executive-meetings.tsx: deleted InlineQuickNotePanel. The schedule view now renders <Composer folderSelection={{kind:"all"}}> inside the yellow side-tab toggle, plus <SendNoteDialog> for the paper-plane Send flow. A new quickNoteTrigger counter is bumped each time the tab opens so the shared Composer auto-expands and focuses its textarea. A small X in the corner dismisses the panel; Save just collapses the composer (matches /notes UX), Send saves then opens the recipient picker. - Notes created from the meetings panel land as unfiled notes in the user's notes (folder "all"), visible immediately in /notes. - Composer gained an optional onClose prop fired from its reset() path (save / outside-click save / send success / empty reset). /notes doesn't pass it (composer stays mounted, just collapses). The meetings page wires it to setQuickNoteOpen(false) so the panel dismisses and the yellow side tab returns after every save path, not just the X / Send paths. Addresses code-review feedback. Notes: - No locale-key cleanup needed: the old quickNote.placeholder/send keys lived only as t() fallbacks, not in en.json/ar.json. - pnpm --filter @workspace/tx-os exec tsc --noEmit: clean. - HMR errors visible in the browser console were from the intermediate syntax-error state during extraction; cleared after the final edit.