@webinex/chatify 2.0.0-alpha12 → 2.0.0-alpha14

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 (144) hide show
  1. package/dist/{Chatify-CwAfN1wu.js → Chatify-CP2jgo8d.js} +191 -118
  2. package/dist/Chatify-CP2jgo8d.js.map +1 -0
  3. package/dist/Chatify.css +28 -0
  4. package/dist/audit.js +3 -2
  5. package/dist/audit.js.map +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/types/audit/index.d.ts +17 -15
  8. package/dist/types/core/api/api.d.ts +146 -0
  9. package/dist/types/ui/Chat/ChatContext.d.ts +2 -0
  10. package/dist/types/ui/Chat/ChatPanel.d.ts +7 -0
  11. package/dist/types/ui/Chat/ChatView.d.ts +4 -2
  12. package/dist/types/ui/ChatGroup/ChatGroupContext.d.ts +4 -1
  13. package/dist/types/ui/ChatGroup/ChatGroupPanel.d.ts +21 -2
  14. package/dist/types/ui/Conversation/Conversation.d.ts +1 -0
  15. package/dist/types/ui/Conversation/ConversationContext.d.ts +1 -0
  16. package/dist/types/ui/Conversation/ConversationHeader.d.ts +4 -1
  17. package/dist/types/ui/localizer.d.ts +4 -1
  18. package/dist/types/ui/useCompact.d.ts +4 -0
  19. package/package.json +81 -81
  20. package/src/audit/AuditChatList.tsx +25 -25
  21. package/src/audit/AuditConversationPanel.tsx +49 -48
  22. package/src/audit/AuditPanel.tsx +76 -76
  23. package/src/audit/AuditPanelCustomizeValue.ts +11 -11
  24. package/src/audit/AuditSearch.tsx +89 -89
  25. package/src/audit/AuditSearchValue.tsx +42 -42
  26. package/src/audit/auditApi.tsx +113 -113
  27. package/src/audit/index.d.ts +18 -18
  28. package/src/audit/index.tsx +28 -28
  29. package/src/audit/styles.scss +72 -72
  30. package/src/core/api/api.ts +675 -669
  31. package/src/core/api/baseApi.ts +38 -38
  32. package/src/core/api/index.ts +1 -1
  33. package/src/core/client.ts +298 -298
  34. package/src/core/constants.ts +1 -1
  35. package/src/core/debounce.ts +90 -90
  36. package/src/core/index.ts +4 -4
  37. package/src/core/types.tsx +182 -182
  38. package/src/index.ts +2 -2
  39. package/src/styles/aside.scss +34 -26
  40. package/src/styles/chat-list.scss +138 -138
  41. package/src/styles/chat.scss +11 -11
  42. package/src/styles/conversation.scss +199 -200
  43. package/src/styles/index.scss +227 -220
  44. package/src/styles/input.scss +148 -148
  45. package/src/styles/keyframes.scss +14 -14
  46. package/src/styles/members.scss +30 -13
  47. package/src/styles/mixins.scss +38 -25
  48. package/src/styles/variables.scss +13 -13
  49. package/src/ui/Chat/ChatContext.tsx +32 -30
  50. package/src/ui/Chat/ChatEditableHeaderName.tsx +63 -63
  51. package/src/ui/Chat/ChatHeaderActions.tsx +19 -19
  52. package/src/ui/Chat/ChatPanel.tsx +46 -30
  53. package/src/ui/Chat/ChatView.tsx +122 -115
  54. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -9
  55. package/src/ui/Chat/Members/ChatMembersPanel.tsx +128 -112
  56. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -25
  57. package/src/ui/Chat/Members/index.ts +13 -13
  58. package/src/ui/Chat/index.ts +6 -6
  59. package/src/ui/ChatGroup/AutoReply/AutoReplyButton.tsx +21 -21
  60. package/src/ui/ChatGroup/AutoReply/AutoReplyForm.tsx +50 -50
  61. package/src/ui/ChatGroup/AutoReply/AutoReplyPanel.tsx +94 -94
  62. package/src/ui/ChatGroup/AutoReply/AutoReplyPeriodInput.tsx +22 -22
  63. package/src/ui/ChatGroup/AutoReply/AutoReplyTextInput.tsx +22 -22
  64. package/src/ui/ChatGroup/AutoReply/index.ts +19 -19
  65. package/src/ui/ChatGroup/ChatGroupContext.tsx +63 -61
  66. package/src/ui/ChatGroup/ChatGroupPanel.tsx +110 -75
  67. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -15
  68. package/src/ui/ChatGroup/Create/CreateChatForm.tsx +36 -36
  69. package/src/ui/ChatGroup/Create/CreateChatMemberInput.tsx +65 -65
  70. package/src/ui/ChatGroup/Create/CreateChatNameInput.tsx +25 -25
  71. package/src/ui/ChatGroup/Create/CreateChatPanel.tsx +45 -45
  72. package/src/ui/ChatGroup/Create/index.ts +19 -19
  73. package/src/ui/ChatGroup/Layout/ChatGroupActions.tsx +15 -15
  74. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -12
  75. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +17 -10
  76. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -3
  77. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -5
  78. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +21 -19
  79. package/src/ui/ChatGroup/Layout/index.ts +22 -22
  80. package/src/ui/ChatGroup/List/ChatListPanel.tsx +28 -28
  81. package/src/ui/ChatGroup/List/index.ts +8 -8
  82. package/src/ui/ChatGroup/index.ts +6 -6
  83. package/src/ui/Chatify.tsx +15 -15
  84. package/src/ui/Conversation/Conversation.tsx +96 -92
  85. package/src/ui/Conversation/ConversationActions.tsx +12 -12
  86. package/src/ui/Conversation/ConversationBody.tsx +28 -28
  87. package/src/ui/Conversation/ConversationContext.ts +31 -30
  88. package/src/ui/Conversation/ConversationHeader.tsx +35 -19
  89. package/src/ui/Conversation/ConversationName.tsx +7 -7
  90. package/src/ui/Conversation/InputBox/InputBox.tsx +126 -126
  91. package/src/ui/Conversation/InputBox/InputBoxFile.tsx +38 -38
  92. package/src/ui/Conversation/InputBox/InputBoxFileList.tsx +21 -21
  93. package/src/ui/Conversation/InputBox/InputFilesBox.tsx +78 -78
  94. package/src/ui/Conversation/InputBox/InputSubmitButtonBox.tsx +26 -26
  95. package/src/ui/Conversation/InputBox/InputTextBox.tsx +63 -61
  96. package/src/ui/Conversation/InputBox/index.ts +23 -23
  97. package/src/ui/Conversation/Message/MessageAuthor.tsx +13 -13
  98. package/src/ui/Conversation/Message/MessageBox.tsx +20 -20
  99. package/src/ui/Conversation/Message/MessageContent.tsx +15 -15
  100. package/src/ui/Conversation/Message/MessageFile.tsx +54 -54
  101. package/src/ui/Conversation/Message/MessageFileList.tsx +14 -14
  102. package/src/ui/Conversation/Message/MessageInfoBox.tsx +28 -28
  103. package/src/ui/Conversation/Message/MessageRow.tsx +28 -28
  104. package/src/ui/Conversation/Message/MessageText.tsx +7 -7
  105. package/src/ui/Conversation/Message/index.ts +28 -28
  106. package/src/ui/Conversation/NextObserver/NextMessagesObserver.tsx +47 -47
  107. package/src/ui/Conversation/NextObserver/index.ts +1 -1
  108. package/src/ui/Conversation/ReadObserver/MessageReadObserver.tsx +49 -49
  109. package/src/ui/Conversation/ReadObserver/index.ts +1 -1
  110. package/src/ui/Conversation/SendingMessage/SendingMessageBox.tsx +16 -16
  111. package/src/ui/Conversation/SendingMessage/SendingMessageContent.tsx +13 -13
  112. package/src/ui/Conversation/SendingMessage/SendingMessageInfoBox.tsx +13 -13
  113. package/src/ui/Conversation/SendingMessage/SendingMessageText.tsx +7 -7
  114. package/src/ui/Conversation/SendingMessage/index.ts +16 -16
  115. package/src/ui/Conversation/SystemMessage/SystemMessageBox.tsx +20 -20
  116. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -28
  117. package/src/ui/Conversation/SystemMessage/index.ts +10 -10
  118. package/src/ui/Conversation/index.ts +13 -13
  119. package/src/ui/Thread/ThreadActions.tsx +22 -22
  120. package/src/ui/Thread/ThreadContext.ts +13 -13
  121. package/src/ui/Thread/ThreadPanel.tsx +128 -127
  122. package/src/ui/Thread/index.tsx +3 -3
  123. package/src/ui/color.ts +20 -20
  124. package/src/ui/common/Avatar.tsx +20 -20
  125. package/src/ui/common/ChatList/ChatList.tsx +83 -84
  126. package/src/ui/common/ChatList/ChatListItemAvatar.tsx +22 -22
  127. package/src/ui/common/ChatList/ChatListItemBox.tsx +32 -32
  128. package/src/ui/common/ChatList/ChatListItemLastMessage.tsx +15 -15
  129. package/src/ui/common/ChatList/ChatListItemLastMessageAuthor.tsx +15 -15
  130. package/src/ui/common/ChatList/ChatListItemLastMessageContent.tsx +21 -21
  131. package/src/ui/common/ChatList/ChatListItemLastMessageSentAt.tsx +22 -22
  132. package/src/ui/common/ChatList/ChatListItemName.tsx +8 -8
  133. package/src/ui/common/ChatList/ChatListItemUnreadCount.tsx +12 -12
  134. package/src/ui/common/ChatList/ChatListValue.ts +9 -9
  135. package/src/ui/common/ChatList/index.ts +32 -32
  136. package/src/ui/common/Icon.tsx +48 -48
  137. package/src/ui/common/MessageSkeleton.tsx +20 -20
  138. package/src/ui/common/index.ts +14 -14
  139. package/src/ui/customize.tsx +51 -51
  140. package/src/ui/index.ts +11 -11
  141. package/src/ui/localizer.tsx +148 -137
  142. package/src/ui/useCompact.tsx +32 -0
  143. package/src/ui/useFormatter.tsx +17 -17
  144. package/dist/Chatify-CwAfN1wu.js.map +0 -1
