fix: mobile configurator panel flows in-page so Proceed button is reachable
On mobile the configurator was a 100vh frame with an inner scrolling bottom-sheet embedded inside the scrolling /configure page. Page scroll hijacked the gesture and skipped the frame, trapping the Proceed to Order and Reset buttons in the inner scroll. Drop the nested scroll on <=768px: canvas stays fixed on top, the full config panel flows in normal page scroll so the CTAs are always visible. Landscape side-by-side preserved. Also pin outputFileTracingRoot to the project dir to silence the multiple-lockfile workspace-root warning. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
e500fee42f
commit
60e1ea8407
@ -1,6 +1,12 @@
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { dirname } from 'node:path';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {
|
||||
output: 'standalone',
|
||||
outputFileTracingRoot: __dirname,
|
||||
images: {
|
||||
unoptimized: true,
|
||||
},
|
||||
|
||||
@ -602,77 +602,60 @@ html {
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
/* Embedded in a scrolling page: drop the nested-scroll bottom-sheet.
|
||||
Canvas on top (fixed height), full config panel flows below in normal
|
||||
page scroll so Proceed to Order / Reset are always reachable. */
|
||||
#configurator { height: auto !important; min-height: 0 !important; }
|
||||
.layout-container {
|
||||
flex-direction: column-reverse !important;
|
||||
height: 100dvh !important;
|
||||
flex-direction: column !important;
|
||||
height: auto !important;
|
||||
overflow: visible !important;
|
||||
}
|
||||
.canvas-area {
|
||||
height: 48dvh !important;
|
||||
max-height: 48dvh !important;
|
||||
min-height: 260px !important;
|
||||
width: 100% !important;
|
||||
flex: none !important;
|
||||
}
|
||||
.glass-panel-responsive {
|
||||
order: unset !important;
|
||||
position: relative !important;
|
||||
bottom: auto !important;
|
||||
left: auto !important;
|
||||
right: auto !important;
|
||||
inset: auto !important;
|
||||
width: 100% !important;
|
||||
height: 55dvh !important;
|
||||
max-height: 55dvh !important;
|
||||
height: auto !important;
|
||||
max-height: none !important;
|
||||
border-right: none !important;
|
||||
border-left: none !important;
|
||||
border-top: 1px solid var(--color-border) !important;
|
||||
box-shadow: 0 -4px 30px rgba(0, 0, 0, 0.06) !important;
|
||||
border-radius: 1rem 1rem 0 0 !important;
|
||||
overflow-y: auto !important;
|
||||
overflow-x: hidden !important;
|
||||
z-index: 50;
|
||||
padding-bottom: env(safe-area-inset-bottom, 0px) !important;
|
||||
}
|
||||
.glass-panel-responsive.panel-expanded {
|
||||
position: fixed !important;
|
||||
top: 0 !important;
|
||||
left: 0 !important;
|
||||
width: 100% !important;
|
||||
height: 100dvh !important;
|
||||
max-height: 100dvh !important;
|
||||
border-radius: 0 !important;
|
||||
border-top: none !important;
|
||||
box-shadow: none !important;
|
||||
z-index: 200 !important;
|
||||
overflow-y: auto !important;
|
||||
-webkit-overflow-scrolling: touch !important;
|
||||
padding-bottom: 0 !important;
|
||||
overflow: visible !important;
|
||||
z-index: 1;
|
||||
padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 1rem) !important;
|
||||
}
|
||||
.canvas-area {
|
||||
height: 45dvh !important;
|
||||
max-height: 45dvh !important;
|
||||
min-height: 180px !important;
|
||||
width: 100% !important;
|
||||
flex: none !important;
|
||||
}
|
||||
#configurator { height: 100dvh !important; }
|
||||
.mobile-handle { display: flex !important; }
|
||||
.mobile-handle { display: none !important; }
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.glass-panel-responsive {
|
||||
height: 58dvh !important;
|
||||
max-height: 58dvh !important;
|
||||
border-radius: 0.75rem 0.75rem 0 0 !important;
|
||||
}
|
||||
.canvas-area {
|
||||
height: 42dvh !important;
|
||||
max-height: 42dvh !important;
|
||||
min-height: 160px !important;
|
||||
height: 44dvh !important;
|
||||
max-height: 44dvh !important;
|
||||
min-height: 240px !important;
|
||||
}
|
||||
.glass-panel-responsive header { padding: 0.75rem 1rem !important; }
|
||||
.glass-panel-responsive > div[role="region"] { padding: 1rem !important; }
|
||||
.glass-panel-responsive > div[role="region"] {
|
||||
padding: 1.1rem 1rem calc(env(safe-area-inset-bottom, 0px) + 1.25rem) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 375px) {
|
||||
.glass-panel-responsive { height: 60dvh !important; max-height: 60dvh !important; }
|
||||
.canvas-area { height: 40dvh !important; max-height: 40dvh !important; min-height: 140px !important; }
|
||||
.canvas-area { height: 42dvh !important; max-height: 42dvh !important; min-height: 220px !important; }
|
||||
}
|
||||
|
||||
@media (max-height: 500px) and (orientation: landscape) {
|
||||
.layout-container { flex-direction: row !important; }
|
||||
#configurator { height: 100dvh !important; }
|
||||
.layout-container { flex-direction: row !important; height: 100dvh !important; overflow: hidden !important; }
|
||||
.glass-panel-responsive {
|
||||
order: unset !important;
|
||||
position: relative !important;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user