@webinex/chatify 2.0.0-alpha13 → 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 (143) 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/ui/Chat/ChatContext.d.ts +2 -0
  9. package/dist/types/ui/Chat/ChatPanel.d.ts +7 -0
  10. package/dist/types/ui/Chat/ChatView.d.ts +4 -2
  11. package/dist/types/ui/ChatGroup/ChatGroupContext.d.ts +4 -1
  12. package/dist/types/ui/ChatGroup/ChatGroupPanel.d.ts +21 -2
  13. package/dist/types/ui/Conversation/Conversation.d.ts +1 -0
  14. package/dist/types/ui/Conversation/ConversationContext.d.ts +1 -0
  15. package/dist/types/ui/Conversation/ConversationHeader.d.ts +4 -1
  16. package/dist/types/ui/localizer.d.ts +4 -1
  17. package/dist/types/ui/useCompact.d.ts +4 -0
  18. package/package.json +81 -81
  19. package/src/audit/AuditChatList.tsx +25 -25
  20. package/src/audit/AuditConversationPanel.tsx +49 -48
  21. package/src/audit/AuditPanel.tsx +76 -76
  22. package/src/audit/AuditPanelCustomizeValue.ts +11 -11
  23. package/src/audit/AuditSearch.tsx +89 -89
  24. package/src/audit/AuditSearchValue.tsx +42 -42
  25. package/src/audit/auditApi.tsx +113 -113
  26. package/src/audit/index.d.ts +18 -18
  27. package/src/audit/index.tsx +28 -28
  28. package/src/audit/styles.scss +72 -72
  29. package/src/core/api/api.ts +675 -675
  30. package/src/core/api/baseApi.ts +38 -38
  31. package/src/core/api/index.ts +1 -1
  32. package/src/core/client.ts +298 -298
  33. package/src/core/constants.ts +1 -1
  34. package/src/core/debounce.ts +90 -90
  35. package/src/core/index.ts +4 -4
  36. package/src/core/types.tsx +182 -182
  37. package/src/index.ts +2 -2
  38. package/src/styles/aside.scss +34 -26
  39. package/src/styles/chat-list.scss +138 -138
  40. package/src/styles/chat.scss +11 -11
  41. package/src/styles/conversation.scss +199 -200
  42. package/src/styles/index.scss +227 -220
  43. package/src/styles/input.scss +148 -148
  44. package/src/styles/keyframes.scss +14 -14
  45. package/src/styles/members.scss +30 -13
  46. package/src/styles/mixins.scss +38 -25
  47. package/src/styles/variables.scss +13 -13
  48. package/src/ui/Chat/ChatContext.tsx +32 -30
  49. package/src/ui/Chat/ChatEditableHeaderName.tsx +63 -63
  50. package/src/ui/Chat/ChatHeaderActions.tsx +19 -19
  51. package/src/ui/Chat/ChatPanel.tsx +46 -30
  52. package/src/ui/Chat/ChatView.tsx +122 -115
  53. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -9
  54. package/src/ui/Chat/Members/ChatMembersPanel.tsx +128 -112
  55. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -25
  56. package/src/ui/Chat/Members/index.ts +13 -13
  57. package/src/ui/Chat/index.ts +6 -6
  58. package/src/ui/ChatGroup/AutoReply/AutoReplyButton.tsx +21 -21
  59. package/src/ui/ChatGroup/AutoReply/AutoReplyForm.tsx +50 -50
  60. package/src/ui/ChatGroup/AutoReply/AutoReplyPanel.tsx +94 -94
  61. package/src/ui/ChatGroup/AutoReply/AutoReplyPeriodInput.tsx +22 -22
  62. package/src/ui/ChatGroup/AutoReply/AutoReplyTextInput.tsx +22 -22
  63. package/src/ui/ChatGroup/AutoReply/index.ts +19 -19
  64. package/src/ui/ChatGroup/ChatGroupContext.tsx +63 -61
  65. package/src/ui/ChatGroup/ChatGroupPanel.tsx +110 -75
  66. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -15
  67. package/src/ui/ChatGroup/Create/CreateChatForm.tsx +36 -36
  68. package/src/ui/ChatGroup/Create/CreateChatMemberInput.tsx +65 -65
  69. package/src/ui/ChatGroup/Create/CreateChatNameInput.tsx +25 -25
  70. package/src/ui/ChatGroup/Create/CreateChatPanel.tsx +45 -45
  71. package/src/ui/ChatGroup/Create/index.ts +19 -19
  72. package/src/ui/ChatGroup/Layout/ChatGroupActions.tsx +15 -15
  73. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -12
  74. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +17 -10
  75. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -3
  76. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -5
  77. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +21 -19
  78. package/src/ui/ChatGroup/Layout/index.ts +22 -22
  79. package/src/ui/ChatGroup/List/ChatListPanel.tsx +28 -28
  80. package/src/ui/ChatGroup/List/index.ts +8 -8
  81. package/src/ui/ChatGroup/index.ts +6 -6
  82. package/src/ui/Chatify.tsx +15 -15
  83. package/src/ui/Conversation/Conversation.tsx +96 -92
  84. package/src/ui/Conversation/ConversationActions.tsx +12 -12
  85. package/src/ui/Conversation/ConversationBody.tsx +28 -28
  86. package/src/ui/Conversation/ConversationContext.ts +31 -30
  87. package/src/ui/Conversation/ConversationHeader.tsx +35 -19
  88. package/src/ui/Conversation/ConversationName.tsx +7 -7
  89. package/src/ui/Conversation/InputBox/InputBox.tsx +126 -126
  90. package/src/ui/Conversation/InputBox/InputBoxFile.tsx +38 -38
  91. package/src/ui/Conversation/InputBox/InputBoxFileList.tsx +21 -21
  92. package/src/ui/Conversation/InputBox/InputFilesBox.tsx +78 -78
  93. package/src/ui/Conversation/InputBox/InputSubmitButtonBox.tsx +26 -26
  94. package/src/ui/Conversation/InputBox/InputTextBox.tsx +63 -61
  95. package/src/ui/Conversation/InputBox/index.ts +23 -23
  96. package/src/ui/Conversation/Message/MessageAuthor.tsx +13 -13
  97. package/src/ui/Conversation/Message/MessageBox.tsx +20 -20
  98. package/src/ui/Conversation/Message/MessageContent.tsx +15 -15
  99. package/src/ui/Conversation/Message/MessageFile.tsx +54 -54
  100. package/src/ui/Conversation/Message/MessageFileList.tsx +14 -14
  101. package/src/ui/Conversation/Message/MessageInfoBox.tsx +28 -28
  102. package/src/ui/Conversation/Message/MessageRow.tsx +28 -28
  103. package/src/ui/Conversation/Message/MessageText.tsx +7 -7
  104. package/src/ui/Conversation/Message/index.ts +28 -28
  105. package/src/ui/Conversation/NextObserver/NextMessagesObserver.tsx +47 -47
  106. package/src/ui/Conversation/NextObserver/index.ts +1 -1
  107. package/src/ui/Conversation/ReadObserver/MessageReadObserver.tsx +49 -49
  108. package/src/ui/Conversation/ReadObserver/index.ts +1 -1
  109. package/src/ui/Conversation/SendingMessage/SendingMessageBox.tsx +16 -16
  110. package/src/ui/Conversation/SendingMessage/SendingMessageContent.tsx +13 -13
  111. package/src/ui/Conversation/SendingMessage/SendingMessageInfoBox.tsx +13 -13
  112. package/src/ui/Conversation/SendingMessage/SendingMessageText.tsx +7 -7
  113. package/src/ui/Conversation/SendingMessage/index.ts +16 -16
  114. package/src/ui/Conversation/SystemMessage/SystemMessageBox.tsx +20 -20
  115. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -28
  116. package/src/ui/Conversation/SystemMessage/index.ts +10 -10
  117. package/src/ui/Conversation/index.ts +13 -13
  118. package/src/ui/Thread/ThreadActions.tsx +22 -22
  119. package/src/ui/Thread/ThreadContext.ts +13 -13
  120. package/src/ui/Thread/ThreadPanel.tsx +128 -127
  121. package/src/ui/Thread/index.tsx +3 -3
  122. package/src/ui/color.ts +20 -20
  123. package/src/ui/common/Avatar.tsx +20 -20
  124. package/src/ui/common/ChatList/ChatList.tsx +83 -84
  125. package/src/ui/common/ChatList/ChatListItemAvatar.tsx +22 -22
  126. package/src/ui/common/ChatList/ChatListItemBox.tsx +32 -32
  127. package/src/ui/common/ChatList/ChatListItemLastMessage.tsx +15 -15
  128. package/src/ui/common/ChatList/ChatListItemLastMessageAuthor.tsx +15 -15
  129. package/src/ui/common/ChatList/ChatListItemLastMessageContent.tsx +21 -21
  130. package/src/ui/common/ChatList/ChatListItemLastMessageSentAt.tsx +22 -22
  131. package/src/ui/common/ChatList/ChatListItemName.tsx +8 -8
  132. package/src/ui/common/ChatList/ChatListItemUnreadCount.tsx +12 -12
  133. package/src/ui/common/ChatList/ChatListValue.ts +9 -9
  134. package/src/ui/common/ChatList/index.ts +32 -32
  135. package/src/ui/common/Icon.tsx +48 -48
  136. package/src/ui/common/MessageSkeleton.tsx +20 -20
  137. package/src/ui/common/index.ts +14 -14
  138. package/src/ui/customize.tsx +51 -51
  139. package/src/ui/index.ts +11 -11
  140. package/src/ui/localizer.tsx +148 -137
  141. package/src/ui/useCompact.tsx +32 -0
  142. package/src/ui/useFormatter.tsx +17 -17
  143. 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
+ }