forked from crowetic/commerce
Removing bg image, to enable better caching
This commit is contained in:
parent
eca8f15b6c
commit
62cc3b2493
@ -1,17 +1,46 @@
|
|||||||
import { FC, useCallback, useEffect, useState } from 'react'
|
|
||||||
import cn from 'classnames'
|
import cn from 'classnames'
|
||||||
import { useRouter } from 'next/router'
|
import dynamic from 'next/dynamic'
|
||||||
import type { Page } from '@bigcommerce/storefront-data-hooks/api/operations/get-all-pages'
|
|
||||||
import { CommerceProvider } from '@bigcommerce/storefront-data-hooks'
|
|
||||||
import { useAcceptCookies } from '@lib/hooks/useAcceptCookies'
|
|
||||||
import { CartSidebarView } from '@components/cart'
|
|
||||||
import { Container, Sidebar, Button, Modal, Toast } from '@components/ui'
|
|
||||||
import { Navbar, FeatureBar, Footer } from '@components/common'
|
|
||||||
import { LoginView, SignUpView, ForgotPassword } from '@components/auth'
|
|
||||||
import { useUI } from '@components/ui/context'
|
|
||||||
import { usePreventScroll } from '@react-aria/overlays'
|
|
||||||
import s from './Layout.module.css'
|
import s from './Layout.module.css'
|
||||||
|
import { useRouter } from 'next/router'
|
||||||
import debounce from 'lodash.debounce'
|
import debounce from 'lodash.debounce'
|
||||||
|
import React, { FC, useCallback, useEffect, useState, Suspense } from 'react'
|
||||||
|
import { useUI } from '@components/ui/context'
|
||||||
|
import { Navbar, Footer } from '@components/common'
|
||||||
|
import { usePreventScroll } from '@react-aria/overlays'
|
||||||
|
import { useAcceptCookies } from '@lib/hooks/useAcceptCookies'
|
||||||
|
import { CommerceProvider } from '@bigcommerce/storefront-data-hooks'
|
||||||
|
import { Container, Sidebar, Button, Modal, LoadingDots } from '@components/ui'
|
||||||
|
import type { Page } from '@bigcommerce/storefront-data-hooks/api/operations/get-all-pages'
|
||||||
|
|
||||||
|
const Loading = () => (
|
||||||
|
<div className="w-80 h-80 flex items-center text-center justify-center p-3">
|
||||||
|
<LoadingDots />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
|
const dynamicProps = {
|
||||||
|
loading: () => <Loading />,
|
||||||
|
}
|
||||||
|
const CartSidebarView = dynamic(
|
||||||
|
() => import('@components/cart/CartSidebarView')
|
||||||
|
)
|
||||||
|
const LoginView = dynamic(
|
||||||
|
() => import('@components/auth/LoginView'),
|
||||||
|
dynamicProps
|
||||||
|
)
|
||||||
|
const SignUpView = dynamic(
|
||||||
|
() => import('@components/auth/SignUpView'),
|
||||||
|
dynamicProps
|
||||||
|
)
|
||||||
|
const ForgotPassword = dynamic(
|
||||||
|
() => import('@components/auth/ForgotPassword'),
|
||||||
|
dynamicProps
|
||||||
|
)
|
||||||
|
const FeatureBar = dynamic(
|
||||||
|
() => import('@components/common/FeatureBar'),
|
||||||
|
dynamicProps
|
||||||
|
)
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
pageProps: {
|
pageProps: {
|
||||||
pages?: Page[]
|
pages?: Page[]
|
||||||
@ -25,9 +54,6 @@ const Layout: FC<Props> = ({ children, pageProps }) => {
|
|||||||
closeSidebar,
|
closeSidebar,
|
||||||
closeModal,
|
closeModal,
|
||||||
modalView,
|
modalView,
|
||||||
toastText,
|
|
||||||
closeToast,
|
|
||||||
displayToast,
|
|
||||||
} = useUI()
|
} = useUI()
|
||||||
const { acceptedCookies, onAcceptCookies } = useAcceptCookies()
|
const { acceptedCookies, onAcceptCookies } = useAcceptCookies()
|
||||||
const [hasScrolled, setHasScrolled] = useState(false)
|
const [hasScrolled, setHasScrolled] = useState(false)
|
||||||
@ -72,17 +98,14 @@ const Layout: FC<Props> = ({ children, pageProps }) => {
|
|||||||
</header>
|
</header>
|
||||||
<main className="fit">{children}</main>
|
<main className="fit">{children}</main>
|
||||||
<Footer pages={pageProps.pages} />
|
<Footer pages={pageProps.pages} />
|
||||||
|
<Sidebar open={displaySidebar} onClose={closeSidebar}>
|
||||||
{/* <Sidebar open={displaySidebar} onClose={closeSidebar}>
|
|
||||||
<CartSidebarView />
|
<CartSidebarView />
|
||||||
</Sidebar>
|
</Sidebar>
|
||||||
|
|
||||||
<Modal open={displayModal} onClose={closeModal}>
|
<Modal open={displayModal} onClose={closeModal}>
|
||||||
{modalView === 'LOGIN_VIEW' && <LoginView />}
|
{modalView === 'LOGIN_VIEW' && <LoginView />}
|
||||||
{modalView === 'SIGNUP_VIEW' && <SignUpView />}
|
{modalView === 'SIGNUP_VIEW' && <SignUpView />}
|
||||||
{modalView === 'FORGOT_VIEW' && <ForgotPassword />}
|
{modalView === 'FORGOT_VIEW' && <ForgotPassword />}
|
||||||
</Modal> */}
|
</Modal>
|
||||||
|
|
||||||
<FeatureBar
|
<FeatureBar
|
||||||
title="This site uses cookies to improve your experience. By clicking, you agree to our Privacy Policy."
|
title="This site uses cookies to improve your experience. By clicking, you agree to our Privacy Policy."
|
||||||
hide={acceptedCookies}
|
hide={acceptedCookies}
|
||||||
@ -92,10 +115,6 @@ const Layout: FC<Props> = ({ children, pageProps }) => {
|
|||||||
</Button>
|
</Button>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* <Toast open={displayToast} onClose={closeModal}>
|
|
||||||
{toastText}
|
|
||||||
</Toast> */}
|
|
||||||
</div>
|
</div>
|
||||||
</CommerceProvider>
|
</CommerceProvider>
|
||||||
)
|
)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
.root {
|
.root {
|
||||||
@apply relative max-h-full w-full box-border overflow-hidden bg-no-repeat bg-center bg-cover transition ease-linear cursor-pointer;
|
@apply relative max-h-full w-full box-border overflow-hidden bg-no-repeat bg-center bg-cover transition-transform ease-linear cursor-pointer;
|
||||||
height: 100% !important;
|
height: 100% !important;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
@ -67,24 +67,24 @@
|
|||||||
.productTitle > span,
|
.productTitle > span,
|
||||||
.productPrice,
|
.productPrice,
|
||||||
.wishlistButton {
|
.wishlistButton {
|
||||||
@apply transition ease-in-out duration-500;
|
@apply transition-colors ease-in-out duration-500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.squareBg {
|
.squareBg {
|
||||||
@apply transform absolute inset-0 z-0;
|
@apply transition-colors absolute inset-0 z-0;
|
||||||
background-color: #212529;
|
background-color: #212529;
|
||||||
}
|
}
|
||||||
|
|
||||||
.squareBg:before {
|
.squareBg:before {
|
||||||
@apply transition ease-in-out duration-500 bg-repeat-space w-full h-full block;
|
@apply transition ease-in-out duration-500 bg-repeat-space w-full h-full block;
|
||||||
content: '';
|
content: '';
|
||||||
background-image: url("data:image/svg+xml,%3Csvg width='48' height='46' viewBox='0 0 48 46' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cline opacity='0.1' x1='9.41421' y1='8' x2='21' y2='19.5858' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cline opacity='0.1' x1='1' y1='-1' x2='17.3848' y2='-1' transform='matrix(-0.707107 0.707107 0.707107 0.707107 40 8)' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cline opacity='0.1' x1='1' y1='-1' x2='17.3848' y2='-1' transform='matrix(0.707107 -0.707107 -0.707107 -0.707107 8 38)' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cline opacity='0.1' x1='38.5858' y1='38' x2='27' y2='26.4142' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A");
|
background-image: url('/bg-products.svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
.simple {
|
.simple {
|
||||||
& .squareBg {
|
& .squareBg {
|
||||||
@apply bg-accents-0 !important;
|
@apply bg-accents-0 !important;
|
||||||
background-image: url("data:image/svg+xml,%3Csvg width='48' height='46' viewBox='0 0 48 46' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cline opacity='0.05' x1='9.41421' y1='8' x2='21' y2='19.5858' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cline opacity='0.05' x1='1' y1='-1' x2='17.3848' y2='-1' transform='matrix(-0.707107 0.707107 0.707107 0.707107 40 8)' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cline opacity='0.05' x1='1' y1='-1' x2='17.3848' y2='-1' transform='matrix(0.707107 -0.707107 -0.707107 -0.707107 8 38)' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cline opacity='0.05' x1='38.5858' y1='38' x2='27' y2='26.4142' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A");
|
background-image: url('/bg-products.svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
& .productTitle {
|
& .productTitle {
|
||||||
|
@ -97,7 +97,7 @@ export default function Home({
|
|||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</Grid>
|
</Grid>
|
||||||
{/* <Marquee variant="secondary">
|
<Marquee variant="secondary">
|
||||||
{bestSelling.slice(3, 6).map(({ node }) => (
|
{bestSelling.slice(3, 6).map(({ node }) => (
|
||||||
<ProductCard
|
<ProductCard
|
||||||
key={node.path}
|
key={node.path}
|
||||||
@ -146,7 +146,7 @@ export default function Home({
|
|||||||
categories={categories}
|
categories={categories}
|
||||||
brands={brands}
|
brands={brands}
|
||||||
newestProducts={newestProducts}
|
newestProducts={newestProducts}
|
||||||
/> */}
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
7
public/bg-products.svg
Normal file
7
public/bg-products.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<svg width="48" height="46" viewBox="0 0 48 46" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<line opacity="0.1" x1="9.41421" y1="8" x2="21" y2="19.5858" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<line opacity="0.1" x1="1" y1="-1" x2="17.3848" y2="-1" transform="matrix(-0.707107 0.707107 0.707107 0.707107 40 8)" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<line opacity="0.1" x1="1" y1="-1" x2="17.3848" y2="-1" transform="matrix(0.707107 -0.707107 -0.707107 -0.707107 8 38)" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<line opacity="0.1" x1="38.5858" y1="38" x2="27" y2="26.4142" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
|
|
After Width: | Height: | Size: 797 B |
Loading…
x
Reference in New Issue
Block a user