contentoh-components-library 21.3.19 → 21.3.20

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 (196) hide show
  1. package/.env.development +5 -0
  2. package/dist/assets/images/customSelect/starIcon.svg +14 -0
  3. package/dist/assets/images/defaultImages/Spinner.gif +0 -0
  4. package/dist/assets/images/defaultImages/notFound.svg +124 -0
  5. package/dist/assets/images/generalButton/closeIcon.svg +2 -2
  6. package/dist/assets/sounds/newMessage.mp3 +0 -0
  7. package/dist/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +72 -0
  8. package/dist/components/atoms/ButtonFileChooser/index.js +110 -0
  9. package/dist/components/atoms/ButtonFileChooser/styles.js +20 -0
  10. package/dist/components/atoms/ButtonV2/ButtonV2.stories.js +66 -0
  11. package/dist/components/atoms/ButtonV2/index.js +110 -0
  12. package/dist/components/atoms/ButtonV2/styles.js +53 -0
  13. package/dist/components/atoms/CustomIcon/CustomIcon.stories.js +50 -0
  14. package/dist/components/atoms/CustomIcon/index.js +40 -0
  15. package/dist/components/atoms/CustomIcon/styles.js +33 -0
  16. package/dist/components/atoms/IconFile/IconFile.stories.js +48 -0
  17. package/dist/components/atoms/IconFile/index.js +249 -0
  18. package/dist/components/atoms/IconFile/styles.js +23 -0
  19. package/dist/components/atoms/Image/Image.stories.js +73 -0
  20. package/dist/components/atoms/Image/index.js +76 -0
  21. package/dist/components/atoms/Image/styles.js +43 -0
  22. package/dist/components/atoms/ImageLink/ImageLink.stories.js +63 -0
  23. package/dist/components/atoms/ImageLink/index.js +77 -0
  24. package/dist/components/atoms/ImageLink/styles.js +40 -0
  25. package/dist/components/atoms/ImagePreview/ImagePreview.stories.js +70 -0
  26. package/dist/components/atoms/ImagePreview/index.js +208 -0
  27. package/dist/components/atoms/ImagePreview/styles.js +44 -0
  28. package/dist/components/atoms/InputText/InputText.stories.js +60 -0
  29. package/dist/components/atoms/InputText/index.js +66 -0
  30. package/dist/components/atoms/InputText/styles.js +32 -0
  31. package/dist/components/atoms/NotFound/NotFound.stories.js +36 -0
  32. package/dist/components/atoms/NotFound/index.js +75 -0
  33. package/dist/components/atoms/NotFound/styles.js +20 -0
  34. package/dist/components/atoms/ProgressBar/index.js +36 -6
  35. package/dist/components/atoms/ProgressBar/styles.js +11 -3
  36. package/dist/components/atoms/SelectItemV2/SelectItemV2.stories.js +45 -0
  37. package/dist/components/atoms/SelectItemV2/index.js +57 -0
  38. package/dist/components/atoms/SelectItemV2/styles.js +30 -0
  39. package/dist/components/atoms/Tooltip/Tooltip.stories.js +66 -0
  40. package/dist/components/atoms/Tooltip/index.js +72 -0
  41. package/dist/components/atoms/Tooltip/styles.js +20 -0
  42. package/dist/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +66 -0
  43. package/dist/components/molecules/ButtonDownloadFile/index.js +179 -0
  44. package/dist/components/molecules/ButtonDownloadFile/styles.js +23 -0
  45. package/dist/components/molecules/CustomSelect/CustomSelect.stories.js +21 -22
  46. package/dist/components/molecules/CustomSelect/SelectItem.js +10 -1
  47. package/dist/components/molecules/Dropdown/Dropdown.stories.js +98 -0
  48. package/dist/components/molecules/Dropdown/index.js +150 -0
  49. package/dist/components/molecules/Dropdown/styles.js +26 -0
  50. package/dist/components/molecules/HeaderTop/index.js +23 -6
  51. package/dist/components/molecules/HeaderTop/styles.js +1 -1
  52. package/dist/components/molecules/ImageTooltip/ImageTooltip.stories.js +82 -0
  53. package/dist/components/molecules/ImageTooltip/index.js +85 -0
  54. package/dist/components/molecules/ImageTooltip/styles.js +33 -0
  55. package/dist/components/molecules/ProductNameHeader/index.js +6 -4
  56. package/dist/components/molecules/SelectV2/SelectV2.stories.js +120 -0
  57. package/dist/components/molecules/SelectV2/index.js +306 -0
  58. package/dist/components/molecules/SelectV2/styles.js +42 -0
  59. package/dist/components/molecules/SelectV2/test.js +94 -0
  60. package/dist/components/molecules/SelectV2/test.stories.js +27 -0
  61. package/dist/components/organisms/Chat/Chat.stories.js +160 -0
  62. package/dist/components/organisms/Chat/ChatLists/ChatLists.stories.js +83 -0
  63. package/dist/components/organisms/Chat/ChatLists/index.js +160 -0
  64. package/dist/components/organisms/Chat/ChatLists/styles.js +29 -0
  65. package/dist/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +176 -0
  66. package/dist/components/organisms/Chat/ContainerItems/index.js +537 -0
  67. package/dist/components/organisms/Chat/ContainerItems/styles.js +20 -0
  68. package/dist/components/organisms/Chat/ContentChat/ContentChat.stories.js +142 -0
  69. package/dist/components/organisms/Chat/ContentChat/index.js +1466 -0
  70. package/dist/components/organisms/Chat/ContentChat/styles.js +20 -0
  71. package/dist/components/organisms/Chat/Footer/Footer.stories.js +43 -0
  72. package/dist/components/organisms/Chat/Footer/index.js +976 -0
  73. package/dist/components/organisms/Chat/Footer/styles.js +32 -0
  74. package/dist/components/organisms/Chat/Header/Header.stories.js +96 -0
  75. package/dist/components/organisms/Chat/Header/index.js +83 -0
  76. package/dist/components/organisms/Chat/Header/styles.js +20 -0
  77. package/dist/components/organisms/Chat/index.js +253 -0
  78. package/dist/components/organisms/Chat/styles.js +29 -0
  79. package/dist/components/organisms/FullProductNameHeader/index.js +1 -0
  80. package/dist/components/organisms/Modal/Modal.stories.js +66 -0
  81. package/dist/components/organisms/Modal/index.js +95 -0
  82. package/dist/components/organisms/Modal/styles.js +20 -0
  83. package/dist/components/organisms/RangeCalendar/RangeCalendar.stories.js +33 -0
  84. package/dist/components/organisms/RangeCalendar/index.js +149 -0
  85. package/dist/components/organisms/RangeCalendar/styles.js +27 -0
  86. package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +65 -50
  87. package/dist/components/pages/ProviderProductEdition/index.js +15 -11
  88. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +36 -44
  89. package/dist/components/pages/RetailerProductEdition/index.js +13 -12
  90. package/dist/global-files/data.js +18 -23
  91. package/dist/global-files/fonts.css +6 -0
  92. package/dist/global-files/handle_http.js +381 -0
  93. package/dist/global-files/handle_userTech.js +20 -0
  94. package/dist/global-files/utils.js +514 -0
  95. package/dist/global-files/variables.js +2 -0
  96. package/dist/index.js +267 -46
  97. package/package.json +13 -1
  98. package/src/assets/images/customSelect/starIcon.svg +14 -0
  99. package/src/assets/images/defaultImages/Spinner.gif +0 -0
  100. package/src/assets/images/defaultImages/notFound.svg +124 -0
  101. package/src/assets/images/generalButton/closeIcon.svg +2 -2
  102. package/src/assets/sounds/newMessage.mp3 +0 -0
  103. package/src/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +47 -0
  104. package/src/components/atoms/ButtonFileChooser/index.js +68 -0
  105. package/src/components/atoms/ButtonFileChooser/styles.js +4 -0
  106. package/src/components/atoms/ButtonV2/ButtonV2.stories.js +53 -0
  107. package/src/components/atoms/ButtonV2/index.js +85 -0
  108. package/src/components/atoms/ButtonV2/styles.js +217 -0
  109. package/src/components/atoms/CustomIcon/CustomIcon.stories.js +36 -0
  110. package/src/components/atoms/CustomIcon/index.js +41 -0
  111. package/src/components/atoms/CustomIcon/styles.js +85 -0
  112. package/src/components/atoms/IconFile/IconFile.stories.js +35 -0
  113. package/src/components/atoms/IconFile/index.js +119 -0
  114. package/src/components/atoms/IconFile/styles.js +67 -0
  115. package/src/components/atoms/Image/Image.stories.js +51 -0
  116. package/src/components/atoms/Image/index.js +55 -0
  117. package/src/components/atoms/Image/styles.js +34 -0
  118. package/src/components/atoms/ImageLink/ImageLink.stories.js +43 -0
  119. package/src/components/atoms/ImageLink/index.js +57 -0
  120. package/src/components/atoms/ImageLink/styles.js +30 -0
  121. package/src/components/atoms/ImagePreview/ImagePreview.stories.js +52 -0
  122. package/src/components/atoms/ImagePreview/index.js +178 -0
  123. package/src/components/atoms/ImagePreview/styles.js +77 -0
  124. package/src/components/atoms/InputText/InputText.stories.js +39 -0
  125. package/src/components/atoms/InputText/index.js +61 -0
  126. package/src/components/atoms/InputText/styles.js +89 -0
  127. package/src/components/atoms/NotFound/NotFound.stories.js +19 -0
  128. package/src/components/atoms/NotFound/index.js +52 -0
  129. package/src/components/atoms/NotFound/styles.js +55 -0
  130. package/src/components/atoms/ProgressBar/index.js +40 -5
  131. package/src/components/atoms/ProgressBar/styles.js +24 -0
  132. package/src/components/atoms/SelectItemV2/SelectItemV2.stories.js +26 -0
  133. package/src/components/atoms/SelectItemV2/index.js +61 -0
  134. package/src/components/atoms/SelectItemV2/styles.js +90 -0
  135. package/src/components/atoms/Tooltip/Tooltip.stories.js +51 -0
  136. package/src/components/atoms/Tooltip/index.js +59 -0
  137. package/src/components/atoms/Tooltip/styles.js +42 -0
  138. package/src/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +54 -0
  139. package/src/components/molecules/ButtonDownloadFile/index.js +109 -0
  140. package/src/components/molecules/ButtonDownloadFile/styles.js +66 -0
  141. package/src/components/molecules/CustomSelect/CustomSelect.stories.js +20 -12
  142. package/src/components/molecules/CustomSelect/SelectItem.js +7 -0
  143. package/src/components/molecules/Dropdown/Dropdown.stories.js +103 -0
  144. package/src/components/molecules/Dropdown/index.js +150 -0
  145. package/src/components/molecules/Dropdown/styles.js +75 -0
  146. package/src/components/molecules/HeaderTop/index.js +29 -8
  147. package/src/components/molecules/HeaderTop/styles.js +4 -0
  148. package/src/components/molecules/ImageTooltip/ImageTooltip.stories.js +68 -0
  149. package/src/components/molecules/ImageTooltip/index.js +63 -0
  150. package/src/components/molecules/ImageTooltip/styles.js +18 -0
  151. package/src/components/molecules/ProductNameHeader/index.js +7 -2
  152. package/src/components/molecules/SelectV2/SelectV2.stories.js +115 -0
  153. package/src/components/molecules/SelectV2/index.js +357 -0
  154. package/src/components/molecules/SelectV2/styles.js +105 -0
  155. package/src/components/molecules/SelectV2/test.js +60 -0
  156. package/src/components/molecules/SelectV2/test.stories.js +10 -0
  157. package/src/components/organisms/Chat/Chat.stories.js +147 -0
  158. package/src/components/organisms/Chat/ChatLists/ChatLists.stories.js +65 -0
  159. package/src/components/organisms/Chat/ChatLists/Rotoplas.jpeg +0 -0
  160. package/src/components/organisms/Chat/ChatLists/THD.png +0 -0
  161. package/src/components/organisms/Chat/ChatLists/index.js +141 -0
  162. package/src/components/organisms/Chat/ChatLists/styles.js +162 -0
  163. package/src/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +142 -0
  164. package/src/components/organisms/Chat/ContainerItems/index.js +512 -0
  165. package/src/components/organisms/Chat/ContainerItems/styles.js +328 -0
  166. package/src/components/organisms/Chat/ContentChat/ContentChat.stories.js +102 -0
  167. package/src/components/organisms/Chat/ContentChat/Rotoplas.jpeg +0 -0
  168. package/src/components/organisms/Chat/ContentChat/THD.png +0 -0
  169. package/src/components/organisms/Chat/ContentChat/index.js +919 -0
  170. package/src/components/organisms/Chat/ContentChat/styles.js +41 -0
  171. package/src/components/organisms/Chat/Footer/Footer.stories.js +22 -0
  172. package/src/components/organisms/Chat/Footer/index.js +661 -0
  173. package/src/components/organisms/Chat/Footer/styles.js +286 -0
  174. package/src/components/organisms/Chat/Header/Header.stories.js +66 -0
  175. package/src/components/organisms/Chat/Header/index.js +93 -0
  176. package/src/components/organisms/Chat/Header/styles.js +49 -0
  177. package/src/components/organisms/Chat/index.js +235 -0
  178. package/src/components/organisms/Chat/styles.js +42 -0
  179. package/src/components/organisms/FullProductNameHeader/index.js +1 -0
  180. package/src/components/organisms/Modal/Modal.stories.js +55 -0
  181. package/src/components/organisms/Modal/index.js +97 -0
  182. package/src/components/organisms/Modal/styles.js +103 -0
  183. package/src/components/organisms/RangeCalendar/RangeCalendar.stories.js +16 -0
  184. package/src/components/organisms/RangeCalendar/index.js +121 -0
  185. package/src/components/organisms/RangeCalendar/styles.js +883 -0
  186. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +67 -49
  187. package/src/components/pages/ProviderProductEdition/index.js +16 -9
  188. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +36 -46
  189. package/src/components/pages/RetailerProductEdition/index.js +14 -10
  190. package/src/global-files/data.js +18 -23
  191. package/src/global-files/fonts.css +6 -0
  192. package/src/global-files/handle_http.js +225 -0
  193. package/src/global-files/handle_userTech.js +7 -0
  194. package/src/global-files/utils.js +330 -0
  195. package/src/global-files/variables.js +2 -0
  196. package/src/index.js +17 -0
