mirror of
https://github.com/soconnor0919/lewisburg-coffee.git
synced 2026-02-04 23:56:32 -05:00
feat: Defer Drawer rendering until client-side mount to prevent hydration mismatches and adjust discovery panel state.
This commit is contained in:
@@ -10,10 +10,12 @@ import { WelcomeModal } from "~/components/WelcomeModal";
|
|||||||
|
|
||||||
export default function HomePage() {
|
export default function HomePage() {
|
||||||
const [selectedShop, setSelectedShop] = useState<typeof COFFEE_SHOPS[0] | null>(null);
|
const [selectedShop, setSelectedShop] = useState<typeof COFFEE_SHOPS[0] | null>(null);
|
||||||
const [isDiscoveryOpen, setIsDiscoveryOpen] = useState(true);
|
const [isDiscoveryOpen, setIsDiscoveryOpen] = useState(true); // Default to true for SSR
|
||||||
|
const [mounted, setMounted] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Hide discovery panel on mobile initially
|
setMounted(true);
|
||||||
|
// Set based on viewport after mount
|
||||||
const isMobile = window.innerWidth < 640; // sm breakpoint
|
const isMobile = window.innerWidth < 640; // sm breakpoint
|
||||||
setIsDiscoveryOpen(!isMobile);
|
setIsDiscoveryOpen(!isMobile);
|
||||||
}, []);
|
}, []);
|
||||||
@@ -29,13 +31,13 @@ export default function HomePage() {
|
|||||||
shops={COFFEE_SHOPS}
|
shops={COFFEE_SHOPS}
|
||||||
onShopSelect={(shop: typeof COFFEE_SHOPS[0]) => {
|
onShopSelect={(shop: typeof COFFEE_SHOPS[0]) => {
|
||||||
setSelectedShop(shop);
|
setSelectedShop(shop);
|
||||||
setIsDiscoveryOpen(true);
|
|
||||||
}}
|
}}
|
||||||
selectedShop={selectedShop}
|
selectedShop={selectedShop}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Right Drawer */}
|
{/* Right Drawer - only render after mount to prevent hydration mismatch */}
|
||||||
|
{mounted && (
|
||||||
<Drawer
|
<Drawer
|
||||||
shop={selectedShop}
|
shop={selectedShop}
|
||||||
shops={COFFEE_SHOPS}
|
shops={COFFEE_SHOPS}
|
||||||
@@ -44,6 +46,7 @@ export default function HomePage() {
|
|||||||
isOpen={isDiscoveryOpen}
|
isOpen={isDiscoveryOpen}
|
||||||
onToggleOpen={() => setIsDiscoveryOpen(false)}
|
onToggleOpen={() => setIsDiscoveryOpen(false)}
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
<WelcomeModal />
|
<WelcomeModal />
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user