gpthouse-embed 3.0.5
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/.env.example +34 -0
- package/.eslintrc.cjs +14 -0
- package/.husky/pre-commit +18 -0
- package/.prettierignore +3 -0
- package/.prettierrc +8 -0
- package/README.md +357 -0
- package/base.json +21 -0
- package/dist/components/Badge.d.ts +10 -0
- package/dist/components/Badge.d.ts.map +1 -0
- package/dist/components/Bot.d.ts +134 -0
- package/dist/components/Bot.d.ts.map +1 -0
- package/dist/components/FeedbackContentDialog.d.ts +10 -0
- package/dist/components/FeedbackContentDialog.d.ts.map +1 -0
- package/dist/components/ImageUploadButton.d.ts +11 -0
- package/dist/components/ImageUploadButton.d.ts.map +1 -0
- package/dist/components/RecordAudioButton.d.ts +11 -0
- package/dist/components/RecordAudioButton.d.ts.map +1 -0
- package/dist/components/RichTreeView.d.ts +24 -0
- package/dist/components/RichTreeView.d.ts.map +1 -0
- package/dist/components/SendButton.d.ts +12 -0
- package/dist/components/SendButton.d.ts.map +1 -0
- package/dist/components/TreeViewDemo.d.ts +6 -0
- package/dist/components/TreeViewDemo.d.ts.map +1 -0
- package/dist/components/TypingBubble.d.ts +2 -0
- package/dist/components/TypingBubble.d.ts.map +1 -0
- package/dist/components/avatars/Avatar.d.ts +4 -0
- package/dist/components/avatars/Avatar.d.ts.map +1 -0
- package/dist/components/avatars/DefaultAvatar.d.ts +2 -0
- package/dist/components/avatars/DefaultAvatar.d.ts.map +1 -0
- package/dist/components/bubbles/AgentReasoningBubble.d.ts +16 -0
- package/dist/components/bubbles/AgentReasoningBubble.d.ts.map +1 -0
- package/dist/components/bubbles/BotBubble.d.ts +32 -0
- package/dist/components/bubbles/BotBubble.d.ts.map +1 -0
- package/dist/components/bubbles/FollowUpPromptBubble.d.ts +8 -0
- package/dist/components/bubbles/FollowUpPromptBubble.d.ts.map +1 -0
- package/dist/components/bubbles/GuestBubble.d.ts +16 -0
- package/dist/components/bubbles/GuestBubble.d.ts.map +1 -0
- package/dist/components/bubbles/LeadCaptureBubble.d.ts +20 -0
- package/dist/components/bubbles/LeadCaptureBubble.d.ts.map +1 -0
- package/dist/components/bubbles/LoadingBubble.d.ts +2 -0
- package/dist/components/bubbles/LoadingBubble.d.ts.map +1 -0
- package/dist/components/bubbles/SourceBubble.d.ts +8 -0
- package/dist/components/bubbles/SourceBubble.d.ts.map +1 -0
- package/dist/components/bubbles/StarterPromptBubble.d.ts +8 -0
- package/dist/components/bubbles/StarterPromptBubble.d.ts.map +1 -0
- package/dist/components/buttons/AttachmentUploadButton.d.ts +11 -0
- package/dist/components/buttons/AttachmentUploadButton.d.ts.map +1 -0
- package/dist/components/buttons/CancelButton.d.ts +10 -0
- package/dist/components/buttons/CancelButton.d.ts.map +1 -0
- package/dist/components/buttons/FeedbackButtons.d.ts +13 -0
- package/dist/components/buttons/FeedbackButtons.d.ts.map +1 -0
- package/dist/components/buttons/ImageUploadButton.d.ts +11 -0
- package/dist/components/buttons/ImageUploadButton.d.ts.map +1 -0
- package/dist/components/buttons/LeadCaptureButtons.d.ts +11 -0
- package/dist/components/buttons/LeadCaptureButtons.d.ts.map +1 -0
- package/dist/components/buttons/RecordAudioButton.d.ts +11 -0
- package/dist/components/buttons/RecordAudioButton.d.ts.map +1 -0
- package/dist/components/buttons/SendButton.d.ts +12 -0
- package/dist/components/buttons/SendButton.d.ts.map +1 -0
- package/dist/components/buttons/TTSButton.d.ts +10 -0
- package/dist/components/buttons/TTSButton.d.ts.map +1 -0
- package/dist/components/examples/TreeViewExample.d.ts +2 -0
- package/dist/components/examples/TreeViewExample.d.ts.map +1 -0
- package/dist/components/examples/index.d.ts +6 -0
- package/dist/components/examples/index.d.ts.map +1 -0
- package/dist/components/icons/AddImageIcon.d.ts +3 -0
- package/dist/components/icons/AddImageIcon.d.ts.map +1 -0
- package/dist/components/icons/AttachmentIcon.d.ts +3 -0
- package/dist/components/icons/AttachmentIcon.d.ts.map +1 -0
- package/dist/components/icons/CircleDotIcon.d.ts +3 -0
- package/dist/components/icons/CircleDotIcon.d.ts.map +1 -0
- package/dist/components/icons/ClipboardIcon.d.ts +3 -0
- package/dist/components/icons/ClipboardIcon.d.ts.map +1 -0
- package/dist/components/icons/DeleteIcon.d.ts +3 -0
- package/dist/components/icons/DeleteIcon.d.ts.map +1 -0
- package/dist/components/icons/RecordIcon.d.ts +3 -0
- package/dist/components/icons/RecordIcon.d.ts.map +1 -0
- package/dist/components/icons/SendIcon.d.ts +3 -0
- package/dist/components/icons/SendIcon.d.ts.map +1 -0
- package/dist/components/icons/SparklesIcon.d.ts +3 -0
- package/dist/components/icons/SparklesIcon.d.ts.map +1 -0
- package/dist/components/icons/SquareStopIcon.d.ts +3 -0
- package/dist/components/icons/SquareStopIcon.d.ts.map +1 -0
- package/dist/components/icons/ThumbsDownIcon.d.ts +3 -0
- package/dist/components/icons/ThumbsDownIcon.d.ts.map +1 -0
- package/dist/components/icons/ThumbsUpIcon.d.ts +3 -0
- package/dist/components/icons/ThumbsUpIcon.d.ts.map +1 -0
- package/dist/components/icons/TickIcon.d.ts +2 -0
- package/dist/components/icons/TickIcon.d.ts.map +1 -0
- package/dist/components/icons/TrashIcon.d.ts +3 -0
- package/dist/components/icons/TrashIcon.d.ts.map +1 -0
- package/dist/components/icons/VolumeIcon.d.ts +3 -0
- package/dist/components/icons/VolumeIcon.d.ts.map +1 -0
- package/dist/components/icons/XIcon.d.ts +5 -0
- package/dist/components/icons/XIcon.d.ts.map +1 -0
- package/dist/components/icons/index.d.ts +16 -0
- package/dist/components/icons/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/inputs/textInput/components/FilePreview.d.ts +12 -0
- package/dist/components/inputs/textInput/components/FilePreview.d.ts.map +1 -0
- package/dist/components/inputs/textInput/components/ShortTextInput.d.ts +10 -0
- package/dist/components/inputs/textInput/components/ShortTextInput.d.ts.map +1 -0
- package/dist/components/inputs/textInput/components/TextInput.d.ts +29 -0
- package/dist/components/inputs/textInput/components/TextInput.d.ts.map +1 -0
- package/dist/components/inputs/textInput/index.d.ts +3 -0
- package/dist/components/inputs/textInput/index.d.ts.map +1 -0
- package/dist/components/treeview/DataTransformer.d.ts +7 -0
- package/dist/components/treeview/DataTransformer.d.ts.map +1 -0
- package/dist/components/treeview/RichTreeView.d.ts +24 -0
- package/dist/components/treeview/RichTreeView.d.ts.map +1 -0
- package/dist/components/treeview/TreeView.d.ts +22 -0
- package/dist/components/treeview/TreeView.d.ts.map +1 -0
- package/dist/components/treeview/WorkflowTreeView.d.ts +20 -0
- package/dist/components/treeview/WorkflowTreeView.d.ts.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/features/bubble/components/Bubble.d.ts +5 -0
- package/dist/features/bubble/components/Bubble.d.ts.map +1 -0
- package/dist/features/bubble/components/BubbleButton.d.ts +16 -0
- package/dist/features/bubble/components/BubbleButton.d.ts.map +1 -0
- package/dist/features/bubble/components/Tooltip.d.ts +15 -0
- package/dist/features/bubble/components/Tooltip.d.ts.map +1 -0
- package/dist/features/bubble/components/index.d.ts +2 -0
- package/dist/features/bubble/components/index.d.ts.map +1 -0
- package/dist/features/bubble/index.d.ts +2 -0
- package/dist/features/bubble/index.d.ts.map +1 -0
- package/dist/features/bubble/types.d.ts +116 -0
- package/dist/features/bubble/types.d.ts.map +1 -0
- package/dist/features/full/components/Full.d.ts +7 -0
- package/dist/features/full/components/Full.d.ts.map +1 -0
- package/dist/features/full/components/index.d.ts +2 -0
- package/dist/features/full/components/index.d.ts.map +1 -0
- package/dist/features/full/index.d.ts +2 -0
- package/dist/features/full/index.d.ts.map +1 -0
- package/dist/features/popup/components/DisclaimerPopup.d.ts +18 -0
- package/dist/features/popup/components/DisclaimerPopup.d.ts.map +1 -0
- package/dist/features/popup/components/Popup.d.ts +8 -0
- package/dist/features/popup/components/Popup.d.ts.map +1 -0
- package/dist/features/popup/components/index.d.ts +3 -0
- package/dist/features/popup/components/index.d.ts.map +1 -0
- package/dist/features/popup/index.d.ts +2 -0
- package/dist/features/popup/index.d.ts.map +1 -0
- package/dist/features/popup/types.d.ts +8 -0
- package/dist/features/popup/types.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/queries/sendMessageQuery.d.ts +110 -0
- package/dist/queries/sendMessageQuery.d.ts.map +1 -0
- package/dist/register.d.ts +2 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/audioRecording.d.ts +21 -0
- package/dist/utils/audioRecording.d.ts.map +1 -0
- package/dist/utils/chatInputHistory.d.ts +22 -0
- package/dist/utils/chatInputHistory.d.ts.map +1 -0
- package/dist/utils/index.d.ts +24 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/isMobileSignal.d.ts +2 -0
- package/dist/utils/isMobileSignal.d.ts.map +1 -0
- package/dist/web.d.ts +23 -0
- package/dist/web.d.ts.map +1 -0
- package/dist/web.js +1 -0
- package/dist/web.umd.js +1 -0
- package/dist/window.d.ts +30 -0
- package/dist/window.d.ts.map +1 -0
- package/images/ChatEmbed.gif +0 -0
- package/images/proxyserver.png +0 -0
- package/package.json +74 -0
- package/public/index.html +37 -0
- package/server.js +394 -0
package/.env.example
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# ==============================================
|
|
2
|
+
# REQUIRED CONFIGURATION
|
|
3
|
+
# ==============================================
|
|
4
|
+
|
|
5
|
+
# API Host URL (required)
|
|
6
|
+
# This should be the URL where your GptHouse instance is running
|
|
7
|
+
# Example: https://your-gpthouse-instance.com
|
|
8
|
+
API_HOST=
|
|
9
|
+
|
|
10
|
+
# GptHouse API Key (required)
|
|
11
|
+
# Generate this from your GptHouse instance settings page
|
|
12
|
+
# Example: OxxGE-h_LaH7ZYorStjTOik1XY999RxxoHpCSYl8BXxc
|
|
13
|
+
GPTHOUSE_API_KEY=
|
|
14
|
+
|
|
15
|
+
# ==============================================
|
|
16
|
+
# CHATFLOWS CONFIGURATION (required)
|
|
17
|
+
# ==============================================
|
|
18
|
+
|
|
19
|
+
# Format: [identifier]=[chatflowId],[allowedDomain1],[allowedDomain2],...
|
|
20
|
+
#
|
|
21
|
+
# Each entry consists of:
|
|
22
|
+
# - identifier: Any name you choose (e.g., agent1, support, salesbot)
|
|
23
|
+
# - chatflowId: The UUID of your GptHouse chatflow
|
|
24
|
+
# - allowedDomains: Comma-separated list of domains where this chat can be embedded
|
|
25
|
+
# Note: Wildcard domains (*) are not supported for security reasons
|
|
26
|
+
#
|
|
27
|
+
# Examples:
|
|
28
|
+
# agent1=20db97c6-64c9-4411-bab4-7d6202171600,https://example1.com
|
|
29
|
+
# support=1c28f529-a70f-5001-9bc5-4f4c5d03d8c0,https://example2.com,https://another-example2.com
|
|
30
|
+
# salesbot=3db97c6-64c9-4411-bab4-7d620217160a,https://sales.example.com
|
|
31
|
+
|
|
32
|
+
# Add your chatflows below:
|
|
33
|
+
chatflow_1=
|
|
34
|
+
chatflow_2=
|
package/.eslintrc.cjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
root: true,
|
|
3
|
+
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier', 'plugin:solid/typescript'],
|
|
4
|
+
plugins: ['@typescript-eslint', 'solid'],
|
|
5
|
+
parser: '@typescript-eslint/parser',
|
|
6
|
+
ignorePatterns: ['**/*.md'],
|
|
7
|
+
rules: {
|
|
8
|
+
'@next/next/no-img-element': 'off',
|
|
9
|
+
'@next/next/no-html-link-for-pages': 'off',
|
|
10
|
+
'solid/no-innerhtml': 'off',
|
|
11
|
+
'@typescript-eslint/no-namespace': 'off',
|
|
12
|
+
'@typescript-eslint/no-explicit-any': 'off'
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env sh
|
|
2
|
+
. "$(dirname -- "$0")/_/husky.sh"
|
|
3
|
+
|
|
4
|
+
set -e # Exit on any error
|
|
5
|
+
|
|
6
|
+
echo "Running ESLint for linting..."
|
|
7
|
+
npm run lint
|
|
8
|
+
|
|
9
|
+
echo "Running ESLint for fixing issues..."
|
|
10
|
+
npm run lint-fix
|
|
11
|
+
|
|
12
|
+
echo "Formatting code..."
|
|
13
|
+
npm run format
|
|
14
|
+
|
|
15
|
+
echo "Checking formatting..."
|
|
16
|
+
npm run format:check
|
|
17
|
+
|
|
18
|
+
echo "Pre-commit checks passed."
|
package/.prettierignore
ADDED
package/.prettierrc
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD030 -->
|
|
2
|
+
|
|
3
|
+
# GptHouse Embed
|
|
4
|
+
|
|
5
|
+
Javascript library to display gpthouse chatbot on your website
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
Install:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
yarn install
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Dev:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
yarn dev
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
A development server will be running on http://localhost:5678 automatically. Update `public/index.html` to connect directly to GptHouse:
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<!-- public/index.html -->
|
|
25
|
+
<script type="module">
|
|
26
|
+
import Chatbot from 'https://localhost:5678/web.js'; // Change to from './web.js' to 'https://localhost:5678/web.js'
|
|
27
|
+
Chatbot.init({
|
|
28
|
+
chatflowid: '91e9c803-5169-4db9-8207-3c0915d71c5f', // Add your GptHouse chatflowid
|
|
29
|
+
apiHost: 'https://your-gpthouse-instance.com', // Add your GptHouse apiHost
|
|
30
|
+
});
|
|
31
|
+
</script>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Build:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
yarn build
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Embed in your HTML
|
|
41
|
+
|
|
42
|
+
### PopUp
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<script type="module">
|
|
46
|
+
import Chatbot from 'https://cdn.jsdelivr.net/npm/gpthouse-embed/dist/web.js';
|
|
47
|
+
Chatbot.init({
|
|
48
|
+
chatflowid: '<chatflowid>',
|
|
49
|
+
apiHost: 'http://localhost:3000',
|
|
50
|
+
});
|
|
51
|
+
</script>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### FullPage
|
|
55
|
+
|
|
56
|
+
```html
|
|
57
|
+
<script type="module">
|
|
58
|
+
import Chatbot from 'https://cdn.jsdelivr.net/npm/gpthouse-embed/dist/web.js';
|
|
59
|
+
Chatbot.initFull({
|
|
60
|
+
chatflowid: '<chatflowid>',
|
|
61
|
+
apiHost: 'http://localhost:3000',
|
|
62
|
+
});
|
|
63
|
+
</script>
|
|
64
|
+
<gpthouse-fullchatbot></gpthouse-fullchatbot>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
To enable full screen, add `margin: 0` to <code>body</code> style, and confirm you don't set height and width
|
|
68
|
+
|
|
69
|
+
```html
|
|
70
|
+
<body style="margin: 0">
|
|
71
|
+
<script type="module">
|
|
72
|
+
import Chatbot from 'https://cdn.jsdelivr.net/npm/gpthouse-embed/dist/web.js';
|
|
73
|
+
Chatbot.initFull({
|
|
74
|
+
chatflowid: '<chatflowid>',
|
|
75
|
+
apiHost: 'http://localhost:3000',
|
|
76
|
+
theme: {
|
|
77
|
+
chatWindow: {
|
|
78
|
+
// height: 700, don't set height
|
|
79
|
+
// width: 400, don't set width
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
</script>
|
|
84
|
+
</body>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Configuration
|
|
88
|
+
|
|
89
|
+
You can also customize chatbot with different configuration
|
|
90
|
+
|
|
91
|
+
```html
|
|
92
|
+
<script type="module">
|
|
93
|
+
import Chatbot from 'https://cdn.jsdelivr.net/npm/gpthouse-embed/dist/web.js';
|
|
94
|
+
Chatbot.init({
|
|
95
|
+
chatflowid: '91e9c803-5169-4db9-8207-3c0915d71c5f',
|
|
96
|
+
apiHost: 'http://localhost:3000',
|
|
97
|
+
chatflowConfig: {
|
|
98
|
+
// topK: 2
|
|
99
|
+
},
|
|
100
|
+
observersConfig: {
|
|
101
|
+
// (optional) Allows you to execute code in parent based upon signal observations within the chatbot.
|
|
102
|
+
// The userinput field submitted to bot ("" when reset by bot)
|
|
103
|
+
observeUserInput: (userInput) => {
|
|
104
|
+
console.log({ userInput });
|
|
105
|
+
},
|
|
106
|
+
// The bot message stack has changed
|
|
107
|
+
observeMessages: (messages) => {
|
|
108
|
+
console.log({ messages });
|
|
109
|
+
},
|
|
110
|
+
// The bot loading signal changed
|
|
111
|
+
observeLoading: (loading) => {
|
|
112
|
+
console.log({ loading });
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
theme: {
|
|
116
|
+
button: {
|
|
117
|
+
backgroundColor: '#3B81F6',
|
|
118
|
+
right: 20,
|
|
119
|
+
bottom: 20,
|
|
120
|
+
size: 48, // small | medium | large | number
|
|
121
|
+
dragAndDrop: true,
|
|
122
|
+
iconColor: 'white',
|
|
123
|
+
customIconSrc: 'https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/svg/google-messages.svg',
|
|
124
|
+
autoWindowOpen: {
|
|
125
|
+
autoOpen: true, //parameter to control automatic window opening
|
|
126
|
+
openDelay: 2, // Optional parameter for delay time in seconds
|
|
127
|
+
autoOpenOnMobile: false, //parameter to control automatic window opening in mobile
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
tooltip: {
|
|
131
|
+
showTooltip: true,
|
|
132
|
+
tooltipMessage: 'Hi There 👋!',
|
|
133
|
+
tooltipBackgroundColor: 'black',
|
|
134
|
+
tooltipTextColor: 'white',
|
|
135
|
+
tooltipFontSize: 16,
|
|
136
|
+
},
|
|
137
|
+
disclaimer: {
|
|
138
|
+
title: 'Disclaimer',
|
|
139
|
+
message: 'By using this chatbot, you agree to the <a target="_blank" href="https://gpthouseai.com/terms">Terms & Condition</a>',
|
|
140
|
+
textColor: 'black',
|
|
141
|
+
buttonColor: '#3b82f6',
|
|
142
|
+
buttonText: 'Start Chatting',
|
|
143
|
+
buttonTextColor: 'white',
|
|
144
|
+
blurredBackgroundColor: 'rgba(0, 0, 0, 0.4)', //The color of the blurred background that overlays the chat interface
|
|
145
|
+
backgroundColor: 'white',
|
|
146
|
+
denyButtonText: 'Cancel',
|
|
147
|
+
denyButtonBgColor: '#ef4444',
|
|
148
|
+
},
|
|
149
|
+
form: {
|
|
150
|
+
backgroundColor: 'white',
|
|
151
|
+
textColor: 'black',
|
|
152
|
+
}
|
|
153
|
+
customCSS: ``, // Add custom CSS styles. Use !important to override default styles
|
|
154
|
+
chatWindow: {
|
|
155
|
+
showTitle: true,
|
|
156
|
+
showAgentMessages: true,
|
|
157
|
+
title: 'GptHouse Bot',
|
|
158
|
+
titleAvatarSrc: 'https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/svg/google-messages.svg',
|
|
159
|
+
titleBackgroundColor: '#3B81F6',
|
|
160
|
+
titleTextColor: '#ffffff',
|
|
161
|
+
welcomeMessage: 'Hello! This is custom welcome message',
|
|
162
|
+
errorMessage: 'This is a custom error message',
|
|
163
|
+
backgroundColor: '#ffffff',
|
|
164
|
+
backgroundImage: 'enter image path or link', // If set, this will overlap the background color of the chat window.
|
|
165
|
+
height: 700,
|
|
166
|
+
width: 400,
|
|
167
|
+
fontSize: 16,
|
|
168
|
+
starterPrompts: ['What is a bot?', 'Who are you?'], // It overrides the starter prompts set by the chat flow passed
|
|
169
|
+
starterPromptFontSize: 15,
|
|
170
|
+
clearChatOnReload: false, // If set to true, the chat will be cleared when the page reloads
|
|
171
|
+
sourceDocsTitle: 'Sources:',
|
|
172
|
+
renderHTML: true,
|
|
173
|
+
botMessage: {
|
|
174
|
+
backgroundColor: '#f7f8ff',
|
|
175
|
+
textColor: '#303235',
|
|
176
|
+
showAvatar: true,
|
|
177
|
+
avatarSrc: 'https://raw.githubusercontent.com/zahidkhawaja/langchain-chat-nextjs/main/public/parroticon.png',
|
|
178
|
+
},
|
|
179
|
+
userMessage: {
|
|
180
|
+
backgroundColor: '#3B81F6',
|
|
181
|
+
textColor: '#ffffff',
|
|
182
|
+
showAvatar: true,
|
|
183
|
+
avatarSrc: 'https://raw.githubusercontent.com/zahidkhawaja/langchain-chat-nextjs/main/public/usericon.png',
|
|
184
|
+
},
|
|
185
|
+
textInput: {
|
|
186
|
+
placeholder: 'Type your question',
|
|
187
|
+
backgroundColor: '#ffffff',
|
|
188
|
+
textColor: '#303235',
|
|
189
|
+
sendButtonColor: '#3B81F6',
|
|
190
|
+
maxChars: 50,
|
|
191
|
+
maxCharsWarningMessage: 'You exceeded the characters limit. Please input less than 50 characters.',
|
|
192
|
+
autoFocus: true, // If not used, autofocus is disabled on mobile and enabled on desktop. true enables it on both, false disables it on both.
|
|
193
|
+
sendMessageSound: true,
|
|
194
|
+
// sendSoundLocation: "send_message.mp3", // If this is not used, the default sound effect will be played if sendSoundMessage is true.
|
|
195
|
+
receiveMessageSound: true,
|
|
196
|
+
// receiveSoundLocation: "receive_message.mp3", // If this is not used, the default sound effect will be played if receiveSoundMessage is true.
|
|
197
|
+
},
|
|
198
|
+
feedback: {
|
|
199
|
+
color: '#303235',
|
|
200
|
+
},
|
|
201
|
+
dateTimeToggle: {
|
|
202
|
+
date: true,
|
|
203
|
+
time: true,
|
|
204
|
+
},
|
|
205
|
+
footer: {
|
|
206
|
+
textColor: '#303235',
|
|
207
|
+
text: 'Powered by',
|
|
208
|
+
company: 'GptHouse',
|
|
209
|
+
companyLink: 'https://gpthouseai.com',
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
});
|
|
214
|
+
</script>
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## (Experimental) Proxy Server Setup
|
|
218
|
+
|
|
219
|
+
The GptHouse Embed Proxy Server enhances the security of your chatbot implementation by acting as a protective intermediary layer. This server eliminates the need to expose sensitive GptHouse instance details in your frontend code and provides several key security benefits:
|
|
220
|
+
|
|
221
|
+

|
|
222
|
+
|
|
223
|
+
- **Enhanced Security**: Conceals your GptHouse API host and chatflow IDs from client-side exposure
|
|
224
|
+
- **Access Control**: Implements strict domain-based restrictions for chatbot embedding
|
|
225
|
+
- **Secure Communication**: Acts as a secure gateway for all interactions between your website and GptHouse instance
|
|
226
|
+
- **Authentication Management**: Handles API key authentication securely on the server side, away from client exposure
|
|
227
|
+
|
|
228
|
+
This proxy server can be deployed to any Node.js hosting platform.
|
|
229
|
+
|
|
230
|
+
## Quick Start
|
|
231
|
+
|
|
232
|
+
1. Configure environment:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
# Copy .env.example to .env and configure required settings:
|
|
236
|
+
API_HOST=https://your-gpthouse-instance.com
|
|
237
|
+
GPTHOUSE_API_KEY=your-api-key
|
|
238
|
+
|
|
239
|
+
# Configure your chatflows:
|
|
240
|
+
# Format: [identifier]=[chatflowId],[allowedDomain1],[allowedDomain2],...
|
|
241
|
+
#
|
|
242
|
+
# identifier: Any name you choose (e.g., agent1, support, salesbot)
|
|
243
|
+
# chatflowId: The UUID of your GptHouse chatflow
|
|
244
|
+
# allowedDomains: Comma-separated list of domains where this chat can be embedded
|
|
245
|
+
#
|
|
246
|
+
# Examples:
|
|
247
|
+
support=abc123-def456,https://example.com
|
|
248
|
+
agent1=xyz789-uvw456,https://sales.example.com
|
|
249
|
+
helpdesk=ghi123-jkl456,https://help.example.com,https://support.example.com
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
2. Install dependencies: (assuming you did not run `yarn install` yet)
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
yarn install
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
3. Start proxy server:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
yarn start
|
|
262
|
+
# Server will be available at:
|
|
263
|
+
# - Local: http://localhost:3001
|
|
264
|
+
# - Cloud: [Your Platform URL] (e.g., https://your-app.herokuapp.com)
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
4. Once the proxy server is running in production, you will be able to embed your chatbots safely without exposing your GptHouse API host and chatflow IDs as below:
|
|
268
|
+
|
|
269
|
+
```html
|
|
270
|
+
<script type="module">
|
|
271
|
+
import Chatbot from 'your-proxy-server-url/web.js'; // Must be 'your-proxy-server-url/web.js'
|
|
272
|
+
Chatbot.init({
|
|
273
|
+
chatflowid: 'your-identifier-here', // Must match an identifier from your .env
|
|
274
|
+
apiHost: 'your-proxy-server-url', // Must match the URL of your proxy server
|
|
275
|
+
chatflowConfig: {
|
|
276
|
+
// ...
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
</script>
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
5. (optional) If you want to test any identifier in public/index.html, you can update it as below:
|
|
283
|
+
|
|
284
|
+
```html
|
|
285
|
+
<!-- public/index.html -->
|
|
286
|
+
chatflowid: 'your-identifier-here' // Must match an identifier from your .env
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**Important Notes:**
|
|
290
|
+
|
|
291
|
+
- To ensure secure embedding, you must explicitly whitelist the websites authorized to embed each chatbot. This configuration is done within the .env file. Note that this also applies to your server's URL when deployed to a cloud environment, or http://localhost:3001 for local development, if needed you must whitelist it as well.
|
|
292
|
+
- Wildcard domains (\*) are not supported for security reasons
|
|
293
|
+
- Identifiers are case-insensitive (e.g., 'Support' and 'support' are treated the same)
|
|
294
|
+
|
|
295
|
+
## Cloud Deployment Requirements
|
|
296
|
+
|
|
297
|
+
When deploying to cloud platforms, you must configure the environment variables directly in your platform. The proxy server will not start without these variables being properly set. Compatible with Nixpacks for automatic deployment configuration.
|
|
298
|
+
|
|
299
|
+
## Development Mode (For Local Testing)
|
|
300
|
+
|
|
301
|
+
1. Configure your environment variables (see above)
|
|
302
|
+
|
|
303
|
+
2. Start the proxy server:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
yarn start
|
|
307
|
+
# Server will be available at:
|
|
308
|
+
# - Local: http://localhost:3001
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
3. Update the test page configuration:
|
|
312
|
+
|
|
313
|
+
- Open `public/index.html` in your code editor
|
|
314
|
+
- Modify the `chatflowid` and `apiHost` to match your `.env` settings:
|
|
315
|
+
|
|
316
|
+
```html
|
|
317
|
+
<!-- public/index.html -->
|
|
318
|
+
<script type="module">
|
|
319
|
+
import Chatbot from './web.js';
|
|
320
|
+
Chatbot.init({
|
|
321
|
+
chatflowid: 'agent1', // Must match an identifier from your .env
|
|
322
|
+
apiHost: 'http://localhost:3001', // Change this from window.location.origin to 'http://localhost:3001'
|
|
323
|
+
});
|
|
324
|
+
</script>
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
For full page testing, use this configuration instead:
|
|
328
|
+
|
|
329
|
+
```html
|
|
330
|
+
<!-- public/index.html -->
|
|
331
|
+
<gpthouse-fullchatbot></gpthouse-fullchatbot>
|
|
332
|
+
<script type="module">
|
|
333
|
+
import Chatbot from './web.js';
|
|
334
|
+
Chatbot.initFull({
|
|
335
|
+
chatflowid: 'agent1', // Must match an identifier from your .env
|
|
336
|
+
apiHost: 'http://localhost:3001', // Change this from window.location.origin to 'http://localhost:3001'
|
|
337
|
+
});
|
|
338
|
+
</script>
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
4. While the proxy server is running, open a new terminal and start the development server:
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
yarn dev
|
|
345
|
+
# This will serve the test page on http://localhost:5678 automatically
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
5. Test the chatbot:
|
|
349
|
+
|
|
350
|
+
- Navigate to http://localhost:5678
|
|
351
|
+
- The chatbot should now be visible and functional
|
|
352
|
+
|
|
353
|
+
**Note:** The development URL (http://localhost:5678) is automatically added to allowed domains in development mode. You don't need to add it manually.
|
|
354
|
+
|
|
355
|
+
## License
|
|
356
|
+
|
|
357
|
+
Source code in this repository is made available under the [MIT License](https://github.com/GptHouseAI/GptHouse/blob/master/LICENSE.md).
|
package/base.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"display": "Default",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"composite": false,
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"forceConsistentCasingInFileNames": true,
|
|
10
|
+
"inlineSources": false,
|
|
11
|
+
"isolatedModules": true,
|
|
12
|
+
"moduleResolution": "node",
|
|
13
|
+
"noUnusedLocals": false,
|
|
14
|
+
"noUnusedParameters": false,
|
|
15
|
+
"preserveWatchOutput": true,
|
|
16
|
+
"skipLibCheck": true,
|
|
17
|
+
"strict": true,
|
|
18
|
+
"downlevelIteration": true
|
|
19
|
+
},
|
|
20
|
+
"exclude": ["node_modules"]
|
|
21
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FooterTheme } from '@/features/bubble/types';
|
|
2
|
+
type Props = {
|
|
3
|
+
footer?: FooterTheme;
|
|
4
|
+
botContainer: HTMLDivElement | undefined;
|
|
5
|
+
poweredByTextColor?: string;
|
|
6
|
+
badgeBackgroundColor?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const Badge: (props: Props) => import("solid-js").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../src/components/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,KAAK,KAAK,GAAG;IACX,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,cAAc,GAAG,SAAS,CAAC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAIF,eAAO,MAAM,KAAK,UAAW,KAAK,mCA+DjC,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { FeedbackRatingType } from '@/queries/sendMessageQuery';
|
|
2
|
+
import { BotMessageTheme, FooterTheme, TextInputTheme, UserMessageTheme, FeedbackTheme, DisclaimerPopUpTheme, DateTimeToggleTheme } from '@/features/bubble/types';
|
|
3
|
+
import { FilePreview } from '@/components/inputs/textInput/components/FilePreview';
|
|
4
|
+
export type FileEvent<T = EventTarget> = {
|
|
5
|
+
target: T;
|
|
6
|
+
};
|
|
7
|
+
export type FormEvent<T = EventTarget> = {
|
|
8
|
+
preventDefault: () => void;
|
|
9
|
+
currentTarget: T;
|
|
10
|
+
};
|
|
11
|
+
type IUploadConstraits = {
|
|
12
|
+
fileTypes: string[];
|
|
13
|
+
maxUploadSize: number;
|
|
14
|
+
};
|
|
15
|
+
export type UploadsConfig = {
|
|
16
|
+
imgUploadSizeAndTypes: IUploadConstraits[];
|
|
17
|
+
fileUploadSizeAndTypes: IUploadConstraits[];
|
|
18
|
+
isImageUploadAllowed: boolean;
|
|
19
|
+
isSpeechToTextEnabled: boolean;
|
|
20
|
+
isRAGFileUploadAllowed: boolean;
|
|
21
|
+
};
|
|
22
|
+
type FilePreviewData = string | ArrayBuffer;
|
|
23
|
+
type FilePreview = {
|
|
24
|
+
data: FilePreviewData;
|
|
25
|
+
mime: string;
|
|
26
|
+
name: string;
|
|
27
|
+
preview: string;
|
|
28
|
+
type: string;
|
|
29
|
+
};
|
|
30
|
+
type messageType = 'apiMessage' | 'userMessage' | 'usermessagewaiting' | 'leadCaptureMessage';
|
|
31
|
+
type ExecutionState = 'INPROGRESS' | 'FINISHED' | 'ERROR' | 'TERMINATED' | 'TIMEOUT' | 'STOPPED';
|
|
32
|
+
export type IAgentReasoning = {
|
|
33
|
+
agentName?: string;
|
|
34
|
+
messages?: string[];
|
|
35
|
+
usedTools?: any[];
|
|
36
|
+
artifacts?: FileUpload[];
|
|
37
|
+
sourceDocuments?: any[];
|
|
38
|
+
instructions?: string;
|
|
39
|
+
nextAgent?: string;
|
|
40
|
+
};
|
|
41
|
+
export type IAction = {
|
|
42
|
+
id?: string;
|
|
43
|
+
data?: any;
|
|
44
|
+
elements?: Array<{
|
|
45
|
+
type: string;
|
|
46
|
+
label: string;
|
|
47
|
+
}>;
|
|
48
|
+
mapping?: {
|
|
49
|
+
approve: string;
|
|
50
|
+
reject: string;
|
|
51
|
+
toolCalls: any[];
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export type FileUpload = Omit<FilePreview, 'preview'>;
|
|
55
|
+
export type AgentFlowExecutedData = {
|
|
56
|
+
nodeLabel: string;
|
|
57
|
+
nodeId: string;
|
|
58
|
+
data: any;
|
|
59
|
+
previousNodeIds: string[];
|
|
60
|
+
status?: ExecutionState;
|
|
61
|
+
};
|
|
62
|
+
export type MessageType = {
|
|
63
|
+
messageId?: string;
|
|
64
|
+
message: string;
|
|
65
|
+
type: messageType;
|
|
66
|
+
sourceDocuments?: any;
|
|
67
|
+
fileAnnotations?: any;
|
|
68
|
+
fileUploads?: Partial<FileUpload>[];
|
|
69
|
+
artifacts?: Partial<FileUpload>[];
|
|
70
|
+
agentReasoning?: IAgentReasoning[];
|
|
71
|
+
execution?: any;
|
|
72
|
+
agentFlowEventStatus?: string;
|
|
73
|
+
agentFlowExecutedData?: any;
|
|
74
|
+
usedTools?: any[];
|
|
75
|
+
action?: IAction | null;
|
|
76
|
+
rating?: FeedbackRatingType;
|
|
77
|
+
id?: string;
|
|
78
|
+
followUpPrompts?: string;
|
|
79
|
+
dateTime?: string;
|
|
80
|
+
};
|
|
81
|
+
type observerConfigType = (accessor: string | boolean | object | MessageType[]) => void;
|
|
82
|
+
export type observersConfigType = Record<'observeUserInput' | 'observeLoading' | 'observeMessages', observerConfigType>;
|
|
83
|
+
export type BotProps = {
|
|
84
|
+
chatflowid: string;
|
|
85
|
+
apiHost?: string;
|
|
86
|
+
onRequest?: (request: RequestInit) => Promise<void>;
|
|
87
|
+
chatflowConfig?: Record<string, unknown>;
|
|
88
|
+
backgroundColor?: string;
|
|
89
|
+
welcomeMessage?: string;
|
|
90
|
+
errorMessage?: string;
|
|
91
|
+
botMessage?: BotMessageTheme;
|
|
92
|
+
userMessage?: UserMessageTheme;
|
|
93
|
+
textInput?: TextInputTheme;
|
|
94
|
+
feedback?: FeedbackTheme;
|
|
95
|
+
poweredByTextColor?: string;
|
|
96
|
+
badgeBackgroundColor?: string;
|
|
97
|
+
bubbleBackgroundColor?: string;
|
|
98
|
+
bubbleTextColor?: string;
|
|
99
|
+
showTitle?: boolean;
|
|
100
|
+
showAgentMessages?: boolean;
|
|
101
|
+
title?: string;
|
|
102
|
+
titleAvatarSrc?: string;
|
|
103
|
+
titleTextColor?: string;
|
|
104
|
+
titleBackgroundColor?: string;
|
|
105
|
+
formBackgroundColor?: string;
|
|
106
|
+
formTextColor?: string;
|
|
107
|
+
fontSize?: number;
|
|
108
|
+
isFullPage?: boolean;
|
|
109
|
+
footer?: FooterTheme;
|
|
110
|
+
sourceDocsTitle?: string;
|
|
111
|
+
observersConfig?: observersConfigType;
|
|
112
|
+
starterPrompts?: string[] | Record<string, {
|
|
113
|
+
prompt: string;
|
|
114
|
+
}>;
|
|
115
|
+
starterPromptFontSize?: number;
|
|
116
|
+
clearChatOnReload?: boolean;
|
|
117
|
+
disclaimer?: DisclaimerPopUpTheme;
|
|
118
|
+
dateTimeToggle?: DateTimeToggleTheme;
|
|
119
|
+
renderHTML?: boolean;
|
|
120
|
+
closeBot?: () => void;
|
|
121
|
+
};
|
|
122
|
+
export type LeadsConfig = {
|
|
123
|
+
status: boolean;
|
|
124
|
+
title?: string;
|
|
125
|
+
name?: boolean;
|
|
126
|
+
email?: boolean;
|
|
127
|
+
phone?: boolean;
|
|
128
|
+
successMessage?: string;
|
|
129
|
+
};
|
|
130
|
+
export declare const Bot: (botProps: BotProps & {
|
|
131
|
+
class?: string;
|
|
132
|
+
}) => import("solid-js").JSX.Element;
|
|
133
|
+
export {};
|
|
134
|
+
//# sourceMappingURL=Bot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bot.d.ts","sourceRoot":"","sources":["../../src/components/Bot.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type FeedbackContentDialogProps = {
|
|
2
|
+
isOpen: boolean;
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
onSubmit: (text: string) => void;
|
|
5
|
+
backgroundColor?: string;
|
|
6
|
+
textColor?: string;
|
|
7
|
+
};
|
|
8
|
+
declare const FeedbackContentDialog: (props: FeedbackContentDialogProps) => import("solid-js").JSX.Element;
|
|
9
|
+
export default FeedbackContentDialog;
|
|
10
|
+
//# sourceMappingURL=FeedbackContentDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackContentDialog.d.ts","sourceRoot":"","sources":["../../src/components/FeedbackContentDialog.tsx"],"names":[],"mappings":"AAEA,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAKF,QAAA,MAAM,qBAAqB,UAAW,0BAA0B,mCAwF/D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { JSX } from 'solid-js/jsx-runtime';
|
|
2
|
+
type ImageUploadButtonProps = {
|
|
3
|
+
buttonColor?: string;
|
|
4
|
+
isDisabled?: boolean;
|
|
5
|
+
isLoading?: boolean;
|
|
6
|
+
disableIcon?: boolean;
|
|
7
|
+
} & JSX.ButtonHTMLAttributes<HTMLButtonElement>;
|
|
8
|
+
export declare const ImageUploadButton: (props: ImageUploadButtonProps) => JSX.Element;
|
|
9
|
+
export declare const Spinner: (props: JSX.SvgSVGAttributes<SVGSVGElement>) => JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ImageUploadButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageUploadButton.d.ts","sourceRoot":"","sources":["../../src/components/ImageUploadButton.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAG3C,KAAK,sBAAsB,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEhD,eAAO,MAAM,iBAAiB,UAAW,sBAAsB,gBAiB9D,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW,IAAI,gBAAgB,CAAC,aAAa,CAAC,gBAgBjE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { JSX } from 'solid-js/jsx-runtime';
|
|
2
|
+
type RecordAudioButtonProps = {
|
|
3
|
+
buttonColor?: string;
|
|
4
|
+
isDisabled?: boolean;
|
|
5
|
+
isLoading?: boolean;
|
|
6
|
+
disableIcon?: boolean;
|
|
7
|
+
} & JSX.ButtonHTMLAttributes<HTMLButtonElement>;
|
|
8
|
+
export declare const RecordAudioButton: (props: RecordAudioButtonProps) => JSX.Element;
|
|
9
|
+
export declare const Spinner: (props: JSX.SvgSVGAttributes<SVGSVGElement>) => JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=RecordAudioButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordAudioButton.d.ts","sourceRoot":"","sources":["../../src/components/RecordAudioButton.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAG3C,KAAK,sBAAsB,GAAG;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEhD,eAAO,MAAM,iBAAiB,UAAW,sBAAsB,gBAiB9D,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW,IAAI,gBAAgB,CAAC,aAAa,CAAC,gBAgBjE,CAAC"}
|