@@ -0,0 +1,217 @@
1
+ import styled from "styled-components";
2
+ import { GlobalColors, FontFamily } from "../../../global-files/variables";
3
+
4
+ export const Container = styled.div`
5
+ width: fit-content;
6
+ padding: 0px;
7
+ cursor: ${({ disabled, isLoading }) =>
8
+ disabled || isLoading ? "not-allowed" : "pointer"};
9
+ border-radius: ${({ label, borderType, transparent }) => {
10
+ return borderType?.toLowerCase() === "rectangle"
11
+ ? "6px"
12
+ : borderType?.toLowerCase() === "oval"
13
+ ? "17px"
14
+ : borderType?.toLowerCase() === "circle"
15
+ ? "50%"
16
+ : transparent
17
+ ? "6px"
18
+ : label && label?.trim() !== ""
19
+ ? "17px"
20
+ : "6px"; // default rectangle
21
+ }};
22
+ border: none;
23
+
24
+ .button {
25
+ --size: ${({ size }) => (size ? size : "13")}px;
26
+ width: 100%;
27
+ min-width: min-content;
28
+ cursor: inherit;
29
+ display: flex;
30
+ flex-direction: ${({ iconPosition }) =>
31
+ iconPosition === "top"
32
+ ? "column"
33
+ : iconPosition === "right"
34
+ ? "row-reverse"
35
+ : iconPosition === "bottom"
36
+ ? "column-reverse"
37
+ : "row"};
38
+ gap: 7px;
39
+ align-items: center;
40
+ justify-content: center;
41
+ padding: ${({ label, borderType }) => {
42
+ return label && label?.trim() !== ""
43
+ ? "5px 15px" // button con label
44
+ : "5px";
45
+ }};
46
+ border-radius: inherit;
47
+ border: ${({ label, borderType, transparent }) => {
48
+ return ["rectangle", "circle", "oval"].includes(borderType?.toLowerCase())
49
+ ? "1px solid black"
50
+ : transparent
51
+ ? "none"
52
+ : label && label?.trim() !== ""
53
+ ? "1px solid black" // button con label
54
+ : "none"; // button icon sin borde
55
+ }};
56
+ font-family: ${FontFamily.RobotoMedium}, sans-serif;
57
+ font-size: var(--size);
58
+ line-height: 1.2;
59
+ text-transform: none;
60
+
61
+ // tipos de botones fill
62
+ &.fill {
63
+ &.white {
64
+ background-color: white;
65
+ color: #e33aa9;
66
+ border-color: #e33aa9;
67
+ &:hover {
68
+ background-color: #f4f4f4;
69
+ }
70
+ }
71
+ &.whiteS2 {
72
+ background-color: white;
73
+ color: #7b7979;
74
+ border-color: #f0f0f0;
75
+ &:hover {
76
+ background-color: #f4f4f4;
77
+ }
78
+ }
79
+ &.whiteS3 {
80
+ background-color: white;
81
+ color: #262626;
82
+ border-color: #f0f0f0;
83
+ &:hover {
84
+ background-color: #f4f4f4;
85
+ }
86
+ }
87
+ &.whiteS4 {
88
+ background-color: white;
89
+ color: #8a6caa;
90
+ border-color: #8a6caa;
91
+ &:hover {
92
+ background-color: #e0e0f1;
93
+ }
94
+ }
95
+ &.pink {
96
+ background-color: #e33aa9;
97
+ color: white;
98
+ border-color: #e33aa9;
99
+ &:hover {
100
+ background-color: #b42983;
101
+ }
102
+ }
103
+ &.gray {
104
+ background-color: #e8e5e5;
105
+ color: #262626;
106
+ border-color: #7b7979;
107
+ .icon,
108
+ .iconLoading {
109
+ color: #7b7979;
110
+ }
111
+ &:hover {
112
+ background-color: #d6d3d3;
113
+ }
114
+ }
115
+ &.purple {
116
+ background-color: #f7f7fc;
117
+ color: #8a6caa;
118
+ border-color: #8a6caa;
119
+ &:hover {
120
+ background-color: #e0e0f1;
121
+ }
122
+ }
123
+ &.purpleS2 {
124
+ background-color: #8a6caa;
125
+ color: white;
126
+ border-color: #8a6caa;
127
+ &:hover {
128
+ background-color: #61467e;
129
+ }
130
+ }
131
+ }
132
+
133
+ // tipos de botones transparent
134
+ &.transparent {
135
+ &:hover {
136
+ background-color: transparent;
137
+ }
138
+ &.white {
139
+ color: white;
140
+ border-color: #e33aa9;
141
+ &:hover {
142
+ color: #d6d4d4;
143
+ }
144
+ }
145
+ &.pink {
146
+ color: #e33aa9;
147
+ border-color: #e33aa9;
148
+ &:hover {
149
+ color: #b42983;
150
+ }
151
+ }
152
+ &.gray {
153
+ color: #262626;
154
+ border-color: #7b7979;
155
+ .icon,
156
+ .iconLoading {
157
+ color: #7b7979;
158
+ transition: inherit;
159
+ }
160
+ &:hover {
161
+ color: #7b7979;
162
+ .icon,
163
+ .iconLoading {
164
+ color: #bdbbbb;
165
+ }
166
+ }
167
+ }
168
+ &.purple {
169
+ color: #8a6caa;
170
+ border-color: #8a6caa;
171
+ &:hover {
172
+ color: #714f95;
173
+ }
174
+ }
175
+ &.black {
176
+ color: #262626;
177
+ border-color: #262626;
178
+ &:hover {
179
+ color: #7b7979;
180
+ }
181
+ }
182
+ }
183
+
184
+ .icon,
185
+ .iconLoading {
186
+ display: grid;
187
+ place-items: center;
188
+ color: inherit;
189
+ font-size: ${({ label }) => {
190
+ return label && label?.trim() !== ""
191
+ ? "calc(var(--size) + 3px)" // button with label
192
+ : "var(--size)"; // button icon
193
+ }};
194
+ }
195
+ .iconLoading {
196
+ font-size: ${({ icon }) => !icon && "var(--size)"};
197
+ }
198
+
199
+ // mismo estilo desabilitado para cualquier tipo de boton
200
+ &:disabled {
201
+ background-color: #fcebf7 !important;
202
+ color: #7b7979 !important;
203
+ border-color: #7b7979 !important;
204
+
205
+ .icon {
206
+ color: #9e9c9c !important;
207
+ }
208
+ .iconLoading {
209
+ color: #9e2674 !important;
210
+ }
211
+
212
+ &:hover {
213
+ background-color: #fcebf7 !important;
214
+ }
215
+ }
216
+ }
217
+ `;
@@ -0,0 +1,36 @@
1
+ import { CustomIcon } from "./index";
2
+ import { faCamera as iconCamera } from "@fortawesome/free-solid-svg-icons";
3
+
4
+ export default {
5
+ title: "Components/atoms/CustomIcon",
6
+ component: CustomIcon,
7
+ argTypes: {
8
+ type: {
9
+ options: [
10
+ undefined,
11
+ "white",
12
+ "whiteS2",
13
+ "pink",
14
+ "gray",
15
+ "purple",
16
+ "black",
17
+ ],
18
+ control: { type: "select" },
19
+ },
20
+ borderType: {
21
+ options: [undefined, "rectangle", "circle"],
22
+ control: { type: "select" },
23
+ },
24
+ },
25
+ };
26
+
27
+ const Template = (args) => <CustomIcon {...args} />;
28
+
29
+ export const ButtonTest = Template.bind({});
30
+ ButtonTest.args = {
31
+ type: undefined,
32
+ transparent: false,
33
+ borderType: undefined,
34
+ size: "20",
35
+ icon: iconCamera,
36
+ };
@@ -0,0 +1,41 @@
1
+ import { Container } from "./styles";
2
+ import { FontAwesomeIcon as Icon } from "@fortawesome/react-fontawesome";
3
+ import React from "react";
4
+
5
+ export const CustomIcon = (props) => {
6
+ const {
7
+ id,
8
+ key,
9
+ className,
10
+ type, // white | whiteS2 | pink | gray || purple | black => (default white)
11
+ transparent, // boolean
12
+ size, // number ... default (13)
13
+ borderType, // rectangle || circle (default)
14
+ icon, // icon fontawesome
15
+ } = props;
16
+
17
+ return (
18
+ <>
19
+ {icon ? (
20
+ <Container
21
+ id={id}
22
+ key={key}
23
+ className={
24
+ "container-icon " +
25
+ (["white", "whiteS2", "pink", "gray", "purple", "black"].includes(
26
+ type
27
+ )
28
+ ? type
29
+ : "white") +
30
+ (transparent ? " transparent " : " fill ") +
31
+ className
32
+ }
33
+ borderType={borderType}
34
+ size={size}
35
+ >
36
+ <Icon icon={icon} />
37
+ </Container>
38
+ ) : null}
39
+ </>
40
+ );
41
+ };
@@ -0,0 +1,85 @@
1
+ import styled from "styled-components";
2
+ import { GlobalColors, FontFamily } from "../../../global-files/variables";
3
+
4
+ export const Container = styled.i`
5
+ width: fit-content;
6
+ min-width: min-content;
7
+ cursor: default;
8
+ display: grid;
9
+ place-items: center;
10
+ font-size: ${({ size }) => (size ? size : "13")}px;
11
+ border-radius: ${({ borderType }) => {
12
+ return borderType?.toLowerCase() === "rectangle"
13
+ ? "6px"
14
+ : borderType?.toLowerCase() === "circle"
15
+ ? "50%"
16
+ : "0px";
17
+ }};
18
+ padding: ${({ borderType }) => {
19
+ return ["rectangle", "circle"].includes(borderType?.toLowerCase())
20
+ ? "5px"
21
+ : "0px";
22
+ }};
23
+ border: ${({ borderType, transparent }) => {
24
+ return ["rectangle", "circle"].includes(borderType?.toLowerCase())
25
+ ? "1px solid black"
26
+ : "none";
27
+ }};
28
+
29
+ // tipos de iconos fill
30
+ &.fill {
31
+ &.white {
32
+ background-color: white;
33
+ color: #e33aa9;
34
+ border-color: #e33aa9;
35
+ }
36
+ &.whiteS2 {
37
+ background-color: white;
38
+ color: #7b7979;
39
+ border-color: #f0f0f0;
40
+ }
41
+ &.pink {
42
+ background-color: #e33aa9;
43
+ color: white;
44
+ border-color: #e33aa9;
45
+ }
46
+ &.gray {
47
+ background-color: #e8e5e5;
48
+ border-color: #7b7979;
49
+ color: #7b7979;
50
+ }
51
+ &.purple {
52
+ background-color: #f7f7fc;
53
+ color: #8a6caa;
54
+ border-color: #8a6caa;
55
+ }
56
+ }
57
+
58
+ // tipos de iconos transparent
59
+ &.transparent {
60
+ &.white {
61
+ color: white;
62
+ border-color: #e33aa9;
63
+ }
64
+ &.whiteS2 {
65
+ color: #7b7979;
66
+ border-color: #f0f0f0;
67
+ }
68
+ &.pink {
69
+ color: #e33aa9;
70
+ border-color: #e33aa9;
71
+ }
72
+ &.gray {
73
+ color: #7b7979;
74
+ border-color: #7b7979;
75
+ }
76
+ &.purple {
77
+ color: #8a6caa;
78
+ border-color: #8a6caa;
79
+ }
80
+ &.black {
81
+ color: #262626;
82
+ border-color: #262626;
83
+ }
84
+ }
85
+ `;
@@ -0,0 +1,35 @@
1
+ import { IconFile } from "./index";
2
+
3
+ export default {
4
+ title: "Components/atoms/IconFile",
5
+ component: IconFile,
6
+ argTypes: {
7
+ type: {
8
+ options: [
9
+ undefined,
10
+ "white",
11
+ "whiteS2",
12
+ "pink",
13
+ "gray",
14
+ "purple",
15
+ "black",
16
+ ],
17
+ control: { type: "select" },
18
+ },
19
+ borderType: {
20
+ options: [undefined, "rectangle", "circle"],
21
+ control: { type: "select" },
22
+ },
23
+ },
24
+ };
25
+
26
+ const Template = (args) => <IconFile {...args} />;
27
+
28
+ export const ButtonTest = Template.bind({});
29
+ ButtonTest.args = {
30
+ type: undefined,
31
+ transparent: false,
32
+ borderType: undefined,
33
+ size: "100",
34
+ ext: "doc",
35
+ };
@@ -0,0 +1,119 @@
1
+ import { Container } from "./styles";
2
+ import {
3
+ faFileExcel as IconFileExcel,
4
+ faFileWord as IconFileWord,
5
+ faFilePdf as IconFilePdf,
6
+ faFileCsv as IconFileCsv,
7
+ faFileImage as IconFileImg,
8
+ faFilePowerpoint as IconFilePowerPoint,
9
+ faFileZipper as IconFileZip,
10
+ faFileCode as IconFileCode,
11
+ faFileAudio as IconFileAudio,
12
+ faFileLines as IconFileDefault,
13
+ faFileVideo as IconFileVideo,
14
+ } from "@fortawesome/free-solid-svg-icons";
15
+ import React, { useRef } from "react";
16
+ import { CustomIcon } from "../CustomIcon";
17
+
18
+ export const IconFile = (props) => {
19
+ const {
20
+ id,
21
+ key,
22
+ className,
23
+ type, // white | whiteS2 | pink | gray | purple | black => (default -> white)
24
+ transparent, // boolean
25
+ size, // number ... default (13)
26
+ borderType, // rectangle || circle || (cualquier otro valor -> no borde)
27
+ ext, // extension del file
28
+ } = props;
29
+ const extensions = {
30
+ // file word
31
+ docx: { icon: IconFileWord, type: "word" },
32
+ docm: { icon: IconFileWord, type: "word" },
33
+ doc: { icon: IconFileWord, type: "word" },
34
+ docs: { icon: IconFileWord, type: "word" },
35
+
36
+ // file excel
37
+ xls: { icon: IconFileExcel, type: "excel" },
38
+ xlsm: { icon: IconFileExcel, type: "excel" },
39
+ xlsx: { icon: IconFileExcel, type: "excel" },
40
+ tsv: { icon: IconFileExcel, type: "excel" },
41
+ // file csv
42
+ csv: { icon: IconFileCsv, type: "csv" },
43
+ // file image
44
+ svg: { icon: IconFileImg, type: "image" },
45
+ gif: { icon: IconFileImg, type: "image" },
46
+ // file pdf
47
+ pdf: { icon: IconFilePdf, type: "pdf" },
48
+ // file power point
49
+ pot: { icon: IconFilePowerPoint, type: "powerPoint" },
50
+ potm: { icon: IconFilePowerPoint, type: "powerPoint" },
51
+ potx: { icon: IconFilePowerPoint, type: "powerPoint" },
52
+ pps: { icon: IconFilePowerPoint, type: "powerPoint" },
53
+ ppsm: { icon: IconFilePowerPoint, type: "powerPoint" },
54
+ ppsx: { icon: IconFilePowerPoint, type: "powerPoint" },
55
+ ppt: { icon: IconFilePowerPoint, type: "powerPoint" },
56
+ pptm: { icon: IconFilePowerPoint, type: "powerPoint" },
57
+ pptx: { icon: IconFilePowerPoint, type: "powerPoint" },
58
+
59
+ // file zip
60
+ rar: { icon: IconFileZip, type: "zip" },
61
+ zip: { icon: IconFileZip, type: "zip" },
62
+ tar: { icon: IconFileZip, type: "zip" },
63
+
64
+ // file code
65
+ xml: { icon: IconFileCode, type: "code" },
66
+ htm: { icon: IconFileCode, type: "code" },
67
+ html: { icon: IconFileCode, type: "code" },
68
+ css: { icon: IconFileCode, type: "code" },
69
+ js: { icon: IconFileCode, type: "code" },
70
+ jsx: { icon: IconFileCode, type: "code" },
71
+ ts: { icon: IconFileCode, type: "code" },
72
+ tsx: { icon: IconFileCode, type: "code" },
73
+ cpp: { icon: IconFileCode, type: "code" },
74
+ c: { icon: IconFileCode, type: "code" },
75
+ java: { icon: IconFileCode, type: "code" },
76
+ php: { icon: IconFileCode, type: "code" },
77
+ json: { icon: IconFileCode, type: "code" },
78
+ sql: { icon: IconFileCode, type: "code" },
79
+
80
+ // file video
81
+ avi: { icon: IconFileVideo, type: "video" },
82
+ mp4: { icon: IconFileVideo, type: "video" },
83
+ mpeg: { icon: IconFileVideo, type: "video" },
84
+ mpg: { icon: IconFileVideo, type: "video" },
85
+ wmv: { icon: IconFileVideo, type: "video" },
86
+
87
+ // file audio
88
+ m4a: { icon: IconFileAudio, type: "audio" },
89
+ mp3: { icon: IconFileAudio, type: "audio" },
90
+ wav: { icon: IconFileAudio, type: "audio" },
91
+ wma: { icon: IconFileAudio, type: "audio" },
92
+ };
93
+ const ref = useRef();
94
+
95
+ return (
96
+ <>
97
+ <Container
98
+ className={
99
+ className +
100
+ (!type && extensions[ext]?.type
101
+ ? " icon-" + extensions[ext].type
102
+ : undefined)
103
+ }
104
+ borderType={borderType}
105
+ >
106
+ <CustomIcon
107
+ id={id}
108
+ key={key}
109
+ className="icon"
110
+ type={type}
111
+ transparent={transparent}
112
+ borderType={borderType}
113
+ size={size}
114
+ icon={extensions[ext]?.icon ?? IconFileDefault}
115
+ />
116
+ </Container>
117
+ </>
118
+ );
119
+ };
@@ -0,0 +1,67 @@
1
+ import styled from "styled-components";
2
+ import { GlobalColors, FontFamily } from "../../../global-files/variables";
3
+
4
+ export const Container = styled.div`
5
+ width: fit-content;
6
+ min-width: min-content;
7
+ min-height: min-content;
8
+ overflow: hidden;
9
+ cursor: default;
10
+ display: grid;
11
+ place-items: center;
12
+ padding: 0px;
13
+ border-radius: ${({ borderType }) => {
14
+ return borderType?.toLowerCase() === "rectangle"
15
+ ? "6px"
16
+ : borderType?.toLowerCase() === "circle"
17
+ ? "50%"
18
+ : "0px";
19
+ }};
20
+ border: none;
21
+
22
+ // colores de acuerdo al tipo de icono
23
+ &.icon-word .icon {
24
+ color: #1f3780;
25
+ border-color: #1f3780;
26
+ }
27
+ &.icon-excel .icon {
28
+ color: #2d5639;
29
+ border-color: #2d5639;
30
+ }
31
+ &.icon-csv .icon {
32
+ color: #6b8e73;
33
+ border-color: #6b8e73;
34
+ }
35
+ &.icon-image .icon {
36
+ color: #ca7f4d;
37
+ border-color: #ca7f4d;
38
+ }
39
+ &.icon-pdf .icon {
40
+ color: #951a1a;
41
+ border-color: #951a1a;
42
+ }
43
+ &.icon-powerPoint .icon {
44
+ color: #ba4f19;
45
+ border-color: #ba4f19;
46
+ }
47
+ &.icon-zip .icon {
48
+ color: #b8950c;
49
+ border-color: #b8950c;
50
+ }
51
+ &.icon-code .icon {
52
+ color: #1c778e;
53
+ border-color: #1c778e;
54
+ }
55
+ &.icon-video .icon {
56
+ color: #a15bb1;
57
+ border-color: #a15bb1;
58
+ }
59
+ &.icon-audio .icon {
60
+ color: #3090e9;
61
+ border-color: #3090e9;
62
+ }
63
+ &.icon-default .icon {
64
+ color: #5e6265;
65
+ border-color: #5e6265;
66
+ }
67
+ `;
@@ -0,0 +1,51 @@
1
+ import { Image } from "./index";
2
+
3
+ export default {
4
+ title: "Components/atoms/Image",
5
+ component: Image,
6
+ argTypes: {
7
+ borderType: {
8
+ options: [undefined, "rectangle", "circle"],
9
+ control: { type: "select" },
10
+ },
11
+ },
12
+ };
13
+
14
+ const Template = (args) => <Image {...args} />;
15
+
16
+ const keyS3_test =
17
+ "84300/1/chat/playa-213f791b-d890-48e1-be19-28bf5a95d517.jpeg";
18
+ const srcTest = `https://content-management-profile.s3.amazonaws.com/id-59/59.png`;
19
+ export const ImageTest = Template.bind({});
20
+ ImageTest.args = {
21
+ width: "200px",
22
+ sizeLoading: "50",
23
+ colorLoading: "#bbbbbb",
24
+ src: srcTest,
25
+ componentDefault: <label> test error </label>,
26
+ borderType: undefined,
27
+ };
28
+
29
+ const keyS3_OK =
30
+ "84300/1/chat/f6579ed5-16e5-48d8-ace5-6be8e8e68f53-38896acf-9179-4686-9088-9784df624ab8.png";
31
+ const srcOK = `https://content-management-images.s3.amazonaws.com/${keyS3_OK}`;
32
+ export const ImageOK = Template.bind({});
33
+ ImageOK.args = {
34
+ width: "250px",
35
+ sizeLoading: "40",
36
+ src: srcOK,
37
+ componentDefault: <label> img no cargada </label>,
38
+ borderType: undefined,
39
+ };
40
+
41
+ const keyS3_ERROR =
42
+ "84300/1/chat/21dba1da-3c60-42c4-97bd-033664808256-fb19ff57-b91c-4ef2-ba2a-d857b55fb33b.svg";
43
+ const srcERROR = `https://content-management-images.s3.amazonaws.com/${keyS3_ERROR}`;
44
+ export const ImageERROR = Template.bind({});
45
+ ImageERROR.args = {
46
+ width: "300px",
47
+ sizeLoading: "60",
48
+ src: srcERROR,
49
+ componentDefault: <label> ERROR al cargar </label>,
50
+ borderType: undefined,
51
+ };
@@ -0,0 +1,55 @@
1
+ import { Container, ContainerLoading, Img } from "./styles";
2
+ import { FontAwesomeIcon as Icon } from "@fortawesome/react-fontawesome";
3
+ import { faSpinner as iconLoading } from "@fortawesome/free-solid-svg-icons";
4
+ import { useState, useEffect } from "react";
5
+
6
+ export const Image = (props) => {
7
+ const {
8
+ className, // string
9
+ width, // string
10
+ sizeLoading, // number
11
+ colorLoading, // string
12
+ classNameLoading, // string
13
+ src, // imagen a cargar (string)
14
+ componentDefault, // componente a mostrar en caso de que no cargue src (JSX)
15
+ classNameImg, // string
16
+ borderType, // "rectangle" | "circle" -> por default none
17
+ } = props;
18
+ const [imgLoad, setImgLoad] = useState();
19
+ const [loading, setLoading] = useState(false);
20
+
21
+ /* solo para hacer pruebas en modo dev
22
+ useEffect(() => {
23
+ setTimeout(() => {
24
+ setLoading(false);
25
+ }, 5000);
26
+ }, []); */
27
+
28
+ return (
29
+ <Container className={className} width={width} borderType={borderType}>
30
+ {src && (imgLoad === undefined || loading) && (
31
+ <ContainerLoading
32
+ className={classNameLoading}
33
+ sizeLoading={sizeLoading}
34
+ colorLoading={colorLoading}
35
+ >
36
+ <Icon pulse icon={iconLoading} />
37
+ </ContainerLoading>
38
+ )}
39
+
40
+ {(!src || (imgLoad === false && !loading)) && componentDefault}
41
+
42
+ <Img
43
+ className={classNameImg}
44
+ src={src}
45
+ onLoad={(event) => {
46
+ setImgLoad(true);
47
+ }}
48
+ onError={(event) => {
49
+ setImgLoad(false);
50
+ }}
51
+ show={imgLoad === true && !loading}
52
+ />
53
+ </Container>
54
+ );
55
+ };