@product7/product7-js 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.
Files changed (58) hide show
  1. package/README.md +1025 -0
  2. package/dist/README.md +1025 -0
  3. package/dist/product7-js.js +14658 -0
  4. package/dist/product7-js.js.map +1 -0
  5. package/dist/product7-js.min.js +2 -0
  6. package/dist/product7-js.min.js.map +1 -0
  7. package/package.json +114 -0
  8. package/src/api/mock-data/index.js +360 -0
  9. package/src/api/services/ChangelogService.js +28 -0
  10. package/src/api/services/FeedbackService.js +44 -0
  11. package/src/api/services/HelpService.js +50 -0
  12. package/src/api/services/MessengerService.js +279 -0
  13. package/src/api/services/SurveyService.js +127 -0
  14. package/src/api/utils/helpers.js +30 -0
  15. package/src/core/APIService.js +303 -0
  16. package/src/core/BaseAPIService.js +298 -0
  17. package/src/core/EventBus.js +54 -0
  18. package/src/core/Product7.js +812 -0
  19. package/src/core/WebSocketService.js +275 -0
  20. package/src/docs/api.md +226 -0
  21. package/src/docs/example.md +461 -0
  22. package/src/docs/framework-integrations.md +714 -0
  23. package/src/docs/installation.md +281 -0
  24. package/src/index.js +894 -0
  25. package/src/styles/base.js +50 -0
  26. package/src/styles/changelog.js +665 -0
  27. package/src/styles/components.js +553 -0
  28. package/src/styles/design-tokens.js +124 -0
  29. package/src/styles/feedback.js +325 -0
  30. package/src/styles/messenger-components.js +632 -0
  31. package/src/styles/messenger-core.js +233 -0
  32. package/src/styles/messenger-features.js +169 -0
  33. package/src/styles/messenger-views.js +877 -0
  34. package/src/styles/messenger.js +17 -0
  35. package/src/styles/messengerCustomStyles.js +114 -0
  36. package/src/styles/styles.js +26 -0
  37. package/src/styles/survey.js +894 -0
  38. package/src/utils/errors.js +142 -0
  39. package/src/utils/helpers.js +219 -0
  40. package/src/widgets/BaseWidget.js +548 -0
  41. package/src/widgets/ButtonWidget.js +104 -0
  42. package/src/widgets/ChangelogWidget.js +615 -0
  43. package/src/widgets/InlineWidget.js +148 -0
  44. package/src/widgets/MessengerWidget.js +979 -0
  45. package/src/widgets/SurveyWidget.js +1325 -0
  46. package/src/widgets/TabWidget.js +45 -0
  47. package/src/widgets/WidgetFactory.js +70 -0
  48. package/src/widgets/messenger/MessengerState.js +323 -0
  49. package/src/widgets/messenger/components/MessengerLauncher.js +124 -0
  50. package/src/widgets/messenger/components/MessengerPanel.js +111 -0
  51. package/src/widgets/messenger/components/NavigationTabs.js +130 -0
  52. package/src/widgets/messenger/views/ChangelogView.js +167 -0
  53. package/src/widgets/messenger/views/ChatView.js +592 -0
  54. package/src/widgets/messenger/views/ConversationsView.js +244 -0
  55. package/src/widgets/messenger/views/HelpView.js +239 -0
  56. package/src/widgets/messenger/views/HomeView.js +300 -0
  57. package/src/widgets/messenger/views/PreChatFormView.js +109 -0
  58. package/types/index.d.ts +341 -0