@@ -1,137 +1,148 @@
1
- import dayjs from 'dayjs';
2
- import React, { useContext } from 'react';
3
- import { SystemMessageText } from '../core';
4
-
5
- export interface LocalizerBase {
6
- isToday: (value: string) => boolean;
7
- timestamp: (value: string) => string;
8
- dateTime: (value: string) => string;
9
- system: Record<SystemMessageText, (key: SystemMessageText, payload: any | null) => string>;
10
- message: {
11
- read: () => React.ReactNode;
12
- reading: () => React.ReactNode;
13
- sending: () => React.ReactNode;
14
- };
15
- addChat: {
16
- title: () => React.ReactNode;
17
- name: {
18
- label: () => React.ReactNode;
19
- required: () => string;
20
- max250: () => string;
21
- };
22
- members: {
23
- label: () => React.ReactNode;
24
- required: () => string;
25
- };
26
- submitBtn: () => React.ReactNode;
27
- };
28
-
29
- input: {
30
- placeholder: () => string;
31
- };
32
-
33
- settings: {
34
- members: () => string;
35
- };
36
-
37
- size: {
38
- bytes: (value: number) => string;
39
- kb: (value: number) => string;
40
- mb: (value: number) => string;
41
- };
42
-
43
- chatList: {
44
- topShown: (count: number) => string;
45
- };
46
-
47
- autoReply: {
48
- buttonTitle: () => string;
49
- title: () => React.ReactNode;
50
- period: {
51
- label: () => React.ReactNode;
52
- required: () => string;
53
- format: () => string;
54
- };
55
- text: {
56
- label: () => React.ReactNode;
57
- required: () => string;
58
- };
59
- submitBtn: () => React.ReactNode;
60
- clearBtn: () => React.ReactNode;
61
- };
62
- }
63
-
64
- export interface Localizer extends LocalizerBase {}
65
-
66
- export const LocalizerContext = React.createContext<Localizer>(null!);
67
-
68
- export function useLocalizer() {
69
- return useContext(LocalizerContext);
70
- }
71
-
72
- const base: LocalizerBase = {
73
- isToday: (value: string) => dayjs(value).isSame(dayjs(), 'day'),
74
- timestamp: (value: string) => dayjs(value).format('HH:mm'),
75
- dateTime: (value: string) => dayjs(value).format('DD/MM/YYYY HH:mm'),
76
- message: {
77
- read: () => 'Read',
78
- reading: () => 'Reading...',
79
- sending: () => 'Sending...',
80
- },
81
- addChat: {
82
- title: () => 'Add chat',
83
- name: {
84
- label: () => 'Name',
85
- required: () => `Name is required`,
86
- max250: () => 'Max 250 characters allowed',
87
- },
88
- members: {
89
- label: () => 'Members',
90
- required: () => 'Members is required',
91
- },
92
- submitBtn: () => 'Submit',
93
- },
94
- system: {
95
- 'chatify://chat-created': () => 'Chat created',
96
- 'chatify://member-added': () => 'New member added',
97
- 'chatify://member-removed': () => 'Member removed',
98
- 'chatify://chat-name-changed': (_, { newName }: { newName: string }) =>
99
- `Chat name changed to '${newName}'`,
100
- },
101
-
102
- input: {
103
- placeholder: () => 'Start typing... (Press Enter to send, and Shift+Enter to start a new line)',
104
- },
105
-
106
- settings: {
107
- members: () => 'Members',
108
- },
109
-
110
- size: {
111
- bytes: (value: number) =>
112
- `${value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 })} bytes`,
113
- kb: (value: number) =>
114
- `${value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 })} KB`,
115
- mb: (value: number) =>
116
- `${value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 })} MB`,
117
- },
118
-
119
- chatList: {
120
- topShown: (count: number) => `Latest active ${count} chat${count !== 1 ? 's' : ''} shown`,
121
- },
122
-
123
- autoReply: {
124
- buttonTitle: () => 'Auto-reply',
125
- title: () => 'Auto-reply',
126
- period: {
127
- label: () => 'Period',
128
- required: () => 'Please select start and end date',
129
- format: () => 'DD/MM/YYYY',
130
- },
131
- text: { label: () => 'Message', required: () => 'Please enter message' },
132
- submitBtn: () => 'Submit',
133
- clearBtn: () => 'Clear',
134
- },
135
- };
136
-
137
- export const defaultLocalizer: Localizer = base as unknown as Localizer;
1
+ import dayjs from 'dayjs';
2
+ import React, { useContext } from 'react';
3
+ import { SystemMessageText } from '../core';
4
+
5
+ export interface LocalizerBase {
6
+ isToday: (value: string) => boolean;
7
+ timestamp: (value: string) => string;
8
+ dateTime: (value: string) => string;
9
+ system: Record<SystemMessageText, (key: SystemMessageText, payload: any | null) => string>;
10
+ message: {
11
+ read: () => React.ReactNode;
12
+ reading: () => React.ReactNode;
13
+ sending: () => React.ReactNode;
14
+ };
15
+ addChat: {
16
+ title: () => React.ReactNode;
17
+ name: {
18
+ label: () => React.ReactNode;
19
+ required: () => string;
20
+ max250: () => string;
21
+ };
22
+ members: {
23
+ label: () => React.ReactNode;
24
+ required: () => string;
25
+ };
26
+ submitBtn: () => React.ReactNode;
27
+ };
28
+
29
+ input: {
30
+ placeholder: (type: 'compact' | 'default') => string;
31
+ };
32
+
33
+ settings: {
34
+ members: () => string;
35
+ };
36
+
37
+ size: {
38
+ bytes: (value: number) => string;
39
+ kb: (value: number) => string;
40
+ mb: (value: number) => string;
41
+ };
42
+
43
+ chatList: {
44
+ topShown: (count: number) => string;
45
+ };
46
+
47
+ autoReply: {
48
+ buttonTitle: () => string;
49
+ title: () => React.ReactNode;
50
+ period: {
51
+ label: () => React.ReactNode;
52
+ required: () => string;
53
+ format: () => string;
54
+ };
55
+ text: {
56
+ label: () => React.ReactNode;
57
+ required: () => string;
58
+ };
59
+ submitBtn: () => React.ReactNode;
60
+ clearBtn: () => React.ReactNode;
61
+ };
62
+
63
+ members: {
64
+ title: (chatName: string) => React.ReactNode;
65
+ };
66
+ }
67
+
68
+ export interface Localizer extends LocalizerBase {}
69
+
70
+ export const LocalizerContext = React.createContext<Localizer>(null!);
71
+
72
+ export function useLocalizer() {
73
+ return useContext(LocalizerContext);
74
+ }
75
+
76
+ const base: LocalizerBase = {
77
+ isToday: (value: string) => dayjs(value).isSame(dayjs(), 'day'),
78
+ timestamp: (value: string) => dayjs(value).format('HH:mm'),
79
+ dateTime: (value: string) => dayjs(value).format('DD/MM/YYYY HH:mm'),
80
+ message: {
81
+ read: () => 'Read',
82
+ reading: () => 'Reading...',
83
+ sending: () => 'Sending...',
84
+ },
85
+ addChat: {
86
+ title: () => 'Add chat',
87
+ name: {
88
+ label: () => 'Name',
89
+ required: () => `Name is required`,
90
+ max250: () => 'Max 250 characters allowed',
91
+ },
92
+ members: {
93
+ label: () => 'Members',
94
+ required: () => 'Members is required',
95
+ },
96
+ submitBtn: () => 'Submit',
97
+ },
98
+ system: {
99
+ 'chatify://chat-created': () => 'Chat created',
100
+ 'chatify://member-added': () => 'New member added',
101
+ 'chatify://member-removed': () => 'Member removed',
102
+ 'chatify://chat-name-changed': (_, { newName }: { newName: string }) =>
103
+ `Chat name changed to '${newName}'`,
104
+ },
105
+
106
+ input: {
107
+ placeholder: (type) =>
108
+ type === 'default'
109
+ ? 'Start typing... (Press Enter to send, and Shift+Enter to start a new line)'
110
+ : 'Type a message...',
111
+ },
112
+
113
+ settings: {
114
+ members: () => 'Members',
115
+ },
116
+
117
+ size: {
118
+ bytes: (value: number) =>
119
+ `${value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 })} bytes`,
120
+ kb: (value: number) =>
121
+ `${value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 })} KB`,
122
+ mb: (value: number) =>
123
+ `${value.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 2 })} MB`,
124
+ },
125
+
126
+ chatList: {
127
+ topShown: (count: number) => `Latest active ${count} chat${count !== 1 ? 's' : ''} shown`,
128
+ },
129
+
130
+ members: {
131
+ title: (chatName: string) => `Members of ${chatName}`,
132
+ },
133
+
134
+ autoReply: {
135
+ buttonTitle: () => 'Auto-reply',
136
+ title: () => 'Auto-reply',
137
+ period: {
138
+ label: () => 'Period',
139
+ required: () => 'Please select start and end date',
140
+ format: () => 'DD/MM/YYYY',
141
+ },
142
+ text: { label: () => 'Message', required: () => 'Please enter message' },
143
+ submitBtn: () => 'Submit',
144
+ clearBtn: () => 'Clear',
145
+ },
146
+ };
147
+
148
+ export const defaultLocalizer: Localizer = base as unknown as Localizer;
@@ -0,0 +1,32 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+
3
+ export function useCompact(thresholdOrCompact: number | boolean = 768) {
4
+ const ref = useRef<HTMLDivElement>(null);
5
+ const [size, setSize] = useState<{ width: number; height: number }>();
6
+ const automatic = typeof thresholdOrCompact === 'number';
7
+
8
+ useEffect(() => {
9
+ if (!automatic) {
10
+ setSize(undefined);
11
+ return;
12
+ }
13
+
14
+ const el = ref.current;
15
+ if (!el) return;
16
+
17
+ const observer = new ResizeObserver(() => {
18
+ const { width, height } = el.getBoundingClientRect();
19
+ setSize({ width, height });
20
+ });
21
+
22
+ observer.observe(el);
23
+ return () => observer.disconnect();
24
+ }, [automatic]);
25
+
26
+ if (typeof thresholdOrCompact === 'boolean') {
27
+ return [ref, thresholdOrCompact, size] as const;
28
+ }
29
+
30
+ const compact = size != null ? size.width < thresholdOrCompact : undefined;
31
+ return [ref, compact, size] as const;
32
+ }
@@ -1,17 +1,17 @@
1
- import { useLocalizer } from './localizer';
2
-
3
- export function useFormatter() {
4
- const localizer = useLocalizer();
5
-
6
- return {
7
- size: (value: number) => {
8
- if (value < 1024) {
9
- return localizer.size.bytes(value);
10
- } else if (value < 1024 * 1024) {
11
- return localizer.size.kb(value / 1024);
12
- } else {
13
- return localizer.size.mb(value / 1024 / 1024);
14
- }
15
- },
16
- };
17
- }
1
+ import { useLocalizer } from './localizer';
2
+
3
+ export function useFormatter() {
4
+ const localizer = useLocalizer();
5
+
6
+ return {
7
+ size: (value: number) => {
8
+ if (value < 1024) {
9
+ return localizer.size.bytes(value);
10
+ } else if (value < 1024 * 1024) {
11
+ return localizer.size.kb(value / 1024);
12
+ } else {
13
+ return localizer.size.mb(value / 1024 / 1024);
14
+ }
15
+ },
16
+ };
17
+ }