dgrcorrientes-modulos 1.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.
Files changed (254) hide show
  1. package/.nvmrc +1 -0
  2. package/.prettierrc.cjs +8 -0
  3. package/.storybook/main.cjs +11 -0
  4. package/.storybook/manager-head.html +2 -0
  5. package/.storybook/manager.cjs +6 -0
  6. package/.storybook/preview-head.html +3 -0
  7. package/.storybook/preview.cjs +11 -0
  8. package/.storybook/themes.cjs +14 -0
  9. package/README.md +21 -0
  10. package/StoryBook.txt +19 -0
  11. package/dist-config.cjs +57 -0
  12. package/index.html +13 -0
  13. package/package.json +60 -0
  14. package/public/elevation.ico +0 -0
  15. package/public/elevationImage.png +0 -0
  16. package/public/vite.svg +1 -0
  17. package/src/App.scss +36 -0
  18. package/src/App.tsx +34 -0
  19. package/src/assets/react.svg +1 -0
  20. package/src/index.js +70 -0
  21. package/src/index.scss +63 -0
  22. package/src/index.ts +108 -0
  23. package/src/main.tsx +11 -0
  24. package/src/sass/base/_base.scss +50 -0
  25. package/src/sass/base/_controls.scss +90 -0
  26. package/src/sass/base/_datepicker.scss +114 -0
  27. package/src/sass/base/_typo.scss +71 -0
  28. package/src/sass/base/fonts/SFUIText-Bold.ttf +0 -0
  29. package/src/sass/base/fonts/SFUIText-BoldItalic.ttf +0 -0
  30. package/src/sass/base/fonts/SFUIText-Heavy.ttf +0 -0
  31. package/src/sass/base/fonts/SFUIText-HeavyItalic.ttf +0 -0
  32. package/src/sass/base/fonts/SFUIText-Light.ttf +0 -0
  33. package/src/sass/base/fonts/SFUIText-LightItalic.ttf +0 -0
  34. package/src/sass/base/fonts/SFUIText-Medium.ttf +0 -0
  35. package/src/sass/base/fonts/SFUIText-MediumItalic.ttf +0 -0
  36. package/src/sass/base/fonts/SFUIText-Regular.ttf +0 -0
  37. package/src/sass/base/fonts/SFUIText-RegularItalic.ttf +0 -0
  38. package/src/sass/base/fonts/SFUIText-Semibold.ttf +0 -0
  39. package/src/sass/base/fonts/SFUIText-SemiboldItalic.ttf +0 -0
  40. package/src/sass/bulma/bulma-changes.scss +19 -0
  41. package/src/sass/bulma/extensions/extensions.sass +1 -0
  42. package/src/sass/bulma/extensions/steps/bulma-steps.sass +3 -0
  43. package/src/sass/bulma/extensions/steps/index.sass +421 -0
  44. package/src/sass/bulma/variables/_variables-bulma.sass +16 -0
  45. package/src/sass/bulma/variables/components/card.sass +20 -0
  46. package/src/sass/bulma/variables/components/navbar.sass +50 -0
  47. package/src/sass/bulma/variables/components/tabs.sass +28 -0
  48. package/src/sass/bulma/variables/elements/button.sass +46 -0
  49. package/src/sass/bulma/variables/elements/notification.sass +8 -0
  50. package/src/sass/bulma/variables/elements/title.sass +20 -0
  51. package/src/sass/bulma/variables/grid/column.sass +2 -0
  52. package/src/sass/main.sass +16 -0
  53. package/src/sass/utilities/_bulma-variables.sass +20 -0
  54. package/src/sass/utilities/_derived-variables.scss +68 -0
  55. package/src/sass/utilities/_helpers.scss +70 -0
  56. package/src/sass/utilities/_variables.scss +147 -0
  57. package/src/stories/Changelog.stories.tsx +73 -0
  58. package/src/stories/Components/AssistanceDiary/AssistanceDiary.scss +19 -0
  59. package/src/stories/Components/AssistanceDiary/AssistanceDiary.stories.tsx +25 -0
  60. package/src/stories/Components/AssistanceDiary/AssistanceDiary.tsx +57 -0
  61. package/src/stories/Components/AverageAttended/AverageAttended.scss +39 -0
  62. package/src/stories/Components/AverageAttended/AverageAttended.stories.tsx +71 -0
  63. package/src/stories/Components/AverageAttended/AverageAttended.tsx +311 -0
  64. package/src/stories/Components/Breadcrumb/Breadcrumb.stories.tsx +45 -0
  65. package/src/stories/Components/Breadcrumb/Breadcrumb.tsx +68 -0
  66. package/src/stories/Components/Breadcrumb/breadcrumb.scss +82 -0
  67. package/src/stories/Components/CTA/CTA.scss +76 -0
  68. package/src/stories/Components/CTA/CTA.stories.tsx +46 -0
  69. package/src/stories/Components/CTA/CTA.tsx +70 -0
  70. package/src/stories/Components/Cards/Card CTA/CardCta.stories.tsx +34 -0
  71. package/src/stories/Components/Cards/Card CTA/CardCta.tsx +81 -0
  72. package/src/stories/Components/Cards/Card CTA/cardCta.scss +71 -0
  73. package/src/stories/Components/Cards/Card Expiration/cardExpiration.scss +105 -0
  74. package/src/stories/Components/Cards/Card Expiration/cardExpiration.stories.tsx +40 -0
  75. package/src/stories/Components/Cards/Card Expiration/cardExpiration.tsx +95 -0
  76. package/src/stories/Components/Cards/Card Vertical/CardVertical.stories.tsx +43 -0
  77. package/src/stories/Components/Cards/Card Vertical/CardVertical.tsx +106 -0
  78. package/src/stories/Components/Cards/Card Vertical/cardVertical.scss +130 -0
  79. package/src/stories/Components/Cards/CardActivity/cardActivity.scss +31 -0
  80. package/src/stories/Components/Cards/CardActivity/cardActivity.stories.tsx +20 -0
  81. package/src/stories/Components/Cards/CardActivity/cardActivity.tsx +48 -0
  82. package/src/stories/Components/Cards/CardHorizontal/CardHorizontal.stories.tsx +96 -0
  83. package/src/stories/Components/Cards/CardHorizontal/CardHorizontal.tsx +94 -0
  84. package/src/stories/Components/Cards/CardHorizontal/cardHorizontal.scss +65 -0
  85. package/src/stories/Components/Cards/CardUser/CardUser.stories.tsx +135 -0
  86. package/src/stories/Components/Cards/CardUser/CardUser.tsx +122 -0
  87. package/src/stories/Components/Cards/CardUser/cardUser.scss +115 -0
  88. package/src/stories/Components/Cart/Cart.scss +279 -0
  89. package/src/stories/Components/Cart/Cart.stories.tsx +350 -0
  90. package/src/stories/Components/Cart/Cart.tsx +277 -0
  91. package/src/stories/Components/Collapse/Collapse.scss +339 -0
  92. package/src/stories/Components/Collapse/Collapse.stories.tsx +766 -0
  93. package/src/stories/Components/Collapse/Collapse.tsx +451 -0
  94. package/src/stories/Components/CollapseEdit/CollapseEdit.scss +128 -0
  95. package/src/stories/Components/CollapseEdit/CollapseEdit.stories.tsx +29 -0
  96. package/src/stories/Components/CollapseEdit/CollapseEdit.tsx +185 -0
  97. package/src/stories/Components/CompleteDiary/CompleteDiary.scss +165 -0
  98. package/src/stories/Components/CompleteDiary/CompleteDiary.stories.tsx +219 -0
  99. package/src/stories/Components/CompleteDiary/CompleteDiary.tsx +394 -0
  100. package/src/stories/Components/Dropdown/Dropdown.scss +60 -0
  101. package/src/stories/Components/Dropdown/Dropdown.stories.tsx +19 -0
  102. package/src/stories/Components/Dropdown/Dropdown.tsx +99 -0
  103. package/src/stories/Components/EmptyState/EmptyState.stories.tsx +46 -0
  104. package/src/stories/Components/EmptyState/EmptyState.tsx +44 -0
  105. package/src/stories/Components/EmptyState/emptyState.scss +75 -0
  106. package/src/stories/Components/ErrorPage/ErrorPage.scss +65 -0
  107. package/src/stories/Components/ErrorPage/ErrorPage.stories.tsx +164 -0
  108. package/src/stories/Components/ErrorPage/ErrorPage.tsx +107 -0
  109. package/src/stories/Components/IncomingCall/IncomingCall.scss +27 -0
  110. package/src/stories/Components/IncomingCall/IncomingCall.stories.tsx +43 -0
  111. package/src/stories/Components/IncomingCall/IncomingCall.tsx +76 -0
  112. package/src/stories/Components/ModalConfirm/ModalConfirm.scss +30 -0
  113. package/src/stories/Components/ModalConfirm/ModalConfirm.stories.tsx +21 -0
  114. package/src/stories/Components/ModalConfirm/ModalConfirm.tsx +118 -0
  115. package/src/stories/Components/Pagination/Pagination.scss +42 -0
  116. package/src/stories/Components/Pagination/Pagination.stories.tsx +25 -0
  117. package/src/stories/Components/Pagination/Pagination.tsx +143 -0
  118. package/src/stories/Components/PerformanceAssessment/PerformanceAssessment.scss +26 -0
  119. package/src/stories/Components/PerformanceAssessment/PerformanceAssessment.stories.tsx +27 -0
  120. package/src/stories/Components/PerformanceAssessment/PerformanceAssessment.tsx +108 -0
  121. package/src/stories/Components/ShiftDiary/ShiftDiary.scss +45 -0
  122. package/src/stories/Components/ShiftDiary/ShiftDiary.stories.tsx +32 -0
  123. package/src/stories/Components/ShiftDiary/ShiftDiary.tsx +92 -0
  124. package/src/stories/Components/Stepper/Stepper.stories.tsx +26 -0
  125. package/src/stories/Components/Stepper/Stepper.tsx +102 -0
  126. package/src/stories/Components/Stepper/stepper.scss +59 -0
  127. package/src/stories/Components/Tabs/Tabs.stories.tsx +76 -0
  128. package/src/stories/Components/Tabs/Tabs.tsx +111 -0
  129. package/src/stories/Components/Tabs/tabs.scss +118 -0
  130. package/src/stories/Components/Tooltip/Tooltip.scss +235 -0
  131. package/src/stories/Components/Tooltip/Tooltip.stories.tsx +125 -0
  132. package/src/stories/Components/Tooltip/Tooltip.tsx +222 -0
  133. package/src/stories/Elements/Alert/Alert.stories.tsx +65 -0
  134. package/src/stories/Elements/Alert/Alert.tsx +49 -0
  135. package/src/stories/Elements/Alert/alert.scss +189 -0
  136. package/src/stories/Elements/Badge/Badge.stories.tsx +15 -0
  137. package/src/stories/Elements/Badge/Badge.tsx +21 -0
  138. package/src/stories/Elements/Badge/badge.scss +24 -0
  139. package/src/stories/Elements/Button/Button.stories.tsx +54 -0
  140. package/src/stories/Elements/Button/Button.tsx +118 -0
  141. package/src/stories/Elements/Button/button.scss +102 -0
  142. package/src/stories/Elements/Icon/Icon.stories.tsx +33 -0
  143. package/src/stories/Elements/Icon/Icon.tsx +57 -0
  144. package/src/stories/Elements/Icon/icon.scss +15 -0
  145. package/src/stories/Elements/Icon/icono.svg +1 -0
  146. package/src/stories/Elements/ProgressBar/ProgressBar.scss +26 -0
  147. package/src/stories/Elements/ProgressBar/ProgressBar.stories.tsx +19 -0
  148. package/src/stories/Elements/ProgressBar/ProgressBar.tsx +35 -0
  149. package/src/stories/Form/Autocomplete/Autocomplete.stories.tsx +55 -0
  150. package/src/stories/Form/Autocomplete/Autocomplete.tsx +160 -0
  151. package/src/stories/Form/Autocomplete/autocomplete.scss +311 -0
  152. package/src/stories/Form/Autocomplete-Prueba/Autocomplete.stories.tsx +50 -0
  153. package/src/stories/Form/Autocomplete-Prueba/AutocompletePrueba.tsx +83 -0
  154. package/src/stories/Form/Checkbox/Checkbox.stories.tsx +26 -0
  155. package/src/stories/Form/Checkbox/Checkbox.tsx +89 -0
  156. package/src/stories/Form/Checkbox/checkbox.scss +41 -0
  157. package/src/stories/Form/DatePicker/DatePickerExample.stories.tsx +27 -0
  158. package/src/stories/Form/DatePicker/DatePickerExample.tsx +65 -0
  159. package/src/stories/Form/DatePickerComponent/DatePickerComponent.scss +116 -0
  160. package/src/stories/Form/DatePickerComponent/DatePickerComponent.stories.tsx +37 -0
  161. package/src/stories/Form/DatePickerComponent/DatePickerComponent.tsx +97 -0
  162. package/src/stories/Form/Filters/Filters.stories.tsx +84 -0
  163. package/src/stories/Form/Filters/Filters.tsx +230 -0
  164. package/src/stories/Form/Filters/filters.scss +261 -0
  165. package/src/stories/Form/Input/Input.stories.tsx +25 -0
  166. package/src/stories/Form/Input/Input.tsx +86 -0
  167. package/src/stories/Form/Input/InputVar.sass +26 -0
  168. package/src/stories/Form/Input/input.scss +19 -0
  169. package/src/stories/Form/InputFormControl/Input-form-control.stories.tsx +26 -0
  170. package/src/stories/Form/InputFormControl/Input-form-control.tsx +48 -0
  171. package/src/stories/Form/InputFormControl/input-form-control.scss +34 -0
  172. package/src/stories/Form/Radio/Radio.stories.tsx +19 -0
  173. package/src/stories/Form/Radio/Radio.tsx +84 -0
  174. package/src/stories/Form/Radio/radio.scss +19 -0
  175. package/src/stories/Form/Search/Search.scss +50 -0
  176. package/src/stories/Form/Search/Search.stories.tsx +26 -0
  177. package/src/stories/Form/Search/Search.tsx +84 -0
  178. package/src/stories/Form/Select/Select.stories.tsx +55 -0
  179. package/src/stories/Form/Select/Select.tsx +121 -0
  180. package/src/stories/Form/Select/select.scss +303 -0
  181. package/src/stories/Form/Switch/Switch.stories.tsx +17 -0
  182. package/src/stories/Form/Switch/Switch.tsx +36 -0
  183. package/src/stories/Form/Switch/switch.scss +123 -0
  184. package/src/stories/Form/Textarea/Textarea.stories.tsx +19 -0
  185. package/src/stories/Form/Textarea/Textarea.tsx +52 -0
  186. package/src/stories/Form/Textarea/textarea.scss +25 -0
  187. package/src/stories/Form/UploadFileItem/UploadFileItem.scss +49 -0
  188. package/src/stories/Form/UploadFileItem/UploadFileItem.stories.tsx +18 -0
  189. package/src/stories/Form/UploadFileItem/UploadFileItem.tsx +89 -0
  190. package/src/stories/Form/UploadFiles/UploadFiles.scss +17 -0
  191. package/src/stories/Form/UploadFiles/UploadFiles.stories.tsx +32 -0
  192. package/src/stories/Form/UploadFiles/UploadFiles.tsx +177 -0
  193. package/src/stories/Layout/Footer/Footer.scss +129 -0
  194. package/src/stories/Layout/Footer/Footer.stories.tsx +101 -0
  195. package/src/stories/Layout/Footer/Footer.tsx +81 -0
  196. package/src/stories/Layout/Header/Header.scss +190 -0
  197. package/src/stories/Layout/Header/Header.stories.tsx +223 -0
  198. package/src/stories/Layout/Header/Header.tsx +278 -0
  199. package/src/stories/Layout/HeaderTable/HeaderTable.scss +21 -0
  200. package/src/stories/Layout/HeaderTable/HeaderTable.stories.tsx +112 -0
  201. package/src/stories/Layout/HeaderTable/HeaderTable.tsx +72 -0
  202. package/src/stories/Layout/Sidebar/Sidebar.scss +50 -0
  203. package/src/stories/Layout/Sidebar/Sidebar.stories.tsx +744 -0
  204. package/src/stories/Layout/Sidebar/Sidebar.tsx +129 -0
  205. package/src/stories/Layout/SidebarEmpty/SidebarEmpty.scss +64 -0
  206. package/src/stories/Layout/SidebarEmpty/SidebarEmpty.stories.tsx +26 -0
  207. package/src/stories/Layout/SidebarEmpty/SidebarEmpty.tsx +100 -0
  208. package/src/stories/Layout/Subtitle/Subtitle.scss +88 -0
  209. package/src/stories/Layout/Subtitle/Subtitle.stories.tsx +46 -0
  210. package/src/stories/Layout/Subtitle/Subtitle.tsx +108 -0
  211. package/src/stories/Layout/Title/Title.scss +79 -0
  212. package/src/stories/Layout/Title/Title.stories.tsx +86 -0
  213. package/src/stories/Layout/Title/Title.tsx +96 -0
  214. package/src/stories/Welcome.stories.tsx +111 -0
  215. package/src/stories/assets/404 Page Not Found _Two Color (1).png +0 -0
  216. package/src/stories/assets/404 Page Not Found _Two Color.png +0 -0
  217. package/src/stories/assets/Empty Inbox _Two Color.png +0 -0
  218. package/src/stories/assets/Loading _Two Color.png +0 -0
  219. package/src/stories/assets/Notifications_Two Color 1.png +0 -0
  220. package/src/stories/assets/Online protection_Two Color.png +0 -0
  221. package/src/stories/assets/Under Constructions _Two Color.png +0 -0
  222. package/src/stories/assets/bulma.png +0 -0
  223. package/src/stories/assets/burger.svg +5 -0
  224. package/src/stories/assets/code-brackets.svg +1 -0
  225. package/src/stories/assets/colors.svg +1 -0
  226. package/src/stories/assets/comments.svg +1 -0
  227. package/src/stories/assets/decor-bg.png +0 -0
  228. package/src/stories/assets/direction.svg +1 -0
  229. package/src/stories/assets/e-isologo.svg +4 -0
  230. package/src/stories/assets/e-isotype.svg +4 -0
  231. package/src/stories/assets/e-logo_negative.svg +14 -0
  232. package/src/stories/assets/e-logotype.svg +14 -0
  233. package/src/stories/assets/flow.svg +1 -0
  234. package/src/stories/assets/logo_gobierno_corrientes.svg +9 -0
  235. package/src/stories/assets/logo_rentas_corrientes.svg +10 -0
  236. package/src/stories/assets/logo_rentas_corrientes_compacto.svg +10 -0
  237. package/src/stories/assets/plugin.svg +1 -0
  238. package/src/stories/assets/repo.svg +1 -0
  239. package/src/stories/assets/stackalt.svg +1 -0
  240. package/src/stories/assets/storybook.svg +13 -0
  241. package/src/stories/assets/thumbnail-black.jpg +0 -0
  242. package/src/stories/assets/thumbnail-black[2].jpg +0 -0
  243. package/src/stories/assets/thumbnail.jpg +0 -0
  244. package/src/stories/assets/thumbnail[2].jpg +0 -0
  245. package/src/stories/changelog.ts +389 -0
  246. package/src/utils/functions.ts +57 -0
  247. package/src/vite-env.d.ts +2 -0
  248. package/static/e-isologo-192.jpg +0 -0
  249. package/static/e-isologo.svg +4 -0
  250. package/static/e-logotype.svg +14 -0
  251. package/static/favicon.ico +0 -0
  252. package/tsconfig.json +22 -0
  253. package/tsconfig.node.json +9 -0
  254. package/vite.config.ts +22 -0