@@ -0,0 +1,233 @@
1
+ export const messengerCoreStyles = `
2
+
3
+ .messenger-launcher {
4
+ position: fixed;
5
+ z-index: var(--z-modal);
6
+ }
7
+
8
+ .messenger-launcher-right {
9
+ bottom: var(--spacing-5);
10
+ right: var(--spacing-5);
11
+ }
12
+
13
+ .messenger-launcher-left {
14
+ bottom: var(--spacing-5);
15
+ left: var(--spacing-5);
16
+ }
17
+
18
+ .messenger-launcher-btn {
19
+ width: 60px;
20
+ height: 60px;
21
+ border-radius: var(--radius-full);
22
+ border: none;
23
+ background: var(--color-primary);
24
+ color: #ffffff;
25
+ cursor: pointer;
26
+ display: flex;
27
+ align-items: center;
28
+ justify-content: center;
29
+ box-shadow: var(--shadow-lg);
30
+ transition: all var(--transition-slow);
31
+ position: relative;
32
+ }
33
+
34
+ .messenger-launcher-btn:hover {
35
+ box-shadow: var(--shadow-xl);
36
+ }
37
+
38
+ .messenger-launcher-btn:active {
39
+ transform: translateY(1px);
40
+ transition-duration: 100ms;
41
+ }
42
+
43
+ .messenger-launcher-badge {
44
+ position: absolute;
45
+ top: -3px;
46
+ right: -3px;
47
+ min-width: 22px;
48
+ height: 22px;
49
+ background: #ef4444;
50
+ color: #ffffff;
51
+ font-size: 11px;
52
+ font-weight: 700;
53
+ border-radius: var(--radius-full);
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ padding: 0 6px;
58
+ border: 2.5px solid #ffffff;
59
+ box-shadow: 0 2px 6px rgb(239 68 68 / 0.45);
60
+ letter-spacing: -0.2px;
61
+ line-height: 1;
62
+ }
63
+
64
+ .messenger-panel {
65
+ position: fixed;
66
+ z-index: var(--z-popover);
67
+ width: 400px;
68
+ height: 720px;
69
+ max-height: calc(100vh - 100px);
70
+ opacity: 0;
71
+ visibility: hidden;
72
+ pointer-events: none;
73
+ transform: translateY(8px) scale(0.97);
74
+ transition:
75
+ opacity 160ms cubic-bezier(0.4, 0, 1, 1),
76
+ transform 180ms cubic-bezier(0.4, 0, 1, 1),
77
+ visibility 0s linear 180ms;
78
+ }
79
+
80
+ .messenger-panel.open {
81
+ opacity: 1;
82
+ visibility: visible;
83
+ pointer-events: auto;
84
+ transform: translateY(0) scale(1);
85
+ transition:
86
+ opacity 220ms cubic-bezier(0.16, 1, 0.3, 1),
87
+ transform 300ms cubic-bezier(0.16, 1, 0.3, 1),
88
+ visibility 0s linear 0s;
89
+ }
90
+
91
+ .messenger-panel-right {
92
+ bottom: 90px;
93
+ right: var(--spacing-5);
94
+ transform-origin: bottom right;
95
+ }
96
+
97
+ .messenger-panel-left {
98
+ bottom: 90px;
99
+ left: var(--spacing-5);
100
+ transform-origin: bottom left;
101
+ }
102
+
103
+ .messenger-panel-content {
104
+ background: var(--msg-bg);
105
+ height: 100%;
106
+ border-radius: var(--radius-2xl);
107
+ overflow: hidden;
108
+ display: flex;
109
+ flex-direction: column;
110
+ box-shadow: var(--shadow-xl);
111
+ border: 1px solid var(--msg-border);
112
+ }
113
+
114
+ .messenger-panel-content *::-webkit-scrollbar {
115
+ display: none;
116
+ }
117
+
118
+ .messenger-panel-content * {
119
+ scrollbar-width: none;
120
+ }
121
+
122
+ .messenger-panel-views {
123
+ flex: 1;
124
+ overflow: hidden;
125
+ display: flex;
126
+ flex-direction: column;
127
+ }
128
+
129
+ .messenger-view {
130
+ height: 100%;
131
+ display: flex;
132
+ flex-direction: column;
133
+ overflow: hidden;
134
+ }
135
+
136
+ .messenger-avatar-stack {
137
+ display: flex;
138
+ align-items: center;
139
+ }
140
+
141
+ .messenger-avatar-stack .sdk-avatar {
142
+ margin-left: -8px;
143
+ }
144
+
145
+ .messenger-avatar-stack .sdk-avatar:first-child {
146
+ margin-left: 0;
147
+ }
148
+
149
+ .messenger-avatar-stack-tiny .sdk-avatar {
150
+ margin-left: -6px;
151
+ }
152
+
153
+ .messenger-avatar-stack-tiny .sdk-avatar:first-child {
154
+ margin-left: 0;
155
+ }
156
+
157
+ @media (max-width: 480px) {
158
+ .messenger-panel {
159
+ width: 100%;
160
+ height: 100%;
161
+ max-height: 100%;
162
+ bottom: 0;
163
+ right: 0;
164
+ left: 0;
165
+ border-radius: 0;
166
+ transform-origin: bottom center;
167
+ transform: translateY(12px) scale(0.98);
168
+ }
169
+
170
+ .messenger-panel.open {
171
+ transform: translateY(0) scale(1);
172
+ }
173
+
174
+ .messenger-panel-content {
175
+ border-radius: 0;
176
+ }
177
+
178
+ .messenger-launcher {
179
+ bottom: var(--spacing-4);
180
+ right: var(--spacing-4);
181
+ }
182
+
183
+ .messenger-launcher-left {
184
+ left: var(--spacing-4);
185
+ }
186
+ }
187
+
188
+ /* ========================================
189
+ DARK THEME — token overrides only
190
+ ======================================== */
191
+
192
+ .messenger-widget.theme-dark {
193
+ /* Messenger semantic tokens */
194
+ --msg-bg: #0f1317;
195
+ --msg-bg-surface: #1a1e24;
196
+ --msg-bg-elevated: #232930;
197
+ --msg-bg-hover: #232930;
198
+ --msg-bg-input: #1a1e24;
199
+ --msg-bg-bubble-own: #2a3140;
200
+ --msg-bg-bubble-received: #1a1e24;
201
+ --msg-bg-header-gradient: linear-gradient(180deg, #1a1e2e 0%, #141720 50%, #0f1317 100%);
202
+ --msg-bg-header-glow1: radial-gradient(circle, rgba(21, 94, 239, 0.07) 0%, transparent 70%);
203
+ --msg-bg-header-glow2: radial-gradient(circle, rgba(139, 92, 246, 0.05) 0%, transparent 70%);
204
+ --msg-text: #e8e8e8;
205
+ --msg-text-secondary: #999999;
206
+ --msg-text-tertiary: #666666;
207
+ --msg-text-muted: #555555;
208
+ --msg-border: #232930;
209
+ --msg-border-bubble: #3a4255;
210
+ --msg-shadow-card: none;
211
+ --msg-shadow-card-hover: none;
212
+
213
+ /* Override base design tokens within messenger scope */
214
+ --color-white: #0f1317;
215
+ --color-background: #0f1317;
216
+ --color-surface: #1a1e24;
217
+ --color-neutral-50: #1a1e24;
218
+ --color-neutral-100: #1a1e24;
219
+ --color-neutral-200: #232930;
220
+ --color-neutral-300: #2d343c;
221
+ --color-neutral-400: #555555;
222
+ --color-neutral-500: #777777;
223
+ --color-border: #232930;
224
+ --color-text-primary: #e8e8e8;
225
+ --color-text-secondary: #999999;
226
+ --color-text-tertiary: #666666;
227
+ --color-success-light: rgba(16, 185, 129, 0.15);
228
+ --color-success-dark: #34d399;
229
+ --color-error: #f87171;
230
+ --color-error-light: rgba(239, 68, 68, 0.15);
231
+ --color-error-dark: #fca5a5;
232
+ }
233
+ `;
@@ -0,0 +1,169 @@
1
+ export const messengerFeaturesStyles = `
2
+ /* ========================================
3
+ ATTACHMENTS
4
+ ======================================== */
5
+ .messenger-compose-attachments-preview {
6
+ display: none;
7
+ flex-wrap: wrap;
8
+ gap: var(--spacing-2);
9
+ padding: var(--spacing-2) var(--spacing-4);
10
+ border-top: 1px solid var(--msg-border);
11
+ background: var(--msg-bg);
12
+ }
13
+
14
+ .messenger-attachment-preview {
15
+ position: relative;
16
+ width: 56px;
17
+ height: 56px;
18
+ border-radius: var(--radius-lg);
19
+ overflow: hidden;
20
+ border: 1px solid var(--color-border);
21
+ }
22
+
23
+ .messenger-attachment-thumb {
24
+ width: 100%;
25
+ height: 100%;
26
+ object-fit: cover;
27
+ display: block;
28
+ }
29
+
30
+ .messenger-attachment-file-icon {
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ background: var(--color-neutral-100);
35
+ color: var(--color-text-secondary);
36
+ }
37
+
38
+ .messenger-attachment-remove {
39
+ position: absolute;
40
+ top: 2px;
41
+ right: 2px;
42
+ width: 18px;
43
+ height: 18px;
44
+ background: rgba(0, 0, 0, 0.7);
45
+ border: none;
46
+ border-radius: var(--radius-full);
47
+ color: var(--color-white);
48
+ font-size: var(--font-size-xs);
49
+ line-height: 1;
50
+ cursor: pointer;
51
+ display: flex;
52
+ align-items: center;
53
+ justify-content: center;
54
+ padding: 0;
55
+ transition: background var(--transition-base);
56
+ }
57
+
58
+ .messenger-attachment-remove:hover {
59
+ background: var(--color-error);
60
+ }
61
+
62
+ /* ========================================
63
+ EMAIL OVERLAY
64
+ ======================================== */
65
+ .messenger-email-overlay {
66
+ position: absolute;
67
+ bottom: 0;
68
+ left: 0;
69
+ right: 0;
70
+ top: 0;
71
+ display: none;
72
+ align-items: flex-end;
73
+ z-index: 20;
74
+ background: rgba(0, 0, 0, 0.5);
75
+ pointer-events: auto;
76
+ }
77
+
78
+ .messenger-email-card {
79
+ width: 100%;
80
+ animation: messenger-slide-up 0.25s ease;
81
+ }
82
+
83
+ .messenger-email-actions {
84
+ display: flex;
85
+ gap: var(--spacing-2);
86
+ margin-top: var(--spacing-1);
87
+ }
88
+
89
+ /* ========================================
90
+ EMPTY STATE
91
+ ======================================== */
92
+ .messenger-empty-state {
93
+ display: flex;
94
+ flex-direction: column;
95
+ align-items: center;
96
+ justify-content: center;
97
+ height: 100%;
98
+ text-align: center;
99
+ padding: var(--spacing-10);
100
+ }
101
+
102
+ .messenger-empty-state-icon {
103
+ color: var(--msg-text-tertiary);
104
+ margin-bottom: var(--spacing-4);
105
+ }
106
+
107
+ .messenger-empty-state h3 {
108
+ margin: 0 0 var(--spacing-2);
109
+ font-size: var(--font-size-xl);
110
+ font-weight: var(--font-weight-semibold);
111
+ color: var(--color-text-primary);
112
+ }
113
+
114
+ .messenger-empty-state p {
115
+ margin: 0;
116
+ font-size: var(--font-size-base);
117
+ color: var(--color-text-secondary);
118
+ }
119
+
120
+ /* ========================================
121
+ ANIMATIONS
122
+ ======================================== */
123
+ @keyframes spin {
124
+ to {
125
+ transform: rotate(360deg);
126
+ }
127
+ }
128
+
129
+ @keyframes messenger-typing-bounce {
130
+ 0%, 80%, 100% {
131
+ transform: scale(0);
132
+ }
133
+ 40% {
134
+ transform: scale(1);
135
+ }
136
+ }
137
+
138
+ @keyframes messenger-slide-up {
139
+ from {
140
+ transform: translateY(100%);
141
+ opacity: 0;
142
+ }
143
+ to {
144
+ transform: translateY(0);
145
+ opacity: 1;
146
+ }
147
+ }
148
+
149
+ @keyframes messenger-fade-in {
150
+ from {
151
+ opacity: 0;
152
+ }
153
+ to {
154
+ opacity: 1;
155
+ }
156
+ }
157
+
158
+ /* ========================================
159
+ RESPONSIVE
160
+ ======================================== */
161
+ @media (max-width: 480px) {
162
+ .messenger-prechat-overlay {
163
+ padding: var(--spacing-4);
164
+ }
165
+ .messenger-prechat-card {
166
+ max-width: 100%;
167
+ }
168
+ }
169
+ `;