contentoh-components-library 21.4.63 → 21.4.65

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.
Files changed (114) hide show
  1. package/dist/components/atoms/Avatar/index.js +3 -2
  2. package/dist/components/atoms/CheckBox/styles.js +1 -1
  3. package/dist/components/atoms/InputFormatter/styles.js +1 -1
  4. package/dist/components/atoms/SliderToolTip/styles.js +1 -1
  5. package/dist/components/molecules/BoxAttribute/index.js +3 -3
  6. package/dist/components/molecules/BoxAttribute/styles.js +1 -1
  7. package/dist/components/molecules/BoxButtons/index.js +0 -1
  8. package/dist/components/molecules/CarouselImagesLogin/index.js +1 -1
  9. package/dist/components/molecules/HeaderTop/index.js +68 -11
  10. package/dist/components/molecules/SignInLogin/index.js +36 -28
  11. package/dist/components/molecules/StripeCardSelector/CardSelector.stories.js +1 -2
  12. package/dist/components/organisms/Chat/Chat.stories.js +27 -8
  13. package/dist/components/organisms/Chat/ContainerItems/index.js +19 -3
  14. package/dist/components/organisms/Chat/ContainerItems/styles.js +1 -1
  15. package/dist/components/organisms/Chat/ContentChat/index.js +350 -197
  16. package/dist/components/organisms/Chat/Footer/index.js +48 -39
  17. package/dist/components/organisms/Chat/index.js +49 -4
  18. package/dist/components/organisms/Chat/styles.js +1 -1
  19. package/dist/components/organisms/DashboardMetric/index.js +12 -6
  20. package/dist/components/organisms/FullProductNameHeader/index.js +2 -2
  21. package/dist/components/organisms/InputGroup/index.js +1 -10
  22. package/dist/components/organisms/Modal/styles.js +1 -1
  23. package/dist/components/pages/Dashboard/Dashboard.stories.js +33 -36
  24. package/dist/components/pages/Dashboard/index.js +34 -8
  25. package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +3 -3
  26. package/dist/components/pages/ProviderProductEdition/index.js +120 -144
  27. package/dist/components/pages/ProviderProductEdition/styles.js +1 -1
  28. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +7 -3
  29. package/dist/components/pages/RetailerProductEdition/index.js +279 -277
  30. package/dist/components/pages/RetailerProductEdition/styles.js +1 -1
  31. package/dist/components/pages/RetailerProductEdition/utils.js +61 -2
  32. package/dist/global-files/data.js +11 -3
  33. package/dist/global-files/variables.js +5 -1
  34. package/dist/index.js +201 -58
  35. package/package.json +2 -1
  36. package/src/components/atoms/Avatar/index.js +8 -2
  37. package/src/components/atoms/CheckBox/styles.js +2 -0
  38. package/src/components/atoms/ImageCarousel/ImgeSlider.stories.js +76 -0
  39. package/src/components/atoms/ImageCarousel/index.js +103 -0
  40. package/src/components/atoms/ImageCarousel/styles.js +79 -0
  41. package/src/components/atoms/InputFormatter/styles.js +2 -1
  42. package/src/components/atoms/PercentTag/PercentTag.stories.js +7 -0
  43. package/src/components/atoms/PercentTag/index.js +9 -0
  44. package/src/components/atoms/PercentTag/styles.js +69 -0
  45. package/src/components/atoms/RatingStars/RatingStars.stories.js +10 -0
  46. package/src/components/atoms/RatingStars/index.js +31 -0
  47. package/src/components/atoms/RatingStars/styles.js +28 -0
  48. package/src/components/atoms/RetailerCatalog/RetailerCatalog.stories.js +36 -0
  49. package/src/components/atoms/RetailerCatalog/index.js +49 -0
  50. package/src/components/atoms/RetailerCatalog/styles.js +30 -0
  51. package/src/components/atoms/RetailerOption/RetailerOption.stories.js +15 -0
  52. package/src/components/atoms/RetailerOption/index.js +53 -0
  53. package/src/components/atoms/RetailerOption/styles.js +41 -0
  54. package/src/components/atoms/RetailersList/RetailersList.stories.js +33 -0
  55. package/src/components/atoms/RetailersList/index.js +20 -0
  56. package/src/components/atoms/RetailersList/styles.js +19 -0
  57. package/src/components/atoms/SliderToolTip/styles.js +1 -1
  58. package/src/components/atoms/TabSection/styles.js +1 -1
  59. package/src/components/atoms/UserCatalog/UserCatalog.stories.js +67 -0
  60. package/src/components/atoms/UserCatalog/index.js +100 -0
  61. package/src/components/atoms/UserCatalog/styles.js +24 -0
  62. package/src/components/atoms/UserOption/UserOption.stories.js +25 -0
  63. package/src/components/atoms/UserOption/index.js +95 -0
  64. package/src/components/atoms/UserOption/styles.js +61 -0
  65. package/src/components/atoms/UserSelector/UserSelector.stories.js +25 -0
  66. package/src/components/atoms/UserSelector/index.js +86 -0
  67. package/src/components/atoms/UserSelector/styles.js +55 -0
  68. package/src/components/molecules/BoxAttribute/index.js +32 -25
  69. package/src/components/molecules/BoxAttribute/styles.js +1 -1
  70. package/src/components/molecules/BoxButtons/index.js +23 -22
  71. package/src/components/molecules/CarouselImagesLogin/index.js +1 -1
  72. package/src/components/molecules/GridItem/GridItem.stories.js +126 -0
  73. package/src/components/molecules/GridItem/index.js +105 -0
  74. package/src/components/molecules/GridItem/styles.js +104 -0
  75. package/src/components/molecules/HeaderItem/ColumnItem.js +9 -0
  76. package/src/components/molecules/HeaderItem/HeaderItem.stories.js +24 -0
  77. package/src/components/molecules/HeaderItem/index.js +26 -0
  78. package/src/components/molecules/HeaderItem/styles.js +27 -0
  79. package/src/components/molecules/HeaderTop/index.js +52 -6
  80. package/src/components/molecules/RowItem/ColumnItem.js +9 -0
  81. package/src/components/molecules/RowItem/RowItem.stories.js +5660 -0
  82. package/src/components/molecules/RowItem/index.js +45 -0
  83. package/src/components/molecules/RowItem/styles.js +40 -0
  84. package/src/components/molecules/SignInLogin/index.js +11 -11
  85. package/src/components/molecules/StripeCardSelector/CardSelector.stories.js +1 -2
  86. package/src/components/molecules/TagAndInput/index.js +6 -5
  87. package/src/components/organisms/Chat/Chat.stories.js +27 -7
  88. package/src/components/organisms/Chat/ContainerItems/index.js +18 -2
  89. package/src/components/organisms/Chat/ContainerItems/styles.js +14 -2
  90. package/src/components/organisms/Chat/ContentChat/index.js +88 -12
  91. package/src/components/organisms/Chat/Footer/index.js +11 -0
  92. package/src/components/organisms/Chat/index.js +46 -4
  93. package/src/components/organisms/Chat/styles.js +4 -0
  94. package/src/components/organisms/DashboardMetric/index.js +6 -3
  95. package/src/components/organisms/FullProductNameHeader/index.js +1 -1
  96. package/src/components/organisms/GridProducts/GridProducts.stories.js +5485 -0
  97. package/src/components/organisms/GridProducts/index.js +50 -0
  98. package/src/components/organisms/GridProducts/styles.js +14 -0
  99. package/src/components/organisms/GridProducts/utils.js +111 -0
  100. package/src/components/organisms/InputGroup/index.js +131 -119
  101. package/src/components/organisms/Modal/styles.js +4 -1
  102. package/src/components/organisms/OrderDetail/utils/Table/utils.js +6 -16
  103. package/src/components/pages/Dashboard/Dashboard.stories.js +33 -38
  104. package/src/components/pages/Dashboard/index.js +31 -5
  105. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +100 -83
  106. package/src/components/pages/ProviderProductEdition/index.js +100 -131
  107. package/src/components/pages/ProviderProductEdition/styles.js +5 -1
  108. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +6 -2
  109. package/src/components/pages/RetailerProductEdition/index.js +114 -145
  110. package/src/components/pages/RetailerProductEdition/styles.js +4 -0
  111. package/src/components/pages/RetailerProductEdition/utils.js +37 -0
  112. package/src/global-files/data.js +7 -13
  113. package/src/global-files/variables.js +4 -0
  114. package/src/index.js +11 -0
