@modochats/widget 0.1.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.
- package/.github/workflows/build-and-publish.yml +174 -0
- package/.vscode/settings.json +3 -0
- package/.yarn/install-state.gz +0 -0
- package/README.md +163 -0
- package/cdn-dist/README.md +42 -0
- package/cdn-dist/modo-web-component.js +1344 -0
- package/cdn-dist/modo-web-component.min.js +1 -0
- package/cdn-dist/package.json +27 -0
- package/dist/src/app.d.ts +29 -0
- package/dist/src/app.js +1 -0
- package/dist/src/app.js.map +1 -0
- package/dist/src/constants/index.d.ts +9 -0
- package/dist/src/constants/index.js +1 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/constants/regex.d.ts +2 -0
- package/dist/src/constants/regex.js +1 -0
- package/dist/src/constants/regex.js.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/models/chatbot.d.ts +23 -0
- package/dist/src/models/chatbot.js +1 -0
- package/dist/src/models/chatbot.js.map +1 -0
- package/dist/src/models/conversation.d.ts +22 -0
- package/dist/src/models/conversation.js +1 -0
- package/dist/src/models/conversation.js.map +1 -0
- package/dist/src/models/customer-data.d.ts +31 -0
- package/dist/src/models/customer-data.js +1 -0
- package/dist/src/models/customer-data.js.map +1 -0
- package/dist/src/models/message-utils.d.ts +12 -0
- package/dist/src/models/message-utils.js +1 -0
- package/dist/src/models/message-utils.js.map +1 -0
- package/dist/src/services/chat/conversation.d.ts +22 -0
- package/dist/src/services/chat/conversation.js +1 -0
- package/dist/src/services/chat/conversation.js.map +1 -0
- package/dist/src/services/chat/message-utils.d.ts +12 -0
- package/dist/src/services/chat/message-utils.js +1 -0
- package/dist/src/services/chat/message-utils.js.map +1 -0
- package/dist/src/services/chat/model.d.ts +27 -0
- package/dist/src/services/chat/model.js +1 -0
- package/dist/src/services/chat/model.js.map +1 -0
- package/dist/src/services/chatbot/chatbot.d.ts +23 -0
- package/dist/src/services/chatbot/chatbot.js +1 -0
- package/dist/src/services/chatbot/chatbot.js.map +1 -0
- package/dist/src/services/checker.d.ts +3 -0
- package/dist/src/services/checker.js +1 -0
- package/dist/src/services/checker.js.map +1 -0
- package/dist/src/services/listeners/adders.d.ts +3 -0
- package/dist/src/services/listeners/adders.js +1 -0
- package/dist/src/services/listeners/adders.js.map +1 -0
- package/dist/src/services/listeners/fn.d.ts +3 -0
- package/dist/src/services/listeners/fn.js +1 -0
- package/dist/src/services/listeners/fn.js.map +1 -0
- package/dist/src/services/socket/utils.d.ts +2 -0
- package/dist/src/services/socket/utils.js +1 -0
- package/dist/src/services/socket/utils.js.map +1 -0
- package/dist/src/services/ui/fn.d.ts +13 -0
- package/dist/src/services/ui/fn.js +1 -0
- package/dist/src/services/ui/fn.js.map +1 -0
- package/dist/src/services/ui/html.d.ts +3 -0
- package/dist/src/services/ui/html.js +1 -0
- package/dist/src/services/ui/html.js.map +1 -0
- package/dist/src/services/user/customer-data.d.ts +31 -0
- package/dist/src/services/user/customer-data.js +1 -0
- package/dist/src/services/user/customer-data.js.map +1 -0
- package/dist/src/services/voice-chat/model.d.ts +12 -0
- package/dist/src/services/voice-chat/model.js +1 -0
- package/dist/src/services/voice-chat/model.js.map +1 -0
- package/dist/src/services/voice-chat/utils.d.ts +9 -0
- package/dist/src/services/voice-chat/utils.js +1 -0
- package/dist/src/services/voice-chat/utils.js.map +1 -0
- package/dist/src/tools/fetch.d.ts +2 -0
- package/dist/src/tools/fetch.js +1 -0
- package/dist/src/tools/fetch.js.map +1 -0
- package/dist/src/types/app.d.ts +17 -0
- package/dist/src/types/app.js.map +1 -0
- package/dist/src/types/conversation.d.ts +14 -0
- package/dist/src/types/conversation.js +1 -0
- package/dist/src/types/conversation.js.map +1 -0
- package/dist/src/types/socket.d.ts +6 -0
- package/dist/src/types/socket.js +1 -0
- package/dist/src/types/socket.js.map +1 -0
- package/dist/src/types/window.d.ts +9 -0
- package/dist/src/types/window.js +1 -0
- package/dist/src/types/window.js.map +1 -0
- package/dist/src/utils/audio.d.ts +3 -0
- package/dist/src/utils/audio.js +1 -0
- package/dist/src/utils/audio.js.map +1 -0
- package/dist/src/utils/browser.d.ts +2 -0
- package/dist/src/utils/browser.js +1 -0
- package/dist/src/utils/browser.js.map +1 -0
- package/dist/src/utils/fetch.d.ts +18 -0
- package/dist/src/utils/fetch.js +1 -0
- package/dist/src/utils/fetch.js.map +1 -0
- package/dist/src/utils/uuid.d.ts +6 -0
- package/dist/src/utils/uuid.js +1 -0
- package/dist/src/utils/uuid.js.map +1 -0
- package/dist/types/src/app.d.ts +30 -0
- package/dist/types/src/app.d.ts.map +1 -0
- package/dist/types/src/constants/index.d.ts +10 -0
- package/dist/types/src/constants/index.d.ts.map +1 -0
- package/dist/types/src/constants/regex.d.ts +3 -0
- package/dist/types/src/constants/regex.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +10 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/models/chatbot.d.ts +24 -0
- package/dist/types/src/models/chatbot.d.ts.map +1 -0
- package/dist/types/src/models/conversation.d.ts +23 -0
- package/dist/types/src/models/conversation.d.ts.map +1 -0
- package/dist/types/src/models/customer-data.d.ts +32 -0
- package/dist/types/src/models/customer-data.d.ts.map +1 -0
- package/dist/types/src/models/message-utils.d.ts +13 -0
- package/dist/types/src/models/message-utils.d.ts.map +1 -0
- package/dist/types/src/services/chat/conversation.d.ts +23 -0
- package/dist/types/src/services/chat/conversation.d.ts.map +1 -0
- package/dist/types/src/services/chat/message-utils.d.ts +13 -0
- package/dist/types/src/services/chat/message-utils.d.ts.map +1 -0
- package/dist/types/src/services/chat/model.d.ts +28 -0
- package/dist/types/src/services/chat/model.d.ts.map +1 -0
- package/dist/types/src/services/chatbot/chatbot.d.ts +24 -0
- package/dist/types/src/services/chatbot/chatbot.d.ts.map +1 -0
- package/dist/types/src/services/checker.d.ts +4 -0
- package/dist/types/src/services/checker.d.ts.map +1 -0
- package/dist/types/src/services/listeners/adders.d.ts +4 -0
- package/dist/types/src/services/listeners/adders.d.ts.map +1 -0
- package/dist/types/src/services/listeners/fn.d.ts +4 -0
- package/dist/types/src/services/listeners/fn.d.ts.map +1 -0
- package/dist/types/src/services/socket/utils.d.ts +3 -0
- package/dist/types/src/services/socket/utils.d.ts.map +1 -0
- package/dist/types/src/services/ui/fn.d.ts +14 -0
- package/dist/types/src/services/ui/fn.d.ts.map +1 -0
- package/dist/types/src/services/ui/html.d.ts +4 -0
- package/dist/types/src/services/ui/html.d.ts.map +1 -0
- package/dist/types/src/services/user/customer-data.d.ts +32 -0
- package/dist/types/src/services/user/customer-data.d.ts.map +1 -0
- package/dist/types/src/services/voice-chat/model.d.ts +13 -0
- package/dist/types/src/services/voice-chat/model.d.ts.map +1 -0
- package/dist/types/src/services/voice-chat/utils.d.ts +10 -0
- package/dist/types/src/services/voice-chat/utils.d.ts.map +1 -0
- package/dist/types/src/tools/fetch.d.ts +3 -0
- package/dist/types/src/tools/fetch.d.ts.map +1 -0
- package/dist/types/src/types/app.d.ts +18 -0
- package/dist/types/src/types/app.d.ts.map +1 -0
- package/dist/types/src/types/conversation.d.ts +15 -0
- package/dist/types/src/types/conversation.d.ts.map +1 -0
- package/dist/types/src/types/socket.d.ts +7 -0
- package/dist/types/src/types/socket.d.ts.map +1 -0
- package/dist/types/src/types/window.d.ts +10 -0
- package/dist/types/src/types/window.d.ts.map +1 -0
- package/dist/types/src/utils/audio.d.ts +4 -0
- package/dist/types/src/utils/audio.d.ts.map +1 -0
- package/dist/types/src/utils/browser.d.ts +3 -0
- package/dist/types/src/utils/browser.d.ts.map +1 -0
- package/dist/types/src/utils/fetch.d.ts +19 -0
- package/dist/types/src/utils/fetch.d.ts.map +1 -0
- package/dist/types/src/utils/uuid.d.ts +7 -0
- package/dist/types/src/utils/uuid.d.ts.map +1 -0
- package/package.json +76 -0
- package/rollup.config.js +18 -0
- package/rollup.dev.config.js +22 -0
- package/scripts/create-umd-bundle.js +213 -0
- package/scripts/terser-minify.js +112 -0
- package/src/app.ts +117 -0
- package/src/constants/index.ts +21 -0
- package/src/constants/regex.ts +2 -0
- package/src/index.ts +16 -0
- package/src/services/chat/conversation.ts +135 -0
- package/src/services/chat/message-utils.ts +221 -0
- package/src/services/chat/model.ts +139 -0
- package/src/services/chatbot/chatbot.ts +66 -0
- package/src/services/checker.ts +10 -0
- package/src/services/listeners/adders.ts +178 -0
- package/src/services/listeners/fn.ts +77 -0
- package/src/services/socket/utils.ts +9 -0
- package/src/services/ui/fn.ts +254 -0
- package/src/services/ui/html.ts +192 -0
- package/src/services/user/customer-data.ts +78 -0
- package/src/services/voice-chat/model.ts +79 -0
- package/src/services/voice-chat/utils.ts +137 -0
- package/src/tools/fetch.ts +7 -0
- package/src/types/app.ts +17 -0
- package/src/types/conversation.ts +14 -0
- package/src/types/socket.ts +7 -0
- package/src/types/window.ts +12 -0
- package/src/utils/audio.ts +67 -0
- package/src/utils/browser.ts +4 -0
- package/src/utils/fetch.ts +98 -0
- package/src/utils/uuid.ts +13 -0
- package/temp/audio/new-message.mp3 +0 -0
- package/temp/audio/on-hold.mp3 +0 -0
- package/temp/audio-processor.js +261 -0
- package/temp/css/index.css +2283 -0
- package/temp/dev.html +87 -0
- package/temp/index.html +16 -0
- package/tsconfig.json +119 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
name: Build and Publish to CDN
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout code
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Setup Node.js
|
|
21
|
+
uses: actions/setup-node@v4
|
|
22
|
+
with:
|
|
23
|
+
node-version: "23"
|
|
24
|
+
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: npm install
|
|
27
|
+
|
|
28
|
+
- name: Build project
|
|
29
|
+
run: npm run build:cdn
|
|
30
|
+
|
|
31
|
+
- name: Create build artifacts
|
|
32
|
+
run: |
|
|
33
|
+
mkdir -p build-artifacts
|
|
34
|
+
cp -r dist build-artifacts/
|
|
35
|
+
cp -r temp build-artifacts/
|
|
36
|
+
cp -r cdn-dist build-artifacts/
|
|
37
|
+
cp package.json build-artifacts/
|
|
38
|
+
cp README.md build-artifacts/
|
|
39
|
+
|
|
40
|
+
- name: Upload build artifacts
|
|
41
|
+
uses: actions/upload-artifact@v4
|
|
42
|
+
with:
|
|
43
|
+
name: build-files
|
|
44
|
+
path: build-artifacts/
|
|
45
|
+
retention-days: 30
|
|
46
|
+
|
|
47
|
+
publish-cdn:
|
|
48
|
+
needs: build
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
if: github.ref == 'refs/heads/main' && github.event_name == 'push' && !contains(github.event.head_commit.message, 'Add CDN distribution files for build')
|
|
51
|
+
|
|
52
|
+
steps:
|
|
53
|
+
- name: Checkout code
|
|
54
|
+
uses: actions/checkout@v4
|
|
55
|
+
|
|
56
|
+
- name: Download build artifacts
|
|
57
|
+
uses: actions/download-artifact@v4
|
|
58
|
+
with:
|
|
59
|
+
name: build-files
|
|
60
|
+
path: build-artifacts/
|
|
61
|
+
|
|
62
|
+
- name: Setup Node.js
|
|
63
|
+
uses: actions/setup-node@v4
|
|
64
|
+
with:
|
|
65
|
+
node-version: "23"
|
|
66
|
+
|
|
67
|
+
- name: Use CDN-ready files
|
|
68
|
+
run: |
|
|
69
|
+
# The CDN files are already created by the build:cdn script
|
|
70
|
+
echo "Using pre-built CDN files from cdn-dist/"
|
|
71
|
+
ls -la build-artifacts/cdn-dist/
|
|
72
|
+
|
|
73
|
+
- name: Commit CDN files to repository
|
|
74
|
+
env:
|
|
75
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
76
|
+
run: |
|
|
77
|
+
# Copy CDN files to the repository root
|
|
78
|
+
cp -r build-artifacts/cdn-dist/ ./
|
|
79
|
+
|
|
80
|
+
# Configure git
|
|
81
|
+
git config --local user.email "action@github.com"
|
|
82
|
+
git config --local user.name "GitHub Action"
|
|
83
|
+
|
|
84
|
+
# Add and commit CDN files
|
|
85
|
+
git add cdn-dist/
|
|
86
|
+
git commit -m "Add CDN distribution files for build ${{ github.run_number }}" || echo "No changes to commit"
|
|
87
|
+
|
|
88
|
+
# Push to repository
|
|
89
|
+
git push https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git main
|
|
90
|
+
|
|
91
|
+
- name: Create GitHub Release
|
|
92
|
+
id: create_release
|
|
93
|
+
uses: actions/create-release@v1
|
|
94
|
+
env:
|
|
95
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
96
|
+
with:
|
|
97
|
+
tag_name: v${{ github.run_number }}
|
|
98
|
+
release_name: Release v${{ github.run_number }}
|
|
99
|
+
body: |
|
|
100
|
+
## Build ${{ github.run_number }}
|
|
101
|
+
|
|
102
|
+
### Files included:
|
|
103
|
+
- modo-web-component.js - Legacy UMD bundle
|
|
104
|
+
--modo-widget.js - UMD bundle
|
|
105
|
+
--modo-widget.min.js - Minified UMD bundle
|
|
106
|
+
- modo-web-component.min.js - Legacy Minified UMD bundle
|
|
107
|
+
- dist/ - Full distribution files
|
|
108
|
+
|
|
109
|
+
### CDN Usage:
|
|
110
|
+
jsDelivr (Recommended):
|
|
111
|
+
<script src="https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/cdn-dist/modo-widget.min.js"></script>
|
|
112
|
+
<script src="https://cdn.jsdelivr.net/gh/${{ github.repository }}@main/cdn-dist/modo-web-component.min.js"></script> (legacy)
|
|
113
|
+
|
|
114
|
+
GitHub Raw:
|
|
115
|
+
<script src="https://raw.githubusercontent.com/${{ github.repository }}/main/cdn-dist/modochat-wifget.min.js"></script>
|
|
116
|
+
<script src="https://raw.githubusercontent.com/${{ github.repository }}/main/cdn-dist/modo-web-component.min.js"></script> (legacy)
|
|
117
|
+
|
|
118
|
+
draft: false
|
|
119
|
+
prerelease: false
|
|
120
|
+
|
|
121
|
+
- name: Upload Release Assets
|
|
122
|
+
uses: actions/upload-release-asset@v1
|
|
123
|
+
env:
|
|
124
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
125
|
+
with:
|
|
126
|
+
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
127
|
+
asset_path: ./build-artifacts/cdn-dist/modo-widget.js
|
|
128
|
+
asset_name: modo-widget.js
|
|
129
|
+
asset_content_type: application/javascript
|
|
130
|
+
|
|
131
|
+
- name: Upload Release Assets Legacy
|
|
132
|
+
uses: actions/upload-release-asset@v1
|
|
133
|
+
env:
|
|
134
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
135
|
+
with:
|
|
136
|
+
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
137
|
+
asset_path: ./build-artifacts/cdn-dist/modo-web-component.js
|
|
138
|
+
asset_name: modo-web-component.js
|
|
139
|
+
asset_content_type: application/javascript
|
|
140
|
+
|
|
141
|
+
- name: Upload Minified Release Asset
|
|
142
|
+
uses: actions/upload-release-asset@v1
|
|
143
|
+
env:
|
|
144
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
145
|
+
with:
|
|
146
|
+
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
147
|
+
asset_path: ./build-artifacts/cdn-dist/modo-widget.min.js
|
|
148
|
+
asset_name: modo-widget.min.js
|
|
149
|
+
asset_content_type: application/javascript
|
|
150
|
+
|
|
151
|
+
- name: Upload Minified Release Asset Legacy
|
|
152
|
+
uses: actions/upload-release-asset@v1
|
|
153
|
+
env:
|
|
154
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
155
|
+
with:
|
|
156
|
+
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
157
|
+
asset_path: ./build-artifacts/cdn-dist/modo-web-component.min.js
|
|
158
|
+
asset_name: modo-web-component.min.js
|
|
159
|
+
asset_content_type: application/javascript
|
|
160
|
+
|
|
161
|
+
- name: Upload Dist Folder
|
|
162
|
+
run: |
|
|
163
|
+
cd build-artifacts/cdn-dist
|
|
164
|
+
tar -czf dist.tar.gz dist/
|
|
165
|
+
|
|
166
|
+
- name: Upload Dist Archive
|
|
167
|
+
uses: actions/upload-release-asset@v1
|
|
168
|
+
env:
|
|
169
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
170
|
+
with:
|
|
171
|
+
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
172
|
+
asset_path: ./build-artifacts/cdn-dist/dist.tar.gz
|
|
173
|
+
asset_name: dist.tar.gz
|
|
174
|
+
asset_content_type: application/gzip
|
|
Binary file
|
package/README.md
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Modo Widget
|
|
2
|
+
|
|
3
|
+
A responsive web chat widget for customer support.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🌙 Dark/Light theme support with customizable colors
|
|
8
|
+
- 🌐 RTL (Persian/Farsi) language support
|
|
9
|
+
- 📱 Mobile responsive design
|
|
10
|
+
- 💬 Real-time chat functionality with WebSocket connections
|
|
11
|
+
- 🔗 WebSocket connection status indicator
|
|
12
|
+
- 📝 Markdown message support
|
|
13
|
+
- 🎤 Voice chat capabilities
|
|
14
|
+
- 🖥️ Fullscreen mode option
|
|
15
|
+
- 🎨 Customizable position (left/right), primary and foreground colors
|
|
16
|
+
- 👤 User data management and updates
|
|
17
|
+
- ⚡ TypeScript + Modern JavaScript
|
|
18
|
+
- 🔄 Auto-initialization support
|
|
19
|
+
|
|
20
|
+
## Configuration Options
|
|
21
|
+
|
|
22
|
+
The widget can be customized with the following options:
|
|
23
|
+
|
|
24
|
+
| Option | Type | Default | Description |
|
|
25
|
+
| ----------------- | --------------------- | ----------- | ---------------------------------------------- |
|
|
26
|
+
| `position` | `"left" \| "right"` | `"right"` | Position of the chat widget on the screen |
|
|
27
|
+
| `theme` | `"dark" \| "light"` | `"dark"` | Theme mode (dark or light) |
|
|
28
|
+
| `primaryColor` | `string` | `"#667eea"` | Primary color for the widget |
|
|
29
|
+
| `title` | `string` | `""` | Title displayed in the chat header |
|
|
30
|
+
| `foregroundColor` | `string` | `"#fff"` | Foreground text color |
|
|
31
|
+
| `userData` | `Record<string, any>` | `undefined` | Custom user data object |
|
|
32
|
+
| `autoInit` | `boolean` | `false` | Whether to automatically initialize the widget |
|
|
33
|
+
| `fullScreen` | `boolean` | `false` | Enable fullscreen mode |
|
|
34
|
+
|
|
35
|
+
## Quick Start
|
|
36
|
+
|
|
37
|
+
### Development
|
|
38
|
+
|
|
39
|
+
1. **Install dependencies**
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
yarn install
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
2. **Start development server**
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
yarn dev:full
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
This runs TypeScript compiler, Rollup bundler, and live server concurrently.
|
|
52
|
+
|
|
53
|
+
3. **Open browser** Navigate to `http://localhost:3000`
|
|
54
|
+
|
|
55
|
+
### Production Build
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
yarn build
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
This will:
|
|
62
|
+
|
|
63
|
+
- Compile TypeScript to JavaScript
|
|
64
|
+
- Minify the code
|
|
65
|
+
- Bundle with Rollup
|
|
66
|
+
- Output to `bundle.js`
|
|
67
|
+
|
|
68
|
+
## Project Structure
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
├── src/ # Source code
|
|
72
|
+
│ ├── app.ts # Main application entry
|
|
73
|
+
│ ├── models/ # Data models
|
|
74
|
+
│ ├── services/ # UI and business logic
|
|
75
|
+
│ ├── utils/ # Helper utilities
|
|
76
|
+
│ └── types/ # TypeScript types
|
|
77
|
+
├── temp/ # Development files
|
|
78
|
+
│ ├── css/ # Compiled styles
|
|
79
|
+
│ └── dev.html # Development HTML
|
|
80
|
+
├── scripts/ # Build scripts
|
|
81
|
+
└── bundle.js # Production bundle
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Available Scripts
|
|
85
|
+
|
|
86
|
+
| Script | Description |
|
|
87
|
+
| ----------------- | ------------------------------ |
|
|
88
|
+
| `yarn dev:full` | Full development environment |
|
|
89
|
+
| `yarn dev:ts` | TypeScript compiler watch mode |
|
|
90
|
+
| `yarn dev:rollup` | Rollup bundler watch mode |
|
|
91
|
+
| `yarn dev:server` | Live development server |
|
|
92
|
+
| `yarn build` | Production build |
|
|
93
|
+
| `yarn compile` | Compile TypeScript |
|
|
94
|
+
| `yarn minify` | Minify JavaScript |
|
|
95
|
+
|
|
96
|
+
## Usage
|
|
97
|
+
|
|
98
|
+
Include the widget in your HTML:
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<!DOCTYPE html>
|
|
102
|
+
<html lang="en">
|
|
103
|
+
<head>
|
|
104
|
+
<meta charset="UTF-8" />
|
|
105
|
+
<title>Your Website</title>
|
|
106
|
+
</head>
|
|
107
|
+
<body>
|
|
108
|
+
<!-- Your website content -->
|
|
109
|
+
|
|
110
|
+
<script src="https://cdn.jsdelivr.net/gh/modochats/webcomponent@main/cdn-dist/modo-web-component.min.js"></script>
|
|
111
|
+
<script>
|
|
112
|
+
// Initialize the chat widget
|
|
113
|
+
const widget = new ModoWidget("your-public-key", {
|
|
114
|
+
position: "right",
|
|
115
|
+
theme: "dark",
|
|
116
|
+
primaryColor: "#667eea",
|
|
117
|
+
title: "Chat with Us",
|
|
118
|
+
foregroundColor: "#ffffff",
|
|
119
|
+
userData: {name: "John Doe", email: "john@example.com"},
|
|
120
|
+
autoInit: true,
|
|
121
|
+
fullScreen: false
|
|
122
|
+
});
|
|
123
|
+
</script>
|
|
124
|
+
</body>
|
|
125
|
+
</html>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Initialization Options
|
|
129
|
+
|
|
130
|
+
Pass configuration options as the second parameter to the `ModoWidget` constructor. All options are optional except the public key.
|
|
131
|
+
|
|
132
|
+
Example with minimal options:
|
|
133
|
+
|
|
134
|
+
```javascript
|
|
135
|
+
const widget = new ModoWidget("your-public-key");
|
|
136
|
+
widget.init(); // Manual initialization if autoInit is false
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## API Methods
|
|
140
|
+
|
|
141
|
+
Once initialized, you can interact with the widget instance:
|
|
142
|
+
|
|
143
|
+
### Update User Data
|
|
144
|
+
|
|
145
|
+
Update or add custom user data dynamically:
|
|
146
|
+
|
|
147
|
+
```javascript
|
|
148
|
+
await widget.updateUserData({
|
|
149
|
+
name: "Jane Doe",
|
|
150
|
+
email: "jane@example.com"
|
|
151
|
+
});
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
This method merges the new data with existing user data and updates it on the server.
|
|
155
|
+
|
|
156
|
+
## Requirements
|
|
157
|
+
|
|
158
|
+
- Node.js 16+
|
|
159
|
+
- Yarn package manager
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
ISC
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Modo Web Component
|
|
2
|
+
|
|
3
|
+
A lightweight web component library.
|
|
4
|
+
|
|
5
|
+
## CDN Usage
|
|
6
|
+
|
|
7
|
+
### jsDelivr
|
|
8
|
+
```html
|
|
9
|
+
<script src="https://cdn.jsdelivr.net/gh/your-username/modo-web-component@main/cdn-dist/modo-web-component.min.js"></script>
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### GitHub Raw
|
|
13
|
+
```html
|
|
14
|
+
<script src="https://raw.githubusercontent.com/your-username/modo-web-component/main/cdn-dist/modo-web-component.min.js"></script>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```javascript
|
|
20
|
+
// Initialize the chat widget
|
|
21
|
+
const chat = new ModoChat('your-public-key', {
|
|
22
|
+
position: 'right', // 'left' or 'right'
|
|
23
|
+
theme: 'dark', // 'dark' or 'light'
|
|
24
|
+
primaryColor: '#667eea',
|
|
25
|
+
title: 'پشتیبانی چت'
|
|
26
|
+
});
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Features
|
|
30
|
+
|
|
31
|
+
- 🌙 Dark/Light theme support
|
|
32
|
+
- 🌐 RTL (Persian/Farsi) language support
|
|
33
|
+
- 📱 Mobile responsive design
|
|
34
|
+
- 💬 Real-time chat functionality
|
|
35
|
+
- 🔗 WebSocket connection status
|
|
36
|
+
- 📝 Markdown message support
|
|
37
|
+
|
|
38
|
+
## Files
|
|
39
|
+
|
|
40
|
+
- `modo-web-component.js` - Development version
|
|
41
|
+
- `modo-web-component.min.js` - Production version (minified)
|
|
42
|
+
- `dist/` - Full distribution files
|