diff --git a/artifacts/tx-os/src/pages/executive-meetings.tsx b/artifacts/tx-os/src/pages/executive-meetings.tsx index 7851027e..72be3a89 100644 --- a/artifacts/tx-os/src/pages/executive-meetings.tsx +++ b/artifacts/tx-os/src/pages/executive-meetings.tsx @@ -5399,20 +5399,25 @@ function MeetingFormDialog({ return ( !o && onClose()}> - - + {/* #324: rebuild DialogContent as a flex column so the header, + a single scrollable middle, and the footer stack predictably + on mobile. Without this the whole sheet scrolled and the + Save/Cancel buttons slid below the visible 90vh viewport on + phones. Reduced mobile padding/gaps; desktop unchanged. */} + + {state.id == null ? t("executiveMeetings.manage.addMeeting") : t("executiveMeetings.manage.editMeeting")} - {/* #322 polish: arrange the trimmed form into a tidy grid that - avoids dangling cells. Title spans full width on every - breakpoint so it gets enough room. Date + daily number sit - on one row on tablet/desktop, then start + end times share - the next row. On mobile each field stacks. */} -
+
+ {/* #322 polish (grid): title spans full width. Date + daily + number always share one row (both are short). Time pickers + are full-width on mobile so the AM/PM controls don't get + cramped, but share a row on tablet/desktop. */} +
update("dailyNumber", e.target.value)} /> - + - + -
+

{t("executiveMeetings.manage.attendees.label")} ( @@ -5569,8 +5580,12 @@ function MeetingFormDialog({ )}

+
- + {/* #324: footer sits outside the scroll area so it stays + pinned to the bottom of the dialog even after many + attendees are added. */} + @@ -5592,15 +5607,26 @@ function FormRow({ label, children, full, + mobileFull, hint, }: { label: string; children: React.ReactNode; + /** Always span both columns of a 2-col grid. Safe in single-column + * grids too (col-span-2 just clamps to the available width). */ full?: boolean; + /** Span both columns on mobile but a single column from sm+. Used + * by #324 so the time pickers don't get squeezed on phones. */ + mobileFull?: boolean; hint?: string; }) { + const span = full + ? "col-span-2" + : mobileFull + ? "col-span-2 sm:col-span-1" + : ""; return ( -
+
{children}
{hint &&

{hint}

} diff --git a/attached_assets/image_1777802888029.png b/attached_assets/image_1777802888029.png new file mode 100644 index 00000000..b4e3647c Binary files /dev/null and b/attached_assets/image_1777802888029.png differ