mr-chat-bird 1.0.0 → 1.0.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.
Files changed (40) hide show
  1. package/package.json +41 -21
  2. package/app/layout.tsx +0 -69
  3. package/app/page.tsx +0 -9
  4. package/eslint.config.mjs +0 -11
  5. package/index.ts +0 -1
  6. package/next-env.d.ts +0 -5
  7. package/next.config.mjs +0 -30
  8. package/postcss.config.cjs +0 -14
  9. package/public/favicon.svg +0 -1
  10. package/src/components/ChatUserList/ChatUserList.module.css +0 -253
  11. package/src/components/ChatUserList/ChatUserList.tsx +0 -434
  12. package/src/components/ChatUserList/ChatUserList.type.tsx +0 -12
  13. package/src/components/ChatUserList/ChatUserMessage.tsx +0 -362
  14. package/src/components/ChatUserList/users_list.json +0 -648
  15. package/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx +0 -15
  16. package/src/components/EmojiPickerPopover/EmojiPickerPopover.tsx +0 -72
  17. package/src/components/MrChat/index.tsx +0 -34
  18. package/src/components/RichTextEditor/DropzoneMenuItem.tsx +0 -33
  19. package/src/components/RichTextEditor/EmojiNode.tsx +0 -36
  20. package/src/components/RichTextEditor/RichTextEditor.module.css +0 -95
  21. package/src/components/RichTextEditor/RichTextEditor.tsx +0 -248
  22. package/src/components/UserProfile/UserProfileDrawer.module.css +0 -120
  23. package/src/components/UserProfile/UserProfileDrawer.tsx +0 -115
  24. package/src/components/VirtualizedList/ChatScrollContainer.tsx +0 -92
  25. package/src/components/VirtualizedList/index.tsx +0 -31
  26. package/src/lib/axios.ts +0 -12
  27. package/src/lib/socket.ts +0 -29
  28. package/src/store/provider.tsx +0 -8
  29. package/src/store/slices/ChatSlice.ts +0 -249
  30. package/src/store/socket/index.tsx +0 -32
  31. package/src/store/store.ts +0 -11
  32. package/src/theme.ts +0 -84
  33. package/src/utils/environment.ts +0 -5
  34. package/src/utils/helper.ts +0 -36
  35. package/src/utils/icons/richText/Add.svg +0 -1
  36. package/src/utils/icons/richText/AddReaction.svg +0 -1
  37. package/src/utils/icons/richText/Docs.svg +0 -1
  38. package/src/utils/icons/richText/Image.svg +0 -1
  39. package/src/utils/icons/richText/TextFormat.svg +0 -1
  40. package/tsconfig.json +0 -25
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "mr-chat-bird",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "private": false,
5
- "main": "index.js",
5
+ "license": "MIT",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "files": [
10
+ "dist"
11
+ ],
6
12
  "scripts": {
13
+ "start": "next start",
14
+ "build": "next build",
7
15
  "build:npm": "tsup index.ts --format esm,cjs --dts",
8
16
  "dev": "next dev",
9
- "build": "next build",
10
- "analyze": "ANALYZE=true next build",
11
- "start": "next start"
17
+ "analyze": "ANALYZE=true next build"
12
18
  },