@@ -0,0 +1,190 @@
1
+ @import '/src/sass/utilities/variables';
2
+
3
+ .navbar-container {
4
+ box-shadow: 0px 6px 10px rgba(14, 31, 53, 0.12), 0px 12px 18px rgba(14, 31, 53, 0.2), 0px 20px 40px -1px rgba(14, 31, 53, 0.12);
5
+ border-radius: 0px 0px 16px 16px;
6
+ background-color: $white;
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ height: 80px;
11
+ position: relative;
12
+ min-width: 320px;
13
+
14
+ .navbar {
15
+ height: 60px;
16
+ background-color: transparent;
17
+
18
+ @media screen and (max-width: $breakpoint_header1_5) {
19
+ margin-left: 20px !important;
20
+ margin-right: 20px !important;
21
+ }
22
+
23
+ @media screen and (max-width: $breakpoint_header4_logo) {
24
+ margin-left: 10px !important;
25
+ margin-right: 10px !important;
26
+ }
27
+
28
+ @media screen and (max-width: $breakpoint_header2) {
29
+ display: flex;
30
+ justify-content: space-between;
31
+ }
32
+
33
+ .navbar-brand {
34
+ display: flex;
35
+ align-items: center;
36
+
37
+ .navbar-burger {
38
+ display: none;
39
+ margin-left: 0 !important;
40
+
41
+ @media screen and (max-width: $breakpoint_header3_burger) {
42
+ display: flex;
43
+ justify-content: center;
44
+ align-items: center;
45
+ }
46
+ }
47
+ }
48
+
49
+ .navbar-menu {
50
+ @media screen and (max-width: $breakpoint_header3_burger) {
51
+ position: absolute;
52
+ top: 120%;
53
+ left: -5px;
54
+ width: calc(100% + 10px);
55
+ border-radius: 0px 0px 16px 16px;
56
+ box-shadow: 0px 6px 10px rgba(14, 31, 53, 0.12), 0px 12px 18px rgba(14, 31, 53, 0.2), 0px 20px 40px -1px rgba(14, 31, 53, 0.12);
57
+ }
58
+
59
+ .navbar-start {
60
+ padding-left: 70px;
61
+
62
+ @media screen and (max-width: $breakpoint_header1) {
63
+ padding-left: 10px;
64
+ }
65
+
66
+ .item-text {
67
+ font-size: 14px;
68
+ }
69
+ }
70
+ }
71
+
72
+ .navbar-end {
73
+ padding-left: 50px;
74
+
75
+ .user-mobile {
76
+ border-left: 1px solid $truegray-200;
77
+ margin: 10px 0px 8px 15px;
78
+ padding-left: 20px;
79
+
80
+ @media screen and (max-width: $breakpoint_header4_logo) {
81
+ border-left: none;
82
+ padding-left: 0px;
83
+ }
84
+
85
+ .fa_icon {
86
+ color: $darkText;
87
+
88
+ &:hover {
89
+ color: $primary-600;
90
+ }
91
+ }
92
+ }
93
+
94
+ @media screen and (max-width: $breakpoint_header1) {
95
+ padding-left: 20px;
96
+ }
97
+
98
+ @media screen and (max-width: $breakpoint_header2) {
99
+ .icon-functions {
100
+ padding-right: 9px !important;
101
+ }
102
+ }
103
+
104
+ .icon-functions {
105
+ gap: 15px;
106
+ padding-right: 25px;
107
+
108
+ @media screen and (max-width: $breakpoint_header4_logo) {
109
+ gap: 8px;
110
+ }
111
+
112
+ .item-icon {
113
+ position: relative;
114
+ display: flex;
115
+ align-items: center;
116
+
117
+ &__badge-notif {
118
+ position: absolute;
119
+ bottom: 47%;
120
+ left: 47%;
121
+ pointer-events: none;
122
+
123
+ .badge {
124
+ border-radius: 50%;
125
+ font-size: 10px;
126
+ padding-left: 5px;
127
+ padding-right: 5px;
128
+ }
129
+ }
130
+ }
131
+ }
132
+
133
+ .user-sec {
134
+ border-left: 1px solid $truegray-200;
135
+ cursor: pointer;
136
+ padding-left: 15px;
137
+
138
+ &__text {
139
+ font-size: 14px;
140
+ padding-right: 14px;
141
+
142
+ .names {
143
+ color: $darkText;
144
+ }
145
+
146
+ .description {
147
+ font-size: 10px;
148
+ text-align: right;
149
+ color: $text-500;
150
+ }
151
+ }
152
+
153
+ &__icons {
154
+ gap: 20px;
155
+ color: $darkText;
156
+
157
+ .user-icon {
158
+ position: relative;
159
+
160
+ &__state {
161
+ position: absolute;
162
+ bottom: 70%;
163
+ left: 47%;
164
+ pointer-events: none;
165
+
166
+ .badge {
167
+ border-radius: 50%;
168
+ font-size: 10px;
169
+ padding-left: 5px;
170
+ padding-right: 5px;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+
177
+ .drop-component {
178
+ display: none;
179
+ position: absolute;
180
+ top: 100%;
181
+ right: 0px;
182
+ z-index: 100;
183
+
184
+ &.is-active {
185
+ display: block;
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
@@ -0,0 +1,223 @@
1
+ import React from 'react';
2
+ import {ComponentStory, ComponentMeta} from '@storybook/react';
3
+
4
+ import {Header} from './Header';
5
+ import {Tooltip} from '../../Components/Tooltip/Tooltip';
6
+
7
+ import logo_rentas_corrientes from '../../assets/logo_rentas_corrientes.svg';
8
+ import logo_rentas_corrientes_compacto from '../../assets/logo_rentas_corrientes_compacto.svg';
9
+
10
+ export default {
11
+ title: 'Layout/Header',
12
+ component: Header,
13
+ args: {
14
+ logo: {
15
+ src: logo_rentas_corrientes,
16
+ width: '100%',
17
+ height: '37px',
18
+ onClick: () => {
19
+ console.log('Logo Clicked');
20
+ },
21
+ },
22
+ logoMobile: {
23
+ src: logo_rentas_corrientes_compacto,
24
+ width: '100%',
25
+ height: '37px',
26
+ onClick: () => {
27
+ console.log('Logo Clicked');
28
+ },
29
+ },
30
+ navItems: [
31
+ {
32
+ label: 'Pagar',
33
+ onClick: () => {
34
+ console.log('Pagar Clicked');
35
+ },
36
+ },
37
+ {
38
+ label: 'Liquidación de tasas',
39
+ onClick: () => {
40
+ console.log('Liquidación de tasas Clicked');
41
+ },
42
+ },
43
+ {
44
+ label: 'Trámites',
45
+ onClick: () => {
46
+ console.log('Trámites Clicked');
47
+ },
48
+ },
49
+ {
50
+ label: 'Centro de ayuda',
51
+ onClick: () => {
52
+ console.log('Centro de ayuda Clicked');
53
+ },
54
+ },
55
+ ],
56
+ buttonLogin: {
57
+ type: 'button',
58
+ color: 'primary',
59
+ fill: 'solid',
60
+ loading: false,
61
+ disabled: false,
62
+ label: 'Iniciar Sesión',
63
+ icon: 'fa-solid fa-user',
64
+ onClick: () => console.log('Iniciar sesión Clicked'),
65
+ },
66
+ },
67
+ } as ComponentMeta<typeof Header>;
68
+
69
+ const Template: ComponentStory<typeof Header> = args => <Header {...args} />;
70
+
71
+ export const NotUser = Template.bind({});
72
+ NotUser.args = {
73
+ logged: false,
74
+ iconFunctions: [
75
+ {
76
+ uniqueValue: 'buscar',
77
+ buttonIcon: {
78
+ type: 'button',
79
+ size: 'medium',
80
+ fill: 'unstyled',
81
+ icon: 'fa-solid fa-magnifying-glass',
82
+ onClick: () => console.log('Lupa Clicked'),
83
+ isOnlyIcon: true,
84
+ },
85
+ iconDropComponent: (
86
+ <Tooltip
87
+ active
88
+ contentType="text"
89
+ text="Usá esta Base Imponible para tu declaración de Bienes Personales 2020"
90
+ trianglePos="none"
91
+ />
92
+ ),
93
+ },
94
+ {
95
+ uniqueValue: 'ubicacion',
96
+ buttonIcon: {
97
+ type: 'button',
98
+ size: 'medium',
99
+ fill: 'unstyled',
100
+ icon: 'fa-solid fa-location-dot',
101
+ onClick: () => console.log('Location Clicked'),
102
+ isOnlyIcon: true,
103
+ },
104
+ iconDropComponent: (
105
+ <Tooltip
106
+ active
107
+ contentType="text"
108
+ text="Usá esta Base Imponible para tu declaración de Bienes Personales 2020"
109
+ trianglePos="none"
110
+ />
111
+ ),
112
+ },
113
+ ],
114
+ notUserDropComponent: (
115
+ <Tooltip active contentType="text" text="Usá esta Base Imponible para tu declaración de Bienes Personales 2020" trianglePos="none" />
116
+ ),
117
+ };
118
+
119
+ export const Logged = Template.bind({});
120
+ Logged.args = {
121
+ logged: true,
122
+ iconFunctions: [
123
+ {
124
+ uniqueValue: 'buscar',
125
+ buttonIcon: {
126
+ type: 'button',
127
+ size: 'medium',
128
+ fill: 'unstyled',
129
+ icon: 'fa-solid fa-magnifying-glass',
130
+ onClick: () => console.log('Lupa Clicked'),
131
+ isOnlyIcon: true,
132
+ },
133
+ iconDropComponent: (
134
+ <Tooltip
135
+ active
136
+ contentType="text"
137
+ text="Usá esta Base Imponible para tu declaración de Bienes Personales 2020"
138
+ trianglePos="none"
139
+ />
140
+ ),
141
+ },
142
+ {
143
+ uniqueValue: 'ubicacion',
144
+ buttonIcon: {
145
+ type: 'button',
146
+ size: 'medium',
147
+ fill: 'unstyled',
148
+ icon: 'fa-solid fa-location-dot',
149
+ onClick: () => console.log('Location Clicked'),
150
+ isOnlyIcon: true,
151
+ },
152
+ iconDropComponent: (
153
+ <Tooltip
154
+ active
155
+ contentType="text"
156
+ text="Usá esta Base Imponible para tu declaración de Bienes Personales 2020"
157
+ trianglePos="none"
158
+ />
159
+ ),
160
+ },
161
+ {
162
+ uniqueValue: 'notificaciones',
163
+ buttonIcon: {
164
+ type: 'button',
165
+ size: 'medium',
166
+ fill: 'unstyled',
167
+ icon: 'fa-regular fa-bell',
168
+ onClick: () => console.log('Campana Clicked'),
169
+ isOnlyIcon: true,
170
+ },
171
+ badge: {
172
+ text: '5',
173
+ color: 'primary',
174
+ },
175
+ iconDropComponent: (
176
+ <Tooltip
177
+ active
178
+ contentType="text"
179
+ text="Usá esta Base Imponible para tu declaración de Bienes Personales 2020"
180
+ trianglePos="none"
181
+ />
182
+ ),
183
+ },
184
+ {
185
+ uniqueValue: 'mensajes',
186
+ buttonIcon: {
187
+ type: 'button',
188
+ size: 'medium',
189
+ fill: 'unstyled',
190
+ icon: 'fa-regular fa-envelope',
191
+ onClick: () => console.log('Mensajes Clicked'),
192
+ isOnlyIcon: true,
193
+ },
194
+ badge: {
195
+ text: '5',
196
+ color: 'primary',
197
+ },
198
+ iconDropComponent: (
199
+ <Tooltip
200
+ active
201
+ contentType="text"
202
+ text="Usá esta Base Imponible para tu declaración de Bienes Personales 2020"
203
+ trianglePos="none"
204
+ />
205
+ ),
206
+ },
207
+ ],
208
+ userInfo: {
209
+ name: 'Juan',
210
+ lastName: 'Martinez',
211
+ description: 'Contador Público',
212
+ avatar: {
213
+ icon: {
214
+ type: 'fa_icon',
215
+ icon: 'fa-solid fa-user',
216
+ },
217
+ stateColor: '#287D3C',
218
+ },
219
+ userDropComponent: (
220
+ <Tooltip active contentType="text" text="Usá esta Base Imponible para tu declaración de Bienes Personales 2020" trianglePos="none" />
221
+ ),
222
+ },
223
+ };
@@ -0,0 +1,278 @@
1
+ import React, {createRef, useEffect, useRef, useState} from 'react';
2
+ import './Header.scss';
3
+ import {Icon, IIcon} from '../../Elements/Icon/Icon';
4
+ import {IButton, Button} from '../../Elements/Button/Button';
5
+ import {Badge, BadgeProps} from '../../Elements/Badge/Badge';
6
+ import {generateRandomKey} from '../../../utils/functions';
7
+ import burger from '/src/stories/assets/burger.svg';
8
+
9
+ export interface IHeader extends React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> {
10
+ // base
11
+ logo?: {src: string; width: string; height: string; onClick?: () => void};
12
+ logoMobile?: {src: string; width: string; height: string; onClick?: () => void};
13
+ navItems?: {label: string; onClick?: () => void}[];
14
+ iconFunctions?: {uniqueValue: string; buttonIcon: IButton; badge?: BadgeProps; iconDropComponent?: React.ReactNode}[];
15
+ //NotUser
16
+ buttonLogin?: IButton;
17
+ //Logged
18
+ userInfo: {
19
+ name: string;
20
+ lastName: string;
21
+ description: string;
22
+ avatar?: {icon?: IIcon; img?: {src: string}; stateColor?: string};
23
+ onUserClick?: () => void;
24
+ userDropComponent?: React.ReactNode;
25
+ };
26
+ notUserDropComponent?: React.ReactNode;
27
+
28
+ // boolean
29
+ logged?: boolean;
30
+
31
+ // react
32
+ className?: string;
33
+ }
34
+
35
+ export const Header = ({
36
+ className,
37
+ logged,
38
+ logo,
39
+ logoMobile,
40
+ navItems,
41
+ iconFunctions,
42
+ buttonLogin,
43
+ userInfo,
44
+ notUserDropComponent,
45
+ ...props
46
+ }: IHeader) => {
47
+ const [expandedBurger, setExpandedBurger] = useState(false);
48
+ const [userExpanded, setUserExpanded] = useState(false);
49
+ const [breakpoint2, setBreakpoint2] = useState<boolean>(window.innerWidth < 1217);
50
+ const [breakpoint4, setBreakpoint4] = useState<boolean>(window.innerWidth < 654);
51
+
52
+ // =============================== ICONS FUNCTIONS ===============================
53
+ const [activeIcon, setActiveIcon] = useState<string | null>(null);
54
+ const [iconStates, setIconStates] = useState<{[key: string]: {active: boolean; name: string | null}}>(
55
+ iconFunctions?.reduce((acc, item) => ({...acc, [item.uniqueValue]: {active: false, name: null}}), {}) ?? {},
56
+ );
57
+ const iconFunctionContainerRef = useRef<HTMLDivElement>(null);
58
+ const iconFunctionRefs = iconFunctions?.map(() => useRef<HTMLDivElement>(null));
59
+
60
+ const handleIconClick = (iconName: string) => {
61
+ setActiveIcon(prevActiveIcon => (prevActiveIcon === iconName ? null : iconName));
62
+ setIconStates(prevIconStates => ({
63
+ ...Object.keys(prevIconStates).reduce((acc, key) => {
64
+ acc[key] = {active: key === iconName, name: prevIconStates[key].name};
65
+ return acc;
66
+ }, {} as {[key: string]: {active: boolean; name: string | null}}),
67
+ }));
68
+ };
69
+
70
+ useEffect(() => {
71
+ function handleClickOutside(event: MouseEvent) {
72
+ if (
73
+ Object.values(iconStates).some(icon => icon.active) &&
74
+ !event.defaultPrevented &&
75
+ !iconFunctionContainerRef.current?.contains(event.target as Node)
76
+ ) {
77
+ setIconStates(prevIconStates =>
78
+ Object.keys(prevIconStates).reduce((acc, key) => ({...acc, [key]: {active: false, name: prevIconStates[key].name}}), {}),
79
+ );
80
+ setActiveIcon(null);
81
+ }
82
+ }
83
+
84
+ document.addEventListener('click', handleClickOutside);
85
+
86
+ return () => {
87
+ document.removeEventListener('click', handleClickOutside);
88
+ };
89
+ }, [iconFunctionContainerRef, iconStates]);
90
+
91
+ // =============================== REF USER ===============================
92
+ const userDropRef = useRef<HTMLDivElement>(null);
93
+ useEffect(() => {
94
+ function handleClickOutside(event: MouseEvent) {
95
+ if (userDropRef.current && !userDropRef.current.contains(event.target as Node)) {
96
+ setUserExpanded(false);
97
+ }
98
+ }
99
+
100
+ document.addEventListener('click', handleClickOutside);
101
+
102
+ return () => {
103
+ document.removeEventListener('click', handleClickOutside);
104
+ };
105
+ }, [userDropRef]);
106
+
107
+ useEffect(() => {
108
+ // Función para manejar cambios de tamaño de la ventana
109
+ function handleResize() {
110
+ setBreakpoint2(window.innerWidth < 1217);
111
+ setBreakpoint4(window.innerWidth < 654);
112
+ }
113
+
114
+ // Agregar un event listener para cambios de tamaño de la ventana
115
+ window.addEventListener('resize', handleResize);
116
+
117
+ // Limpiar el event listener al desmontar el componente
118
+ return () => {
119
+ window.removeEventListener('resize', handleResize);
120
+ };
121
+ }, []);
122
+
123
+ return (
124
+ <div className="elv-component elv-header" {...props}>
125
+ <div className={`navbar-container ${className ? className : ''}`}>
126
+ <nav className="navbar container" role="navigation" aria-label="main navigation">
127
+ <div className="navbar-brand">
128
+ <a
129
+ role="button"
130
+ className={`navbar-burger ${expandedBurger ? 'is-active' : ''}`}
131
+ aria-label="menu"
132
+ aria-expanded="false"
133
+ data-target="rentas-ctes-header"
134
+ onClick={() => setExpandedBurger(!expandedBurger)}
135
+ >
136
+ <img src={burger} alt="Burger SVG" />
137
+ </a>
138
+ {logo && (
139
+ <>
140
+ {breakpoint4 ? (
141
+ <a
142
+ className="navbar-item px-1"
143
+ onClick={() => {
144
+ logoMobile?.onClick && logoMobile.onClick();
145
+ }}
146
+ >
147
+ <img src={logoMobile?.src} alt="Logo Header" height={logo.height} width={logo.width} />
148
+ </a>
149
+ ) : (
150
+ <a
151
+ className="navbar-item pt-0"
152
+ onClick={() => {
153
+ logo?.onClick && logo.onClick();
154
+ }}
155
+ >
156
+ <img src={logo.src} alt="Logo Header" height={logo.height} width={logo.width} />
157
+ </a>
158
+ )}
159
+ </>
160
+ )}
161
+ </div>
162
+
163
+ <div id="rentas-ctes-header" className={`navbar-menu ${expandedBurger ? 'is-active' : ''}`}>
164
+ <div className="navbar-start">
165
+ {navItems &&
166
+ navItems.map(item => (
167
+ <a key={generateRandomKey()} className="navbar-item item-text" onClick={item.onClick}>
168
+ {item.label}
169
+ </a>
170
+ ))}
171
+ </div>
172
+ </div>
173
+ <div className="navbar-end is-flex">
174
+ <div className="icon-functions is-flex" ref={iconFunctionContainerRef}>
175
+ {iconFunctions &&
176
+ iconFunctions.map((item, index) => (
177
+ <div key={generateRandomKey()} className={['item-icon '].join('')} ref={iconFunctionRefs && iconFunctionRefs[index]}>
178
+ <span>
179
+ <Button
180
+ {...item.buttonIcon}
181
+ onClick={() => {
182
+ handleIconClick(item.uniqueValue);
183
+ item.buttonIcon?.onClick;
184
+ }}
185
+ />
186
+ </span>
187
+ {item.badge && (
188
+ <>
189
+ <span className="item-icon__badge-notif">
190
+ <Badge {...item.badge}></Badge>
191
+ </span>
192
+ </>
193
+ )}
194
+ {item.iconDropComponent && (
195
+ <div
196
+ className={`drop-component drop-component__icon ${
197
+ iconStates[item.uniqueValue] && iconFunctions[index].uniqueValue === activeIcon ? 'is-active' : ''
198
+ }`}
199
+ >
200
+ {item.iconDropComponent}
201
+ </div>
202
+ )}
203
+ </div>
204
+ ))}
205
+ </div>
206
+
207
+ {logged ? (
208
+ <>
209
+ {breakpoint2 ? (
210
+ <div className="navbar-item user-mobile is-flex is-align-items-center" ref={userDropRef}>
211
+ <div className="user-mobile__icon">
212
+ <Icon icon="far fa-user" size="20px" className="pb-1 is-clickable" onClick={() => setUserExpanded(!userExpanded)} />
213
+ </div>
214
+ {userInfo.userDropComponent && (
215
+ <div className={`drop-component drop-component__user ${userExpanded && 'is-active'}`}>
216
+ {userInfo.userDropComponent}
217
+ </div>
218
+ )}
219
+ </div>
220
+ ) : (
221
+ <div className="navbar-item user-desktop" ref={userDropRef}>
222
+ <div className="user-sec is-flex is-align-items-center" onClick={() => setUserExpanded(!userExpanded)}>
223
+ <div className="user-sec__text">
224
+ <p className="names">
225
+ Hola, {userInfo.name} {userInfo.lastName}
226
+ </p>
227
+ <p className="description">{userInfo.description}</p>
228
+ </div>
229
+ <div className="user-sec__icons is-flex">
230
+ {userInfo.avatar?.icon ? (
231
+ <div className="user-icon">
232
+ <Icon icon={userInfo.avatar.icon.icon}></Icon>
233
+
234
+ {userInfo.avatar.stateColor && (
235
+ <span className="user-icon__state">
236
+ <Icon icon="fa fa-circle" color={userInfo.avatar.stateColor} size="10px" />
237
+ </span>
238
+ )}
239
+ </div>
240
+ ) : (
241
+ <img src={userInfo.avatar?.img?.src} width={'16px'} height={'16px'} style={{borderRadius: '50%'}}></img>
242
+ )}
243
+ <Icon icon="fa-solid fa-chevron-down"></Icon>
244
+ </div>
245
+ </div>
246
+
247
+ {userInfo.userDropComponent && (
248
+ <div className={`drop-component drop-component__user ${userExpanded && 'is-active'}`}>
249
+ {userInfo.userDropComponent}
250
+ </div>
251
+ )}
252
+ </div>
253
+ )}
254
+ </>
255
+ ) : (
256
+ <>
257
+ {breakpoint2 ? (
258
+ <div className="navbar-item user-mobile is-flex is-align-items-center" ref={userDropRef}>
259
+ <div className="user-mobile__icon">
260
+ <Icon icon="far fa-user" size="20px" className="pb-1 is-clickable" onClick={() => setUserExpanded(!userExpanded)} />
261
+ </div>
262
+ {notUserDropComponent && (
263
+ <div className={`drop-component drop-component__user ${userExpanded && 'is-active'}`}>{notUserDropComponent}</div>
264
+ )}
265
+ </div>
266
+ ) : (
267
+ <div className="navbar-item">
268
+ <Button {...buttonLogin} />
269
+ </div>
270
+ )}
271
+ </>
272
+ )}
273
+ </div>
274
+ </nav>
275
+ </div>
276
+ </div>
277
+ );
278
+ };
@@ -0,0 +1,21 @@
1
+ @import '/src/sass/utilities/variables';
2
+
3
+ .elv-header-table {
4
+ display: inline-flex;
5
+ align-items: center;
6
+
7
+ .header-table {
8
+ gap: 16px;
9
+ }
10
+
11
+ .menuButton {
12
+ position: relative;
13
+
14
+ &__dropComponent {
15
+ position: absolute;
16
+ right: 0px;
17
+ top: 100%;
18
+ z-index: 100;
19
+ }
20
+ }
21
+ }