@cometchat/skills-cli 2.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 (95) hide show
  1. package/README.md +70 -0
  2. package/bin/cometchat.mjs +7 -0
  3. package/dist/index.js +4395 -0
  4. package/dist/registry/schemas/template.schema.json +142 -0
  5. package/dist/registry/v6/experiences/1-conversation-list/astro.template.json +89 -0
  6. package/dist/registry/v6/experiences/1-conversation-list/nextjs-pages.template.json +83 -0
  7. package/dist/registry/v6/experiences/1-conversation-list/nextjs.template.json +83 -0
  8. package/dist/registry/v6/experiences/1-conversation-list/react-router.template.json +102 -0
  9. package/dist/registry/v6/experiences/1-conversation-list/reactjs.template.json +86 -0
  10. package/dist/registry/v6/experiences/1-conversation-list/templates/astro/ChatApp.css.tpl +39 -0
  11. package/dist/registry/v6/experiences/1-conversation-list/templates/astro/ChatApp.tsx.tpl +86 -0
  12. package/dist/registry/v6/experiences/1-conversation-list/templates/astro/CometChatSelector.tsx.tpl +40 -0
  13. package/dist/registry/v6/experiences/1-conversation-list/templates/astro/chat.astro.tpl +17 -0
  14. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs/CometChatNoSSR.css.tpl +39 -0
  15. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs/CometChatNoSSR.tsx.tpl +86 -0
  16. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs/CometChatSelector.tsx.tpl +41 -0
  17. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs/chat-page.tsx.tpl +11 -0
  18. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs-pages/CometChatNoSSR.css.tpl +39 -0
  19. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs-pages/CometChatNoSSR.tsx.tpl +88 -0
  20. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs-pages/CometChatSelector.tsx.tpl +41 -0
  21. package/dist/registry/v6/experiences/1-conversation-list/templates/nextjs-pages/chat-page.tsx.tpl +15 -0
  22. package/dist/registry/v6/experiences/1-conversation-list/templates/react-router/CometChat-route.tsx.tpl +22 -0
  23. package/dist/registry/v6/experiences/1-conversation-list/templates/react-router/CometChatNoSSR.css.tpl +39 -0
  24. package/dist/registry/v6/experiences/1-conversation-list/templates/react-router/CometChatNoSSR.tsx.tpl +87 -0
  25. package/dist/registry/v6/experiences/1-conversation-list/templates/react-router/CometChatSelector.tsx.tpl +40 -0
  26. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs/App.css.tpl +32 -0
  27. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs/App.tsx.tpl +55 -0
  28. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs/CometChatSelector.tsx.tpl +40 -0
  29. package/dist/registry/v6/experiences/1-conversation-list/templates/reactjs/main.tsx.tpl +46 -0
  30. package/dist/registry/v6/experiences/2-one-to-one/astro.template.json +81 -0
  31. package/dist/registry/v6/experiences/2-one-to-one/nextjs.template.json +77 -0
  32. package/dist/registry/v6/experiences/2-one-to-one/react-router.template.json +93 -0
  33. package/dist/registry/v6/experiences/2-one-to-one/reactjs.template.json +77 -0
  34. package/dist/registry/v6/experiences/2-one-to-one/templates/astro/ChatApp.css.tpl +21 -0
  35. package/dist/registry/v6/experiences/2-one-to-one/templates/astro/ChatApp.tsx.tpl +66 -0
  36. package/dist/registry/v6/experiences/2-one-to-one/templates/astro/chat.astro.tpl +17 -0
  37. package/dist/registry/v6/experiences/2-one-to-one/templates/nextjs/CometChatNoSSR.css.tpl +21 -0
  38. package/dist/registry/v6/experiences/2-one-to-one/templates/nextjs/CometChatNoSSR.tsx.tpl +66 -0
  39. package/dist/registry/v6/experiences/2-one-to-one/templates/nextjs/chat-page.tsx.tpl +11 -0
  40. package/dist/registry/v6/experiences/2-one-to-one/templates/react-router/CometChat-route.tsx.tpl +21 -0
  41. package/dist/registry/v6/experiences/2-one-to-one/templates/react-router/CometChatNoSSR.css.tpl +21 -0
  42. package/dist/registry/v6/experiences/2-one-to-one/templates/react-router/CometChatNoSSR.tsx.tpl +67 -0
  43. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs/App.css.tpl +4 -0
  44. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs/App.tsx.tpl +44 -0
  45. package/dist/registry/v6/experiences/2-one-to-one/templates/reactjs/main.tsx.tpl +46 -0
  46. package/dist/registry/v6/experiences/3-tab-based/astro.template.json +93 -0
  47. package/dist/registry/v6/experiences/3-tab-based/nextjs.template.json +90 -0
  48. package/dist/registry/v6/experiences/3-tab-based/react-router.template.json +105 -0
  49. package/dist/registry/v6/experiences/3-tab-based/reactjs.template.json +90 -0
  50. package/dist/registry/v6/experiences/3-tab-based/templates/astro/ChatApp.css.tpl +39 -0
  51. package/dist/registry/v6/experiences/3-tab-based/templates/astro/ChatApp.tsx.tpl +93 -0
  52. package/dist/registry/v6/experiences/3-tab-based/templates/astro/CometChatTabs.css.tpl +43 -0
  53. package/dist/registry/v6/experiences/3-tab-based/templates/astro/CometChatTabs.tsx.tpl +72 -0
  54. package/dist/registry/v6/experiences/3-tab-based/templates/astro/chat.astro.tpl +17 -0
  55. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/CometChatNoSSR.css.tpl +39 -0
  56. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/CometChatNoSSR.tsx.tpl +93 -0
  57. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/CometChatTabs.css.tpl +43 -0
  58. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/CometChatTabs.tsx.tpl +73 -0
  59. package/dist/registry/v6/experiences/3-tab-based/templates/nextjs/chat-page.tsx.tpl +11 -0
  60. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChat-route.tsx.tpl +21 -0
  61. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChatNoSSR.css.tpl +39 -0
  62. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChatNoSSR.tsx.tpl +94 -0
  63. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChatTabs.css.tpl +43 -0
  64. package/dist/registry/v6/experiences/3-tab-based/templates/react-router/CometChatTabs.tsx.tpl +72 -0
  65. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/App.css.tpl +7 -0
  66. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/App.tsx.tpl +62 -0
  67. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/CometChatTabs.css.tpl +43 -0
  68. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/CometChatTabs.tsx.tpl +72 -0
  69. package/dist/registry/v6/experiences/3-tab-based/templates/reactjs/main.tsx.tpl +46 -0
  70. package/dist/registry/v6/features/catalog.json +344 -0
  71. package/dist/registry/v6/production/astro/cometchat-token.ts.tpl +86 -0
  72. package/dist/registry/v6/production/astro.template.json +51 -0
  73. package/dist/registry/v6/production/nextjs/route.ts.tpl +79 -0
  74. package/dist/registry/v6/production/nextjs.template.json +50 -0
  75. package/dist/registry/v6/production/react-router/api.cometchat-token.ts.tpl +73 -0
  76. package/dist/registry/v6/production/react-router.template.json +58 -0
  77. package/dist/registry/v6/user-mgmt/astro/cometchat-user.ts.tpl +164 -0
  78. package/dist/registry/v6/user-mgmt/astro.template.json +33 -0
  79. package/dist/registry/v6/user-mgmt/nextjs/route.ts.tpl +212 -0
  80. package/dist/registry/v6/user-mgmt/nextjs.template.json +57 -0
  81. package/dist/registry/v6/user-mgmt/react-router/api.cometchat-user.ts.tpl +176 -0
  82. package/dist/registry/v6/user-mgmt/react-router.template.json +40 -0
  83. package/dist/registry/v6/widget/astro/CometChatWidget.css.tpl +105 -0
  84. package/dist/registry/v6/widget/astro/CometChatWidget.tsx.tpl +88 -0
  85. package/dist/registry/v6/widget/astro.template.json +38 -0
  86. package/dist/registry/v6/widget/nextjs/CometChatWidget.css.tpl +105 -0
  87. package/dist/registry/v6/widget/nextjs/CometChatWidget.tsx.tpl +88 -0
  88. package/dist/registry/v6/widget/nextjs.template.json +40 -0
  89. package/dist/registry/v6/widget/react-router/CometChatWidget.css.tpl +105 -0
  90. package/dist/registry/v6/widget/react-router/CometChatWidget.tsx.tpl +98 -0
  91. package/dist/registry/v6/widget/react-router.template.json +36 -0
  92. package/dist/registry/v6/widget/reactjs/CometChatWidget.css.tpl +105 -0
  93. package/dist/registry/v6/widget/reactjs/CometChatWidget.tsx.tpl +89 -0
  94. package/dist/registry/v6/widget/reactjs.template.json +36 -0
  95. package/package.json +53 -0
