mr-chat-bird 1.0.0 → 1.0.1

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 +38 -18
  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,8 +1,14 @@
1
1
  {
2
2
  "name": "mr-chat-bird",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
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": {
7
13
  "build:npm": "tsup index.ts --format esm,cjs --dts",
8
14
  "dev": "next dev",
@@ -13,12 +19,6 @@
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,42 @@
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": "^8",
40
+ "@mantine/hooks": "^8",
41
+ "@mantine/notifications": "^8",
42
+ "@mantine/tiptap": "^8",
43
+ "@reduxjs/toolkit": "^2",
44
+ "@tiptap/react": "^3",
45
+ "@tiptap/starter-kit": "^3",
46
+ "next": "^15",
47
+ "react": "^18 || ^19",
48
+ "react-dom": "^18 || ^19",
49
+ "react-redux": "^9",
50
+ "socket.io-client": "^4"
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",
50
62
  "@svgr/webpack": "^8.1.0",
51
63
  "@swc/core": "^1.15.40",
64
+ "@tiptap/react": "^3.0.7",
65
+ "@tiptap/starter-kit": "^3.0.7",
52
66
  "@types/eslint-plugin-jsx-a11y": "^6",
53
67
  "@types/node": "^22.13.11",
54
68
  "@types/react": "19.1.8",
@@ -57,13 +71,19 @@
57
71
  "eslint-config-mantine": "^4.0.3",
58
72
  "eslint-plugin-jsx-a11y": "^6.10.2",
59
73
  "eslint-plugin-react": "^7.37.5",
74
+ "next": "15.5.18",
60
75
  "postcss": "^8.5.5",
61
76
  "postcss-preset-mantine": "1.17.0",
62
77
  "postcss-simple-vars": "^7.0.1",
63
78
  "prettier": "^3.5.3",
79
+ "react": "19.1.0",
80
+ "react-dom": "19.1.0",
81
+ "react-redux": "^9.2.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
- }