13
19
  "dependencies": {
14
20
  "@emoji-mart/data": "^1.2.1",
15
21
  "@emoji-mart/react": "^1.1.1",
16
- "@mantine/core": "^8.1.3",
17
- "@mantine/hooks": "^8.1.3",
18
- "@mantine/notifications": "^8.2.1",
19
- "@mantine/tiptap": "^8.1.3",
20
- "@next/bundle-analyzer": "^15.3.3",
21
- "@reduxjs/toolkit": "^2.8.2",
22
22
  "@tabler/icons-react": "^3.34.0",
23
23
  "@tiptap/extension-highlight": "^3.0.7",
24
24
  "@tiptap/extension-link": "^3.0.7",
@@ -27,28 +27,43 @@
27
27
  "@tiptap/extension-superscript": "^3.0.7",
28
28
  "@tiptap/extension-text-align": "^3.0.7",
29
29
  "@tiptap/pm": "^3.0.7",
30
- "@tiptap/react": "^3.0.7",
31
- "@tiptap/starter-kit": "^3.0.7",
32
30
  "axios": "^1.10.0",
33
31
  "clsx": "^2.1.1",
34
32
  "dompurify": "^3.3.3",
35
33
  "emoji-mart": "^5.6.0",
36
34
  "emoji-picker-react": "^4.13.2",
37
- "next": "15.3.3",
38
- "react": "19.1.0",
39
- "react-dom": "19.1.0",
40
35
  "react-dropzone": "^14.3.8",
41
- "react-redux": "^9.2.0",
42
- "react-virtuoso": "^4.18.3",
43
- "socket.io-client": "^4.8.1",
44
- "tsup": "^8.5.1"
36
+ "react-virtuoso": "^4.18.3"
37
+ },
38
+ "peerDependencies": {
39
+ "@mantine/core": "^7 || ^8",
40
+ "@mantine/hooks": "^7 || ^8",
41
+ "@mantine/notifications": "^7 || ^8",
42
+ "@mantine/tiptap": "^7 || ^8",
43
+ "@reduxjs/toolkit": "^1.9.0 || ^2",
44
+ "react-redux": "^8 || ^9",
45
+ "@tiptap/react": "^2 || ^3",
46
+ "@tiptap/starter-kit": "^2 || ^3",
47
+ "socket.io-client": "^4",
48
+ "next": "^13 || ^14 || ^15",
49
+ "react": "^18 || ^19",
50
+ "react-dom": "^18 || ^19"
45
51
  },
46
52
  "devDependencies": {
47
53
  "@babel/core": "^7.27.4",
48
54
  "@eslint/js": "^9.29.0",
49
55
  "@ianvs/prettier-plugin-sort-imports": "^4.4.2",
56
+ "@mantine/core": "^8.1.3",
57
+ "@mantine/hooks": "^8.1.3",
58
+ "@mantine/notifications": "^8.2.1",
59
+ "@mantine/tiptap": "^8.1.3",
60
+ "@next/bundle-analyzer": "^15.3.3",
61
+ "@reduxjs/toolkit": "^2.8.2",
62
+ "react-redux": "^9.2.0",
50
63
  "@svgr/webpack": "^8.1.0",
51
64
  "@swc/core": "^1.15.40",
65
+ "@tiptap/react": "^3.0.7",
66
+ "@tiptap/starter-kit": "^3.0.7",
52
67
  "@types/eslint-plugin-jsx-a11y": "^6",
53
68
  "@types/node": "^22.13.11",
54
69
  "@types/react": "19.1.8",
@@ -57,13 +72,18 @@
57
72
  "eslint-config-mantine": "^4.0.3",
58
73
  "eslint-plugin-jsx-a11y": "^6.10.2",
59
74
  "eslint-plugin-react": "^7.37.5",
75
+ "next": "15.5.18",
60
76
  "postcss": "^8.5.5",
61
77
  "postcss-preset-mantine": "1.17.0",
62
78
  "postcss-simple-vars": "^7.0.1",
63
79
  "prettier": "^3.5.3",
80
+ "react": "19.1.0",
81
+ "react-dom": "19.1.0",
82
+ "socket.io-client": "^4.8.1",
64
83
  "stylelint": "^16.20.0",
65
84
  "stylelint-config-standard-scss": "^15.0.1",
85
+ "tsup": "^8.5.1",
66
86
  "typescript": "5.8.3",
67
87
  "typescript-eslint": "^8.34.0"
68
88
  }