@@ -0,0 +1,103 @@
1
+ import { Container } from "./styles";
2
+ import { useState, useEffect } from "react";
3
+ import ReactImageFallback from "react-image-fallback";
4
+ import spinner from "../../../assets/images/Icons/Spinner.gif";
5
+ import ArrowBackIosIcon from "@mui/icons-material/ArrowBackIos";
6
+ import productImage from "../../../assets/images/defaultImages/defaultProductImage.png";
7
+
8
+ export const ImageCarousel = ({ imageArray = [] }) => {
9
+ const [currentIndex, setCurrentIndex] = useState(0);
10
+ const [transitioning, setTransitioning] = useState(false);
11
+ const [isHover, setIsHover] = useState(false);
12
+
13
+ const goToNextSlide = () => {
14
+ if (!transitioning) {
15
+ setTransitioning(true);
16
+ setCurrentIndex((prevIndex) => (prevIndex + 1) % imageArray.length);
17
+
18
+ setTimeout(() => {
19
+ setTransitioning(false);
20
+ }, 500); // Adjust the transition duration to match your CSS
21
+ }
22
+ };
23
+
24
+ const goToPrevSlide = () => {
25
+ if (!transitioning) {
26
+ setTransitioning(true);
27
+ setCurrentIndex(
28
+ (prevIndex) => (prevIndex - 1 + imageArray.length) % imageArray.length
29
+ );
30
+
31
+ setTimeout(() => {
32
+ setTransitioning(false);
33
+ }, 500); // Adjust the transition duration to match your CSS
34
+ }
35
+ };
36
+
37
+ // useEffect(() => {
38
+ // const delay = 0;
39
+ // let repeat;
40
+ // setTimeout(() => {
41
+ // repeat = setInterval(() => {
42
+ // if (!isHover && imageArray.length > 1) goToNextSlide();
43
+ // }, 10000);
44
+ // }, delay);
45
+ // return () => {
46
+ // clearInterval(repeat);
47
+ // };
48
+ // }, [isHover]);
49
+
50
+ return (
51
+ <Container
52
+ // onMouseEnter={() => setIsHover(true)}
53
+ // onMouseLeave={() => setIsHover(false)}
54
+ >
55
+ {imageArray.length > 1 && (
56
+ <button
57
+ className="prev"
58
+ onClick={(e) => {
59
+ e.stopPropagation();
60
+ goToPrevSlide();
61
+ }}
62
+ >
63
+ <ArrowBackIosIcon />
64
+ </button>
65
+ )}
66
+ <div className="slide-container">
67
+ {imageArray.length ? (
68
+ imageArray.map((img, index) => (
69
+ <div
70
+ key={index}
71
+ className={`image-container slide ${
72
+ index === currentIndex ? "active" : ""
73
+ }`}
74
+ >
75
+ <ReactImageFallback
76
+ key={index}
77
+ src={`https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${img.src}`}
78
+ fallbackImage={spinner}
79
+ alt={img?.name}
80
+ style={{
81
+ transform: `translateX(-${currentIndex * 100}%)`,
82
+ }}
83
+ />
84
+ </div>
85
+ ))
86
+ ) : (
87
+ <img src={productImage} alt="not image" />
88
+ )}
89
+ </div>
90
+ {imageArray.length > 1 && (
91
+ <button
92
+ className="next"
93
+ onClick={(e) => {
94
+ e.stopPropagation();
95
+ goToNextSlide();
96
+ }}
97
+ >
98
+ <ArrowBackIosIcon />
99
+ </button>
100
+ )}
101
+ </Container>
102
+ );
103
+ };
@@ -0,0 +1,79 @@
1
+ import styled from "styled-components";
2
+
3
+ export const Container = styled.div`
4
+ width: 174px;
5
+ height: 175px;
6
+ border-radius: 5px 5px 0px 0px;
7
+ position: relative;
8
+ overflow: hidden;
9
+ display: flex;
10
+ background-color: #f0f0f0;
11
+
12
+ .slide-container {
13
+ display: flex;
14
+ width: 100%;
15
+
16
+ .image-container {
17
+ width: 100%;
18
+ height: 100%;
19
+
20
+ img {
21
+ width: 100%;
22
+ height: 100%;
23
+ object-fit: fill;
24
+ }
25
+
26
+ &.slide {
27
+ flex: 0 0 100%;
28
+ opacity: 0;
29
+ transition: opacity 0.5s ease-in-out;
30
+
31
+ &.active {
32
+ opacity: 1;
33
+ }
34
+ }
35
+ }
36
+
37
+ & > img {
38
+ width: 100%;
39
+ }
40
+ }
41
+
42
+ button {
43
+ position: absolute;
44
+ top: 0;
45
+ border: none;
46
+ cursor: pointer;
47
+ background-color: transparent;
48
+ color: white;
49
+ z-index: 1;
50
+ height: 100%;
51
+ width: 30px;
52
+
53
+ svg {
54
+ font-size: 24px;
55
+ }
56
+
57
+ &.prev {
58
+ left: 0;
59
+
60
+ &:hover {
61
+ background: linear-gradient(90deg, darkgray, transparent);
62
+ }
63
+ }
64
+ &.next {
65
+ right: 0;
66
+
67
+ svg {
68
+ transform: rotate(180deg);
69
+ }
70
+ &:hover {
71
+ background: linear-gradient(-90deg, darkgray, transparent);
72
+ }
73
+ }
74
+ }
75
+
76
+ button:focus {
77
+ outline: none;
78
+ }
79
+ `;
@@ -37,5 +37,6 @@ export const Container = styled.div`
37
37
  font-family: ${FontFamily.AvenirNext};
38
38
  color: ${GlobalColors.deep_gray};
39
39
  text-align: right;
40
+ margin-top: 5px;
40
41
  }
41
- `;
42
+ `;
@@ -0,0 +1,7 @@
1
+ import { PercentTag } from ".";
2
+
3
+ export default { title: "Components/atoms/PercentTag", component: PercentTag };
4
+
5
+ const Template = (args) => <PercentTag {...args} />;
6
+ export const PercentTagDefault = Template.bind({});
7
+ PercentTagDefault.args = { percent: 88, progressBarType: "AA" };
@@ -0,0 +1,9 @@
1
+ import { Container } from "./styles";
2
+
3
+ export const PercentTag = ({ percent, progressBarType }) => {
4
+ return (
5
+ <Container className={`status-${progressBarType}`}>
6
+ <p>{percent}%</p>
7
+ </Container>
8
+ );
9
+ };
@@ -0,0 +1,69 @@
1
+ import styled from "styled-components";
2
+ import { GlobalColors, FontFamily } from "../../../global-files/variables";
3
+
4
+ export const Container = styled.div`
5
+ background-color: ${GlobalColors.s3};
6
+ display: inline-block;
7
+ padding: 0 10px;
8
+ border-radius: 5px;
9
+ font-family: ${FontFamily.Lato};
10
+ font-weight: 600;
11
+ font-size: 12px;
12
+ line-height: 20px;
13
+ color: ${(backgroundColor) =>
14
+ backgroundColor === "s2" || backgroundColor === "s1"
15
+ ? GlobalColors.s4
16
+ : GlobalColors.white};
17
+
18
+ &.status-CA,
19
+ &.status-IE {
20
+ background-color: ${GlobalColors.in_progress};
21
+ }
22
+
23
+ &.status-R,
24
+ &.status-AS,
25
+ &.status-PA {
26
+ background-color: ${GlobalColors.reception};
27
+ }
28
+
29
+ &.status-AA,
30
+ &.status-AP,
31
+ &.status-ACA,
32
+ &.status-AC {
33
+ background-color: ${GlobalColors.finished};
34
+ }
35
+
36
+ &.status-RA,
37
+ &.status-RC,
38
+ &.status-RP,
39
+ &.status-RCA {
40
+ background-color: ${GlobalColors.rejected_status};
41
+ }
42
+
43
+ &.status-Dat,
44
+ &.status-Dsc,
45
+ &.status-Imgs {
46
+ background-color: ${GlobalColors.s4};
47
+ }
48
+
49
+ &.status-Ex {
50
+ background-color: ${GlobalColors.exported};
51
+ }
52
+
53
+ &.status-DDI {
54
+ background-color: ${GlobalColors.original_purpura};
55
+ }
56
+
57
+ &.status-GLD {
58
+ background-color: ${GlobalColors.in_progress};
59
+ }
60
+
61
+ &.status-TAB {
62
+ background-color: ${GlobalColors.deep_gray};
63
+ }
64
+
65
+ &.status-Pt {
66
+ background-color: ${GlobalColors.s2};
67
+ color: ${GlobalColors.s4};
68
+ }
69
+ `;
@@ -0,0 +1,10 @@
1
+ import { RatingStars } from ".";
2
+
3
+ export default {
4
+ title: "Components/atoms/RatingStars",
5
+ component: RatingStars,
6
+ };
7
+
8
+ const Template = (args) => <RatingStars {...args} />;
9
+ export const RatingStarsDefault = Template.bind({});
10
+ RatingStarsDefault.args = { percent: 80 };
@@ -0,0 +1,31 @@
1
+ import { Container } from "./styles";
2
+ import { faStar as starIcon } from "@fortawesome/free-regular-svg-icons";
3
+ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
4
+ import { useEffect } from "react";
5
+ import { useState } from "react";
6
+
7
+ export const RatingStars = ({ ratingValue = 0 }) => {
8
+ const [rating, setRating] = useState(0);
9
+
10
+ const handleRating = (value) => {
11
+ setRating(value);
12
+ };
13
+
14
+ useEffect(() => {
15
+ setRating(ratingValue);
16
+ }, []);
17
+
18
+ return (
19
+ <Container>
20
+ {[...Array(5)].map((_, index) => (
21
+ <span
22
+ key={index}
23
+ className={`star ${index < rating ? "active" : ""}`}
24
+ onClick={() => handleRating(index + 1)}
25
+ >
26
+
27
+ </span>
28
+ ))}
29
+ </Container>
30
+ );
31
+ };
@@ -0,0 +1,28 @@
1
+ import styled from "styled-components";
2
+
3
+ export const Container = styled.div`
4
+ font-size: 10px;
5
+ display: flex;
6
+ align-items: center;
7
+
8
+ .star {
9
+ cursor: pointer;
10
+ font-size: 12px;
11
+ color: #d9d9d9;
12
+ transition: color 0.3s;
13
+ line-height: 10px;
14
+
15
+ &:hover {
16
+ color: gold;
17
+ }
18
+
19
+ &.active {
20
+ transform: scale(1.2);
21
+ color: #8a6caa;
22
+ }
23
+
24
+ &:not(:first-child) {
25
+ margin-left: 5px;
26
+ }
27
+ }
28
+ `;
@@ -0,0 +1,36 @@
1
+ import { RetailerCatalog } from ".";
2
+
3
+ export default {
4
+ title: "Components/atoms/RetailerCatalog",
5
+ component: RetailerCatalog,
6
+ };
7
+
8
+ const Template = (args) => <RetailerCatalog {...args} />;
9
+ export const RetailerCatalogDefault = Template.bind({});
10
+ RetailerCatalogDefault.args = {
11
+ limit: 3,
12
+ articleId: 39474,
13
+ orderId: 15270,
14
+ retailers: [
15
+ {
16
+ id: 58,
17
+ name: "The Home Depot Golden",
18
+ },
19
+ {
20
+ id: 59,
21
+ name: "The Home Depot Platinum",
22
+ },
23
+ {
24
+ id: 60,
25
+ name: "The Home Depot Resizing",
26
+ },
27
+ {
28
+ id: 61,
29
+ name: "Home Depot TAB",
30
+ },
31
+ {
32
+ id: 68,
33
+ name: "The Home Depot Dropship",
34
+ },
35
+ ],
36
+ };
@@ -0,0 +1,49 @@
1
+ import { useState } from "react";
2
+ import { Avatar } from "../Avatar";
3
+ import { Container } from "./styles";
4
+ import { useEffect } from "react";
5
+ import { useCloseModal } from "../../../global-files/customHooks";
6
+ import { RetailersList } from "../RetailersList";
7
+
8
+ export const RetailerCatalog = ({
9
+ retailers = [],
10
+ limit = 3,
11
+ article,
12
+ id = "retailers-catalog",
13
+ }) => {
14
+ const [retLimit, setRetLimit] = useState(0);
15
+ const [showRetailers, setShowRetailers] = useCloseModal(id);
16
+
17
+ useEffect(() => {
18
+ setRetLimit(limit);
19
+ }, [retailers]);
20
+
21
+ return (
22
+ <Container
23
+ onClick={(e) => {
24
+ setShowRetailers(!showRetailers);
25
+ }}
26
+ id={id}
27
+ >
28
+ {retailers.map(
29
+ (retailer, i) =>
30
+ i < limit && (
31
+ <Avatar
32
+ key={retailer.id + "-" + i}
33
+ image={`https://content-management-images.s3.amazonaws.com/retailers/${retailer.id}.png`}
34
+ altText={retailer?.name}
35
+ imageType={"medium-image"}
36
+ />
37
+ )
38
+ )}
39
+ {retailers.length > retLimit && (
40
+ <div className="retailers-limit">
41
+ <p>+{retailers.length - retLimit}</p>
42
+ </div>
43
+ )}
44
+ {showRetailers && (
45
+ <RetailersList retailers={retailers} article={article} />
46
+ )}
47
+ </Container>
48
+ );
49
+ };
@@ -0,0 +1,30 @@
1
+ import styled from "styled-components";
2
+ import { FontFamily } from "../../../global-files/variables";
3
+
4
+ export const Container = styled.div`
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: center;
8
+ cursor: pointer;
9
+ position: relative;
10
+ width: 100%;
11
+
12
+ .retailers-limit {
13
+ width: 26px;
14
+ height: 26px;
15
+ border-radius: 50%;
16
+ background-color: #f0f0f0;
17
+
18
+ p {
19
+ font-family: ${FontFamily.Lato};
20
+ font-size: 12px;
21
+ line-height: 26px;
22
+ color: #262626;
23
+ text-align: center;
24
+ }
25
+ }
26
+
27
+ > * + * {
28
+ margin-left: -5px;
29
+ }
30
+ `;
@@ -0,0 +1,15 @@
1
+ import { RetailerOption } from ".";
2
+
3
+ export default {
4
+ title: "Components/atoms/RetailerOptions",
5
+ component: RetailerOption,
6
+ };
7
+
8
+ const Template = (args) => <RetailerOption {...args} />;
9
+ export const RetailerOptionDefault = Template.bind({});
10
+ RetailerOptionDefault.args = {
11
+ retailer: {
12
+ id: 58,
13
+ name: "The Home Depot Golden",
14
+ },
15
+ };
@@ -0,0 +1,53 @@
1
+ import { useState } from "react";
2
+ import { Avatar } from "../Avatar";
3
+ import { Container } from "./styles";
4
+ import { useEffect } from "react";
5
+
6
+ export const RetailerOption = ({ retailer, services = {} }) => {
7
+ const [service, setService] = useState([]);
8
+
9
+ useEffect(() => {
10
+ if (services[retailer.id]) {
11
+ setService(Object.keys(services[retailer.id]));
12
+ }
13
+ }, [services]);
14
+
15
+ return (
16
+ <Container>
17
+ <div className="avatar-and-retailer">
18
+ <Avatar
19
+ image={`https://content-management-images.s3.amazonaws.com/retailers/${retailer.id}.png`}
20
+ altText={retailer?.name}
21
+ imageType={"medium-image"}
22
+ />
23
+ <p className="retailer-name">{retailer?.name}</p>
24
+ </div>
25
+ <div className="services-icons">
26
+ <span
27
+ key="datasheet"
28
+ className={`material-icons small ${
29
+ service.includes("datasheet") && "is-active"
30
+ }`}
31
+ >
32
+ &#xf8ee;
33
+ </span>
34
+ <span
35
+ key="description"
36
+ className={`material-icons small ${
37
+ service.includes("description") && "is-active"
38
+ }`}
39
+ >
40
+ &#xe873;
41
+ </span>
42
+ <span
43
+ key="images"
44
+ className={`material-icons small ${
45
+ service.includes("images") && "is-active"
46
+ }`}
47
+ >
48
+ &#xe3f4;
49
+ </span>
50
+ </div>
51
+ </Container>
52
+ );
53
+ };
@@ -0,0 +1,41 @@
1
+ import styled from "styled-components";
2
+ import { FontFamily } from "../../../global-files/variables";
3
+
4
+ export const Container = styled.div`
5
+ display: flex;
6
+ padding: 7px;
7
+ border: 1px solid #f0f0f0;
8
+ align-items: center;
9
+ justify-content: space-between;
10
+ border-radius: 5px;
11
+
12
+ .avatar-and-retailer {
13
+ display: flex;
14
+ align-items: center;
15
+ .retailer-name {
16
+ font-family: ${FontFamily.Lato};
17
+ font-size: 12px;
18
+ color: #262626;
19
+ }
20
+
21
+ > * + * {
22
+ margin-left: 10px;
23
+ }
24
+ }
25
+
26
+ .services-icons {
27
+ display: flex;
28
+
29
+ span {
30
+ color: #f0f0f0;
31
+ font-size: 14px;
32
+ &.is-active {
33
+ color: #8a6caa;
34
+ }
35
+ }
36
+
37
+ > * + * {
38
+ margin-left: 9px;
39
+ }
40
+ }
41
+ `;
@@ -0,0 +1,33 @@
1
+ import { RetailersList } from ".";
2
+
3
+ export default {
4
+ title: "Components/atoms/RetailersList",
5
+ component: RetailersList,
6
+ };
7
+
8
+ const Template = (args) => <RetailersList {...args} />;
9
+ export const RetailersListDefault = Template.bind({});
10
+ RetailersListDefault.args = {
11
+ retailers: [
12
+ {
13
+ id: 58,
14
+ name: "The Home Depot Golden",
15
+ },
16
+ {
17
+ id: 59,
18
+ name: "The Home Depot Platinum",
19
+ },
20
+ {
21
+ id: 60,
22
+ name: "The Home Depot Resizing",
23
+ },
24
+ {
25
+ id: 61,
26
+ name: "Home Depot TAB",
27
+ },
28
+ {
29
+ id: 68,
30
+ name: "The Home Depot Dropship",
31
+ },
32
+ ],
33
+ };
@@ -0,0 +1,20 @@
1
+ import { Container } from "./styles";
2
+ import { RetailerOption } from "../RetailerOption";
3
+ import { useState, useEffect } from "react";
4
+ import axios from "axios";
5
+
6
+ export const RetailersList = ({ retailers, article, id }) => {
7
+ const [services, setServices] = useState({});
8
+
9
+ useEffect(() => {
10
+ if (article) setServices(article.statusByRetailer);
11
+ }, [article]);
12
+
13
+ return (
14
+ <Container id={id}>
15
+ {retailers.map((retailer, i) => (
16
+ <RetailerOption key={i} retailer={retailer} services={services} />
17
+ ))}
18
+ </Container>
19
+ );
20
+ };
@@ -0,0 +1,19 @@
1
+ import styled from "styled-components";
2
+
3
+ export const Container = styled.div`
4
+ width: 370px;
5
+ max-height: 200px;
6
+ overflow: auto;
7
+ position: absolute;
8
+ z-index: 500;
9
+ right: 0%;
10
+ top: 100%;
11
+ border: 1px solid #f0f0f0;
12
+ padding: 10px;
13
+ padding-right: 5px;
14
+ background-color: white;
15
+
16
+ > * + * {
17
+ margin-top: 5px;
18
+ }
19
+ `;
@@ -46,7 +46,7 @@ export const Slider = styled.div`
46
46
  }
47
47
  &.bottom-slide {
48
48
  top: 100%;
49
- right: calc(100% + -70px);
49
+ right: calc(100% + -100px);
50
50
  }
51
51
  ul,
52
52
  li {
@@ -20,4 +20,4 @@ export const Container = styled.div`
20
20
  & + * {
21
21
  margin-left: 10px;
22
22
  }
23
- `;
23
+ `;