v0.3.0: OCR via camera, FAB UX, side drawer #4

Merged
jpnadas merged 16 commits from feature/ocr-camera into main 2026-06-09 18:38:34 +00:00
2 changed files with 624 additions and 0 deletions
Showing only changes of commit ffa133261d - Show all commits

View File

@@ -300,7 +300,7 @@
}
/* On mobile: full-bleed modal, buttons hug the screen edges. Body padding
still ~20 px so cropper corner handles stay outside Android's edge-swipe
still ~16 px so cropper corner handles stay outside Android's edge-swipe
gesture zone — tapping a button doesn't trigger it, but dragging into
the very edge does. */
@media (max-width: 640px) {
@@ -308,24 +308,35 @@
.modal {
width: 100vw;
max-width: 100vw;
height: 100vh;
max-height: 100vh;
height: 100dvh; /* dynamic viewport — accounts for mobile browser chrome */
max-height: 100dvh;
border: 0;
border-radius: 0;
}
.modal-header {
flex-shrink: 0; /* never get squeezed out by the body */
padding-top: max(0.75rem, env(safe-area-inset-top, 0px));
}
.modal-body {
flex: 1 1 auto;
min-height: 0;
padding:
1rem
max(1.25rem, env(safe-area-inset-right, 0px))
1rem
max(1.25rem, env(safe-area-inset-left, 0px));
0.5rem
max(1rem, env(safe-area-inset-right, 0px))
0.5rem
max(1rem, env(safe-area-inset-left, 0px));
max-height: none;
}
.cam-body { padding: 0 !important; }
.cam-body video { max-height: none; }
.cam-body video {
width: 100%;
height: 100%;
max-height: none;
object-fit: contain;
}
.modal-footer {
flex-shrink: 0;
background: var(--bg); /* explicit so it always reads clearly */
padding:
0.5rem
max(0.5rem, env(safe-area-inset-right, 0px))