diff --git a/components/product/ProductSlider/ProductSlider.module.css b/components/product/ProductSlider/ProductSlider.module.css
index a175f0b95..58434ac33 100644
--- a/components/product/ProductSlider/ProductSlider.module.css
+++ b/components/product/ProductSlider/ProductSlider.module.css
@@ -12,36 +12,6 @@
opacity: 1;
}
-.control {
- @apply bg-violet absolute bottom-10 right-10 flex flex-row
- border-accent-0 border text-accent-0 z-30 shadow-xl select-none;
- height: 48px;
-}
-
-.leftControl,
-.rightControl {
- @apply px-9 cursor-pointer;
- transition: background-color 0.2s ease;
-}
-
-.leftControl:hover,
-.rightControl:hover {
- background-color: var(--violet-dark);
-}
-
-.leftControl:focus,
-.rightControl:focus {
- @apply outline-none;
-}
-
-.rightControl {
- @apply border-l border-accent-0;
-}
-
-.leftControl {
- margin-right: -1px;
-}
-
.thumb {
@apply transition-transform transition-colors
ease-linear duration-75 overflow-hidden inline-block
diff --git a/components/product/ProductSlider/ProductSlider.tsx b/components/product/ProductSlider/ProductSlider.tsx
index c3aa80a93..2a2f39d74 100644
--- a/components/product/ProductSlider/ProductSlider.tsx
+++ b/components/product/ProductSlider/ProductSlider.tsx
@@ -10,7 +10,7 @@ import React, {
import cn from 'classnames'
import { a } from '@react-spring/web'
import s from './ProductSlider.module.css'
-import { ArrowLeft, ArrowRight } from '@components/icons'
+import ProductSliderControl from '../ProductSliderControl'
const ProductSlider: FC = ({ children }) => {
const [currentSlide, setCurrentSlide] = useState(0)
@@ -73,30 +73,16 @@ const ProductSlider: FC = ({ children }) => {
}
}, [])
+ const onPrev = React.useCallback(() => slider.prev(), [slider])
+ const onNext = React.useCallback(() => slider.next(), [slider])
+
return (
- {slider && (
-
- )}
+ {slider &&
}
{Children.map(children, (child) => {
// Add the keen-slider__slide className to children
if (isValidElement(child)) {
diff --git a/components/product/ProductSliderControl/ProductSliderControl.module.css b/components/product/ProductSliderControl/ProductSliderControl.module.css
new file mode 100644
index 000000000..c744e7598
--- /dev/null
+++ b/components/product/ProductSliderControl/ProductSliderControl.module.css
@@ -0,0 +1,29 @@
+.control {
+ @apply bg-violet absolute bottom-10 right-10 flex flex-row
+ border-accent-0 border text-accent-0 z-30 shadow-xl select-none;
+ height: 48px;
+}
+
+.leftControl,
+.rightControl {
+ @apply px-9 cursor-pointer;
+ transition: background-color 0.2s ease;
+}
+
+.leftControl:hover,
+.rightControl:hover {
+ background-color: var(--violet-dark);
+}
+
+.leftControl:focus,
+.rightControl:focus {
+ @apply outline-none;
+}
+
+.rightControl {
+ @apply border-l border-accent-0;
+}
+
+.leftControl {
+ margin-right: -1px;
+}
diff --git a/components/product/ProductSliderControl/ProductSliderControl.tsx b/components/product/ProductSliderControl/ProductSliderControl.tsx
new file mode 100644
index 000000000..4e767b5db
--- /dev/null
+++ b/components/product/ProductSliderControl/ProductSliderControl.tsx
@@ -0,0 +1,31 @@
+import cn from 'classnames'
+import React from 'react'
+import s from './ProductSliderControl.module.css'
+import { ArrowLeft, ArrowRight } from '@components/icons'
+
+interface ProductSliderControl {
+ onPrev: React.MouseEventHandler
+ onNext: React.MouseEventHandler
+}
+
+const ProductSliderControl: React.FC = React.memo(
+ ({ onPrev, onNext }) => (
+
+ )
+)
+export default ProductSliderControl
diff --git a/components/product/ProductSliderControl/index.ts b/components/product/ProductSliderControl/index.ts
new file mode 100644
index 000000000..5b63c466f
--- /dev/null
+++ b/components/product/ProductSliderControl/index.ts
@@ -0,0 +1 @@
+export { default } from './ProductSliderControl'