From ab0f1a6e6d4061d0a923943656372f30492c3c69 Mon Sep 17 00:00:00 2001 From: Daniele Pancottini Date: Wed, 1 Mar 2023 11:38:02 +0100 Subject: [PATCH] Add random background color to product page --- .../ProductSlider/ProductSlider.module.css | 1 - .../product/ProductSlider/ProductSlider.tsx | 12 +++-- .../ProductSliderControl.module.css | 5 -- .../ProductSliderControl.tsx | 53 +++++++++++++------ .../product/ProductView/ProductView.tsx | 7 ++- 5 files changed, 51 insertions(+), 27 deletions(-) diff --git a/site/components/product/ProductSlider/ProductSlider.module.css b/site/components/product/ProductSlider/ProductSlider.module.css index b95bffdd0..a6a8e866d 100644 --- a/site/components/product/ProductSlider/ProductSlider.module.css +++ b/site/components/product/ProductSlider/ProductSlider.module.css @@ -29,7 +29,6 @@ .album { width: 100%; height: 100%; - @apply bg-violet-dark; box-sizing: content-box; overflow-y: hidden; overflow-x: auto; diff --git a/site/components/product/ProductSlider/ProductSlider.tsx b/site/components/product/ProductSlider/ProductSlider.tsx index bd0e2db87..90cdcb745 100644 --- a/site/components/product/ProductSlider/ProductSlider.tsx +++ b/site/components/product/ProductSlider/ProductSlider.tsx @@ -10,15 +10,20 @@ import cn from 'clsx' import { a } from '@react-spring/web' import s from './ProductSlider.module.css' import ProductSliderControl from '../ProductSliderControl' +import random from 'lodash.random' interface ProductSliderProps { children?: React.ReactNode[] - className?: string + className?: string, + lighterColor: string, + darkerColor: string } const ProductSlider: React.FC = ({ children, className = '', + lighterColor, + darkerColor }) => { const [currentSlide, setCurrentSlide] = useState(0) const [isMounted, setIsMounted] = useState(false) @@ -81,9 +86,10 @@ const ProductSlider: React.FC = ({
- {slider && } + {slider && } {Children.map(children, (child) => { // Add the keen-slider__slide className to children if (isValidElement(child)) { @@ -101,7 +107,7 @@ const ProductSlider: React.FC = ({ })}
- + {slider && Children.map(children, (child, idx) => { if (isValidElement(child)) { diff --git a/site/components/product/ProductSliderControl/ProductSliderControl.module.css b/site/components/product/ProductSliderControl/ProductSliderControl.module.css index c744e7598..edf0cbc73 100644 --- a/site/components/product/ProductSliderControl/ProductSliderControl.module.css +++ b/site/components/product/ProductSliderControl/ProductSliderControl.module.css @@ -10,11 +10,6 @@ transition: background-color 0.2s ease; } -.leftControl:hover, -.rightControl:hover { - background-color: var(--violet-dark); -} - .leftControl:focus, .rightControl:focus { @apply outline-none; diff --git a/site/components/product/ProductSliderControl/ProductSliderControl.tsx b/site/components/product/ProductSliderControl/ProductSliderControl.tsx index 29b30b789..605b05d97 100644 --- a/site/components/product/ProductSliderControl/ProductSliderControl.tsx +++ b/site/components/product/ProductSliderControl/ProductSliderControl.tsx @@ -6,25 +6,44 @@ import { ArrowLeft, ArrowRight } from '@components/icons' interface ProductSliderControl { onPrev: MouseEventHandler onNext: MouseEventHandler + lighterColor: string + darkerColor: string } -const ProductSliderControl: FC = ({ onPrev, onNext }) => ( -
- - -
+const ProductSliderControl: FC = ({ onPrev, onNext, lighterColor, darkerColor }) => ( + <> + +
+ + +
+ ) export default memo(ProductSliderControl) diff --git a/site/components/product/ProductView/ProductView.tsx b/site/components/product/ProductView/ProductView.tsx index d3e41f601..e72379e44 100644 --- a/site/components/product/ProductView/ProductView.tsx +++ b/site/components/product/ProductView/ProductView.tsx @@ -14,6 +14,7 @@ import ProductModel from '../ProductModel/ProductModel' import Lightbox from 'yet-another-react-lightbox' import 'yet-another-react-lightbox/styles.css' import { useRouter } from 'next/router' +import random from 'lodash.random' interface ProductViewProps { product: Product @@ -40,6 +41,10 @@ const ProductView: FC = ({ product, relatedProducts }) => { const [isLightboxOpen, setLightboxOpen] = useState(false) const { locale = 'it' } = useRouter() + const colors = [random(255), random(255), random(255)] + const darkerColor = "rgba(" + colors[0] + ", " + colors[1] + ", " + colors[2] + ", 1)" + const lighterColor = "rgba(" + colors[0] + ", " + colors[1] + ", " + colors[2] + ", 0.8)" + return ( <> @@ -51,7 +56,7 @@ const ProductView: FC = ({ product, relatedProducts }) => { fontSize={28} />
- + {product.images.map((image, i) => (