agx-chat-web 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -49
- package/package.json +91 -91
- package/src/__tests__/app/Messenger/classes/slaCalculations.spec.ts +122 -122
- package/src/app/ChatProvider/ChatProvider.tsx +20 -20
- package/src/app/Messenger/classes/slaCalculations.ts +197 -197
- package/src/app/Messenger/components/ChatButton/ChatButton.tsx +64 -64
- package/src/app/Messenger/components/ChatTabs/ChatTabs.less +18 -18
- package/src/app/Messenger/components/ChatTabs/ChatTabs.tsx +32 -32
- package/src/app/Messenger/components/DocMessage/DocMessage.less +71 -71
- package/src/app/Messenger/components/DocMessage/DocMessage.tsx +50 -50
- package/src/app/Messenger/components/ImagesContainer/ImagesContainer.less +79 -79
- package/src/app/Messenger/components/ImagesContainer/ImagesContainer.tsx +51 -51
- package/src/app/Messenger/components/IncomingMessage/IncomingMessage.tsx +170 -170
- package/src/app/Messenger/components/InfiniteScroll/InfiniteScroll.tsx +80 -80
- package/src/app/Messenger/components/InputFile/InputFile.tsx +147 -147
- package/src/app/Messenger/components/InputFile/inputFile.less +59 -59
- package/src/app/Messenger/components/MessageBallon/MessageBalloon.tsx +100 -100
- package/src/app/Messenger/components/MessengerAvatar/MessengerAvatar.tsx +29 -29
- package/src/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.tsx +62 -62
- package/src/app/Messenger/components/RenderFileIcon/RenderFileIcon.tsx +40 -40
- package/src/app/Messenger/components/SearchInput/SearchInput.less +45 -45
- package/src/app/Messenger/components/SearchInput/SearchInput.tsx +77 -77
- package/src/app/Messenger/components/Select/Select.less +22 -22
- package/src/app/Messenger/components/Select/Select.tsx +56 -56
- package/src/app/Messenger/components/SendMessageForm/SendMessageForm.tsx +254 -254
- package/src/app/Messenger/components/SenderMessages/SenderMessages.tsx +91 -91
- package/src/app/Messenger/components/SystemMessage/SystemMessage.tsx +25 -25
- package/src/app/Messenger/components/TextArea/TextArea.tsx +35 -35
- package/src/app/Messenger/components/TextArea/Textarea.less +22 -22
- package/src/app/Messenger/components/Tooltip/Tooltip.less +27 -27
- package/src/app/Messenger/components/Tooltip/Tooltip.tsx +17 -17
- package/src/app/Messenger/hooks/useConversations.tsx +143 -143
- package/src/app/Messenger/hooks/useMessages.tsx +49 -49
- package/src/app/Messenger/hooks/useThemes.tsx +14 -14
- package/src/app/Messenger/icons/AttachFileIcon.tsx +20 -20
- package/src/app/Messenger/icons/CSVFileIcon.tsx +26 -26
- package/src/app/Messenger/icons/CloseIcon.tsx +20 -20
- package/src/app/Messenger/icons/DOCFileIcon.tsx +54 -54
- package/src/app/Messenger/icons/DownloadMinimalistIcon.tsx +37 -37
- package/src/app/Messenger/icons/EmptyIcon.tsx +20 -20
- package/src/app/Messenger/icons/MP4FileIcon.tsx +26 -26
- package/src/app/Messenger/icons/MessageIcon.tsx +27 -27
- package/src/app/Messenger/icons/PDFFileIcon.tsx +54 -54
- package/src/app/Messenger/icons/ReadIcon.tsx +18 -18
- package/src/app/Messenger/icons/SearchIcon.tsx +20 -20
- package/src/app/Messenger/icons/TimerIcon.tsx +18 -18
- package/src/app/Messenger/icons/TrashIcon.tsx +21 -21
- package/src/app/Messenger/views/Messenger.less +623 -623
- package/src/app/Messenger/views/MessengerList.tsx +170 -170
- package/src/app/Messenger/views/MessengerListItem.tsx +178 -178
- package/src/app/Messenger/views/MessengerMessages.tsx +414 -414
- package/src/app/Messenger/views/NewFormChat.tsx +145 -145
- package/src/app/i18n/index.ts +36 -36
- package/src/app/i18n/locales/en.json +64 -64
- package/src/app/i18n/locales/pt.json +64 -64
- package/src/assets/right-arrow.svg +9 -9
- package/src/index.ts +23 -23
- package/src/react-app-env.d.ts +19 -19
- package/src/setupTests.ts +5 -5
- package/src/styles/abstracts/animations.less +8 -8
- package/src/styles/abstracts/mixins.less +5 -5
- package/src/styles/abstracts/variables.less +31 -31
- package/src/styles/base/base.less +6 -6
- package/src/styles/index.less +5 -5
- package/src/types.ts +174 -174
- package/dist/agx-chat.esm.js +0 -2
- package/dist/agx-chat.esm.js.map +0 -1
- package/dist/agx-chat.min.js +0 -2
- package/dist/agx-chat.min.js.map +0 -1
- package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.d.ts +0 -1
- package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js +0 -46
- package/dist/esm/__tests__/app/Messenger/classes/slaCalculations.spec.js.map +0 -1
- package/dist/esm/app/Messenger/classes/slaCalculations.d.ts +0 -30
- package/dist/esm/app/Messenger/classes/slaCalculations.js +0 -144
- package/dist/esm/app/Messenger/classes/slaCalculations.js.map +0 -1
- package/dist/esm/app/Messenger/components/ChatButton/ChatButton.d.ts +0 -14
- package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js +0 -31
- package/dist/esm/app/Messenger/components/ChatButton/ChatButton.js.map +0 -1
- package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.d.ts +0 -10
- package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js +0 -15
- package/dist/esm/app/Messenger/components/ChatTabs/ChatTabs.js.map +0 -1
- package/dist/esm/app/Messenger/components/DocMessage/DocMessage.d.ts +0 -5
- package/dist/esm/app/Messenger/components/DocMessage/DocMessage.js +0 -35
- package/dist/esm/app/Messenger/components/DocMessage/DocMessage.js.map +0 -1
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.d.ts +0 -4
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js +0 -39
- package/dist/esm/app/Messenger/components/ImagesContainer/ImagesContainer.js.map +0 -1
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.d.ts +0 -7
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js +0 -49
- package/dist/esm/app/Messenger/components/IncomingMessage/IncomingMessage.js.map +0 -1
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.d.ts +0 -13
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js +0 -43
- package/dist/esm/app/Messenger/components/InfiniteScroll/InfiniteScroll.js.map +0 -1
- package/dist/esm/app/Messenger/components/InputFile/InputFile.d.ts +0 -11
- package/dist/esm/app/Messenger/components/InputFile/InputFile.js +0 -72
- package/dist/esm/app/Messenger/components/InputFile/InputFile.js.map +0 -1
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.d.ts +0 -9
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js +0 -34
- package/dist/esm/app/Messenger/components/MessageBallon/MessageBalloon.js.map +0 -1
- package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.d.ts +0 -4
- package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js +0 -13
- package/dist/esm/app/Messenger/components/MessengerAvatar/MessengerAvatar.js.map +0 -1
- package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.d.ts +0 -41
- package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js +0 -40
- package/dist/esm/app/Messenger/components/MessengerThemeWrapper/MessengerThemeWrapper.js.map +0 -1
- package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.d.ts +0 -6
- package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js +0 -21
- package/dist/esm/app/Messenger/components/RenderFileIcon/RenderFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.d.ts +0 -11
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js +0 -33
- package/dist/esm/app/Messenger/components/SearchInput/SearchInput.js.map +0 -1
- package/dist/esm/app/Messenger/components/Select/Select.d.ts +0 -14
- package/dist/esm/app/Messenger/components/Select/Select.js +0 -16
- package/dist/esm/app/Messenger/components/Select/Select.js.map +0 -1
- package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.d.ts +0 -13
- package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js +0 -119
- package/dist/esm/app/Messenger/components/SendMessageForm/SendMessageForm.js.map +0 -1
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.d.ts +0 -4
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js +0 -40
- package/dist/esm/app/Messenger/components/SenderMessages/SenderMessages.js.map +0 -1
- package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.d.ts +0 -4
- package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js +0 -14
- package/dist/esm/app/Messenger/components/SystemMessage/SystemMessage.js.map +0 -1
- package/dist/esm/app/Messenger/components/TextArea/TextArea.d.ts +0 -9
- package/dist/esm/app/Messenger/components/TextArea/TextArea.js +0 -14
- package/dist/esm/app/Messenger/components/TextArea/TextArea.js.map +0 -1
- package/dist/esm/app/Messenger/components/Tooltip/Tooltip.d.ts +0 -7
- package/dist/esm/app/Messenger/components/Tooltip/Tooltip.js +0 -9
- package/dist/esm/app/Messenger/components/Tooltip/Tooltip.js.map +0 -1
- package/dist/esm/app/Messenger/hooks/useConversations.d.ts +0 -21
- package/dist/esm/app/Messenger/hooks/useConversations.js +0 -105
- package/dist/esm/app/Messenger/hooks/useConversations.js.map +0 -1
- package/dist/esm/app/Messenger/hooks/useMessages.d.ts +0 -9
- package/dist/esm/app/Messenger/hooks/useMessages.js +0 -37
- package/dist/esm/app/Messenger/hooks/useMessages.js.map +0 -1
- package/dist/esm/app/Messenger/hooks/useThemes.d.ts +0 -32
- package/dist/esm/app/Messenger/hooks/useThemes.js +0 -11
- package/dist/esm/app/Messenger/hooks/useThemes.js.map +0 -1
- package/dist/esm/app/Messenger/icons/AttachFileIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/AttachFileIcon.js +0 -10
- package/dist/esm/app/Messenger/icons/AttachFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/CloseIcon.d.ts +0 -2
- package/dist/esm/app/Messenger/icons/CloseIcon.js +0 -9
- package/dist/esm/app/Messenger/icons/CloseIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/DOCFileIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/DOCFileIcon.js +0 -18
- package/dist/esm/app/Messenger/icons/DOCFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.d.ts +0 -7
- package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.js +0 -12
- package/dist/esm/app/Messenger/icons/DownloadMinimalistIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/EmptyIcon.d.ts +0 -2
- package/dist/esm/app/Messenger/icons/EmptyIcon.js +0 -8
- package/dist/esm/app/Messenger/icons/EmptyIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/MessageIcon.d.ts +0 -6
- package/dist/esm/app/Messenger/icons/MessageIcon.js +0 -12
- package/dist/esm/app/Messenger/icons/MessageIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/PDFFileIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/PDFFileIcon.js +0 -18
- package/dist/esm/app/Messenger/icons/PDFFileIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/ReadIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/ReadIcon.js +0 -7
- package/dist/esm/app/Messenger/icons/ReadIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/SearchIcon.d.ts +0 -2
- package/dist/esm/app/Messenger/icons/SearchIcon.js +0 -8
- package/dist/esm/app/Messenger/icons/SearchIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/TimerIcon.d.ts +0 -4
- package/dist/esm/app/Messenger/icons/TimerIcon.js +0 -7
- package/dist/esm/app/Messenger/icons/TimerIcon.js.map +0 -1
- package/dist/esm/app/Messenger/icons/TrashIcon.d.ts +0 -6
- package/dist/esm/app/Messenger/icons/TrashIcon.js +0 -7
- package/dist/esm/app/Messenger/icons/TrashIcon.js.map +0 -1
- package/dist/esm/app/Messenger/views/MessengerList.d.ts +0 -40
- package/dist/esm/app/Messenger/views/MessengerList.js +0 -46
- package/dist/esm/app/Messenger/views/MessengerList.js.map +0 -1
- package/dist/esm/app/Messenger/views/MessengerListItem.d.ts +0 -12
- package/dist/esm/app/Messenger/views/MessengerListItem.js +0 -99
- package/dist/esm/app/Messenger/views/MessengerListItem.js.map +0 -1
- package/dist/esm/app/Messenger/views/MessengerMessages.d.ts +0 -35
- package/dist/esm/app/Messenger/views/MessengerMessages.js +0 -181
- package/dist/esm/app/Messenger/views/MessengerMessages.js.map +0 -1
- package/dist/esm/app/Messenger/views/NewFormChat.d.ts +0 -13
- package/dist/esm/app/Messenger/views/NewFormChat.js +0 -68
- package/dist/esm/app/Messenger/views/NewFormChat.js.map +0 -1
- package/dist/esm/app/i18n/index.d.ts +0 -3
- package/dist/esm/app/i18n/index.js +0 -31
- package/dist/esm/app/i18n/index.js.map +0 -1
- package/dist/esm/app/i18n/locales/index.d.ts +0 -6
- package/dist/esm/app/i18n/locales/index.js +0 -7
- package/dist/esm/app/i18n/locales/index.js.map +0 -1
- package/dist/esm/index.d.ts +0 -10
- package/dist/esm/index.js +0 -11
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/setupTests.d.ts +0 -1
- package/dist/esm/setupTests.js +0 -6
- package/dist/esm/setupTests.js.map +0 -1
- package/dist/esm/types.d.ts +0 -140
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
|
@@ -1,143 +1,143 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { IList } from 'types'
|
|
3
|
-
|
|
4
|
-
type _viewDesktop = 'empty' | 'messages' | 'newChat'
|
|
5
|
-
type _viewMobile = 'list' | 'messages'
|
|
6
|
-
|
|
7
|
-
export const useConversations = () => {
|
|
8
|
-
const SLICE = 15
|
|
9
|
-
const [sliceCount, setSliceCount] = useState(SLICE)
|
|
10
|
-
const [conversations, setConversations] = useState<IList[]>([])
|
|
11
|
-
const [currentChat, setCurrentChat] = useState<IList>()
|
|
12
|
-
const [viewDesktop, setViewDesktop] = useState<_viewDesktop>('empty')
|
|
13
|
-
const [viewMobile, setViewMobile] = useState<'list' | 'messages'>('list')
|
|
14
|
-
|
|
15
|
-
const changeViewDesktop = (view: _viewDesktop) => {
|
|
16
|
-
setViewDesktop(view)
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const changeViewMobile = (view: _viewMobile) => {
|
|
20
|
-
setViewMobile(view)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const selectChat = (chat: IList) => {
|
|
24
|
-
setCurrentChat(chat)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const onIntersect = () => {
|
|
28
|
-
setSliceCount((prev) => {
|
|
29
|
-
const count = prev + SLICE
|
|
30
|
-
return count
|
|
31
|
-
})
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const hasNext = () => {
|
|
35
|
-
return conversations.length >= sliceCount
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const resetConversations = () => {
|
|
39
|
-
setConversations([])
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const mapConversationsUnread = (prev: IList[]) => (id: string) => {
|
|
43
|
-
return (prev || []).map((conversation) => {
|
|
44
|
-
if (conversation?._id === id) {
|
|
45
|
-
return {
|
|
46
|
-
...conversation,
|
|
47
|
-
totalUnreadMessages: 0,
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return conversation
|
|
52
|
-
})
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const reorderConversations = (conversations: IList[], ticketId?: string) => {
|
|
56
|
-
const index = conversations.findIndex(
|
|
57
|
-
(conversation) => conversation._id === ticketId
|
|
58
|
-
)
|
|
59
|
-
if (index !== -1) {
|
|
60
|
-
const conversationToMove = conversations.splice(index, 1)[0]
|
|
61
|
-
conversations.unshift(conversationToMove)
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const mapConversationsIncrementUnread =
|
|
66
|
-
(prev: IList[], ticketId?: string) => (id: string) => {
|
|
67
|
-
const updatedConversations = (prev || []).map((conversation) => {
|
|
68
|
-
if (conversation._id === id) {
|
|
69
|
-
return {
|
|
70
|
-
...conversation,
|
|
71
|
-
totalUnreadMessages:
|
|
72
|
-
ticketId === id ? 0 : conversation.totalUnreadMessages + 1,
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return conversation
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
reorderConversations(updatedConversations, ticketId)
|
|
79
|
-
|
|
80
|
-
return updatedConversations
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const setAsRead = (id: string) => {
|
|
84
|
-
setConversations((prev) => mapConversationsUnread(prev)(id))
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const addConversations = (
|
|
88
|
-
conversations: IList[],
|
|
89
|
-
goToNewConversation?: (chat: IList) => void
|
|
90
|
-
) => {
|
|
91
|
-
setConversations(conversations)
|
|
92
|
-
|
|
93
|
-
if (goToNewConversation) goToNewConversation(conversations[0])
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const addOneUnreadToTicket = (ticketId: string, currentChat?: string) => {
|
|
97
|
-
setConversations((prev) => {
|
|
98
|
-
return mapConversationsIncrementUnread(prev, currentChat)(ticketId)
|
|
99
|
-
})
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const removeClosedConversation = (ticketId: string) => {
|
|
103
|
-
const filtred = conversations.filter(
|
|
104
|
-
(conversation) => conversation._id !== ticketId
|
|
105
|
-
)
|
|
106
|
-
addConversations(filtred)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const closeIfIsCurrent = (ticketId: string) => {
|
|
110
|
-
if (ticketId === currentChat?._id) {
|
|
111
|
-
changeViewDesktop('empty')
|
|
112
|
-
changeViewMobile('list')
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const onCloseChat = (ticketId: string) => {
|
|
117
|
-
removeClosedConversation(ticketId)
|
|
118
|
-
closeIfIsCurrent(ticketId)
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const reset = () => {
|
|
122
|
-
setSliceCount(SLICE)
|
|
123
|
-
resetConversations()
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return {
|
|
127
|
-
onIntersect,
|
|
128
|
-
reset,
|
|
129
|
-
conversations,
|
|
130
|
-
hasNext,
|
|
131
|
-
addConversations,
|
|
132
|
-
addOneUnreadToTicket,
|
|
133
|
-
setAsRead,
|
|
134
|
-
sliceCount,
|
|
135
|
-
currentChat,
|
|
136
|
-
selectChat,
|
|
137
|
-
onCloseChat,
|
|
138
|
-
changeViewDesktop,
|
|
139
|
-
viewDesktop,
|
|
140
|
-
changeViewMobile,
|
|
141
|
-
viewMobile,
|
|
142
|
-
}
|
|
143
|
-
}
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
import { IList } from 'types'
|
|
3
|
+
|
|
4
|
+
type _viewDesktop = 'empty' | 'messages' | 'newChat'
|
|
5
|
+
type _viewMobile = 'list' | 'messages'
|
|
6
|
+
|
|
7
|
+
export const useConversations = () => {
|
|
8
|
+
const SLICE = 15
|
|
9
|
+
const [sliceCount, setSliceCount] = useState(SLICE)
|
|
10
|
+
const [conversations, setConversations] = useState<IList[]>([])
|
|
11
|
+
const [currentChat, setCurrentChat] = useState<IList>()
|
|
12
|
+
const [viewDesktop, setViewDesktop] = useState<_viewDesktop>('empty')
|
|
13
|
+
const [viewMobile, setViewMobile] = useState<'list' | 'messages'>('list')
|
|
14
|
+
|
|
15
|
+
const changeViewDesktop = (view: _viewDesktop) => {
|
|
16
|
+
setViewDesktop(view)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const changeViewMobile = (view: _viewMobile) => {
|
|
20
|
+
setViewMobile(view)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const selectChat = (chat: IList) => {
|
|
24
|
+
setCurrentChat(chat)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const onIntersect = () => {
|
|
28
|
+
setSliceCount((prev) => {
|
|
29
|
+
const count = prev + SLICE
|
|
30
|
+
return count
|
|
31
|
+
})
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const hasNext = () => {
|
|
35
|
+
return conversations.length >= sliceCount
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const resetConversations = () => {
|
|
39
|
+
setConversations([])
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const mapConversationsUnread = (prev: IList[]) => (id: string) => {
|
|
43
|
+
return (prev || []).map((conversation) => {
|
|
44
|
+
if (conversation?._id === id) {
|
|
45
|
+
return {
|
|
46
|
+
...conversation,
|
|
47
|
+
totalUnreadMessages: 0,
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return conversation
|
|
52
|
+
})
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const reorderConversations = (conversations: IList[], ticketId?: string) => {
|
|
56
|
+
const index = conversations.findIndex(
|
|
57
|
+
(conversation) => conversation._id === ticketId
|
|
58
|
+
)
|
|
59
|
+
if (index !== -1) {
|
|
60
|
+
const conversationToMove = conversations.splice(index, 1)[0]
|
|
61
|
+
conversations.unshift(conversationToMove)
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const mapConversationsIncrementUnread =
|
|
66
|
+
(prev: IList[], ticketId?: string) => (id: string) => {
|
|
67
|
+
const updatedConversations = (prev || []).map((conversation) => {
|
|
68
|
+
if (conversation._id === id) {
|
|
69
|
+
return {
|
|
70
|
+
...conversation,
|
|
71
|
+
totalUnreadMessages:
|
|
72
|
+
ticketId === id ? 0 : conversation.totalUnreadMessages + 1,
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return conversation
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
reorderConversations(updatedConversations, ticketId)
|
|
79
|
+
|
|
80
|
+
return updatedConversations
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const setAsRead = (id: string) => {
|
|
84
|
+
setConversations((prev) => mapConversationsUnread(prev)(id))
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const addConversations = (
|
|
88
|
+
conversations: IList[],
|
|
89
|
+
goToNewConversation?: (chat: IList) => void
|
|
90
|
+
) => {
|
|
91
|
+
setConversations(conversations)
|
|
92
|
+
|
|
93
|
+
if (goToNewConversation) goToNewConversation(conversations[0])
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const addOneUnreadToTicket = (ticketId: string, currentChat?: string) => {
|
|
97
|
+
setConversations((prev) => {
|
|
98
|
+
return mapConversationsIncrementUnread(prev, currentChat)(ticketId)
|
|
99
|
+
})
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const removeClosedConversation = (ticketId: string) => {
|
|
103
|
+
const filtred = conversations.filter(
|
|
104
|
+
(conversation) => conversation._id !== ticketId
|
|
105
|
+
)
|
|
106
|
+
addConversations(filtred)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const closeIfIsCurrent = (ticketId: string) => {
|
|
110
|
+
if (ticketId === currentChat?._id) {
|
|
111
|
+
changeViewDesktop('empty')
|
|
112
|
+
changeViewMobile('list')
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const onCloseChat = (ticketId: string) => {
|
|
117
|
+
removeClosedConversation(ticketId)
|
|
118
|
+
closeIfIsCurrent(ticketId)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const reset = () => {
|
|
122
|
+
setSliceCount(SLICE)
|
|
123
|
+
resetConversations()
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return {
|
|
127
|
+
onIntersect,
|
|
128
|
+
reset,
|
|
129
|
+
conversations,
|
|
130
|
+
hasNext,
|
|
131
|
+
addConversations,
|
|
132
|
+
addOneUnreadToTicket,
|
|
133
|
+
setAsRead,
|
|
134
|
+
sliceCount,
|
|
135
|
+
currentChat,
|
|
136
|
+
selectChat,
|
|
137
|
+
onCloseChat,
|
|
138
|
+
changeViewDesktop,
|
|
139
|
+
viewDesktop,
|
|
140
|
+
changeViewMobile,
|
|
141
|
+
viewMobile,
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { IMessages, ISocketMessage } from 'types'
|
|
3
|
-
|
|
4
|
-
export const useMessages = () => {
|
|
5
|
-
const [messages, setMessages] = useState<IMessages[]>([])
|
|
6
|
-
const [totalMessages, setTotalMessages] = useState<number>(0)
|
|
7
|
-
|
|
8
|
-
const addMessages = (messages: IMessages[]) => {
|
|
9
|
-
setMessages(messages)
|
|
10
|
-
}
|
|
11
|
-
const addTotalMessages = (total: number) => {
|
|
12
|
-
setTotalMessages(total)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const incrementMessages = (ticket: ISocketMessage, currentChatId: string) => {
|
|
16
|
-
const existentMessage = messages.find(
|
|
17
|
-
(item) => item.messagecode === ticket.message.messagecode
|
|
18
|
-
)
|
|
19
|
-
if (ticket.message.ticketId === currentChatId && !existentMessage) {
|
|
20
|
-
addMessages([...messages, ticket.message])
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const updateMesssagesAsRead = (
|
|
25
|
-
ticket: ISocketMessage,
|
|
26
|
-
currentChatId: string
|
|
27
|
-
) => {
|
|
28
|
-
if (ticket.markAsRead || currentChatId === ticket?.message?.ticketId) {
|
|
29
|
-
const readMessages = messages.map((message) => ({
|
|
30
|
-
...message,
|
|
31
|
-
everybodyHasRead: true,
|
|
32
|
-
}))
|
|
33
|
-
addMessages(readMessages)
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const hasOlderMessages = () => {
|
|
38
|
-
return messages.length > 9 && messages.length < totalMessages
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return {
|
|
42
|
-
addMessages,
|
|
43
|
-
messages,
|
|
44
|
-
incrementMessages,
|
|
45
|
-
updateMesssagesAsRead,
|
|
46
|
-
addTotalMessages,
|
|
47
|
-
hasOlderMessages,
|
|
48
|
-
}
|
|
49
|
-
}
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
import { IMessages, ISocketMessage } from 'types'
|
|
3
|
+
|
|
4
|
+
export const useMessages = () => {
|
|
5
|
+
const [messages, setMessages] = useState<IMessages[]>([])
|
|
6
|
+
const [totalMessages, setTotalMessages] = useState<number>(0)
|
|
7
|
+
|
|
8
|
+
const addMessages = (messages: IMessages[]) => {
|
|
9
|
+
setMessages(messages)
|
|
10
|
+
}
|
|
11
|
+
const addTotalMessages = (total: number) => {
|
|
12
|
+
setTotalMessages(total)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const incrementMessages = (ticket: ISocketMessage, currentChatId: string) => {
|
|
16
|
+
const existentMessage = messages.find(
|
|
17
|
+
(item) => item.messagecode === ticket.message.messagecode
|
|
18
|
+
)
|
|
19
|
+
if (ticket.message.ticketId === currentChatId && !existentMessage) {
|
|
20
|
+
addMessages([...messages, ticket.message])
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const updateMesssagesAsRead = (
|
|
25
|
+
ticket: ISocketMessage,
|
|
26
|
+
currentChatId: string
|
|
27
|
+
) => {
|
|
28
|
+
if (ticket.markAsRead || currentChatId === ticket?.message?.ticketId) {
|
|
29
|
+
const readMessages = messages.map((message) => ({
|
|
30
|
+
...message,
|
|
31
|
+
everybodyHasRead: true,
|
|
32
|
+
}))
|
|
33
|
+
addMessages(readMessages)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const hasOlderMessages = () => {
|
|
38
|
+
return messages.length > 9 && messages.length < totalMessages
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
addMessages,
|
|
43
|
+
messages,
|
|
44
|
+
incrementMessages,
|
|
45
|
+
updateMesssagesAsRead,
|
|
46
|
+
addTotalMessages,
|
|
47
|
+
hasOlderMessages,
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { useContext } from 'react'
|
|
2
|
-
import { MessageThemeContext } from '../components/MessengerThemeWrapper/MessengerThemeWrapper'
|
|
3
|
-
|
|
4
|
-
const useTheme = () => {
|
|
5
|
-
const context = useContext(MessageThemeContext)
|
|
6
|
-
|
|
7
|
-
if (context === undefined) {
|
|
8
|
-
throw new Error('useTheme must be used within a ThemeProvider')
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
return context
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default useTheme
|
|
1
|
+
import { useContext } from 'react'
|
|
2
|
+
import { MessageThemeContext } from '../components/MessengerThemeWrapper/MessengerThemeWrapper'
|
|
3
|
+
|
|
4
|
+
const useTheme = () => {
|
|
5
|
+
const context = useContext(MessageThemeContext)
|
|
6
|
+
|
|
7
|
+
if (context === undefined) {
|
|
8
|
+
throw new Error('useTheme must be used within a ThemeProvider')
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return context
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default useTheme
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import useTheme from '../hooks/useThemes'
|
|
3
|
-
|
|
4
|
-
export default function AttachFileIcon ({ ...rest }) {
|
|
5
|
-
const { theme } = useTheme()
|
|
6
|
-
return (
|
|
7
|
-
<svg
|
|
8
|
-
width='26'
|
|
9
|
-
height='28'
|
|
10
|
-
viewBox='0 0 26 28'
|
|
11
|
-
xmlns='http://www.w3.org/2000/svg'
|
|
12
|
-
{...rest}
|
|
13
|
-
>
|
|
14
|
-
<path
|
|
15
|
-
d='M22.5464 2.73571C19.1821 -0.628572 13.7036 -0.628572 10.3429 2.73571L1.02143 12.05C0.960715 12.1107 0.928572 12.1929 0.928572 12.2786C0.928572 12.3643 0.960715 12.4464 1.02143 12.5071L2.33929 13.825C2.39953 13.885 2.48107 13.9186 2.56607 13.9186C2.65108 13.9186 2.73262 13.885 2.79286 13.825L12.1143 4.51071C13.2714 3.35357 14.8107 2.71786 16.4464 2.71786C18.0821 2.71786 19.6214 3.35357 20.775 4.51071C21.9321 5.66786 22.5679 7.20714 22.5679 8.83929C22.5679 10.475 21.9321 12.0107 20.775 13.1679L11.275 22.6643L9.73572 24.2036C8.29643 25.6429 5.95714 25.6429 4.51786 24.2036C3.82143 23.5071 3.43929 22.5821 3.43929 21.5964C3.43929 20.6107 3.82143 19.6857 4.51786 18.9893L13.9429 9.56786C14.1821 9.33214 14.4964 9.2 14.8321 9.2H14.8357C15.1714 9.2 15.4821 9.33214 15.7179 9.56786C15.9571 9.80714 16.0857 10.1214 16.0857 10.4571C16.0857 10.7893 15.9536 11.1036 15.7179 11.3393L8.01429 19.0357C7.95357 19.0964 7.92143 19.1786 7.92143 19.2643C7.92143 19.35 7.95357 19.4321 8.01429 19.4929L9.33214 20.8107C9.39238 20.8707 9.47393 20.9044 9.55893 20.9044C9.64393 20.9044 9.72548 20.8707 9.78572 20.8107L17.4857 13.1107C18.1964 12.4 18.5857 11.4571 18.5857 10.4536C18.5857 9.45 18.1929 8.50357 17.4857 7.79643C16.0179 6.32857 13.6321 6.33214 12.1643 7.79643L11.25 8.71429L2.74286 17.2179C2.16547 17.7919 1.70778 18.4748 1.39634 19.227C1.0849 19.9793 0.925905 20.7858 0.928572 21.6C0.928572 23.2536 1.575 24.8071 2.74286 25.975C3.95357 27.1821 5.53929 27.7857 7.125 27.7857C8.71072 27.7857 10.2964 27.1821 11.5036 25.975L22.5464 14.9393C24.1714 13.3107 25.0714 11.1429 25.0714 8.83929C25.075 6.53214 24.175 4.36429 22.5464 2.73571Z'
|
|
16
|
-
fill={theme.uploadFileIconColor}
|
|
17
|
-
/>
|
|
18
|
-
</svg>
|
|
19
|
-
)
|
|
20
|
-
}
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import useTheme from '../hooks/useThemes'
|
|
3
|
+
|
|
4
|
+
export default function AttachFileIcon ({ ...rest }) {
|
|
5
|
+
const { theme } = useTheme()
|
|
6
|
+
return (
|
|
7
|
+
<svg
|
|
8
|
+
width='26'
|
|
9
|
+
height='28'
|
|
10
|
+
viewBox='0 0 26 28'
|
|
11
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
12
|
+
{...rest}
|
|
13
|
+
>
|
|
14
|
+
<path
|
|
15
|
+
d='M22.5464 2.73571C19.1821 -0.628572 13.7036 -0.628572 10.3429 2.73571L1.02143 12.05C0.960715 12.1107 0.928572 12.1929 0.928572 12.2786C0.928572 12.3643 0.960715 12.4464 1.02143 12.5071L2.33929 13.825C2.39953 13.885 2.48107 13.9186 2.56607 13.9186C2.65108 13.9186 2.73262 13.885 2.79286 13.825L12.1143 4.51071C13.2714 3.35357 14.8107 2.71786 16.4464 2.71786C18.0821 2.71786 19.6214 3.35357 20.775 4.51071C21.9321 5.66786 22.5679 7.20714 22.5679 8.83929C22.5679 10.475 21.9321 12.0107 20.775 13.1679L11.275 22.6643L9.73572 24.2036C8.29643 25.6429 5.95714 25.6429 4.51786 24.2036C3.82143 23.5071 3.43929 22.5821 3.43929 21.5964C3.43929 20.6107 3.82143 19.6857 4.51786 18.9893L13.9429 9.56786C14.1821 9.33214 14.4964 9.2 14.8321 9.2H14.8357C15.1714 9.2 15.4821 9.33214 15.7179 9.56786C15.9571 9.80714 16.0857 10.1214 16.0857 10.4571C16.0857 10.7893 15.9536 11.1036 15.7179 11.3393L8.01429 19.0357C7.95357 19.0964 7.92143 19.1786 7.92143 19.2643C7.92143 19.35 7.95357 19.4321 8.01429 19.4929L9.33214 20.8107C9.39238 20.8707 9.47393 20.9044 9.55893 20.9044C9.64393 20.9044 9.72548 20.8707 9.78572 20.8107L17.4857 13.1107C18.1964 12.4 18.5857 11.4571 18.5857 10.4536C18.5857 9.45 18.1929 8.50357 17.4857 7.79643C16.0179 6.32857 13.6321 6.33214 12.1643 7.79643L11.25 8.71429L2.74286 17.2179C2.16547 17.7919 1.70778 18.4748 1.39634 19.227C1.0849 19.9793 0.925905 20.7858 0.928572 21.6C0.928572 23.2536 1.575 24.8071 2.74286 25.975C3.95357 27.1821 5.53929 27.7857 7.125 27.7857C8.71072 27.7857 10.2964 27.1821 11.5036 25.975L22.5464 14.9393C24.1714 13.3107 25.0714 11.1429 25.0714 8.83929C25.075 6.53214 24.175 4.36429 22.5464 2.73571Z'
|
|
16
|
+
fill={theme.uploadFileIconColor}
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
19
|
+
)
|
|
20
|
+
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import * as React from 'react'
|
|
2
|
-
import { SVGProps } from 'react'
|
|
3
|
-
|
|
4
|
-
const CSVFileIcon = (props: SVGProps<SVGSVGElement>) => (
|
|
5
|
-
<svg
|
|
6
|
-
xmlns='http://www.w3.org/2000/svg'
|
|
7
|
-
width={40}
|
|
8
|
-
height={40}
|
|
9
|
-
viewBox='0 0 32 32'
|
|
10
|
-
{...props}
|
|
11
|
-
>
|
|
12
|
-
<rect width='32' height='32' rx='5' fill='#21A366' />
|
|
13
|
-
<text
|
|
14
|
-
x='16'
|
|
15
|
-
y='22'
|
|
16
|
-
textAnchor='middle'
|
|
17
|
-
fontSize='12'
|
|
18
|
-
fill='#fff'
|
|
19
|
-
fontWeight='bold'
|
|
20
|
-
>
|
|
21
|
-
CSV
|
|
22
|
-
</text>
|
|
23
|
-
</svg>
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
export default CSVFileIcon
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
import { SVGProps } from 'react'
|
|
3
|
+
|
|
4
|
+
const CSVFileIcon = (props: SVGProps<SVGSVGElement>) => (
|
|
5
|
+
<svg
|
|
6
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
7
|
+
width={40}
|
|
8
|
+
height={40}
|
|
9
|
+
viewBox='0 0 32 32'
|
|
10
|
+
{...props}
|
|
11
|
+
>
|
|
12
|
+
<rect width='32' height='32' rx='5' fill='#21A366' />
|
|
13
|
+
<text
|
|
14
|
+
x='16'
|
|
15
|
+
y='22'
|
|
16
|
+
textAnchor='middle'
|
|
17
|
+
fontSize='12'
|
|
18
|
+
fill='#fff'
|
|
19
|
+
fontWeight='bold'
|
|
20
|
+
>
|
|
21
|
+
CSV
|
|
22
|
+
</text>
|
|
23
|
+
</svg>
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
export default CSVFileIcon
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import useTheme from '../hooks/useThemes'
|
|
3
|
-
|
|
4
|
-
export default function CloseIcon () {
|
|
5
|
-
const { theme } = useTheme()
|
|
6
|
-
return (
|
|
7
|
-
<svg
|
|
8
|
-
width='21'
|
|
9
|
-
height='21'
|
|
10
|
-
viewBox='0 0 21 21'
|
|
11
|
-
fill='none'
|
|
12
|
-
xmlns='http://www.w3.org/2000/svg'
|
|
13
|
-
>
|
|
14
|
-
<path
|
|
15
|
-
d='M13.4519 10.9583L20.435 3.9751C20.7664 3.64426 20.9529 3.19532 20.9533 2.72704C20.9537 2.25875 20.7681 1.80949 20.4372 1.47807C20.1064 1.14665 19.6574 0.960225 19.1892 0.959812C18.7209 0.959398 18.2716 1.14503 17.9402 1.47586L10.957 8.45902L3.97388 1.47586C3.64246 1.14444 3.19296 0.958252 2.72426 0.958252C2.25556 0.958252 1.80606 1.14444 1.47464 1.47586C1.14322 1.80728 0.957031 2.25678 0.957031 2.72548C0.957031 3.19418 1.14322 3.64368 1.47464 3.9751L8.4578 10.9583L1.47464 17.9414C1.14322 18.2728 0.957031 18.7223 0.957031 19.191C0.957031 19.6597 1.14322 20.1092 1.47464 20.4406C1.80606 20.7721 2.25556 20.9583 2.72426 20.9583C3.19296 20.9583 3.64246 20.7721 3.97388 20.4406L10.957 13.4575L17.9402 20.4406C18.2716 20.7721 18.7211 20.9583 19.1898 20.9583C19.6585 20.9583 20.108 20.7721 20.4394 20.4406C20.7708 20.1092 20.957 19.6597 20.957 19.191C20.957 18.7223 20.7708 18.2728 20.4394 17.9414L13.4519 10.9583Z'
|
|
16
|
-
fill={theme.newChatFormTexts ?? '#476077'}
|
|
17
|
-
/>
|
|
18
|
-
</svg>
|
|
19
|
-
)
|
|
20
|
-
}
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import useTheme from '../hooks/useThemes'
|
|
3
|
+
|
|
4
|
+
export default function CloseIcon () {
|
|
5
|
+
const { theme } = useTheme()
|
|
6
|
+
return (
|
|
7
|
+
<svg
|
|
8
|
+
width='21'
|
|
9
|
+
height='21'
|
|
10
|
+
viewBox='0 0 21 21'
|
|
11
|
+
fill='none'
|
|
12
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
13
|
+
>
|
|
14
|
+
<path
|
|
15
|
+
d='M13.4519 10.9583L20.435 3.9751C20.7664 3.64426 20.9529 3.19532 20.9533 2.72704C20.9537 2.25875 20.7681 1.80949 20.4372 1.47807C20.1064 1.14665 19.6574 0.960225 19.1892 0.959812C18.7209 0.959398 18.2716 1.14503 17.9402 1.47586L10.957 8.45902L3.97388 1.47586C3.64246 1.14444 3.19296 0.958252 2.72426 0.958252C2.25556 0.958252 1.80606 1.14444 1.47464 1.47586C1.14322 1.80728 0.957031 2.25678 0.957031 2.72548C0.957031 3.19418 1.14322 3.64368 1.47464 3.9751L8.4578 10.9583L1.47464 17.9414C1.14322 18.2728 0.957031 18.7223 0.957031 19.191C0.957031 19.6597 1.14322 20.1092 1.47464 20.4406C1.80606 20.7721 2.25556 20.9583 2.72426 20.9583C3.19296 20.9583 3.64246 20.7721 3.97388 20.4406L10.957 13.4575L17.9402 20.4406C18.2716 20.7721 18.7211 20.9583 19.1898 20.9583C19.6585 20.9583 20.108 20.7721 20.4394 20.4406C20.7708 20.1092 20.957 19.6597 20.957 19.191C20.957 18.7223 20.7708 18.2728 20.4394 17.9414L13.4519 10.9583Z'
|
|
16
|
+
fill={theme.newChatFormTexts ?? '#476077'}
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
19
|
+
)
|
|
20
|
+
}
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import * as React from 'react'
|
|
2
|
-
import { SVGProps } from 'react'
|
|
3
|
-
const FileDoc = (props: SVGProps<SVGSVGElement>) => (
|
|
4
|
-
<svg
|
|
5
|
-
xmlns='http://www.w3.org/2000/svg'
|
|
6
|
-
xmlnsXlink='http://www.w3.org/1999/xlink'
|
|
7
|
-
id='Layer_1'
|
|
8
|
-
width={800}
|
|
9
|
-
height={800}
|
|
10
|
-
data-name='Layer 1'
|
|
11
|
-
viewBox='0 0 32 32'
|
|
12
|
-
{...props}
|
|
13
|
-
>
|
|
14
|
-
<defs>
|
|
15
|
-
<linearGradient
|
|
16
|
-
id='doc-gradient'
|
|
17
|
-
x1={6.65}
|
|
18
|
-
x2={27.27}
|
|
19
|
-
y1={6.65}
|
|
20
|
-
y2={27.27}
|
|
21
|
-
gradientUnits='userSpaceOnUse'
|
|
22
|
-
>
|
|
23
|
-
<stop offset={0} stopColor='#00a6fb' />
|
|
24
|
-
<stop offset={1} stopColor='#0094ce' />
|
|
25
|
-
</linearGradient>
|
|
26
|
-
<linearGradient
|
|
27
|
-
xlinkHref='#doc-gradient'
|
|
28
|
-
id='doc-gradient-2'
|
|
29
|
-
x1={6}
|
|
30
|
-
x2={12}
|
|
31
|
-
y1={5}
|
|
32
|
-
y2={5}
|
|
33
|
-
/>
|
|
34
|
-
<style>{'.cls-3{fill:#f8edeb}'}</style>
|
|
35
|
-
</defs>
|
|
36
|
-
<path
|
|
37
|
-
d='M23.5 2h-12a.47.47 0 0 0-.35.15l-5 5A.47.47 0 0 0 6 7.5v20A2.5 2.5 0 0 0 8.5 30h15a2.5 2.5 0 0 0 2.5-2.5v-23A2.5 2.5 0 0 0 23.5 2Z'
|
|
38
|
-
style={{
|
|
39
|
-
fill: '#00a6fb',
|
|
40
|
-
}}
|
|
41
|
-
/>
|
|
42
|
-
<path
|
|
43
|
-
d='M11.69 2a.47.47 0 0 0-.54.11l-5 5a.47.47 0 0 0-.15.58.5.5 0 0 0 .5.31h3A2.5 2.5 0 0 0 12 5.5v-3a.5.5 0 0 0-.31-.5Z'
|
|
44
|
-
style={{
|
|
45
|
-
fill: '#0094ce',
|
|
46
|
-
}}
|
|
47
|
-
/>
|
|
48
|
-
<path
|
|
49
|
-
d='M16 21a2 2 0 0 1-2-2v-6a2 2 0 0 1 4 0v6a2 2 0 0 1-2 2Zm0-9a1 1 0 0 0-1 1v6a1 1 0 0 0 2 0v-6a1 1 0 0 0-1-1ZM9.5 21a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5 3.5 3.5 0 0 1 3.5 3.5v3A3.5 3.5 0 0 1 9.5 21Zm.5-8.95V20a2.5 2.5 0 0 0 2-2.45v-3a2.5 2.5 0 0 0-2-2.5ZM21 21a2 2 0 0 1-2-2v-6a2 2 0 0 1 4 0 .5.5 0 0 1-1 0 1 1 0 0 0-2 0v6a1 1 0 0 0 2 0 .5.5 0 0 1 1 0 2 2 0 0 1-2 2Z'
|
|
50
|
-
className='cls-3'
|
|
51
|
-
/>
|
|
52
|
-
</svg>
|
|
53
|
-
)
|
|
54
|
-
export default FileDoc
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
import { SVGProps } from 'react'
|
|
3
|
+
const FileDoc = (props: SVGProps<SVGSVGElement>) => (
|
|
4
|
+
<svg
|
|
5
|
+
xmlns='http://www.w3.org/2000/svg'
|
|
6
|
+
xmlnsXlink='http://www.w3.org/1999/xlink'
|
|
7
|
+
id='Layer_1'
|
|
8
|
+
width={800}
|
|
9
|
+
height={800}
|
|
10
|
+
data-name='Layer 1'
|
|
11
|
+
viewBox='0 0 32 32'
|
|
12
|
+
{...props}
|
|
13
|
+
>
|
|
14
|
+
<defs>
|
|
15
|
+
<linearGradient
|
|
16
|
+
id='doc-gradient'
|
|
17
|
+
x1={6.65}
|
|
18
|
+
x2={27.27}
|
|
19
|
+
y1={6.65}
|
|
20
|
+
y2={27.27}
|
|
21
|
+
gradientUnits='userSpaceOnUse'
|
|
22
|
+
>
|
|
23
|
+
<stop offset={0} stopColor='#00a6fb' />
|
|
24
|
+
<stop offset={1} stopColor='#0094ce' />
|
|
25
|
+
</linearGradient>
|
|
26
|
+
<linearGradient
|
|
27
|
+
xlinkHref='#doc-gradient'
|
|
28
|
+
id='doc-gradient-2'
|
|
29
|
+
x1={6}
|
|
30
|
+
x2={12}
|
|
31
|
+
y1={5}
|
|
32
|
+
y2={5}
|
|
33
|
+
/>
|
|
34
|
+
<style>{'.cls-3{fill:#f8edeb}'}</style>
|
|
35
|
+
</defs>
|
|
36
|
+
<path
|
|
37
|
+
d='M23.5 2h-12a.47.47 0 0 0-.35.15l-5 5A.47.47 0 0 0 6 7.5v20A2.5 2.5 0 0 0 8.5 30h15a2.5 2.5 0 0 0 2.5-2.5v-23A2.5 2.5 0 0 0 23.5 2Z'
|
|
38
|
+
style={{
|
|
39
|
+
fill: '#00a6fb',
|
|
40
|
+
}}
|
|
41
|
+
/>
|
|
42
|
+
<path
|
|
43
|
+
d='M11.69 2a.47.47 0 0 0-.54.11l-5 5a.47.47 0 0 0-.15.58.5.5 0 0 0 .5.31h3A2.5 2.5 0 0 0 12 5.5v-3a.5.5 0 0 0-.31-.5Z'
|
|
44
|
+
style={{
|
|
45
|
+
fill: '#0094ce',
|
|
46
|
+
}}
|
|
47
|
+
/>
|
|
48
|
+
<path
|
|
49
|
+
d='M16 21a2 2 0 0 1-2-2v-6a2 2 0 0 1 4 0v6a2 2 0 0 1-2 2Zm0-9a1 1 0 0 0-1 1v6a1 1 0 0 0 2 0v-6a1 1 0 0 0-1-1ZM9.5 21a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5 3.5 3.5 0 0 1 3.5 3.5v3A3.5 3.5 0 0 1 9.5 21Zm.5-8.95V20a2.5 2.5 0 0 0 2-2.45v-3a2.5 2.5 0 0 0-2-2.5ZM21 21a2 2 0 0 1-2-2v-6a2 2 0 0 1 4 0 .5.5 0 0 1-1 0 1 1 0 0 0-2 0v6a1 1 0 0 0 2 0 .5.5 0 0 1 1 0 2 2 0 0 1-2 2Z'
|
|
50
|
+
className='cls-3'
|
|
51
|
+
/>
|
|
52
|
+
</svg>
|
|
53
|
+
)
|
|
54
|
+
export default FileDoc
|