@toptal/picasso-carousel 2.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-package/src/Carousel/Carousel.d.ts.map +1 -1
- package/dist-package/src/Carousel/Carousel.js +3 -7
- package/dist-package/src/Carousel/Carousel.js.map +1 -1
- package/dist-package/src/CarouselGradient/CarouselGradient.d.ts.map +1 -1
- package/dist-package/src/CarouselGradient/CarouselGradient.js +4 -10
- package/dist-package/src/CarouselGradient/CarouselGradient.js.map +1 -1
- package/dist-package/src/CarouselNavigation/CarouselNavigation.d.ts.map +1 -1
- package/dist-package/src/CarouselNavigation/CarouselNavigation.js +16 -7
- package/dist-package/src/CarouselNavigation/CarouselNavigation.js.map +1 -1
- package/package.json +5 -3
- package/src/Carousel/Carousel.tsx +3 -10
- package/src/CarouselGradient/CarouselGradient.tsx +8 -13
- package/src/CarouselNavigation/CarouselNavigation.tsx +16 -11
- package/dist-package/src/Carousel/styles.d.ts +0 -3
- package/dist-package/src/Carousel/styles.d.ts.map +0 -1
- package/dist-package/src/Carousel/styles.js +0 -11
- package/dist-package/src/Carousel/styles.js.map +0 -1
- package/dist-package/src/CarouselGradient/styles.d.ts +0 -3
- package/dist-package/src/CarouselGradient/styles.d.ts.map +0 -1
- package/dist-package/src/CarouselGradient/styles.js +0 -17
- package/dist-package/src/CarouselGradient/styles.js.map +0 -1
- package/dist-package/src/CarouselNavigation/styles.d.ts +0 -4
- package/dist-package/src/CarouselNavigation/styles.d.ts.map +0 -1
- package/dist-package/src/CarouselNavigation/styles.js +0 -28
- package/dist-package/src/CarouselNavigation/styles.js.map +0 -1
- package/src/Carousel/styles.ts +0 -12
- package/src/CarouselGradient/styles.ts +0 -20
- package/src/CarouselNavigation/styles.ts +0 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../src/Carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../src/Carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAQvD,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAID,eAAO,MAAM,QAAQ;oIAYlB,KAAK;;;;;;;;;;;CA+CP,CAAA;AAcD,eAAe,QAAQ,CAAA"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
3
|
-
import cx from 'classnames';
|
|
4
2
|
import 'glider-js/glider.css';
|
|
5
3
|
import { Container } from '@toptal/picasso-container';
|
|
6
|
-
import
|
|
4
|
+
import { twMerge } from '@toptal/picasso-tailwind-merge';
|
|
7
5
|
import { CarouselGradient } from '../CarouselGradient';
|
|
8
6
|
import useCarousel from './hooks/useCarousel';
|
|
9
7
|
import { CarouselNavigation } from '../CarouselNavigation';
|
|
10
|
-
const useStyles = makeStyles(styles, { name: 'Carousel' });
|
|
11
8
|
const testIdsDefault = {};
|
|
12
9
|
export const Carousel = ({ autoplay = false, autoplayDelay = 3000, className, children, hasArrows = false, hasDots = false, onSlide, rewind = false, slidesToScroll = 1, slidesToShow = 1, testIds = testIdsDefault, }) => {
|
|
13
10
|
const { isLastPage, getContainerProps, getCarouselProps, getDotsProps, getNextProps, getPrevProps, } = useCarousel({
|
|
@@ -20,9 +17,8 @@ export const Carousel = ({ autoplay = false, autoplayDelay = 3000, className, ch
|
|
|
20
17
|
slidesCount: React.Children.count(children),
|
|
21
18
|
hasDots,
|
|
22
19
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
React.createElement(Container, { className: classes.container },
|
|
20
|
+
return (React.createElement(Container, Object.assign({ className: twMerge('[&_.glider-slide]:min-w-[100px]', className), "data-testid": testIds.root }, getContainerProps()),
|
|
21
|
+
React.createElement(Container, { className: 'relative' },
|
|
26
22
|
React.createElement(Container, Object.assign({}, getCarouselProps(), { "data-testid": testIds.carousel }), children),
|
|
27
23
|
!Number.isInteger(slidesToShow) && (React.createElement(CarouselGradient, { slidesToShow: slidesToShow, isLastPage: isLastPage }))),
|
|
28
24
|
React.createElement(CarouselNavigation, { hasArrows: hasArrows, hasDots: hasDots, getDotsProps: getDotsProps, getPrevProps: getPrevProps, getNextProps: getNextProps, testIds: testIds })));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","sourceRoot":"","sources":["../../../src/Carousel/Carousel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Carousel.js","sourceRoot":"","sources":["../../../src/Carousel/Carousel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,sBAAsB,CAAA;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,WAAW,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAwD1D,MAAM,cAAc,GAAG,EAAE,CAAA;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,QAAQ,GAAG,KAAK,EAChB,aAAa,GAAG,IAAI,EACpB,SAAS,EACT,QAAQ,EACR,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,OAAO,EACP,MAAM,GAAG,KAAK,EACd,cAAc,GAAG,CAAC,EAClB,YAAY,GAAG,CAAC,EAChB,OAAO,GAAG,cAAc,GAClB,EAAE,EAAE;IACV,MAAM,EACJ,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,GAAG,WAAW,CAAC;QACd,QAAQ;QACR,aAAa;QACb,OAAO;QACP,MAAM;QACN,cAAc;QACd,YAAY;QACZ,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,OAAO;KACR,CAAC,CAAA;IAEF,OAAO,CACL,oBAAC,SAAS,kBACR,SAAS,EAAE,OAAO,CAAC,iCAAiC,EAAE,SAAS,CAAC,iBACnD,OAAO,CAAC,IAAI,IACrB,iBAAiB,EAAE;QAEvB,oBAAC,SAAS,IAAC,SAAS,EAAC,UAAU;YAC7B,oBAAC,SAAS,oBAAK,gBAAgB,EAAE,mBAAe,OAAO,CAAC,QAAQ,KAC7D,QAAQ,CACC;YACX,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAClC,oBAAC,gBAAgB,IACf,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,GACtB,CACH,CACS;QAEZ,oBAAC,kBAAkB,IACjB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,GAChB,CACQ,CACb,CAAA;AACH,CAAC,CAAA;AAED,QAAQ,CAAC,YAAY,GAAG;IACtB,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;CAChB,CAAA;AAED,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAA;AAEjC,eAAe,QAAQ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselGradient.d.ts","sourceRoot":"","sources":["../../../src/CarouselGradient/CarouselGradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"CarouselGradient.d.ts","sourceRoot":"","sources":["../../../src/CarouselGradient/CarouselGradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAKtC,aAAK,KAAK,GAAG;IACX,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;;AA0BD,wBAA2C"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import
|
|
3
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
import { twMerge } from '@toptal/picasso-tailwind-merge';
|
|
4
3
|
import gradientWidth from './utils/gradient-width';
|
|
5
|
-
import styles from './styles';
|
|
6
|
-
const useStyles = makeStyles(styles, { name: 'CarouselGradient' });
|
|
7
4
|
const CarouselGradient = ({ isLastPage, slidesToShow }) => {
|
|
8
|
-
const classes = useStyles();
|
|
9
5
|
const showNextGradient = !isLastPage;
|
|
10
6
|
const showPrevGradient = isLastPage;
|
|
11
7
|
const gradientStyle = useMemo(() => {
|
|
@@ -13,11 +9,9 @@ const CarouselGradient = ({ isLastPage, slidesToShow }) => {
|
|
|
13
9
|
width: gradientWidth(slidesToShow),
|
|
14
10
|
};
|
|
15
11
|
}, [slidesToShow]);
|
|
16
|
-
return (React.createElement("div", { style: gradientStyle, className:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
[classes.prevGradient]: showPrevGradient,
|
|
20
|
-
}) }));
|
|
12
|
+
return (React.createElement("div", { style: gradientStyle, className: twMerge((showNextGradient || showPrevGradient) && 'absolute h-full top-0', showNextGradient &&
|
|
13
|
+
'right-0 bg-gradient-to-r from-white/20 to-white to-95%', showPrevGradient &&
|
|
14
|
+
'left-0 bg-gradient-to-r from-white from-5% to-white/20') }));
|
|
21
15
|
};
|
|
22
16
|
export default React.memo(CarouselGradient);
|
|
23
17
|
//# sourceMappingURL=CarouselGradient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselGradient.js","sourceRoot":"","sources":["../../../src/CarouselGradient/CarouselGradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CarouselGradient.js","sourceRoot":"","sources":["../../../src/CarouselGradient/CarouselGradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExD,OAAO,aAAa,MAAM,wBAAwB,CAAA;AAOlD,MAAM,gBAAgB,GAAG,CAAC,EAAE,UAAU,EAAE,YAAY,EAAS,EAAE,EAAE;IAC/D,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAA;IACpC,MAAM,gBAAgB,GAAG,UAAU,CAAA;IAEnC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,OAAO;YACL,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC;SACnC,CAAA;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,OAAO,CACL,6BACE,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,OAAO,CAChB,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,uBAAuB,EACjE,gBAAgB;YACd,wDAAwD,EAC1D,gBAAgB;YACd,wDAAwD,CAC3D,GACD,CACH,CAAA;AACH,CAAC,CAAA;AAED,eAAe,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselNavigation.d.ts","sourceRoot":"","sources":["../../../src/CarouselNavigation/CarouselNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"CarouselNavigation.d.ts","sourceRoot":"","sources":["../../../src/CarouselNavigation/CarouselNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAA;AAmBnC,aAAK,KAAK,GAAG;IACX,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;;AAiED,wBAAuC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import React, { memo } from 'react';
|
|
2
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
3
2
|
import { ButtonCircular } from '@toptal/picasso-button';
|
|
4
3
|
import { Container } from '@toptal/picasso-container';
|
|
5
4
|
import { ChevronRight24 } from '@toptal/picasso-icons';
|
|
6
|
-
import styles from './styles';
|
|
7
5
|
const getJustifyContent = (hasArrows, hasDots) => {
|
|
8
6
|
if (hasArrows && hasDots) {
|
|
9
7
|
return 'space-between';
|
|
@@ -15,10 +13,8 @@ const getJustifyContent = (hasArrows, hasDots) => {
|
|
|
15
13
|
return 'center';
|
|
16
14
|
}
|
|
17
15
|
};
|
|
18
|
-
const useStyles = makeStyles(styles, { name: 'CarouselNavigation' });
|
|
19
16
|
const CarouselNavigation = ({ getDotsProps, getNextProps, getPrevProps, hasArrows, hasDots, testIds, }) => {
|
|
20
|
-
|
|
21
|
-
return (React.createElement(Container, { className: classes.navigation, flex: true, justifyContent: getJustifyContent(hasArrows, hasDots), "data-testid": testIds.navigation },
|
|
17
|
+
return (React.createElement(Container, { className: 'pt-[14px] px-6 pb-0', flex: true, justifyContent: getJustifyContent(hasArrows, hasDots), "data-testid": testIds.navigation },
|
|
22
18
|
hasDots && (
|
|
23
19
|
/*
|
|
24
20
|
default slider css ads margin: 0 auto; to the dots container
|
|
@@ -26,9 +22,22 @@ const CarouselNavigation = ({ getDotsProps, getNextProps, getPrevProps, hasArrow
|
|
|
26
22
|
Could be removed when we migrate all styles to TailwindCSS
|
|
27
23
|
*/
|
|
28
24
|
React.createElement("div", null,
|
|
29
|
-
React.createElement("div", Object.assign({}, getDotsProps(), { "data-testid": testIds.dots, className:
|
|
25
|
+
React.createElement("div", Object.assign({}, getDotsProps(), { "data-testid": testIds.dots, className: `
|
|
26
|
+
[&_.glider-dot]:w-[10px]
|
|
27
|
+
[&_.glider-dot]:h-[10px]
|
|
28
|
+
[&_.glider-dot]:bg-blue-500
|
|
29
|
+
[&_.glider-dot]:opacity-20
|
|
30
|
+
|
|
31
|
+
[&_.glider-dot.active]:bg-blue-500 [&_.glider-dot.active]:opacity-100
|
|
32
|
+
|
|
33
|
+
[&_.glider-dot:not(.active):hover]:opacity-100
|
|
34
|
+
[&_.glider-dot:not(.active):hover]:shadow-[0_0_0_2px_rgba(32,78,207,0.2)]
|
|
35
|
+
[&_.glider-dot:not(.active):hover]:transition-[box-shadow,opacity]
|
|
36
|
+
[&_.glider-dot:not(.active):hover]:duration-300
|
|
37
|
+
[&_.glider-dot:not(.active):hover]:ease-out
|
|
38
|
+
` })))),
|
|
30
39
|
hasArrows && (React.createElement(Container, { "data-testid": testIds.arrows },
|
|
31
|
-
React.createElement(ButtonCircular, Object.assign({ className:
|
|
40
|
+
React.createElement(ButtonCircular, Object.assign({ className: 'rotate-180', "data-testid": testIds.prev, icon: React.createElement(ChevronRight24, null), variant: 'flat' }, getPrevProps())),
|
|
32
41
|
React.createElement(ButtonCircular, Object.assign({ "data-testid": testIds.next, icon: React.createElement(ChevronRight24, null), variant: 'flat' }, getNextProps()))))));
|
|
33
42
|
};
|
|
34
43
|
export default memo(CarouselNavigation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CarouselNavigation.js","sourceRoot":"","sources":["../../../src/CarouselNavigation/CarouselNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"CarouselNavigation.js","sourceRoot":"","sources":["../../../src/CarouselNavigation/CarouselNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,iBAAiB,GAAG,CAAC,SAAkB,EAAE,OAAgB,EAAE,EAAE;IACjE,IAAI,SAAS,IAAI,OAAO,EAAE;QACxB,OAAO,eAAe,CAAA;KACvB;IAED,IAAI,SAAS,EAAE;QACb,OAAO,UAAU,CAAA;KAClB;IAED,IAAI,OAAO,EAAE;QACX,OAAO,QAAQ,CAAA;KAChB;AACH,CAAC,CAAA;AAiBD,MAAM,kBAAkB,GAAG,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,OAAO,GACD,EAAE,EAAE;IACV,OAAO,CACL,oBAAC,SAAS,IACR,SAAS,EAAC,qBAAqB,EAC/B,IAAI,QACJ,cAAc,EAAE,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,iBACxC,OAAO,CAAC,UAAU;QAE9B,OAAO,IAAI;QACV;;;;UAIE;QACF;YACE,6CACM,YAAY,EAAE,mBACL,OAAO,CAAC,IAAI,EACzB,SAAS,EAAE;;;;;;;;;;;;;aAaV,IACD,CACE,CACP;QACA,SAAS,IAAI,CACZ,oBAAC,SAAS,mBAAc,OAAO,CAAC,MAAM;YACpC,oBAAC,cAAc,kBACb,SAAS,EAAC,YAAY,iBACT,OAAO,CAAC,IAAI,EACzB,IAAI,EAAE,oBAAC,cAAc,OAAG,EACxB,OAAO,EAAC,MAAM,IACV,YAAY,EAAE,EAClB;YACF,oBAAC,cAAc,iCACA,OAAO,CAAC,IAAI,EACzB,IAAI,EAAE,oBAAC,cAAc,OAAG,EACxB,OAAO,EAAC,MAAM,IACV,YAAY,EAAE,EAClB,CACQ,CACb,CACS,CACb,CAAA;AACH,CAAC,CAAA;AAED,eAAe,IAAI,CAAC,kBAAkB,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toptal/picasso-carousel",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Toptal UI components library - Carousel",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -27,16 +27,18 @@
|
|
|
27
27
|
"@toptal/picasso-icons": "1.6.0",
|
|
28
28
|
"@toptal/picasso-shared": "15.0.0",
|
|
29
29
|
"@toptal/picasso-utils": "1.0.3",
|
|
30
|
-
"classnames": "^2.5.1",
|
|
31
30
|
"glider-js": "^1.7.8"
|
|
32
31
|
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@toptal/picasso-tailwind-merge": "1.2.0"
|
|
34
|
+
},
|
|
33
35
|
"sideEffects": [
|
|
34
36
|
"**/styles.ts",
|
|
35
37
|
"**/styles.js"
|
|
36
38
|
],
|
|
37
39
|
"peerDependencies": {
|
|
38
|
-
"@material-ui/core": "4.12.4",
|
|
39
40
|
"@toptal/picasso-tailwind": ">=2.7",
|
|
41
|
+
"@toptal/picasso-tailwind-merge": "^1.2.0",
|
|
40
42
|
"react": ">=16.12.0 < 19.0.0"
|
|
41
43
|
},
|
|
42
44
|
"exports": {
|
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
import type { ReactNode } from 'react'
|
|
2
2
|
import React from 'react'
|
|
3
|
-
import type { Theme } from '@material-ui/core/styles'
|
|
4
|
-
import { makeStyles } from '@material-ui/core/styles'
|
|
5
|
-
import cx from 'classnames'
|
|
6
3
|
import 'glider-js/glider.css'
|
|
7
4
|
import type { BaseProps } from '@toptal/picasso-shared'
|
|
8
5
|
import { Container } from '@toptal/picasso-container'
|
|
6
|
+
import { twMerge } from '@toptal/picasso-tailwind-merge'
|
|
9
7
|
|
|
10
|
-
import styles from './styles'
|
|
11
8
|
import { CarouselGradient } from '../CarouselGradient'
|
|
12
9
|
import useCarousel from './hooks/useCarousel'
|
|
13
10
|
import { CarouselNavigation } from '../CarouselNavigation'
|
|
14
11
|
|
|
15
|
-
const useStyles = makeStyles<Theme>(styles, { name: 'Carousel' })
|
|
16
|
-
|
|
17
12
|
export interface Props extends BaseProps {
|
|
18
13
|
/**
|
|
19
14
|
* Slide automatically to next slides
|
|
@@ -101,15 +96,13 @@ export const Carousel = ({
|
|
|
101
96
|
hasDots,
|
|
102
97
|
})
|
|
103
98
|
|
|
104
|
-
const classes = useStyles()
|
|
105
|
-
|
|
106
99
|
return (
|
|
107
100
|
<Container
|
|
108
|
-
className={
|
|
101
|
+
className={twMerge('[&_.glider-slide]:min-w-[100px]', className)}
|
|
109
102
|
data-testid={testIds.root}
|
|
110
103
|
{...getContainerProps()}
|
|
111
104
|
>
|
|
112
|
-
<Container className=
|
|
105
|
+
<Container className='relative'>
|
|
113
106
|
<Container {...getCarouselProps()} data-testid={testIds.carousel}>
|
|
114
107
|
{children}
|
|
115
108
|
</Container>
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from 'react'
|
|
2
|
-
import
|
|
3
|
-
import type { Theme } from '@material-ui/core/styles'
|
|
4
|
-
import { makeStyles } from '@material-ui/core/styles'
|
|
2
|
+
import { twMerge } from '@toptal/picasso-tailwind-merge'
|
|
5
3
|
|
|
6
4
|
import gradientWidth from './utils/gradient-width'
|
|
7
|
-
import styles from './styles'
|
|
8
|
-
|
|
9
|
-
const useStyles = makeStyles<Theme>(styles, { name: 'CarouselGradient' })
|
|
10
5
|
|
|
11
6
|
type Props = {
|
|
12
7
|
slidesToShow: number
|
|
@@ -14,8 +9,6 @@ type Props = {
|
|
|
14
9
|
}
|
|
15
10
|
|
|
16
11
|
const CarouselGradient = ({ isLastPage, slidesToShow }: Props) => {
|
|
17
|
-
const classes = useStyles()
|
|
18
|
-
|
|
19
12
|
const showNextGradient = !isLastPage
|
|
20
13
|
const showPrevGradient = isLastPage
|
|
21
14
|
|
|
@@ -28,11 +21,13 @@ const CarouselGradient = ({ isLastPage, slidesToShow }: Props) => {
|
|
|
28
21
|
return (
|
|
29
22
|
<div
|
|
30
23
|
style={gradientStyle}
|
|
31
|
-
className={
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
24
|
+
className={twMerge(
|
|
25
|
+
(showNextGradient || showPrevGradient) && 'absolute h-full top-0',
|
|
26
|
+
showNextGradient &&
|
|
27
|
+
'right-0 bg-gradient-to-r from-white/20 to-white to-95%',
|
|
28
|
+
showPrevGradient &&
|
|
29
|
+
'left-0 bg-gradient-to-r from-white from-5% to-white/20'
|
|
30
|
+
)}
|
|
36
31
|
/>
|
|
37
32
|
)
|
|
38
33
|
}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import React, { memo } from 'react'
|
|
2
|
-
import type { Theme } from '@material-ui/core/styles'
|
|
3
|
-
import { makeStyles } from '@material-ui/core/styles'
|
|
4
2
|
import { ButtonCircular } from '@toptal/picasso-button'
|
|
5
3
|
import { Container } from '@toptal/picasso-container'
|
|
6
4
|
import { ChevronRight24 } from '@toptal/picasso-icons'
|
|
7
5
|
|
|
8
|
-
import styles from './styles'
|
|
9
|
-
|
|
10
6
|
const getJustifyContent = (hasArrows: boolean, hasDots: boolean) => {
|
|
11
7
|
if (hasArrows && hasDots) {
|
|
12
8
|
return 'space-between'
|
|
@@ -21,8 +17,6 @@ const getJustifyContent = (hasArrows: boolean, hasDots: boolean) => {
|
|
|
21
17
|
}
|
|
22
18
|
}
|
|
23
19
|
|
|
24
|
-
const useStyles = makeStyles<Theme>(styles, { name: 'CarouselNavigation' })
|
|
25
|
-
|
|
26
20
|
type Props = {
|
|
27
21
|
hasArrows: boolean
|
|
28
22
|
hasDots: boolean
|
|
@@ -46,11 +40,9 @@ const CarouselNavigation = ({
|
|
|
46
40
|
hasDots,
|
|
47
41
|
testIds,
|
|
48
42
|
}: Props) => {
|
|
49
|
-
const classes = useStyles()
|
|
50
|
-
|
|
51
43
|
return (
|
|
52
44
|
<Container
|
|
53
|
-
className=
|
|
45
|
+
className='pt-[14px] px-6 pb-0'
|
|
54
46
|
flex
|
|
55
47
|
justifyContent={getJustifyContent(hasArrows, hasDots)}
|
|
56
48
|
data-testid={testIds.navigation}
|
|
@@ -65,14 +57,27 @@ const CarouselNavigation = ({
|
|
|
65
57
|
<div
|
|
66
58
|
{...getDotsProps()}
|
|
67
59
|
data-testid={testIds.dots}
|
|
68
|
-
className={
|
|
60
|
+
className={`
|
|
61
|
+
[&_.glider-dot]:w-[10px]
|
|
62
|
+
[&_.glider-dot]:h-[10px]
|
|
63
|
+
[&_.glider-dot]:bg-blue-500
|
|
64
|
+
[&_.glider-dot]:opacity-20
|
|
65
|
+
|
|
66
|
+
[&_.glider-dot.active]:bg-blue-500 [&_.glider-dot.active]:opacity-100
|
|
67
|
+
|
|
68
|
+
[&_.glider-dot:not(.active):hover]:opacity-100
|
|
69
|
+
[&_.glider-dot:not(.active):hover]:shadow-[0_0_0_2px_rgba(32,78,207,0.2)]
|
|
70
|
+
[&_.glider-dot:not(.active):hover]:transition-[box-shadow,opacity]
|
|
71
|
+
[&_.glider-dot:not(.active):hover]:duration-300
|
|
72
|
+
[&_.glider-dot:not(.active):hover]:ease-out
|
|
73
|
+
`}
|
|
69
74
|
/>
|
|
70
75
|
</div>
|
|
71
76
|
)}
|
|
72
77
|
{hasArrows && (
|
|
73
78
|
<Container data-testid={testIds.arrows}>
|
|
74
79
|
<ButtonCircular
|
|
75
|
-
className=
|
|
80
|
+
className='rotate-180'
|
|
76
81
|
data-testid={testIds.prev}
|
|
77
82
|
icon={<ChevronRight24 />}
|
|
78
83
|
variant='flat'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/Carousel/styles.ts"],"names":[],"mappings":";AAEA,wBASI"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createStyles } from '@material-ui/core/styles';
|
|
2
|
-
export default () => createStyles({
|
|
3
|
-
root: {
|
|
4
|
-
'& .glider-slide': {
|
|
5
|
-
minWidth: '100px',
|
|
6
|
-
},
|
|
7
|
-
},
|
|
8
|
-
// important for gradient component to be on top of carousel
|
|
9
|
-
container: { position: 'relative' },
|
|
10
|
-
});
|
|
11
|
-
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/Carousel/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,eAAe,GAAG,EAAE,CAClB,YAAY,CAAC;IACX,IAAI,EAAE;QACJ,iBAAiB,EAAE;YACjB,QAAQ,EAAE,OAAO;SAClB;KACF;IACD,4DAA4D;IAC5D,SAAS,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;CACpC,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/CarouselGradient/styles.ts"],"names":[],"mappings":";AAEA,wBAiBI"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { createStyles } from '@material-ui/core/styles';
|
|
2
|
-
export default () => createStyles({
|
|
3
|
-
gradient: {
|
|
4
|
-
position: 'absolute',
|
|
5
|
-
height: '100%',
|
|
6
|
-
top: 0,
|
|
7
|
-
},
|
|
8
|
-
nextGradient: {
|
|
9
|
-
right: 0,
|
|
10
|
-
background: 'linear-gradient(90deg, rgba(255, 255, 255, 0.2) 0%, white 95%)',
|
|
11
|
-
},
|
|
12
|
-
prevGradient: {
|
|
13
|
-
left: 0,
|
|
14
|
-
background: 'linear-gradient(90deg, white 5%, rgba(255, 255, 255, 0.2) 100%)',
|
|
15
|
-
},
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/CarouselGradient/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,eAAe,GAAG,EAAE,CAClB,YAAY,CAAC;IACX,QAAQ,EAAE;QACR,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,CAAC;KACP;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,CAAC;QACR,UAAU,EACR,gEAAgE;KACnE;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC;QACP,UAAU,EACR,iEAAiE;KACpE;CACF,CAAC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/CarouselNavigation/styles.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;mDAGX,KAAK;AAA/C,wBAyBI"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { rem } from '@toptal/picasso-shared';
|
|
2
|
-
import { createStyles } from '@material-ui/core/styles';
|
|
3
|
-
export default ({ palette, transitions }) => createStyles({
|
|
4
|
-
arrowPrev: {
|
|
5
|
-
transform: 'rotate(180deg)',
|
|
6
|
-
},
|
|
7
|
-
dots: {
|
|
8
|
-
'& .glider-dot': {
|
|
9
|
-
width: 10,
|
|
10
|
-
height: 10,
|
|
11
|
-
backgroundColor: palette.blue.main,
|
|
12
|
-
opacity: 0.2,
|
|
13
|
-
'&.active': {
|
|
14
|
-
backgroundColor: palette.blue.main,
|
|
15
|
-
opacity: 1,
|
|
16
|
-
},
|
|
17
|
-
'&:hover:not(.active)': {
|
|
18
|
-
transition: `box-shadow, opacity ${transitions.duration.standard}ms ${transitions.easing.easeOut}`,
|
|
19
|
-
opacity: 1,
|
|
20
|
-
boxShadow: '0 0 0 2px rgba(32, 78, 207, 0.2)',
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
navigation: {
|
|
25
|
-
padding: `${rem('14px')} 1.5rem 0`,
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/CarouselNavigation/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAS,EAAE,EAAE,CACjD,YAAY,CAAC;IACX,SAAS,EAAE;QACT,SAAS,EAAE,gBAAgB;KAC5B;IACD,IAAI,EAAE;QACJ,eAAe,EAAE;YACf,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;YAClC,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE;gBACV,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;gBAClC,OAAO,EAAE,CAAC;aACX;YACD,sBAAsB,EAAE;gBACtB,UAAU,EAAE,uBAAuB,WAAW,CAAC,QAAQ,CAAC,QAAQ,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;gBAClG,OAAO,EAAE,CAAC;gBACV,SAAS,EAAE,kCAAkC;aAC9C;SACF;KACF;IACD,UAAU,EAAE;QACV,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW;KACnC;CACF,CAAC,CAAA"}
|
package/src/Carousel/styles.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createStyles } from '@material-ui/core/styles'
|
|
2
|
-
|
|
3
|
-
export default () =>
|
|
4
|
-
createStyles({
|
|
5
|
-
root: {
|
|
6
|
-
'& .glider-slide': {
|
|
7
|
-
minWidth: '100px',
|
|
8
|
-
},
|
|
9
|
-
},
|
|
10
|
-
// important for gradient component to be on top of carousel
|
|
11
|
-
container: { position: 'relative' },
|
|
12
|
-
})
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { createStyles } from '@material-ui/core/styles'
|
|
2
|
-
|
|
3
|
-
export default () =>
|
|
4
|
-
createStyles({
|
|
5
|
-
gradient: {
|
|
6
|
-
position: 'absolute',
|
|
7
|
-
height: '100%',
|
|
8
|
-
top: 0,
|
|
9
|
-
},
|
|
10
|
-
nextGradient: {
|
|
11
|
-
right: 0,
|
|
12
|
-
background:
|
|
13
|
-
'linear-gradient(90deg, rgba(255, 255, 255, 0.2) 0%, white 95%)',
|
|
14
|
-
},
|
|
15
|
-
prevGradient: {
|
|
16
|
-
left: 0,
|
|
17
|
-
background:
|
|
18
|
-
'linear-gradient(90deg, white 5%, rgba(255, 255, 255, 0.2) 100%)',
|
|
19
|
-
},
|
|
20
|
-
})
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { rem } from '@toptal/picasso-shared'
|
|
2
|
-
import type { Theme } from '@material-ui/core/styles'
|
|
3
|
-
import { createStyles } from '@material-ui/core/styles'
|
|
4
|
-
|
|
5
|
-
export default ({ palette, transitions }: Theme) =>
|
|
6
|
-
createStyles({
|
|
7
|
-
arrowPrev: {
|
|
8
|
-
transform: 'rotate(180deg)',
|
|
9
|
-
},
|
|
10
|
-
dots: {
|
|
11
|
-
'& .glider-dot': {
|
|
12
|
-
width: 10,
|
|
13
|
-
height: 10,
|
|
14
|
-
backgroundColor: palette.blue.main,
|
|
15
|
-
opacity: 0.2,
|
|
16
|
-
'&.active': {
|
|
17
|
-
backgroundColor: palette.blue.main,
|
|
18
|
-
opacity: 1,
|
|
19
|
-
},
|
|
20
|
-
'&:hover:not(.active)': {
|
|
21
|
-
transition: `box-shadow, opacity ${transitions.duration.standard}ms ${transitions.easing.easeOut}`,
|
|
22
|
-
opacity: 1,
|
|
23
|
-
boxShadow: '0 0 0 2px rgba(32, 78, 207, 0.2)',
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
navigation: {
|
|
28
|
-
padding: `${rem('14px')} 1.5rem 0`,
|
|
29
|
-
},
|
|
30
|
-
})
|