69
- }
89
+ }
package/app/layout.tsx DELETED
@@ -1,69 +0,0 @@
1
- "use client";
2
-
3
- import "@mantine/core/styles.css";
4
- import "@mantine/tiptap/styles.css";
5
- import "@mantine/notifications/styles.css";
6
-
7
- import { useState } from "react";
8
- import { ColorSchemeScript, MantineProvider } from "@mantine/core";
9
- import { Notifications } from "@mantine/notifications";
10
- import { createAppTheme } from "../src/theme";
11
- import { ReduxProvider } from "@/src/store/provider";
12
- import { SocketProvider } from "@/src/store/socket";
13
-
14
- // export const metadata = {
15
- // title: 'MrChatBird',
16
- // description: 'Easy to integrate with your app the way you want.',
17
- // };
18
-
19
- export default function RootLayout({
20
- children,
21
- }: {
22
- children: React.ReactNode;
23
- }) {
24
- const [primaryColor, setPrimaryColor] = useState<
25
- "customBrand" | "emerald" | "ruby" | "sunset" | "ocean"
26
- >("customBrand");
27
-
28
- const theme = createAppTheme(primaryColor);
29
-
30
- return (
31
- <html lang="en" suppressHydrationWarning>
32
- <head>
33
- <ColorSchemeScript defaultColorScheme="light" />
34
- <link rel="shortcut icon" href="/favicon.svg" />
35
- <link
36
- href="https://fonts.googleapis.com/icon?family=Material+Icons+Round"
37
- rel="stylesheet"
38
- />
39
- <meta
40
- name="viewport"
41
- content="minimum-scale=1, initial-scale=1, width=device-width, user-scalable=no"
42
- />
43
- </head>
44
- <body>
45
- <ReduxProvider>
46
- <SocketProvider>
47
- <MantineProvider defaultColorScheme="light" theme={theme}>
48
- <Notifications />
49
- {/* <div style={{ padding: 16 }}>
50
- <select
51
- value={primaryColor}
52
- onChange={(e) => setPrimaryColor(e.target.value as any)}
53
- >
54
- <option value="customBrand">Blue (customBrand)</option>
55
- <option value="emerald">Green (emerald)</option>
56
- <option value="ruby">Red (ruby)</option>
57
- <option value="sunset">Orange (sunset)</option>
58
- <option value="ocean">Cyan (ocean)</option>
59
- </select>
60
- <ColorSchemeToggle />
61
- </div> */}
62
- {children}
63
- </MantineProvider>
64
- </SocketProvider>
65
- </ReduxProvider>
66
- </body>
67
- </html>
68
- );
69
- }
package/app/page.tsx DELETED
@@ -1,9 +0,0 @@
1
- import { ChatUserList } from '../src/components/ChatUserList/ChatUserList';
2
-
3
- export default function HomePage() {
4
- return (
5
- <>
6
- <ChatUserList />
7
- </>
8
- );
9
- }
package/eslint.config.mjs DELETED
@@ -1,11 +0,0 @@
1
- import mantine from 'eslint-config-mantine';
2
- import tseslint from 'typescript-eslint';
3
-
4
- export default tseslint.config(
5
- ...mantine,
6
- { ignores: ['**/*.{mjs,cjs,js,d.ts,d.mts}'] },
7
- {
8
- files: ['**/*.story.tsx'],
9
- rules: { 'no-console': 'off' },
10
- }
11
- );
package/index.ts DELETED
@@ -1 +0,0 @@
1
- export { default as MrChat } from "./src/components/MrChat";
package/next-env.d.ts DELETED
@@ -1,5 +0,0 @@
1
- /// <reference types="next" />
2
- /// <reference types="next/image-types/global" />
3
-
4
- // NOTE: This file should not be edited
5
- // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
package/next.config.mjs DELETED
@@ -1,30 +0,0 @@
1
- import bundleAnalyzer from '@next/bundle-analyzer';
2
-
3
- const withBundleAnalyzer = bundleAnalyzer({
4
- enabled: process.env.ANALYZE === 'true',
5
- });
6
-
7
- export default withBundleAnalyzer({
8
- reactStrictMode: false,
9
- eslint: {
10
- ignoreDuringBuilds: true,
11
- },
12
- experimental: {
13
- optimizePackageImports: ['@mantine/core', '@mantine/hooks'],
14
- },
15
- webpack(config) {
16
- config.module.rules.push({
17
- test: /\.svg$/,
18
- issuer: /\.[jt]sx?$/,
19
- use: [
20
- {
21
- loader: '@svgr/webpack',
22
- options: {
23
- exportType: 'default',
24
- },
25
- },
26
- ],
27
- });
28
- return config;
29
- },
30
- });
@@ -1,14 +0,0 @@
1
- module.exports = {
2
- plugins: {
3
- 'postcss-preset-mantine': {},
4
- 'postcss-simple-vars': {
5
- variables: {
6
- 'mantine-breakpoint-xs': '36em',
7
- 'mantine-breakpoint-sm': '48em',
8
- 'mantine-breakpoint-md': '62em',
9
- 'mantine-breakpoint-lg': '75em',
10
- 'mantine-breakpoint-xl': '88em',
11
- },
12
- },
13
- },
14
- };
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500"><g fill="none" fill-rule="evenodd"><rect width="500" height="500" fill="#339AF0" rx="250"/><g fill="#FFF"><path fill-rule="nonzero" d="M202.055 135.706c-6.26 8.373-4.494 20.208 3.944 26.42 29.122 21.45 45.824 54.253 45.824 90.005 0 35.752-16.702 68.559-45.824 90.005-8.436 6.215-10.206 18.043-3.944 26.42 6.26 8.378 18.173 10.13 26.611 3.916a153.835 153.835 0 0024.509-22.54h53.93c10.506 0 19.023-8.455 19.023-18.885 0-10.43-8.517-18.886-19.023-18.886h-29.79c8.196-18.594 12.553-38.923 12.553-60.03s-4.357-41.436-12.552-60.03h29.79c10.505 0 19.022-8.455 19.022-18.885 0-10.43-8.517-18.886-19.023-18.886h-53.93a153.835 153.835 0 00-24.509-22.54c-8.438-6.215-20.351-4.46-26.61 3.916z"/><path d="M171.992 246.492c0-15.572 12.624-28.195 28.196-28.195 15.572 0 28.195 12.623 28.195 28.195 0 15.572-12.623 28.196-28.195 28.196-15.572 0-28.196-12.624-28.196-28.196z"/></g></g></svg>
@@ -1,253 +0,0 @@
1
- .chatWrapper {
2
- display: flex;
3
- flex-direction: column;
4
- align-items: center;
5
- height: 100vh;
6
- background: #f1f3f5;
7
- }
8
-
9
- .chatContainer {
10
- display: flex;
11
- width: 100%;
12
- max-width: 1260px;
13
- background: white;
14
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.05);
15
- border-radius: 8px;
16
- overflow: hidden;
17
- }
18
-
19
- .sidebar {
20
- width: 280px;
21
- display: flex;
22
- flex-direction: column;
23
- height: 100vh;
24
- border-right: 1px solid #eee;
25
- background-color: #fff;
26
- padding-top: 12px;
27
- }
28
-
29
- @media (max-width: 760px) {
30
- .sidebar {
31
- width: 180px;
32
- }
33
- }
34
-
35
- .sidebarTop {
36
- padding: 0 12px;
37
- }
38
-
39
- .topBar {
40
- display: flex;
41
- justify-content: space-between;
42
- align-items: center;
43
- /* padding-bottom: 12px; */
44
- }
45
-
46
- .topActions {
47
- display: flex;
48
- align-items: center;
49
- gap: 10px;
50
- }
51
-
52
- .scrollWrapper {
53
- flex: 1;
54
- min-height: 0;
55
- overflow: hidden;
56
- }
57
-
58
- .scrollArea {
59
- flex: 1;
60
- height: 100%;
61
- overflow-y: auto;
62
- }
63
-
64
- .scrollArea :global(.mantine-ScrollArea-content) {
65
- padding-bottom: 60px;
66
- }
67
-
68
- .avatar {
69
- width: 34px;
70
- height: 34px;
71
- border-radius: 50%;
72
- object-fit: cover;
73
- }
74
-
75
- .mainArea {
76
- flex: 1;
77
- display: flex;
78
- flex-direction: column;
79
- }
80
-
81
- .messageArea {
82
- flex: 1;
83
- padding: 16px;
84
- overflow-y: auto;
85
- padding-bottom: 10px;
86
- }
87
-
88
- .messageBubble {
89
- max-width: fit-content;
90
- padding: 8px 45px 8px 16px;
91
- margin-bottom: 8px;
92
- position: relative;
93
- }
94
-
95
- .outgoing {
96
- color: white;
97
- background-color: #366ca4;
98
- margin-left: auto;
99
- }
100
-
101
- .incoming {
102
- background-color: #eeeeee;
103
- margin-right: auto;
104
- }
105
-
106
- .inputBar {
107
- display: flex;
108
- align-items: end;
109
- gap: 8px;
110
- padding: 0px 16px 16px;
111
- }
112
-
113
- /* @media (max-width: 760px) {
114
- .mainArea {
115
- display: none;
116
- }
117
- } */
118
-
119
- .chatItem {
120
- display: flex;
121
- align-items: center;
122
- gap: 6px;
123
- padding: 8px 12px;
124
- cursor: pointer;
125
- transition: background 0.2s;
126
- margin: 2px 4px;
127
- border-radius: 6px;
128
- }
129
-
130
- .chatItem:hover {
131
- background-color: #f6f6f6;
132
- }
133
-
134
- .chatLabelItem {
135
- font-size: 15px;
136
- }
137
-
138
- .chatHeader {
139
- display: flex;
140
- justify-content: space-between;
141
- align-items: center;
142
- padding: 12px 16px;
143
- border-bottom: 1px solid #eee;
144
- background-color: #f8f9fa;
145
- position: sticky;
146
- top: 0;
147
- z-index: 2;
148
- min-height: 63px;
149
- }
150
-
151
- .receiverInfo {
152
- display: flex;
153
- align-items: center;
154
- gap: 12px;
155
- cursor: pointer;
156
- }
157
-
158
- .emptyState {
159
- height: 100%;
160
- display: flex;
161
- align-items: center;
162
- justify-content: center;
163
- }
164
-
165
- .encryptionMinimal {
166
- display: flex;
167
- align-items: center;
168
- gap: 6px;
169
- padding: 6px 10px;
170
- border-radius: 12px;
171
- background: rgba(0, 0, 0, 0.04);
172
- color: #666;
173
- font-size: 12px;
174
- }
175
-
176
- .encryptionText {
177
- font-size: 16px;
178
- color: #666;
179
- margin-left: 3px;
180
- }
181
-
182
- .messageContent {
183
- max-width: 370px;
184
- word-wrap: break-word;
185
- font-size: 14px;
186
- }
187
-
188
- .messagePreviewContent p,
189
- .messageContent p {
190
- margin: 0;
191
- padding: 0;
192
- }
193
-
194
- .activeChatItem {
195
- background-color: #eee;
196
- }
197
-
198
- .chatItem:hover {
199
- background-color: #eee;
200
- }
201
-
202
- .messageTime {
203
- font-size: 11px;
204
- opacity: 0.6;
205
- text-align: right;
206
- margin-top: 4px;
207
- position: absolute;
208
- bottom: 4px;
209
- right: 8px;
210
- z-index: 1;
211
- }
212
-
213
- .dateSeparator {
214
- text-align: center;
215
- font-size: 13px;
216
- margin: 12px 0;
217
- color: #888;
218
- }
219
-
220
- .chatInfo {
221
- width: 100%;
222
- position: relative;
223
- }
224
-
225
- .messagePreview {
226
- display: flex;
227
- justify-content: space-between;
228
- align-items: end;
229
- margin-top: 1px;
230
- }
231
-
232
- .messagePreviewTime {
233
- position: relative;
234
- top: 1px;
235
- right: 0;
236
- }
237
-
238
- .unreadBadge {
239
- background: #366ca4;
240
- color: white;
241
- font-size: 10px;
242
- border-radius: 50%;
243
- padding: 3px 5px;
244
- min-width: 18px;
245
- text-align: center;
246
- position: absolute;
247
- top: 1px;
248
- right: 0px;
249
- }
250
-
251
- .messagePreviewContent {
252
- font-size: 14px;
253
- }