diff --git a/pages/index.tsx b/pages/index.tsx index e7b5cab7d..c30e24488 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,5 +1,5 @@ import { Layout } from 'src/components/common'; -import { HomeBanner, HomeCategories, HomeCollection, HomeCTA, HomeFeature, HomeRecipe, HomeSubscribe, HomeVideo } from 'src/components/modules/home'; +import { FeaturedProductsCarousel, HomeBanner, HomeCategories, HomeCollection, HomeCTA, HomeFeature, HomeRecipe, HomeSubscribe, HomeVideo } from 'src/components/modules/home'; export default function Home() { return ( @@ -9,6 +9,7 @@ export default function Home() { + diff --git a/pages/test.tsx b/pages/test.tsx index 644dc08ed..28f0c780a 100644 --- a/pages/test.tsx +++ b/pages/test.tsx @@ -1,90 +1,145 @@ -import { - CartDrawer, - Layout -} from 'src/components/common'; -import MenuNavigationProductList from 'src/components/common/MenuNavigationProductList/MenuNavigationProductList'; +import { CartDrawer, Layout } from 'src/components/common' +import MenuNavigationProductList from 'src/components/common/MenuNavigationProductList/MenuNavigationProductList' // import { RecipeListPage } from 'src/components/modules/recipes'; -import { OPTION_ALL, QUERY_KEY, ROUTE } from 'src/utils/constanst.utils'; -import { useModalCommon } from 'src/components/hooks'; +import { OPTION_ALL, QUERY_KEY, ROUTE } from 'src/utils/constanst.utils' +import { useModalCommon } from 'src/components/hooks' +import { + CollectionCarcousel, + HomeCollection, +} from 'src/components/modules/home' +import { PRODUCT_DATA_TEST } from 'src/utils/demo-data' +import { useKeenSlider } from 'keen-slider/react' +import { CSSProperties } from 'react' const CATEGORY = [ { - name: 'All', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=${OPTION_ALL}`, + name: 'All', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=${OPTION_ALL}`, }, { - name: 'Veggie', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=veggie`, + name: 'Veggie', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=veggie`, }, { - name: 'Seafood', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=seafood`, + name: 'Seafood', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=seafood`, }, { - name: 'Frozen', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=frozen`, + name: 'Frozen', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=frozen`, }, { - name: 'Coffee Bean', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=coffee-bean`, + name: 'Coffee Bean', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=coffee-bean`, }, { - name: 'Sauce', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=sauce`, + name: 'Sauce', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=sauce`, }, ] const BRAND = [ - { - name: 'Maggi', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=veggie`, + name: 'Maggi', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=veggie`, }, { - name: 'Cholimes', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=seafood`, + name: 'Cholimes', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=seafood`, }, { - name: 'Chinsu', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=frozen`, - } -]; + name: 'Chinsu', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=frozen`, + }, +] const FEATURED = [ - - { - name: 'Best Sellers', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=veggie`, - }, - { - name: 'Sales', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=seafood`, - }, - { - name: 'New Item', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=frozen`, - }, - { - name: 'Viewed', - link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=viewed`, - } - ]; + { + name: 'Best Sellers', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=veggie`, + }, + { + name: 'Sales', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=seafood`, + }, + { + name: 'New Item', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=frozen`, + }, + { + name: 'Viewed', + link: `${ROUTE.PRODUCTS}/?${QUERY_KEY.BRAND}=viewed`, + }, +] export default function Test() { - const { visible: visibleMenuFilter, openModal, closeModal: closeMenuFilter } = useModalCommon({ initialValue: false }) + const { + visible: visibleMenuFilter, + openModal, + closeModal: closeMenuFilter, + } = useModalCommon({ initialValue: false }) const toggle = () => { if (visibleMenuFilter) { - closeMenuFilter() + closeMenuFilter() } else { - openModal() + openModal() } -} + } + + const style: CSSProperties = { + background: 'gray', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + fontSize: '50px', + color: '#fff', + fontWeight: 500, + height: '300px', + maxHeight: '100vh', + } + const [sliderRef] = useKeenSlider({ slidesPerView: 2 }) + return ( <> - {/* */} - - {/* */} - {/**/} - - - {/* */} + {/* */} + {/* */} +
+ {/* {[...Array(10).keys()].map(() => { + return ( +
+ 1 +
+ ) + })} */} +
+ 1 +
+
+ 1 +
+
+ 1 +
+
+ 1 +
+
+ 1 +
+
+ 1 +
+
+ 1 +
+
+ 1 +
+ +
) } diff --git a/src/components/common/CarouselCommon/CarouselCommon.tsx b/src/components/common/CarouselCommon/CarouselCommon.tsx index 3b5854ed4..8762192cd 100644 --- a/src/components/common/CarouselCommon/CarouselCommon.tsx +++ b/src/components/common/CarouselCommon/CarouselCommon.tsx @@ -18,14 +18,14 @@ export interface CarouselCommonProps { } const CarouselCommon = ({ - data, + data=[], Component, itemKey, keenClassname, isPadding = false, isArrow = true, isDot = false, - option: { slideChanged,slidesPerView, ...sliderOption }, + option: { slideChanged,slidesPerView=1, ...sliderOption }, }: CarouselCommonProps) => { const [currentSlide, setCurrentSlide] = React.useState(0) const [dotArr, setDotArr] = React.useState([]) @@ -68,7 +68,7 @@ const CarouselCommon = ({ [s.isPadding]: isPadding, })} > - {data?.map((props, index) => ( + {data.map((props, index) => (
diff --git a/src/components/common/FeaturedProductCard/FeaturedProductCard.module.scss b/src/components/common/FeaturedProductCard/FeaturedProductCard.module.scss index eefd101c4..74fbfbd72 100644 --- a/src/components/common/FeaturedProductCard/FeaturedProductCard.module.scss +++ b/src/components/common/FeaturedProductCard/FeaturedProductCard.module.scss @@ -1,60 +1,130 @@ @import '../../../styles/utilities'; .featuredProductCardWarpper{ - width: 59.8rem; - height: 28.8rem; + // min-width: 30.2rem; + height: 14.4rem; padding: 2.4rem; @apply bg-primary-light inline-flex justify-start items-center custom-border-radius ; + @screen md { + // min-width: 598px; + height: 28.8rem; + padding: 1.6rem 3.2rem 1.6rem 1.6rem; + } + @screen 2xl { + // min-width: 598px; + height: 28.8rem; + padding: 2.4rem 4rem 2.4rem 2.4rem; + } .left{ - width: 24rem; - height: 24rem; + max-width: 10rem; + max-height: 10rem; + @screen md { + max-width: 24rem; + max-height: 24rem; + } } .right{ - padding-left: 2.4rem; - min-width: 27rem; - max-width: 28.6rem; - min-height: 16.8rem; + margin-left: 1.2rem; + // min-width: 27rem; + max-width: 16.6rem; + ma-height: 10rem; @apply flex justify-between flex-col; + @screen md { + margin-left: 2.4rem; + max-width: 27.0rem; + min-height: 16.8rem; + } .rightTop{ - min-height: 9.6rem; + min-height: 6rem; + @screen md { + min-height: 9.6rem; + } @apply flex justify-between flex-col; .title{ @apply font-bold; - font-size: 2rem; - line-height: 2.8rem; + font-size: 1.2rem; + line-height: 1.6rem; letter-spacing: -0.01em; color: var(--text-active); + @screen md { + font-size: 2rem; + line-height: 2.8rem; + } } .subTitle{ color: var(--text-base); - font-size: 1.6rem; - line-height: 2.4rem; + font-size: 1.2rem; + line-height: 1.6rem; + @screen md { + font-size: 1.6rem; + line-height: 2.4rem; + } } .priceWrapper{ @apply flex justify-start; .price{ @apply font-bold; - font-size: 2rem; - line-height: 2.8rem; + font-size: 1.2rem; + line-height: 1.6rem; letter-spacing: -0.01em; color: var(--text-active); + @screen md { + font-size: 2rem; + line-height: 2.8rem; + } } .originPrice{ margin-left: 0.8rem; - font-size: 2rem; - line-height: 2.8rem; + font-size: 1.2rem; + line-height: 1.6rem; color: var(--text-label); text-decoration-line: line-through; + @screen md { + font-size: 2rem; + line-height: 2.8rem; + } } } } .buttonWarpper{ @apply flex; .icon{ - width: 5.6rem; + max-width: 3.2rem; + max-height: 3.2rem; + @screen sm-only{ + button{ + padding: 1rem; + svg{ + width: 1.1rem; + height: 1.1rem; + } + } + } + @screen md { + max-width: 5.6rem; + max-height: 5.6rem; + } } .button{ margin-left: 0.8rem; - width: 20.6rem; + min-width: 12.5rem; + max-height: 3.2rem; + button{ + width: 100%; + height: 100%; + } + @screen sm-only { + button{ + padding:0.9rem; + } + } + @screen md { + min-width: 20.6rem; + button{ + height: initial; + } + max-height: 5.6rem; + + } } } } diff --git a/src/components/common/FeaturedProductCard/FeaturedProductCard.tsx b/src/components/common/FeaturedProductCard/FeaturedProductCard.tsx index fb3d82d41..aa6753554 100644 --- a/src/components/common/FeaturedProductCard/FeaturedProductCard.tsx +++ b/src/components/common/FeaturedProductCard/FeaturedProductCard.tsx @@ -4,7 +4,7 @@ import s from './FeaturedProductCard.module.scss' import { LANGUAGE } from '../../../utils/language.utils' import ButtonIconBuy from '../ButtonIconBuy/ButtonIconBuy' import ButtonCommon from '../ButtonCommon/ButtonCommon' -interface FeaturedProductCardProps extends FeaturedProductProps { +export interface FeaturedProductCardProps extends FeaturedProductProps { buttonText?: string } diff --git a/src/components/common/Header/components/HeaderMenu/HeaderMenu.tsx b/src/components/common/Header/components/HeaderMenu/HeaderMenu.tsx index 8037b357a..02eb6466d 100644 --- a/src/components/common/Header/components/HeaderMenu/HeaderMenu.tsx +++ b/src/components/common/Header/components/HeaderMenu/HeaderMenu.tsx @@ -4,7 +4,7 @@ import { memo, useMemo } from 'react' import InputSearch from 'src/components/common/InputSearch/InputSearch' import MenuDropdown from 'src/components/common/MenuDropdown/MenuDropdown' import { IconBuy, IconFilter, IconHeart, IconHistory, IconUser } from 'src/components/icons' -import { ACCOUNT_TAB, QUERY_KEY, ROUTE } from 'src/utils/constanst.utils' +import { ACCOUNT_TAB, FILTER_PAGE, QUERY_KEY, ROUTE } from 'src/utils/constanst.utils' import Logo from '../../../Logo/Logo' import s from './HeaderMenu.module.scss' import { useRouter } from 'next/router' @@ -17,7 +17,7 @@ interface Props { toggleCart:() => void, } -const FILTER_PAGE = [ROUTE.HOME,ROUTE.PRODUCTS] + const HeaderMenu = memo(({ isFull, openModalAuthen, openModalInfo, toggleFilter, toggleCart }: Props) => { const router = useRouter() @@ -86,16 +86,6 @@ const HeaderMenu = memo(({ isFull, openModalAuthen, openModalInfo, toggleFilter, - - { - FILTER_PAGE.includes(router.pathname) && ( -
  • - -
  • - ) - } ) diff --git a/src/components/common/Layout/Layout.tsx b/src/components/common/Layout/Layout.tsx index 8b93825b4..28d83bc94 100644 --- a/src/components/common/Layout/Layout.tsx +++ b/src/components/common/Layout/Layout.tsx @@ -2,7 +2,7 @@ import { CommerceProvider } from '@framework' import { useRouter } from 'next/router' import { FC } from 'react' import { useModalCommon } from 'src/components/hooks' -import { BRAND, CATEGORY, FEATURED } from 'src/utils/constanst.utils' +import { BRAND, CATEGORY, FEATURED, FILTER_PAGE } from 'src/utils/constanst.utils' import { CustomShapeSvg } from '..' import Footer from '../Footer/Footer' import Header from '../Header/Header' @@ -16,7 +16,7 @@ interface Props { // note: demo code const Layout: FC = ({ children }) => { - const { locale = 'en-US' } = useRouter() + const { locale = 'en-US', pathname } = useRouter() const { visible: visibleFilter, openModal: openFilter, closeModal: closeFilter } = useModalCommon({ initialValue: false }) const toggleFilter = () => { @@ -33,7 +33,9 @@ const Layout: FC = ({ children }) => {
    {children}
    -
    + { + FILTER_PAGE.includes(pathname) && (
    ) + }