@@ -0,0 +1,43 @@
1
+ .cometchat-tabs {
2
+ height: 100%;
3
+ width: 100%;
4
+ display: flex;
5
+ flex-direction: column;
6
+ }
7
+
8
+ .cometchat-tabs-content {
9
+ flex: 1;
10
+ overflow: hidden;
11
+ display: flex;
12
+ flex-direction: column;
13
+ }
14
+
15
+ .cometchat-tabs-content > .cometchat {
16
+ flex: 1;
17
+ overflow: hidden;
18
+ }
19
+
20
+ .cometchat-tabs-bar {
21
+ display: flex;
22
+ border-top: 1px solid var(--cometchat-border-color-default, #e8e8e8);
23
+ background: var(--cometchat-background-color-01, #ffffff);
24
+ }
25
+
26
+ .cometchat-tabs-bar-tab {
27
+ flex: 1;
28
+ padding: 12px 8px;
29
+ border: none;
30
+ background: transparent;
31
+ font: var(--cometchat-font-body-regular, 400 14px Roboto);
32
+ color: var(--cometchat-text-color-secondary, #727272);
33
+ cursor: pointer;
34
+ }
35
+
36
+ .cometchat-tabs-bar-tab.active {
37
+ color: var(--cometchat-primary-color, #6852d6);
38
+ font-weight: 600;
39
+ }
40
+
41
+ .cometchat-tabs-bar-tab:hover {
42
+ background: var(--cometchat-background-color-02, #f8f8f8);
43
+ }
@@ -0,0 +1,72 @@
1
+ import { useEffect, useState } from "react";
2
+ import { CometChat } from "@cometchat/chat-sdk-javascript";
3
+ import {
4
+ CometChatCallLogs,
5
+ CometChatConversations,
6
+ CometChatGroups,
7
+ CometChatUIKitLoginListener,
8
+ CometChatUsers,
9
+ } from "@cometchat/chat-uikit-react";
10
+ import "./CometChatTabs.css";
11
+
12
+ export type CometChatTab = "chats" | "calls" | "users" | "groups";
13
+
14
+ interface CometChatTabsProps {
15
+ activeTab: CometChatTab;
16
+ onTabChange: (tab: CometChatTab) => void;
17
+ onItemClick: (
18
+ item: CometChat.Conversation | CometChat.User | CometChat.Group,
19
+ ) => void;
20
+ }
21
+
22
+ const TABS: { id: CometChatTab; label: string }[] = [
23
+ { id: "chats", label: "Chats" },
24
+ { id: "calls", label: "Calls" },
25
+ { id: "users", label: "Users" },
26
+ { id: "groups", label: "Groups" },
27
+ ];
28
+
29
+ export const CometChatTabs = ({
30
+ activeTab,
31
+ onTabChange,
32
+ onItemClick,
33
+ }: CometChatTabsProps) => {
34
+ const [loggedInUser, setLoggedInUser] = useState<CometChat.User | null>(null);
35
+
36
+ useEffect(() => {
37
+ setLoggedInUser(CometChatUIKitLoginListener.getLoggedInUser());
38
+ }, []);
39
+
40
+ if (!loggedInUser) return null;
41
+
42
+ return (
43
+ <div className="cometchat-tabs">
44
+ <div className="cometchat-tabs-content">
45
+ {activeTab === "chats" && (
46
+ <CometChatConversations
47
+ onItemClick={(c) => onItemClick(c)}
48
+ />
49
+ )}
50
+ {activeTab === "calls" && <CometChatCallLogs />}
51
+ {activeTab === "users" && (
52
+ <CometChatUsers onItemClick={(u) => onItemClick(u)} />
53
+ )}
54
+ {activeTab === "groups" && (
55
+ <CometChatGroups onItemClick={(g) => onItemClick(g)} />
56
+ )}
57
+ </div>
58
+ <nav className="cometchat-tabs-bar">
59
+ {TABS.map((tab) => (
60
+ <button
61
+ key={tab.id}
62
+ type="button"
63
+ className={`cometchat-tabs-bar-tab${activeTab === tab.id ? " active" : ""}`}
64
+ onClick={() => onTabChange(tab.id)}
65
+ >
66
+ {tab.label}
67
+ </button>
68
+ ))}
69
+ </nav>
70
+ </div>
71
+ );
72
+ };
@@ -0,0 +1,7 @@
1
+ #root { width: 100vw; height: 100vh; }
2
+ .conversations-with-messages { display: flex; height: 100%; width: 100%; }
3
+ .conversations-wrapper { height: 100vh; width: 480px; overflow: hidden; display: flex; flex-direction: column; }
4
+ .conversations-wrapper > .cometchat { overflow: hidden; }
5
+ .messages-wrapper { width: 100%; height: 100%; display: flex; flex-direction: column; }
6
+ .empty-conversation { height: 100vh; width: 100%; display: flex; justify-content: center; align-items: center; background: var(--cometchat-background-color-03, #F5F5F5); color: var(--cometchat-text-color-secondary, #727272); font: var(--cometchat-font-body-regular, 400 14px Roboto); }
7
+ .cometchat .cometchat-message-composer { border-radius: 0; }
@@ -0,0 +1,62 @@
1
+ import { useState } from "react";
2
+ import {
3
+ CometChatMessageComposer,
4
+ CometChatMessageHeader,
5
+ CometChatMessageList,
6
+ } from "@cometchat/chat-uikit-react";
7
+ import { CometChat } from "@cometchat/chat-sdk-javascript";
8
+ import { CometChatTabs, type CometChatTab } from "./cometchat/CometChatTabs";
9
+ import "./App.css";
10
+
11
+ function App() {
12
+ const [activeTab, setActiveTab] = useState<CometChatTab>("chats");
13
+ const [selectedUser, setSelectedUser] = useState<
14
+ CometChat.User | undefined
15
+ >();
16
+ const [selectedGroup, setSelectedGroup] = useState<
17
+ CometChat.Group | undefined
18
+ >();
19
+
20
+ const handleSelectorItemClicked = (
21
+ activeItem: CometChat.Conversation | CometChat.User | CometChat.Group,
22
+ ) => {
23
+ const item =
24
+ activeItem instanceof CometChat.Conversation
25
+ ? activeItem.getConversationWith()
26
+ : activeItem;
27
+ if (item instanceof CometChat.User) {
28
+ setSelectedUser(item);
29
+ setSelectedGroup(undefined);
30
+ } else if (item instanceof CometChat.Group) {
31
+ setSelectedUser(undefined);
32
+ setSelectedGroup(item);
33
+ }
34
+ };
35
+
36
+ return (
37
+ <div className="conversations-with-messages">
38
+ <div className="conversations-wrapper">
39
+ <CometChatTabs
40
+ activeTab={activeTab}
41
+ onTabChange={setActiveTab}
42
+ onItemClick={handleSelectorItemClicked}
43
+ />
44
+ </div>
45
+ {selectedUser || selectedGroup ? (
46
+ <div className="messages-wrapper">
47
+ {selectedUser && <CometChatMessageHeader user={selectedUser} />}
48
+ {selectedGroup && <CometChatMessageHeader group={selectedGroup} />}
49
+ {selectedUser && <CometChatMessageList user={selectedUser} />}
50
+ {selectedGroup && <CometChatMessageList group={selectedGroup} />}
51
+ {selectedUser && <CometChatMessageComposer user={selectedUser} />}
52
+ {selectedGroup && <CometChatMessageComposer group={selectedGroup} />}
53
+ </div>
54
+ ) : (
55
+ <div className="empty-conversation">
56
+ Select a conversation to start chatting
57
+ </div>
58
+ )}
59
+ </div>
60
+ );
61
+ }
62
+ export default App;
@@ -0,0 +1,43 @@
1
+ .cometchat-tabs {
2
+ height: 100vh;
3
+ width: 100%;
4
+ display: flex;
5
+ flex-direction: column;
6
+ }
7
+
8
+ .cometchat-tabs-content {
9
+ flex: 1;
10
+ overflow: hidden;
11
+ display: flex;
12
+ flex-direction: column;
13
+ }
14
+
15
+ .cometchat-tabs-content > .cometchat {
16
+ flex: 1;
17
+ overflow: hidden;
18
+ }
19
+
20
+ .cometchat-tabs-bar {
21
+ display: flex;
22
+ border-top: 1px solid var(--cometchat-border-color-default, #e8e8e8);
23
+ background: var(--cometchat-background-color-01, #ffffff);
24
+ }
25
+
26
+ .cometchat-tabs-bar-tab {
27
+ flex: 1;
28
+ padding: 12px 8px;
29
+ border: none;
30
+ background: transparent;
31
+ font: var(--cometchat-font-body-regular, 400 14px Roboto);
32
+ color: var(--cometchat-text-color-secondary, #727272);
33
+ cursor: pointer;
34
+ }
35
+
36
+ .cometchat-tabs-bar-tab.active {
37
+ color: var(--cometchat-primary-color, #6852d6);
38
+ font-weight: 600;
39
+ }
40
+
41
+ .cometchat-tabs-bar-tab:hover {
42
+ background: var(--cometchat-background-color-02, #f8f8f8);
43
+ }
@@ -0,0 +1,72 @@
1
+ import { useEffect, useState } from "react";
2
+ import { CometChat } from "@cometchat/chat-sdk-javascript";
3
+ import {
4
+ CometChatCallLogs,
5
+ CometChatConversations,
6
+ CometChatGroups,
7
+ CometChatUIKitLoginListener,
8
+ CometChatUsers,
9
+ } from "@cometchat/chat-uikit-react";
10
+ import "./CometChatTabs.css";
11
+
12
+ export type CometChatTab = "chats" | "calls" | "users" | "groups";
13
+
14
+ interface CometChatTabsProps {
15
+ activeTab: CometChatTab;
16
+ onTabChange: (tab: CometChatTab) => void;
17
+ onItemClick: (
18
+ item: CometChat.Conversation | CometChat.User | CometChat.Group,
19
+ ) => void;
20
+ }
21
+
22
+ const TABS: { id: CometChatTab; label: string }[] = [
23
+ { id: "chats", label: "Chats" },
24
+ { id: "calls", label: "Calls" },
25
+ { id: "users", label: "Users" },
26
+ { id: "groups", label: "Groups" },
27
+ ];
28
+
29
+ export const CometChatTabs = ({
30
+ activeTab,
31
+ onTabChange,
32
+ onItemClick,
33
+ }: CometChatTabsProps) => {
34
+ const [loggedInUser, setLoggedInUser] = useState<CometChat.User | null>(null);
35
+
36
+ useEffect(() => {
37
+ setLoggedInUser(CometChatUIKitLoginListener.getLoggedInUser());
38
+ }, []);
39
+
40
+ if (!loggedInUser) return null;
41
+
42
+ return (
43
+ <div className="cometchat-tabs">
44
+ <div className="cometchat-tabs-content">
45
+ {activeTab === "chats" && (
46
+ <CometChatConversations
47
+ onItemClick={(c) => onItemClick(c)}
48
+ />
49
+ )}
50
+ {activeTab === "calls" && <CometChatCallLogs />}
51
+ {activeTab === "users" && (
52
+ <CometChatUsers onItemClick={(u) => onItemClick(u)} />
53
+ )}
54
+ {activeTab === "groups" && (
55
+ <CometChatGroups onItemClick={(g) => onItemClick(g)} />
56
+ )}
57
+ </div>
58
+ <nav className="cometchat-tabs-bar">
59
+ {TABS.map((tab) => (
60
+ <button
61
+ key={tab.id}
62
+ type="button"
63
+ className={`cometchat-tabs-bar-tab${activeTab === tab.id ? " active" : ""}`}
64
+ onClick={() => onTabChange(tab.id)}
65
+ >
66
+ {tab.label}
67
+ </button>
68
+ ))}
69
+ </nav>
70
+ </div>
71
+ );
72
+ };
@@ -0,0 +1,46 @@
1
+ import { StrictMode } from 'react'
2
+ import { createRoot } from 'react-dom/client'
3
+ import { CometChatUIKit, UIKitSettingsBuilder } from '@cometchat/chat-uikit-react'
4
+ import './index.css'
5
+ import App from './App.tsx'
6
+
7
+ const COMETCHAT_CONSTANTS = {
8
+ APP_ID: import.meta.env.{{ENV_PREFIX}}COMETCHAT_APP_ID as string,
9
+ REGION: import.meta.env.{{ENV_PREFIX}}COMETCHAT_REGION as string,
10
+ AUTH_KEY: import.meta.env.{{ENV_PREFIX}}COMETCHAT_AUTH_KEY as string,
11
+ }
12
+
13
+ const settings = new UIKitSettingsBuilder()
14
+ .setAppId(COMETCHAT_CONSTANTS.APP_ID)
15
+ .setRegion(COMETCHAT_CONSTANTS.REGION)
16
+ .setAuthKey(COMETCHAT_CONSTANTS.AUTH_KEY)
17
+ .subscribePresenceForAllUsers()
18
+ .build()
19
+
20
+ CometChatUIKit.init(settings)
21
+ ?.then(() => {
22
+ CometChatUIKit.getLoggedinUser().then((user) => {
23
+ if (!user) {
24
+ CometChatUIKit.login('{{LOGIN_UID}}')
25
+ .then(() => mount())
26
+ .catch((e: unknown) => mountError(String(e)))
27
+ } else {
28
+ mount()
29
+ }
30
+ })
31
+ })
32
+ .catch((e: unknown) => mountError(String(e)))
33
+
34
+ function mount() {
35
+ createRoot(document.getElementById('root')!).render(
36
+ <StrictMode>
37
+ <App />
38
+ </StrictMode>,
39
+ )
40
+ }
41
+
42
+ function mountError(message: string) {
43
+ createRoot(document.getElementById('root')!).render(
44
+ <div style={{ color: 'red', padding: 16, fontFamily: 'monospace' }}>{message}</div>,
45
+ )
46
+ }