agx-chat-web 1.2.2 → 1.2.4

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 (203) hide show
  1. package/README.md +49 -49
  2. package/dist/agx-chat.esm.js +2 -0
  3. package/dist/agx-chat.esm.js.map +1 -0
  4. package/dist/agx-chat.umd.js +2 -0
  5. package/dist/agx-chat.umd.js.map +1 -0
  6. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.d.ts +1 -0
  7. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js +46 -0
  8. package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js.map +1 -0
  9. package/dist/esm/app/ChatProvider/ChatProvider.d.ts +7 -0
  10. package/dist/esm/app/ChatProvider/ChatProvider.js +14 -0
  11. package/dist/esm/app/ChatProvider/ChatProvider.js.map +1 -0
  12. package/dist/esm/app/Messenger/classes/slaCalculations.d.ts +30 -0
  13. package/dist/esm/app/Messenger/classes/slaCalculations.js +144 -0
  14. package/dist/esm/app/Messenger/classes/slaCalculations.js.map +1 -0
  15. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.d.ts +14 -0
  16. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js +31 -0
  17. package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js.map +1 -0
  18. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.d.ts +10 -0
  19. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js +15 -0
  20. package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js.map +1 -0
  21. package/dist/esm/app/Messenger/components/DocMessage/DocMessage.d.ts +5 -0
  22. package/dist/esm/app/Messenger/components/DocMessage/DocMessage.js +35 -0
  23. package/dist/esm/app/Messenger/components/DocMessage/DocMessage.js.map +1 -0
  24. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.d.ts +4 -0
  25. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js +39 -0
  26. package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js.map +1 -0
  27. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.d.ts +7 -0
  28. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js +53 -0
  29. package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js.map +1 -0
  30. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.d.ts +13 -0
  31. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js +43 -0
  32. package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js.map +1 -0
  33. package/dist/esm/app/Messenger/components/InputFile/InputFile.d.ts +11 -0
  34. package/dist/esm/app/Messenger/components/InputFile/InputFile.js +74 -0
  35. package/dist/esm/app/Messenger/components/InputFile/InputFile.js.map +1 -0
  36. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.d.ts +9 -0
  37. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js +34 -0
  38. package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js.map +1 -0
  39. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.d.ts +4 -0
  40. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js +13 -0
  41. package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js.map +1 -0
  42. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.d.ts +41 -0
  43. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js +40 -0
  44. package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js.map +1 -0
  45. package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.d.ts +6 -0
  46. package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js +29 -0
  47. package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js.map +1 -0
  48. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.d.ts +11 -0
  49. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js +33 -0
  50. package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js.map +1 -0
  51. package/dist/esm/app/Messenger/components/Select/Select.d.ts +14 -0
  52. package/dist/esm/app/Messenger/components/Select/Select.js +16 -0
  53. package/dist/esm/app/Messenger/components/Select/Select.js.map +1 -0
  54. package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.d.ts +13 -0
  55. package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js +143 -0
  56. package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js.map +1 -0
  57. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.d.ts +4 -0
  58. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js +43 -0
  59. package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js.map +1 -0
  60. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.d.ts +4 -0
  61. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js +14 -0
  62. package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js.map +1 -0
  63. package/dist/esm/app/Messenger/components/TextArea/TextArea.d.ts +9 -0
  64. package/dist/esm/app/Messenger/components/TextArea/TextArea.js +14 -0
  65. package/dist/esm/app/Messenger/components/TextArea/TextArea.js.map +1 -0
  66. package/dist/esm/app/Messenger/components/Tooltip/Tooltip.d.ts +7 -0
  67. package/dist/esm/app/Messenger/components/Tooltip/Tooltip.js +9 -0
  68. package/dist/esm/app/Messenger/components/Tooltip/Tooltip.js.map +1 -0
  69. package/dist/esm/app/Messenger/hooks/useConversations.d.ts +21 -0
  70. package/dist/esm/app/Messenger/hooks/useConversations.js +105 -0
  71. package/dist/esm/app/Messenger/hooks/useConversations.js.map +1 -0
  72. package/dist/esm/app/Messenger/hooks/useMessages.d.ts +9 -0
  73. package/dist/esm/app/Messenger/hooks/useMessages.js +37 -0
  74. package/dist/esm/app/Messenger/hooks/useMessages.js.map +1 -0
  75. package/dist/esm/app/Messenger/hooks/useThemes.d.ts +32 -0
  76. package/dist/esm/app/Messenger/hooks/useThemes.js +11 -0
  77. package/dist/esm/app/Messenger/hooks/useThemes.js.map +1 -0
  78. package/dist/esm/app/Messenger/icons/AttachFileIcon.d.ts +4 -0
  79. package/dist/esm/app/Messenger/icons/AttachFileIcon.js +10 -0
  80. package/dist/esm/app/Messenger/icons/AttachFileIcon.js.map +1 -0
  81. package/dist/esm/app/Messenger/icons/CSVFileIcon.d.ts +4 -0
  82. package/dist/esm/app/Messenger/icons/CSVFileIcon.js +7 -0
  83. package/dist/esm/app/Messenger/icons/CSVFileIcon.js.map +1 -0
  84. package/dist/esm/app/Messenger/icons/CloseIcon.d.ts +2 -0
  85. package/dist/esm/app/Messenger/icons/CloseIcon.js +9 -0
  86. package/dist/esm/app/Messenger/icons/CloseIcon.js.map +1 -0
  87. package/dist/esm/app/Messenger/icons/DOCFileIcon.d.ts +4 -0
  88. package/dist/esm/app/Messenger/icons/DOCFileIcon.js +18 -0
  89. package/dist/esm/app/Messenger/icons/DOCFileIcon.js.map +1 -0
  90. package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.d.ts +7 -0
  91. package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.js +12 -0
  92. package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.js.map +1 -0
  93. package/dist/esm/app/Messenger/icons/EmptyIcon.d.ts +2 -0
  94. package/dist/esm/app/Messenger/icons/EmptyIcon.js +8 -0
  95. package/dist/esm/app/Messenger/icons/EmptyIcon.js.map +1 -0
  96. package/dist/esm/app/Messenger/icons/MP4FileIcon.d.ts +4 -0
  97. package/dist/esm/app/Messenger/icons/MP4FileIcon.js +7 -0
  98. package/dist/esm/app/Messenger/icons/MP4FileIcon.js.map +1 -0
  99. package/dist/esm/app/Messenger/icons/MessageIcon.d.ts +6 -0
  100. package/dist/esm/app/Messenger/icons/MessageIcon.js +12 -0
  101. package/dist/esm/app/Messenger/icons/MessageIcon.js.map +1 -0
  102. package/dist/esm/app/Messenger/icons/PDFFileIcon.d.ts +4 -0
  103. package/dist/esm/app/Messenger/icons/PDFFileIcon.js +18 -0
  104. package/dist/esm/app/Messenger/icons/PDFFileIcon.js.map +1 -0
  105. package/dist/esm/app/Messenger/icons/ReadIcon.d.ts +4 -0
  106. package/dist/esm/app/Messenger/icons/ReadIcon.js +7 -0
  107. package/dist/esm/app/Messenger/icons/ReadIcon.js.map +1 -0
  108. package/dist/esm/app/Messenger/icons/SearchIcon.d.ts +2 -0
  109. package/dist/esm/app/Messenger/icons/SearchIcon.js +8 -0
  110. package/dist/esm/app/Messenger/icons/SearchIcon.js.map +1 -0
  111. package/dist/esm/app/Messenger/icons/TimerIcon.d.ts +4 -0
  112. package/dist/esm/app/Messenger/icons/TimerIcon.js +7 -0
  113. package/dist/esm/app/Messenger/icons/TimerIcon.js.map +1 -0
  114. package/dist/esm/app/Messenger/icons/TrashIcon.d.ts +6 -0
  115. package/dist/esm/app/Messenger/icons/TrashIcon.js +7 -0
  116. package/dist/esm/app/Messenger/icons/TrashIcon.js.map +1 -0
  117. package/dist/esm/app/Messenger/views/MessengerList.d.ts +40 -0
  118. package/dist/esm/app/Messenger/views/MessengerList.js +46 -0
  119. package/dist/esm/app/Messenger/views/MessengerList.js.map +1 -0
  120. package/dist/esm/app/Messenger/views/MessengerListItem.d.ts +12 -0
  121. package/dist/esm/app/Messenger/views/MessengerListItem.js +99 -0
  122. package/dist/esm/app/Messenger/views/MessengerListItem.js.map +1 -0
  123. package/dist/esm/app/Messenger/views/MessengerMessages.d.ts +35 -0
  124. package/dist/esm/app/Messenger/views/MessengerMessages.js +181 -0
  125. package/dist/esm/app/Messenger/views/MessengerMessages.js.map +1 -0
  126. package/dist/esm/app/Messenger/views/NewFormChat.d.ts +13 -0
  127. package/dist/esm/app/Messenger/views/NewFormChat.js +68 -0
  128. package/dist/esm/app/Messenger/views/NewFormChat.js.map +1 -0
  129. package/dist/esm/app/i18n/index.d.ts +3 -0
  130. package/dist/esm/app/i18n/index.js +32 -0
  131. package/dist/esm/app/i18n/index.js.map +1 -0
  132. package/dist/esm/index.d.ts +11 -0
  133. package/dist/esm/index.js +12 -0
  134. package/dist/esm/index.js.map +1 -0
  135. package/dist/esm/setupTests.d.ts +1 -0
  136. package/{src/setupTests.ts → dist/esm/setupTests.js} +2 -1
  137. package/dist/esm/setupTests.js.map +1 -0
  138. package/dist/esm/types.d.ts +140 -0
  139. package/dist/esm/types.js +2 -0
  140. package/dist/esm/types.js.map +1 -0
  141. package/package.json +90 -91
  142. package/src/__tests__/app/Messenger/classes/slaCalculations.spec.ts +0 -122
  143. package/src/app/ChatProvider/ChatProvider.tsx +0 -20
  144. package/src/app/Messenger/classes/slaCalculations.ts +0 -197
  145. package/src/app/Messenger/components/ChatButton/ChatButton.tsx +0 -64
  146. package/src/app/Messenger/components/ChatTabs/ChatTabs.less +0 -18
  147. package/src/app/Messenger/components/ChatTabs/ChatTabs.tsx +0 -32
  148. package/src/app/Messenger/components/DocMessage/DocMessage.less +0 -71
  149. package/src/app/Messenger/components/DocMessage/DocMessage.tsx +0 -50
  150. package/src/app/Messenger/components/ImagesContainer/ImagesContainer.less +0 -79
  151. package/src/app/Messenger/components/ImagesContainer/ImagesContainer.tsx +0 -51
  152. package/src/app/Messenger/components/IncomingMessage/IncomingMessage.tsx +0 -170
  153. package/src/app/Messenger/components/InfiniteScroll/InfiniteScroll.tsx +0 -80
  154. package/src/app/Messenger/components/InputFile/InputFile.tsx +0 -147
  155. package/src/app/Messenger/components/InputFile/inputFile.less +0 -59
  156. package/src/app/Messenger/components/MessageBallon/MessageBalloon.tsx +0 -100
  157. package/src/app/Messenger/components/MessengerAvatar/MessengerAvatar.tsx +0 -29
  158. package/src/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.tsx +0 -62
  159. package/src/app/Messenger/components/RenderFileIcon/RenderFileIcon.tsx +0 -40
  160. package/src/app/Messenger/components/SearchInput/SearchInput.less +0 -45
  161. package/src/app/Messenger/components/SearchInput/SearchInput.tsx +0 -77
  162. package/src/app/Messenger/components/Select/Select.less +0 -22
  163. package/src/app/Messenger/components/Select/Select.tsx +0 -56
  164. package/src/app/Messenger/components/SendMessageForm/SendMessageForm.tsx +0 -254
  165. package/src/app/Messenger/components/SenderMessages/SenderMessages.tsx +0 -91
  166. package/src/app/Messenger/components/SystemMessage/SystemMessage.tsx +0 -25
  167. package/src/app/Messenger/components/TextArea/TextArea.tsx +0 -35
  168. package/src/app/Messenger/components/TextArea/Textarea.less +0 -22
  169. package/src/app/Messenger/components/Tooltip/Tooltip.less +0 -27
  170. package/src/app/Messenger/components/Tooltip/Tooltip.tsx +0 -17
  171. package/src/app/Messenger/hooks/useConversations.tsx +0 -143
  172. package/src/app/Messenger/hooks/useMessages.tsx +0 -49
  173. package/src/app/Messenger/hooks/useThemes.tsx +0 -14
  174. package/src/app/Messenger/icons/AttachFileIcon.tsx +0 -20
  175. package/src/app/Messenger/icons/CSVFileIcon.tsx +0 -26
  176. package/src/app/Messenger/icons/CloseIcon.tsx +0 -20
  177. package/src/app/Messenger/icons/DOCFileIcon.tsx +0 -54
  178. package/src/app/Messenger/icons/DownloadMinimalistIcon.tsx +0 -37
  179. package/src/app/Messenger/icons/EmptyIcon.tsx +0 -20
  180. package/src/app/Messenger/icons/MP4FileIcon.tsx +0 -26
  181. package/src/app/Messenger/icons/MessageIcon.tsx +0 -27
  182. package/src/app/Messenger/icons/PDFFileIcon.tsx +0 -54
  183. package/src/app/Messenger/icons/ReadIcon.tsx +0 -18
  184. package/src/app/Messenger/icons/SearchIcon.tsx +0 -20
  185. package/src/app/Messenger/icons/TimerIcon.tsx +0 -18
  186. package/src/app/Messenger/icons/TrashIcon.tsx +0 -21
  187. package/src/app/Messenger/views/Messenger.less +0 -623
  188. package/src/app/Messenger/views/MessengerList.tsx +0 -170
  189. package/src/app/Messenger/views/MessengerListItem.tsx +0 -178
  190. package/src/app/Messenger/views/MessengerMessages.tsx +0 -414
  191. package/src/app/Messenger/views/NewFormChat.tsx +0 -145
  192. package/src/app/i18n/index.ts +0 -36
  193. package/src/app/i18n/locales/en.json +0 -64
  194. package/src/app/i18n/locales/pt.json +0 -64
  195. package/src/assets/right-arrow.svg +0 -10
  196. package/src/index.ts +0 -23
  197. package/src/react-app-env.d.ts +0 -19
  198. package/src/styles/abstracts/animations.less +0 -8
  199. package/src/styles/abstracts/mixins.less +0 -5
  200. package/src/styles/abstracts/variables.less +0 -31
  201. package/src/styles/base/base.less +0 -6
  202. package/src/styles/index.less +0 -5
  203. package/src/types.ts +0 -174
