@cometchat/skills-cli 2.4.0 → 3.0.0

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 (111) hide show
  1. package/README.md +45 -37
  2. package/dist/index.js +1690 -12609
  3. package/dist/utils/error-dictionary.js +0 -69
  4. package/package.json +10 -12
  5. package/dist/registry/schemas/config.schema.json +0 -119
  6. package/dist/registry/schemas/template.schema.json +0 -142
  7. package/dist/registry/v6/experiences/1-conversation-list/astro.template.json +0 -89
  8. package/dist/registry/v6/experiences/1-conversation-list/nextjs-pages.template.json +0 -83
  9. package/dist/registry/v6/experiences/1-conversation-list/nextjs.template.json +0 -83
  10. package/dist/registry/v6/experiences/1-conversation-list/react-router.template.json +0 -102
  11. package/dist/registry/v6/experiences/1-conversation-list/reactjs-dedicated-route.template.json +0 -81
  12. package/dist/registry/v6/experiences/1-conversation-list/reactjs.template.json +0 -86
  13. package/dist/registry/v6/experiences/1-conversation-list/templates/astro/ChatApp.css.tpl +0 -43
  14. package/dist/registry/v6/experiences/1-conversation-list/templates/astro/ChatApp.tsx.tpl +0 -86
  15. package/dist/registry/v6/experiences/1-conversation-list/templates/astro/CometChatSelector.tsx.tpl +0 -40
  16. package/dist/registry/v6/experiences/1-conversation-list/templates/astro/chat.astro.tpl +0 -17
  17. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs/CometChatNoSSR.css.tpl +0 -43
  18. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs/CometChatNoSSR.tsx.tpl +0 -86
  19. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs/CometChatSelector.tsx.tpl +0 -41
  20. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs/chat-page.tsx.tpl +0 -11
  21. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs-pages/CometChatNoSSR.css.tpl +0 -43
  22. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs-pages/CometChatNoSSR.tsx.tpl +0 -88
  23. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs-pages/CometChatSelector.tsx.tpl +0 -41
  24. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs-pages/chat-page.tsx.tpl +0 -15
  25. package/dist/registry/v6/experiences/1-conversation-list/templates/react-router/CometChat-route.tsx.tpl +0 -22
  26. package/dist/registry/v6/experiences/1-conversation-list/templates/react-router/CometChatNoSSR.css.tpl +0 -43
  27. package/dist/registry/v6/experiences/1-conversation-list/templates/react-router/CometChatNoSSR.tsx.tpl +0 -87
  28. package/dist/registry/v6/experiences/1-conversation-list/templates/react-router/CometChatSelector.tsx.tpl +0 -40
  29. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs/App.css.tpl +0 -40
  30. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs/App.tsx.tpl +0 -55
  31. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs/CometChatSelector.tsx.tpl +0 -40
  32. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs/main.tsx.tpl +0 -46
  33. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs-dedicated-route/ChatPage.tsx.tpl +0 -87
  34. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs-dedicated-route/CometChatMessenger.css.tpl +0 -20
  35. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs-dedicated-route/CometChatMessenger.tsx.tpl +0 -54
  36. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs-dedicated-route/CometChatSelector.tsx.tpl +0 -40
  37. package/dist/registry/v6/experiences/2-one-to-one/astro.template.json +0 -81
  38. package/dist/registry/v6/experiences/2-one-to-one/nextjs.template.json +0 -77
  39. package/dist/registry/v6/experiences/2-one-to-one/react-router.template.json +0 -93
  40. package/dist/registry/v6/experiences/2-one-to-one/reactjs-dedicated-route.template.json +0 -75
  41. package/dist/registry/v6/experiences/2-one-to-one/reactjs.template.json +0 -80
  42. package/dist/registry/v6/experiences/2-one-to-one/templates/astro/ChatApp.css.tpl +0 -21
  43. package/dist/registry/v6/experiences/2-one-to-one/templates/astro/ChatApp.tsx.tpl +0 -66
  44. package/dist/registry/v6/experiences/2-one-to-one/templates/astro/chat.astro.tpl +0 -17
  45. package/dist/registry/v6/experiences/2-one-to-one/templates/nextjs/CometChatNoSSR.css.tpl +0 -21
  46. package/dist/registry/v6/experiences/2-one-to-one/templates/nextjs/CometChatNoSSR.tsx.tpl +0 -66
  47. package/dist/registry/v6/experiences/2-one-to-one/templates/nextjs/chat-page.tsx.tpl +0 -11
  48. package/dist/registry/v6/experiences/2-one-to-one/templates/react-router/CometChat-route.tsx.tpl +0 -21
  49. package/dist/registry/v6/experiences/2-one-to-one/templates/react-router/CometChatNoSSR.css.tpl +0 -21
  50. package/dist/registry/v6/experiences/2-one-to-one/templates/react-router/CometChatNoSSR.tsx.tpl +0 -67
  51. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs/App.css.tpl +0 -4
  52. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs/App.tsx.tpl +0 -44
  53. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs/main.tsx.tpl +0 -46
  54. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs-dedicated-route/ChatPage.tsx.tpl +0 -84
  55. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs-dedicated-route/CometChatMessenger.css.tpl +0 -9
  56. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs-dedicated-route/CometChatMessenger.tsx.tpl +0 -43
  57. package/dist/registry/v6/experiences/3-tab-based/astro.template.json +0 -93
  58. package/dist/registry/v6/experiences/3-tab-based/nextjs.template.json +0 -90
  59. package/dist/registry/v6/experiences/3-tab-based/react-router.template.json +0 -105
  60. package/dist/registry/v6/experiences/3-tab-based/reactjs-dedicated-route.template.json +0 -89
  61. package/dist/registry/v6/experiences/3-tab-based/reactjs.template.json +0 -93
  62. package/dist/registry/v6/experiences/3-tab-based/templates/astro/ChatApp.css.tpl +0 -39
  63. package/dist/registry/v6/experiences/3-tab-based/templates/astro/ChatApp.tsx.tpl +0 -93
  64. package/dist/registry/v6/experiences/3-tab-based/templates/astro/CometChatTabs.css.tpl +0 -43
  65. package/dist/registry/v6/experiences/3-tab-based/templates/astro/CometChatTabs.tsx.tpl +0 -72
  66. package/dist/registry/v6/experiences/3-tab-based/templates/astro/chat.astro.tpl +0 -17
  67. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/CometChatNoSSR.css.tpl +0 -39
  68. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/CometChatNoSSR.tsx.tpl +0 -93
  69. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/CometChatTabs.css.tpl +0 -43
  70. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/CometChatTabs.tsx.tpl +0 -73
  71. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/chat-page.tsx.tpl +0 -11
  72. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChat-route.tsx.tpl +0 -21
  73. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChatNoSSR.css.tpl +0 -39
  74. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChatNoSSR.tsx.tpl +0 -94
  75. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChatTabs.css.tpl +0 -43
  76. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChatTabs.tsx.tpl +0 -72
  77. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/App.css.tpl +0 -7
  78. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/App.tsx.tpl +0 -62
  79. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/CometChatTabs.css.tpl +0 -43
  80. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/CometChatTabs.tsx.tpl +0 -72
  81. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/main.tsx.tpl +0 -46
  82. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs-dedicated-route/ChatPage.tsx.tpl +0 -84
  83. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs-dedicated-route/CometChatMessenger.css.tpl +0 -11
  84. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs-dedicated-route/CometChatMessenger.tsx.tpl +0 -61
  85. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs-dedicated-route/CometChatTabs.css.tpl +0 -43
  86. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs-dedicated-route/CometChatTabs.tsx.tpl +0 -72
  87. package/dist/registry/v6/features/catalog.json +0 -526
  88. package/dist/registry/v6/production/astro/cometchat-token.ts.tpl +0 -86
  89. package/dist/registry/v6/production/astro.template.json +0 -51
  90. package/dist/registry/v6/production/nextjs/route.ts.tpl +0 -79
  91. package/dist/registry/v6/production/nextjs.template.json +0 -50
  92. package/dist/registry/v6/production/react-router/api.cometchat-token.ts.tpl +0 -73
  93. package/dist/registry/v6/production/react-router.template.json +0 -58
  94. package/dist/registry/v6/user-mgmt/astro/cometchat-user.ts.tpl +0 -164
  95. package/dist/registry/v6/user-mgmt/astro.template.json +0 -33
  96. package/dist/registry/v6/user-mgmt/nextjs/route.ts.tpl +0 -212
  97. package/dist/registry/v6/user-mgmt/nextjs.template.json +0 -57
  98. package/dist/registry/v6/user-mgmt/react-router/api.cometchat-user.ts.tpl +0 -176
  99. package/dist/registry/v6/user-mgmt/react-router.template.json +0 -40
  100. package/dist/registry/v6/widget/astro/CometChatWidget.css.tpl +0 -105
  101. package/dist/registry/v6/widget/astro/CometChatWidget.tsx.tpl +0 -88
  102. package/dist/registry/v6/widget/astro.template.json +0 -38
  103. package/dist/registry/v6/widget/nextjs/CometChatWidget.css.tpl +0 -105
  104. package/dist/registry/v6/widget/nextjs/CometChatWidget.tsx.tpl +0 -88
  105. package/dist/registry/v6/widget/nextjs.template.json +0 -40
  106. package/dist/registry/v6/widget/react-router/CometChatWidget.css.tpl +0 -105
  107. package/dist/registry/v6/widget/react-router/CometChatWidget.tsx.tpl +0 -98
  108. package/dist/registry/v6/widget/react-router.template.json +0 -36
  109. package/dist/registry/v6/widget/reactjs/CometChatWidget.css.tpl +0 -105
  110. package/dist/registry/v6/widget/reactjs/CometChatWidget.tsx.tpl +0 -89
  111. package/dist/registry/v6/widget/reactjs.template.json +0 -36
