fix(dayplan): calmer day dialogs, and the shrink question side by side

The day dialog hangs from a fixed top edge, so switching to the delete
question only moves its bottom edge, and the question opens at its top
with the focus on Cancel. Cancel, Close and the quiet add share one
outline; the dated add is drawn in the accent instead of filled with it.
Dates in the dialog, its hints and the new-day toast read the way the day
list writes them, and captions use the muted text colour for contrast. A
stay booked twice is named once in the warning. On the phone the dated
pill shows only its date, so both pills fit side by side.

When the trip dialog asks both how bookings follow a moved start and
which days the new dates remove, the two now stand side by side in a wide
dialog instead of one long column.
This commit is contained in:
Maurice
2026-09-23 22:20:59 +02:00
parent 83be759c49
commit 954758082b
35 changed files with 152 additions and 118 deletions
+8 -1
View File
@@ -24,6 +24,12 @@ interface ModalProps {
size?: string
footer?: React.ReactNode
hideCloseButton?: boolean
/**
* Where the panel stands on a wide screen. Centred by default; 'top' pins its
* upper edge, so a dialog whose content changes height grows and shrinks at
* the bottom only instead of jumping. Phones always start at the top.
*/
align?: 'center' | 'top'
}
export default function Modal({
@@ -34,6 +40,7 @@ export default function Modal({
size = 'md',
footer,
hideCloseButton = false,
align = 'center',
}: ModalProps) {
const handleEsc = useCallback((e: KeyboardEvent) => {
if (e.key === 'Escape') onClose()
@@ -63,7 +70,7 @@ export default function Modal({
// click-away, the panel only keeps that click from reaching it. Escape
// and the header's close button are the keyboard route out.
role="presentation"
className="fixed inset-0 z-[10000] flex items-start sm:items-center justify-center px-4 trek-modal-backdrop trek-backdrop-enter bg-[rgba(15,23,42,0.5)]"
className={`fixed inset-0 z-[10000] flex items-start ${align === 'top' ? '' : 'sm:items-center'} justify-center px-4 trek-modal-backdrop trek-backdrop-enter bg-[rgba(15,23,42,0.5)]`}
style={{ paddingTop: 70, paddingBottom: 'calc(20px + var(--bottom-nav-h))', overflow: 'hidden' }}
onMouseDown={e => { mouseDownTarget.current = e.target }}
onClick={e => {