@@ -1,197 +0,0 @@
1
- import dayjs, { ConfigType, Dayjs } from 'dayjs'
2
- import dayjsBR from 'dayjs/locale/pt-br'
3
- import utc from 'dayjs/plugin/utc'
4
- import timezone from 'dayjs/plugin/timezone'
5
- import isToday from 'dayjs/plugin/isToday'
6
- const serverTz = 'America/Sao_Paulo'
7
-
8
- dayjs.extend(utc)
9
- dayjs.extend(timezone)
10
- dayjs.extend(isToday)
11
- dayjs.locale(dayjsBR)
12
-
13
- export const timeAsDayjs = (
14
- value: ConfigType = new Date(),
15
- options?: { server?: boolean; applyTimezone?: boolean }
16
- ): Dayjs => {
17
- const server = options?.server
18
- const applyTimezone = options?.applyTimezone
19
-
20
- let timezone = dayjs.tz.guess()
21
- if (!(applyTimezone ?? true)) timezone = 'GMT'
22
- else if (server ?? false) timezone = serverTz
23
-
24
- return dayjs.tz(value, timezone)
25
- }
26
-
27
- export const time = (
28
- value: ConfigType = new Date(),
29
- options?: { server?: boolean; applyTimezone?: boolean }
30
- ): Date => {
31
- const server = options?.server
32
- const applyTimezone = options?.applyTimezone
33
- let aux: Dayjs
34
-
35
- if (!(applyTimezone ?? true))
36
- aux = dayjs.tz(value, 'GMT') // Set applyTimezone to false when timezone is applied incorrectly (usually when working with JSDate and timestamps)
37
- else if (server ?? false) aux = dayjs.tz(value, serverTz)
38
- else aux = dayjs.tz(value, dayjs.tz.guess())
39
-
40
- return new Date(
41
- Date.UTC(
42
- aux.year(),
43
- aux.month(),
44
- aux.date(),
45
- aux.hour(),
46
- aux.minute(),
47
- aux.second(),
48
- aux.millisecond()
49
- )
50
- )
51
- }
52
-
53
- export class SlaDates {
54
- public seconds: number | null
55
-
56
- constructor (seconds: number) {
57
- this.seconds = seconds
58
- }
59
-
60
- private holidays = {
61
- 2023: ['09-07', '10-12', '10-17', '11-02', '11-15', '11-20', '12-25'],
62
- }
63
-
64
- private isWorkingDay (date: Dayjs) {
65
- const dayOfWeek = date.day()
66
- return dayOfWeek >= 1 && dayOfWeek <= 5 // Monday to Friday (1 to 5)
67
- }
68
-
69
- private isWorkingHour (date: Dayjs) {
70
- const hour = date.hour()
71
- return hour >= 9 && hour <= 18 // Between 9 AM and 5 PM (inclusive)
72
- }
73
-
74
- public isWeekendOrHoliday (date: Dayjs | Date | string): boolean {
75
- const weekDay = timeAsDayjs(date, { applyTimezone: false }).day()
76
- if ([6, 0].includes(weekDay)) return true
77
-
78
- const formatedDate = timeAsDayjs(date).format('MM-DD')
79
- const isHollyday = this.holidays[2023].includes(formatedDate)
80
- return isHollyday
81
- }
82
-
83
- private isHoliday (date: Dayjs) {
84
- const formatedDate = timeAsDayjs(date, { applyTimezone: false }).format(
85
- 'MM-DD'
86
- )
87
- const isHollyday = this.holidays[2023].includes(formatedDate)
88
- return isHollyday
89
- }
90
-
91
- public canUpdateClock (date: Dayjs) {
92
- const isWorking = this.isWorkingDay(date) && this.isWorkingHour(date)
93
- return !this.isWeekendOrHoliday(date) && isWorking
94
- }
95
-
96
- public getDiffInSeconds (
97
- startDate: dayjs.Dayjs,
98
- endDate: dayjs.Dayjs
99
- ): number {
100
- const diffInSeconds = endDate.diff(startDate, 'second')
101
- return diffInSeconds
102
- }
103
-
104
- calculateWorkingTime (
105
- startDate: Dayjs,
106
- endDate: Dayjs,
107
- workingHours: { start: number; end: number }
108
- ) {
109
- let current = startDate.clone()
110
- let workingTime = 0
111
-
112
- while (current.isBefore(endDate)) {
113
- // Skip weekends (Saturday and Sunday) and Holydays
114
-
115
- if (this.isWorkingDay(current) && !this.isHoliday(current)) {
116
- const startOfDay = current
117
- .clone()
118
- .startOf('day')
119
- .add(workingHours.start, 'hour')
120
- const endOfDay = current
121
- .clone()
122
- .startOf('day')
123
- .add(workingHours.end, 'hour')
124
-
125
- if (current.isBefore(startOfDay)) {
126
- // If current time is before the start of working hours, move to the start of working hours
127
- current = startOfDay.clone()
128
- }
129
-
130
- if (current.isAfter(endOfDay)) {
131
- current = current.clone().add(1, 'day').startOf('day')
132
- } else if (endDate.isAfter(endOfDay)) {
133
- // If end date is after the end of working hours, add a full working day
134
-
135
- workingTime += Math.abs(endOfDay.clone().diff(current, 'second'))
136
- current = current
137
- .clone()
138
- .add(1, 'day')
139
- .startOf('day')
140
- .add(workingHours.start, 'hour')
141
- } else {
142
- // Calculate working time for the last day (end date)
143
- workingTime += Math.abs(endDate.clone().diff(current, 'second'))
144
-
145
- break
146
- }
147
- } else {
148
- // Move to the next day
149
- current = current.clone().add(1, 'day').startOf('day')
150
- }
151
- }
152
-
153
- return workingTime
154
- }
155
-
156
- // Function to calculate the difference in seconds between two dates considering working hours
157
- getDifferenceInSeconds (
158
- startDate: Dayjs,
159
- endDate: Dayjs,
160
- workingHours: { start: number; end: number }
161
- ) {
162
- if (endDate.isBefore(startDate)) {
163
- throw new Error('End date should be after the start date.')
164
- }
165
-
166
- const workingTimeInSeconds = this.calculateWorkingTime(
167
- startDate,
168
- endDate,
169
- workingHours
170
- )
171
- return workingTimeInSeconds
172
- }
173
-
174
- static secondsInHours (currentSeconds: number) {
175
- const hours = Math.floor(currentSeconds / 3600)
176
- const minutes = Math.floor((currentSeconds % 3600) / 60)
177
- const seconds = currentSeconds % 60
178
- return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
179
- }
180
-
181
- static getColorsByTime (seconds: number) {
182
- const hours = seconds / 3600
183
- if (hours <= 2) {
184
- return '#00CF7B'
185
- }
186
-
187
- if (hours >= 2 && hours < 3) {
188
- return '#FF9838'
189
- }
190
-
191
- if (hours >= 3 && hours < 4) {
192
- return '#DD4E4E'
193
- }
194
-
195
- return '#151919'
196
- }
197
- }
@@ -1,64 +0,0 @@
1
- import React from 'react'
2
- import useTheme from '../../hooks/useThemes'
3
-
4
- interface INewChatButton {
5
- removeActiveItem: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void
6
- messegerView: 'empty' | 'messages' | 'newChat'
7
- chatButtons: {
8
- label: string
9
- onClick: () => void
10
- type: string
11
- canSee: boolean
12
- disabled?: boolean
13
- }[]
14
- }
15
-
16
- function ChatButtons ({ chatButtons, removeActiveItem }: INewChatButton) {
17
- const { theme } = useTheme()
18
-
19
- const getButtonType = (type: string, disabled?: boolean) => {
20
- if (type === 'primary')
21
- return {
22
- background: disabled ? theme?.buttonsDisabled : theme?.buttonPrimary,
23
- color: theme?.buttonPrimaryText,
24
- }
25
-
26
- if (type === 'outlined')
27
- return {
28
- background: 'transparent',
29
- color: theme?.asideFontColor,
30
- border: `${theme?.asideFontColor} 1px solid`,
31
- }
32
- return
33
- }
34
-
35
- return (
36
- <>
37
- {chatButtons.map((button) => {
38
- return (
39
- button.canSee && (
40
- <>
41
- <button
42
- key={`button-${button.label}`}
43
- className={
44
- button.disabled
45
- ? 'messenger__chat-button messenger__chat-button--disabled'
46
- : 'messenger__chat-button'
47
- }
48
- onClick={(event) => {
49
- button.onClick()
50
- removeActiveItem(event)
51
- }}
52
- style={getButtonType(button.type, button.disabled)}
53
- >
54
- {button.label}
55
- </button>
56
- </>
57
- )
58
- )
59
- })}
60
- </>
61
- )
62
- }
63
-
64
- export default ChatButtons
@@ -1,18 +0,0 @@
1
- .chat-tabs {
2
- display: flex;
3
- justify-content: center;
4
- align-items: center;
5
- &__button {
6
- background: transparent;
7
- border: none;
8
- border-bottom: 1px solid transparent;
9
- cursor: pointer;
10
- padding: 0.5rem 1rem;
11
- margin-bottom: 0.5rem;
12
-
13
- &--active {
14
- border-bottom: 1px solid var(--secondary-color);
15
- transition: 0.5s;
16
- }
17
- }
18
- }
@@ -1,32 +0,0 @@
1
- import useTheme from '../../hooks/useThemes'
2
- import { activeItem } from '../../views/MessengerListItem'
3
- import React from 'react'
4
-
5
- interface IProps {
6
- handleChangeTickets: (tab: string) => void
7
- chatListTabs: { value: string; label: string }[]
8
- }
9
-
10
- function ChatTabs ({ handleChangeTickets, chatListTabs }: IProps) {
11
- const { theme } = useTheme()
12
- return (
13
- <div className='chat-tabs' style={{ color: theme.asideFontColor }}>
14
- {chatListTabs.map((tab, index) => {
15
- return (
16
- <button
17
- key={`chatListTab-${index}`}
18
- className={`chat-tabs__button ${index === 0 && 'chat-tabs__button--active'}`}
19
- onClick={(e) => {
20
- handleChangeTickets(tab.value)
21
- activeItem(e, 'chat-tabs__button', 'chat-tabs__button--active')
22
- }}
23
- >
24
- {tab.label}
25
- </button>
26
- )
27
- })}
28
- </div>
29
- )
30
- }
31
-
32
- export default ChatTabs
@@ -1,71 +0,0 @@
1
- .messenger {
2
- &__messages-row--sender {
3
- display: flex;
4
- justify-content: flex-end;
5
- margin: 10px 0;
6
- }
7
-
8
- &__messages-sender {
9
- max-width: 80%;
10
- padding: 10px;
11
- border-radius: 8px;
12
- font-family: 'Arial', sans-serif;
13
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
14
- }
15
-
16
- &__file-card {
17
- display: flex;
18
- align-items: center;
19
- background: rgba(0, 0, 0, 0.1);
20
- border-radius: 8px;
21
- padding: 10px;
22
- }
23
-
24
- &__file-icon {
25
- flex-shrink: 0;
26
- width: 40px;
27
- height: 40px;
28
- display: flex;
29
- align-items: center;
30
- justify-content: center;
31
- border-radius: 4px;
32
- margin-right: 10px;
33
- }
34
-
35
- &__file-details {
36
- flex-grow: 1;
37
- margin-right: 10px;
38
- }
39
-
40
- &__file-name {
41
- font-weight: bold;
42
- font-size: 14px;
43
- margin: 0;
44
- }
45
-
46
- &__file-info {
47
- font-size: 12px;
48
- color: rgba(255, 255, 255, 0.8);
49
- }
50
-
51
- &__file-download {
52
- font-size: 12px;
53
- text-decoration: none;
54
- }
55
-
56
- &__file-download:hover {
57
- text-decoration: underline;
58
- }
59
-
60
- &__message--bottom {
61
- display: flex;
62
- justify-content: space-between;
63
- align-items: center;
64
- margin-top: 5px;
65
- }
66
-
67
- &__message--date {
68
- font-size: 12px;
69
- color: rgba(255, 255, 255, 0.8);
70
- }
71
- }
@@ -1,50 +0,0 @@
1
- import React from 'react'
2
- import DownloadMinimalistIcon from '../../icons/DownloadMinimalistIcon'
3
- import { IMessagesBalloon } from 'types'
4
- import RenderFileIcon from '../RenderFileIcon/RenderFileIcon'
5
-
6
- export function formatFileSize (size = 0) {
7
- if (size % 1 === 0) {
8
- return `${size.toFixed(0)} MB`
9
- }
10
- return `${size.toFixed(2)} MB`
11
- }
12
-
13
- function DocMessage ({ file }: IMessagesBalloon) {
14
- const fileType = file?.location?.split('.').pop()?.toUpperCase()
15
- const fileName = file && file.originalname
16
- const filePages = file && file.pages
17
- const fileSize = file && formatFileSize(file?.size)
18
-
19
- return (
20
- <div className='messenger__messages-row--sender'>
21
- <span>
22
- {
23
- <div className='messenger__file-card'>
24
- <div className='messenger__file-icon'>
25
- <RenderFileIcon fileType={file?.mimetype} />
26
- </div>
27
- <div className='messenger__file-details'>
28
- <p className='messenger__file-name'>{fileName}</p>
29
- <p className='messenger__file-info'>
30
- {filePages && filePages + ' página(s) •'} {fileSize} •{' '}
31
- {fileType}
32
- </p>
33
- </div>
34
- <a
35
- href={file?.location}
36
- target='_blank'
37
- rel='noopener noreferrer'
38
- className='messenger__file-download'
39
- style={{ color: 'blue' }}
40
- >
41
- <DownloadMinimalistIcon width='24' height='24' color='white' />
42
- </a>
43
- </div>
44
- }
45
- </span>
46
- </div>
47
- )
48
- }
49
-
50
- export default DocMessage
@@ -1,79 +0,0 @@
1
- .images-container {
2
- width: 100%;
3
- height: 90%;
4
- border: 2px solid @secondary-bg-color-chat;
5
- background-color: @component-background;
6
- border-bottom: none;
7
- border-radius: 0 @border-radius 0 0;
8
- @media @tab-md {
9
- border-radius: @border-radius @border-radius 0 0 !important;
10
- }
11
-
12
- &__close {
13
- width: 100%;
14
- position: relative;
15
- margin-top: 15px;
16
- display: flex;
17
- justify-content: flex-end;
18
- align-items: center;
19
-
20
- &--icon {
21
- width: 32px;
22
- height: 32px;
23
- cursor: pointer;
24
- background-color: transparent;
25
- outline: none;
26
- border: none;
27
-
28
- &:hover {
29
- opacity: 75%;
30
- transition: 200ms;
31
- }
32
-
33
- &::before,
34
- &::after {
35
- position: absolute;
36
- right: 25px;
37
- top: 0;
38
- content: ' ';
39
- height: 33px;
40
- width: 2px;
41
- background-color: red;
42
- }
43
-
44
- &:after {
45
- transform: rotate(45deg);
46
- }
47
-
48
- &:before {
49
- transform: rotate(-45deg);
50
- }
51
- }
52
- }
53
-
54
- &__container {
55
- width: 100%;
56
- height: 100%;
57
-
58
- display: flex;
59
- align-items: center;
60
- justify-content: center;
61
- color: @title-form-color;
62
- }
63
-
64
- &__image {
65
- display: flex;
66
- flex-direction: column;
67
- align-items: center;
68
- width: 100%;
69
- padding: 0 10px;
70
- max-width: 700px;
71
- max-height: 300px;
72
- }
73
-
74
- &__title-img {
75
- width: 100%;
76
- text-align: center;
77
- word-wrap: break-word;
78
- }
79
- }
@@ -1,51 +0,0 @@
1
- import React, { useEffect, useState } from 'react'
2
- import { IImagesContainer } from 'types'
3
- import RenderFileIcon from '../RenderFileIcon/RenderFileIcon'
4
-
5
- function ImagesContainer ({ file, onClose }: IImagesContainer) {
6
- const [fileInfo, setFileInfo] = useState<{ name: string; type: string }>({
7
- name: '',
8
- type: '',
9
- })
10
-
11
- const [b64, setB64] = useState<string>('')
12
-
13
- useEffect(() => {
14
- function getBase64 (file: File) {
15
- return new Promise((resolve, reject) => {
16
- const reader = new FileReader()
17
- reader.readAsDataURL(file)
18
- reader.onload = () => resolve(reader.result)
19
- reader.onerror = (error) => reject(error)
20
- })
21
- }
22
-
23
- if (file) getBase64(file).then((base64) => setB64(base64 as string))
24
- }, [file])
25
-
26
- useEffect(() => {
27
- if (file) {
28
- setFileInfo({
29
- name: file.name,
30
- type: file.type,
31
- })
32
- }
33
- }, [file])
34
-
35
- return (
36
- <div className='images-container'>
37
- <div className='images-container__close'>
38
- <button className='images-container__close--icon' onClick={onClose} />
39
- </div>
40
-
41
- <div className='images-container__container'>
42
- <div className='images-container__image'>
43
- <RenderFileIcon fileType={fileInfo.type} b64={b64} />
44
- <span className='images-container__title-img'>{fileInfo.name}</span>
45
- </div>
46
- </div>
47
- </div>
48
- )
49
- }
50
-
51
- export default ImagesContainer