@@ -1,102 +0,0 @@
1
- {
2
- "$schema": "../../../schemas/template.schema.json",
3
- "version": "1.0.0",
4
- "experience_id": 1,
5
- "framework": "react-router",
6
- "sdk_compatibility": ">=6.0.0 <7.0.0",
7
- "default_placement": "dedicated-route",
8
- "deps": [
9
- {
10
- "name": "@cometchat/chat-uikit-react",
11
- "version": "^6"
12
- },
13
- {
14
- "name": "@cometchat/chat-sdk-javascript",
15
- "version": "^4"
16
- }
17
- ],
18
- "env_vars": [
19
- {
20
- "name": "{{ENV_PREFIX}}COMETCHAT_APP_ID",
21
- "required": true,
22
- "description": "CometChat App ID from your dashboard"
23
- },
24
- {
25
- "name": "{{ENV_PREFIX}}COMETCHAT_REGION",
26
- "required": true,
27
- "description": "CometChat region (us, eu, in, etc.)"
28
- },
29
- {
30
- "name": "{{ENV_PREFIX}}COMETCHAT_AUTH_KEY",
31
- "required": true,
32
- "secret": true,
33
- "description": "CometChat Auth Key (development only)"
34
- }
35
- ],
36
- "files": [
37
- {
38
- "path": "app/cometchat/CometChatNoSSR.tsx",
39
- "action": "create",
40
- "template_ref": "CometChatNoSSR.tsx.tpl",
41
- "owned": true
42
- },
43
- {
44
- "path": "app/cometchat/CometChatNoSSR.css",
45
- "action": "create",
46
- "template_ref": "CometChatNoSSR.css.tpl",
47
- "owned": true
48
- },
49
- {
50
- "path": "app/cometchat/CometChatSelector.tsx",
51
- "action": "create",
52
- "template_ref": "CometChatSelector.tsx.tpl",
53
- "owned": true
54
- },
55
- {
56
- "path": "app/routes/CometChat.tsx",
57
- "action": "create",
58
- "template_ref": "CometChat-route.tsx.tpl",
59
- "owned": true,
60
- "is_entry": true
61
- },
62
- {
63
- "path": "app/routes.ts",
64
- "action": "patch",
65
- "patch_mode": "replace-section",
66
- "anchor": "import { type RouteConfig, index }",
67
- "patch_content": "import { type RouteConfig, index, route } from \"@react-router/dev/routes\";",
68
- "skip_if_exists": "import { type RouteConfig, index, route }",
69
- "embed_skip": true
70
- },
71
- {
72
- "path": "app/routes.ts",
73
- "action": "patch",
74
- "patch_mode": "insert-before",
75
- "anchor": "] satisfies RouteConfig",
76
- "patch_content": " route(\"chat\", \"routes/CometChat.tsx\"),\n",
77
- "skip_if_exists": "routes/CometChat.tsx",
78
- "embed_skip": true
79
- },
80
- {
81
- "path": "app/app.css",
82
- "action": "patch",
83
- "patch_mode": "prepend",
84
- "patch_content": "@import url(\"@cometchat/chat-uikit-react/css-variables.css\");\n",
85
- "skip_if_exists": "@cometchat/chat-uikit-react/css-variables.css"
86
- }
87
- ],
88
- "verify_rules": [
89
- "css_variables_imported_once",
90
- "init_before_login",
91
- "no_user_and_group_same_component",
92
- "no_auth_key_in_source",
93
- "render_gated_on_login_resolve",
94
- "error_ui_visible_on_failure"
95
- ],
96
- "next_steps": [
97
- "Add the chat route to app/routes.ts: route(\"chat\", \"routes/CometChat.tsx\")",
98
- "Run `npm run dev` to start the dev server",
99
- "Visit http://localhost:5173/chat",
100
- "When ready for production, run `cometchat apply --production` to set up server-side auth tokens"
101
- ]
102
- }
@@ -1,81 +0,0 @@
1
- {
2
- "$schema": "../../../schemas/template.schema.json",
3
- "version": "1.0.0",
4
- "experience_id": 1,
5
- "framework": "reactjs-dedicated-route",
6
- "sdk_compatibility": ">=6.0.0 <7.0.0",
7
- "default_placement": "dedicated-route",
8
- "deps": [
9
- { "name": "@cometchat/chat-uikit-react", "version": "^6" },
10
- { "name": "@cometchat/chat-sdk-javascript", "version": "^4" }
11
- ],
12
- "env_vars": [
13
- { "name": "{{ENV_PREFIX}}COMETCHAT_APP_ID", "required": true, "description": "CometChat App ID from your dashboard" },
14
- { "name": "{{ENV_PREFIX}}COMETCHAT_REGION", "required": true, "description": "CometChat region (us, eu, in, etc.)" },
15
- { "name": "{{ENV_PREFIX}}COMETCHAT_AUTH_KEY", "required": true, "secret": true, "description": "CometChat Auth Key (development only — use auth tokens in production)" }
16
- ],
17
- "files": [
18
- {
19
- "path": "src/cometchat/CometChatSelector.tsx",
20
- "action": "create",
21
- "template_ref": "CometChatSelector.tsx.tpl",
22
- "owned": true
23
- },
24
- {
25
- "path": "src/cometchat/CometChatMessenger.tsx",
26
- "action": "create",
27
- "template_ref": "CometChatMessenger.tsx.tpl",
28
- "owned": true
29
- },
30
- {
31
- "path": "src/cometchat/CometChatMessenger.css",
32
- "action": "create",
33
- "template_ref": "CometChatMessenger.css.tpl",
34
- "owned": true
35
- },
36
- {
37
- "path": "src/pages/ChatPage.tsx",
38
- "action": "create",
39
- "template_ref": "ChatPage.tsx.tpl",
40
- "owned": true,
41
- "is_entry": true
42
- },
43
- {
44
- "path": "src/App.tsx",
45
- "action": "patch",
46
- "patch_mode": "prepend",
47
- "patch_content": "import ChatPage from \"./pages/ChatPage\";\n",
48
- "skip_if_exists": "./pages/ChatPage",
49
- "embed_skip": true
50
- },
51
- {
52
- "path": "src/App.tsx",
53
- "action": "patch",
54
- "patch_mode": "insert-before",
55
- "anchor": "</Routes>",
56
- "patch_content": " <Route path=\"{{PLACEMENT_PATH}}\" element={<ChatPage />} />\n ",
57
- "skip_if_exists": "element={<ChatPage />}",
58
- "embed_skip": true
59
- },
60
- {
61
- "path": "src/index.css",
62
- "action": "patch",
63
- "patch_mode": "prepend",
64
- "patch_content": "@import url(\"@cometchat/chat-uikit-react/css-variables.css\");\n",
65
- "skip_if_exists": "@cometchat/chat-uikit-react/css-variables.css"
66
- }
67
- ],
68
- "verify_rules": [
69
- "css_variables_imported_once",
70
- "init_before_login",
71
- "no_auth_key_in_source",
72
- "render_gated_on_login_resolve",
73
- "error_ui_visible_on_failure"
74
- ],
75
- "next_steps": [
76
- "Run `npm run dev` to start the dev server",
77
- "Visit http://localhost:5173{{PLACEMENT_PATH}}",
78
- "Click a conversation in the left panel to open it",
79
- "If the route didn't wire up automatically (your App.tsx layout is non-standard), add: <Route path=\"{{PLACEMENT_PATH}}\" element={<ChatPage />} /> inside your existing <Routes> block and import ChatPage from ./pages/ChatPage"
80
- ]
81
- }
@@ -1,86 +0,0 @@
1
- {
2
- "$schema": "../../../schemas/template.schema.json",
3
- "version": "1.0.0",
4
- "experience_id": 1,
5
- "framework": "reactjs",
6
- "sdk_compatibility": ">=6.0.0 <7.0.0",
7
- "default_placement": "spa-root",
8
- "deps": [
9
- {
10
- "name": "@cometchat/chat-uikit-react",
11
- "version": "^6"
12
- },
13
- {
14
- "name": "@cometchat/chat-sdk-javascript",
15
- "version": "^4"
16
- }
17
- ],
18
- "env_vars": [
19
- {
20
- "name": "{{ENV_PREFIX}}COMETCHAT_APP_ID",
21
- "required": true,
22
- "description": "CometChat App ID from your dashboard"
23
- },
24
- {
25
- "name": "{{ENV_PREFIX}}COMETCHAT_REGION",
26
- "required": true,
27
- "description": "CometChat region (us, eu, in, etc.)"
28
- },
29
- {
30
- "name": "{{ENV_PREFIX}}COMETCHAT_AUTH_KEY",
31
- "required": true,
32
- "secret": true,
33
- "description": "CometChat Auth Key (development only — use auth tokens in production)"
34
- }
35
- ],
36
- "files": [
37
- {
38
- "path": "src/main.tsx",
39
- "action": "create",
40
- "template_ref": "main.tsx.tpl",
41
- "owned": true,
42
- "embed_skip": true
43
- },
44
- {
45
- "path": "src/App.tsx",
46
- "action": "create",
47
- "template_ref": "App.tsx.tpl",
48
- "owned": true,
49
- "is_entry": true
50
- },
51
- {
52
- "path": "src/App.css",
53
- "action": "create",
54
- "template_ref": "App.css.tpl",
55
- "owned": true,
56
- "move_with_entry": true
57
- },
58
- {
59
- "path": "src/cometchat/CometChatSelector.tsx",
60
- "action": "create",
61
- "template_ref": "CometChatSelector.tsx.tpl",
62
- "owned": true
63
- },
64
- {
65
- "path": "src/index.css",
66
- "action": "patch",
67
- "patch_mode": "prepend",
68
- "patch_content": "@import url(\"@cometchat/chat-uikit-react/css-variables.css\");\n",
69
- "skip_if_exists": "@cometchat/chat-uikit-react/css-variables.css"
70
- }
71
- ],
72
- "verify_rules": [
73
- "css_variables_imported_once",
74
- "init_before_login",
75
- "no_user_and_group_same_component",
76
- "no_auth_key_in_source",
77
- "render_gated_on_login_resolve",
78
- "error_ui_visible_on_failure"
79
- ],
80
- "next_steps": [
81
- "Run `npm run dev` to start the dev server",
82
- "Visit http://localhost:5173",
83
- "Click a conversation in the left panel to open it",
84
- "When ready for production, run `cometchat apply --production` to set up server-side auth tokens"
85
- ]
86
- }
@@ -1,43 +0,0 @@
1
- .conversations-with-messages {
2
- display: flex;
3
- height: 100vh;
4
- width: 100%;
5
- }
6
-
7
- .conversations-wrapper {
8
- height: 100%;
9
- width: 480px;
10
- overflow: hidden;
11
- display: flex;
12
- flex-direction: column;
13
- flex-shrink: 0;
14
- }
15
-
16
- .conversations-wrapper > .cometchat {
17
- overflow: hidden;
18
- }
19
-
20
- .messages-wrapper {
21
- flex: 1;
22
- min-width: 0;
23
- height: 100%;
24
- display: flex;
25
- flex-direction: column;
26
- }
27
-
28
- .empty-conversation {
29
- height: 100%;
30
- width: 100%;
31
- display: flex;
32
- justify-content: center;
33
- align-items: center;
34
- background: white;
35
- color: var(--cometchat-text-color-secondary, #727272);
36
- font: var(--cometchat-font-body-regular, 400 14px Roboto);
37
- }
38
-
39
- .cometchat .cometchat-message-composer {
40
- border-radius: 0;
41
- }
42
-
43
- .side-component-wrapper { display: flex; width: 30%; max-width: 420px; flex-direction: column; flex-shrink: 0; background: var(--cometchat-background-color-01, #FFF); border-left: 1px solid var(--cometchat-border-color-light, #F5F5F5); height: 100%; overflow: hidden; }
@@ -1,86 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import {
3
- CometChatMessageComposer,
4
- CometChatMessageHeader,
5
- CometChatMessageList,
6
- CometChatUIKit,
7
- UIKitSettingsBuilder,
8
- } from "@cometchat/chat-uikit-react";
9
- import { CometChat } from "@cometchat/chat-sdk-javascript";
10
- import { CometChatSelector } from "./CometChatSelector";
11
- // IMPORTANT: css-variables.css MUST be imported here (inside the React island)
12
- // — global stylesheets imported in .astro files do not apply to client:only islands.
13
- import "@cometchat/chat-uikit-react/css-variables.css";
14
- import "./ChatApp.css";
15
-
16
- const COMETCHAT_CONSTANTS = {
17
- APP_ID: import.meta.env.{{ENV_PREFIX}}COMETCHAT_APP_ID as string,
18
- REGION: import.meta.env.{{ENV_PREFIX}}COMETCHAT_REGION as string,
19
- AUTH_KEY: import.meta.env.{{ENV_PREFIX}}COMETCHAT_AUTH_KEY as string,
20
- };
21
- const UID = "{{LOGIN_UID}}";
22
-
23
- export default function ChatApp() {
24
- const [user, setUser] = useState<CometChat.User | undefined>();
25
- const [error, setError] = useState<string | null>(null);
26
- const [selectedUser, setSelectedUser] = useState<CometChat.User | undefined>();
27
- const [selectedGroup, setSelectedGroup] = useState<CometChat.Group | undefined>();
28
-
29
- useEffect(() => {
30
- const settings = new UIKitSettingsBuilder()
31
- .setAppId(COMETCHAT_CONSTANTS.APP_ID)
32
- .setRegion(COMETCHAT_CONSTANTS.REGION)
33
- .setAuthKey(COMETCHAT_CONSTANTS.AUTH_KEY)
34
- .subscribePresenceForAllUsers()
35
- .build();
36
-
37
- CometChatUIKit.init(settings)?.then(() => {
38
- CometChatUIKit.getLoggedinUser().then((u) => {
39
- if (!u) {
40
- CometChatUIKit.login(UID)
41
- .then(setUser)
42
- .catch((e: unknown) => setError(String(e)));
43
- } else {
44
- setUser(u);
45
- }
46
- });
47
- }).catch((e: unknown) => setError(String(e)));
48
- }, []);
49
-
50
- if (error) return <div style={{ color: "red", padding: 16, fontFamily: "monospace" }}>{error}</div>;
51
- if (!user) return null;
52
-
53
- return (
54
- <div className="conversations-with-messages">
55
- <div className="conversations-wrapper">
56
- <CometChatSelector
57
- onSelectorItemClicked={(activeItem) => {
58
- const item =
59
- activeItem instanceof CometChat.Conversation
60
- ? activeItem.getConversationWith()
61
- : activeItem;
62
- if (item instanceof CometChat.User) {
63
- setSelectedUser(item);
64
- setSelectedGroup(undefined);
65
- } else if (item instanceof CometChat.Group) {
66
- setSelectedUser(undefined);
67
- setSelectedGroup(item);
68
- }
69
- }}
70
- />
71
- </div>
72
- {selectedUser || selectedGroup ? (
73
- <div className="messages-wrapper">
74
- {selectedUser && <CometChatMessageHeader user={selectedUser} />}
75
- {selectedGroup && <CometChatMessageHeader group={selectedGroup} />}
76
- {selectedUser && <CometChatMessageList user={selectedUser} />}
77
- {selectedGroup && <CometChatMessageList group={selectedGroup} />}
78
- {selectedUser && <CometChatMessageComposer user={selectedUser} />}
79
- {selectedGroup && <CometChatMessageComposer group={selectedGroup} />}
80
- </div>
81
- ) : (
82
- <div className="empty-conversation">Select a conversation to start chatting</div>
83
- )}
84
- </div>
85
- );
86
- }
@@ -1,40 +0,0 @@
1
- import { useEffect, useState } from "react";
2
- import type { CometChat } from "@cometchat/chat-sdk-javascript";
3
- import {
4
- CometChatConversations,
5
- CometChatUIKitLoginListener,
6
- } from "@cometchat/chat-uikit-react";
7
-
8
- interface SelectorProps {
9
- onSelectorItemClicked?: (
10
- input: CometChat.Conversation | CometChat.User | CometChat.Group,
11
- type: string
12
- ) => void;
13
- }
14
-
15
- export const CometChatSelector = ({
16
- onSelectorItemClicked = () => {},
17
- }: SelectorProps) => {
18
- const [loggedInUser, setLoggedInUser] = useState<CometChat.User | null>(null);
19
- const [activeConversation, setActiveConversation] = useState<
20
- CometChat.Conversation | undefined
21
- >();
22
-
23
- useEffect(() => {
24
- setLoggedInUser(CometChatUIKitLoginListener.getLoggedInUser());
25
- }, []);
26
-
27
- return (
28
- <>
29
- {loggedInUser && (
30
- <CometChatConversations
31
- activeConversation={activeConversation}
32
- onItemClick={(e) => {
33
- setActiveConversation(e);
34
- onSelectorItemClicked(e, "updateSelectedItem");
35
- }}
36
- />
37
- )}
38
- </>
39
- );
40
- };
@@ -1,17 +0,0 @@
1
- ---
2
- import ChatApp from "../cometchat/ChatApp.tsx";
3
- ---
4
-
5
- <html lang="en">
6
- <head>
7
- <meta charset="utf-8" />
8
- <meta name="viewport" content="width=device-width" />
9
- <title>Chat</title>
10
- <style>
11
- html, body { margin: 0; padding: 0; height: 100%; }
12
- </style>
13
- </head>
14
- <body>
15
- <ChatApp client:only="react" />
16
- </body>
17
- </html>
@@ -1,43 +0,0 @@
1
- .conversations-with-messages {
2
- display: flex;
3
- height: 100vh;
4
- width: 100%;
5
- }
6
-
7
- .conversations-wrapper {
8
- height: 100%;
9
- width: 480px;
10
- overflow: hidden;
11
- display: flex;
12
- flex-direction: column;
13
- flex-shrink: 0;
14
- }
15
-
16
- .conversations-wrapper > .cometchat {
17
- overflow: hidden;
18
- }
19
-
20
- .messages-wrapper {
21
- flex: 1;
22
- min-width: 0;
23
- height: 100%;
24
- display: flex;
25
- flex-direction: column;
26
- }
27
-
28
- .empty-conversation {
29
- height: 100%;
30
- width: 100%;
31
- display: flex;
32
- justify-content: center;
33
- align-items: center;
34
- background: white;
35
- color: var(--cometchat-text-color-secondary, #727272);
36
- font: var(--cometchat-font-body-regular, 400 14px Roboto);
37
- }
38
-
39
- .cometchat .cometchat-message-composer {
40
- border-radius: 0;
41
- }
42
-
43
- .side-component-wrapper { display: flex; width: 30%; max-width: 420px; flex-direction: column; flex-shrink: 0; background: var(--cometchat-background-color-01, #FFF); border-left: 1px solid var(--cometchat-border-color-light, #F5F5F5); height: 100%; overflow: hidden; }
@@ -1,86 +0,0 @@
1
- "use client";
2
- import React, { useEffect, useState } from "react";
3
- import {
4
- CometChatMessageComposer,
5
- CometChatMessageHeader,
6
- CometChatMessageList,
7
- CometChatUIKit,
8
- UIKitSettingsBuilder,
9
- } from "@cometchat/chat-uikit-react";
10
- import { CometChat } from "@cometchat/chat-sdk-javascript";
11
- import { CometChatSelector } from "./CometChatSelector";
12
- // css-variables.css is imported in app/globals.css — do NOT import it here
13
- import "./CometChatNoSSR.css";
14
-
15
- const COMETCHAT_CONSTANTS = {
16
- APP_ID: process.env.{{ENV_PREFIX}}COMETCHAT_APP_ID!,
17
- REGION: process.env.{{ENV_PREFIX}}COMETCHAT_REGION!,
18
- AUTH_KEY: process.env.{{ENV_PREFIX}}COMETCHAT_AUTH_KEY!,
19
- };
20
- const UID = "{{LOGIN_UID}}";
21
-
22
- const CometChatNoSSR: React.FC = () => {
23
- const [user, setUser] = useState<CometChat.User | undefined>();
24
- const [error, setError] = useState<string | null>(null);
25
- const [selectedUser, setSelectedUser] = useState<CometChat.User | undefined>();
26
- const [selectedGroup, setSelectedGroup] = useState<CometChat.Group | undefined>();
27
-
28
- useEffect(() => {
29
- const settings = new UIKitSettingsBuilder()
30
- .setAppId(COMETCHAT_CONSTANTS.APP_ID)
31
- .setRegion(COMETCHAT_CONSTANTS.REGION)
32
- .setAuthKey(COMETCHAT_CONSTANTS.AUTH_KEY)
33
- .subscribePresenceForAllUsers()
34
- .build();
35
-
36
- CometChatUIKit.init(settings)?.then(() => {
37
- CometChatUIKit.getLoggedinUser().then((u) => {
38
- if (!u) {
39
- CometChatUIKit.login(UID)
40
- .then(setUser)
41
- .catch((e: unknown) => setError(String(e)));
42
- } else {
43
- setUser(u);
44
- }
45
- });
46
- }).catch((e: unknown) => setError(String(e)));
47
- }, []);
48
-
49
- if (error) return <div style={{ color: "red", padding: 16, fontFamily: "monospace" }}>{error}</div>;
50
- if (!user) return null;
51
-
52
- return (
53
- <div className="conversations-with-messages">
54
- <div className="conversations-wrapper">
55
- <CometChatSelector
56
- onSelectorItemClicked={(activeItem) => {
57
- const item =
58
- activeItem instanceof CometChat.Conversation
59
- ? activeItem.getConversationWith()
60
- : activeItem;
61
- if (item instanceof CometChat.User) {
62
- setSelectedUser(item);
63
- setSelectedGroup(undefined);
64
- } else if (item instanceof CometChat.Group) {
65
- setSelectedUser(undefined);
66
- setSelectedGroup(item);
67
- }
68
- }}
69
- />
70
- </div>
71
- {selectedUser || selectedGroup ? (
72
- <div className="messages-wrapper">
73
- {selectedUser && <CometChatMessageHeader user={selectedUser} />}
74
- {selectedGroup && <CometChatMessageHeader group={selectedGroup} />}
75
- {selectedUser && <CometChatMessageList user={selectedUser} />}
76
- {selectedGroup && <CometChatMessageList group={selectedGroup} />}
77
- {selectedUser && <CometChatMessageComposer user={selectedUser} />}
78
- {selectedGroup && <CometChatMessageComposer group={selectedGroup} />}
79
- </div>
80
- ) : (
81
- <div className="empty-conversation">Select a conversation to start chatting</div>
82
- )}
83
- </div>
84
- );
85
- };
86
- export default CometChatNoSSR;
@@ -1,41 +0,0 @@
1
- "use client";
2
- import { useEffect, useState } from "react";
3
- import type { CometChat } from "@cometchat/chat-sdk-javascript";
4
- import {
5
- CometChatConversations,
6
- CometChatUIKitLoginListener,
7
- } from "@cometchat/chat-uikit-react";
8
-
9
- interface SelectorProps {
10
- onSelectorItemClicked?: (
11
- input: CometChat.Conversation | CometChat.User | CometChat.Group,
12
- type: string
13
- ) => void;
14
- }
15
-
16
- export const CometChatSelector = ({
17
- onSelectorItemClicked = () => {},
18
- }: SelectorProps) => {
19
- const [loggedInUser, setLoggedInUser] = useState<CometChat.User | null>(null);
20
- const [activeConversation, setActiveConversation] = useState<
21
- CometChat.Conversation | undefined
22
- >();
23
-
24
- useEffect(() => {
25
- setLoggedInUser(CometChatUIKitLoginListener.getLoggedInUser());
26
- }, []);
27
-
28
- return (
29
- <>
30
- {loggedInUser && (
31
- <CometChatConversations
32
- activeConversation={activeConversation}
33
- onItemClick={(e) => {
34
- setActiveConversation(e);
35
- onSelectorItemClicked(e, "updateSelectedItem");
36
- }}
37
- />
38
- )}
39
- </>
40
- );
41
- };
@@ -1,11 +0,0 @@
1
- "use client";
2
- import dynamic from "next/dynamic";
3
-
4
- const CometChatComponent = dynamic(
5
- () => import("../cometchat/CometChatNoSSR"),
6
- { ssr: false }
7
- );
8
-
9
- export default function ChatPage() {
10
- return <CometChatComponent />;
11
- }
@@ -1,43 +0,0 @@
1
- .conversations-with-messages {
2
- display: flex;
3
- height: 100vh;
4
- width: 100%;
5
- }
6
-
7
- .conversations-wrapper {
8
- height: 100%;
9
- width: 480px;
10
- overflow: hidden;
11
- display: flex;
12
- flex-direction: column;
13
- flex-shrink: 0;
14
- }
15
-
16
- .conversations-wrapper > .cometchat {
17
- overflow: hidden;
18
- }
19
-
20
- .messages-wrapper {
21
- flex: 1;
22
- min-width: 0;
23
- height: 100%;
24
- display: flex;
25
- flex-direction: column;
26
- }
27
-
28
- .empty-conversation {
29
- height: 100%;
30
- width: 100%;
31
- display: flex;
32
- justify-content: center;
33
- align-items: center;
34
- background: white;
35
- color: var(--cometchat-text-color-secondary, #727272);
36
- font: var(--cometchat-font-body-regular, 400 14px Roboto);
37
- }
38
-
39
- .cometchat .cometchat-message-composer {
40
- border-radius: 0;
41
- }
42
-
43
- .side-component-wrapper { display: flex; width: 30%; max-width: 420px; flex-direction: column; flex-shrink: 0; background: var(--cometchat-background-color-01, #FFF); border-left: 1px solid var(--cometchat-border-color-light, #F5F5F5); height: 100%; overflow: hidden; }