@adzen/doohbot 1.0.0 → 1.0.2

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 (91) hide show
  1. package/README.md +20 -14
  2. package/fesm2022/adzen-doohbot.mjs +4622 -0
  3. package/fesm2022/adzen-doohbot.mjs.map +1 -0
  4. package/index.d.ts +1301 -0
  5. package/index.d.ts.map +1 -0
  6. package/package.json +29 -57
  7. package/src/lib/app/chat/components/chat-button/chat-button.component.scss +115 -0
  8. package/src/lib/app/chat/components/chat-footer/chat-footer.component.scss +14 -0
  9. package/src/lib/app/chat/components/chat-header/chat-header.component.scss +82 -0
  10. package/src/lib/app/chat/components/chat-history-sidebar/chat-history-sidebar.component.scss +369 -0
  11. package/src/lib/app/chat/components/chat-message/chat-message.component.scss +235 -0
  12. package/src/lib/app/chat/components/chat-window/chat-window.component.scss +194 -0
  13. package/src/lib/app/chat/components/message-input/message-input.component.scss +59 -0
  14. package/src/lib/app/chat/components/message-list/message-list.component.scss +258 -0
  15. package/src/lib/app/login/login-form.component.scss +213 -0
  16. package/src/lib/app/personalization/personalization-dialog.component.scss +177 -0
  17. package/src/lib/app/personalization/sections/account/account-section.component.scss +209 -0
  18. package/src/lib/app/personalization/sections/instruction/instruction-section.component.scss +63 -0
  19. package/src/lib/app/personalization/sections/preferences/preferences-section.component.scss +199 -0
  20. package/src/lib/app/personalization/sections/terms/terms-section.component.scss +74 -0
  21. package/src/lib/doohbot.component.scss +18 -0
  22. package/{projects/doohbot/src/lib/shared/chips/chips.scss → src/lib/shared/chips/chips.component.scss} +3 -1
  23. package/src/lib/shared/dialog/dialog.component.scss +90 -0
  24. package/src/lib/shared/dropdown-menu/dropdown-menu.component.scss +53 -0
  25. package/src/lib/shared/input-dialog/input-dialog.component.scss +71 -0
  26. package/src/lib/shared/popout/popout.scss +0 -0
  27. package/src/lib/shared/snackbar/snackbar.component.scss +125 -0
  28. package/src/lib/styles/_theme.scss +69 -0
  29. package/src/lib/styles/material-override.scss +338 -0
  30. package/{projects/doohbot/src/lib/utils → src/lib/styles}/utility.scss +85 -33
  31. package/src/lib/theme/index.scss +8 -0
  32. package/src/lib/theme/palettes/aqua.scss +88 -0
  33. package/src/lib/theme/palettes/candy.scss +88 -0
  34. package/src/lib/theme/palettes/doohbot.scss +88 -0
  35. package/src/lib/theme/palettes/forest.scss +88 -0
  36. package/src/lib/theme/palettes/midnight.scss +88 -0
  37. package/src/lib/theme/palettes/slate.scss +88 -0
  38. package/src/lib/theme/palettes/sunset.scss +86 -0
  39. package/src/lib/theme/themes.scss +7 -0
  40. package/src/lib/theme/tokens/semantic.scss +102 -0
  41. package/.editorconfig +0 -17
  42. package/.vscode/extensions.json +0 -4
  43. package/.vscode/launch.json +0 -26
  44. package/.vscode/settings.json +0 -13
  45. package/.vscode/tasks.json +0 -42
  46. package/adzen-doohbot-0.0.1.tgz +0 -0
  47. package/adzen-doohbot-1.0.0.tgz +0 -0
  48. package/angular.json +0 -119
  49. package/projects/doohbot/README.md +0 -63
  50. package/projects/doohbot/ng-package.json +0 -16
  51. package/projects/doohbot/package.json +0 -12
  52. package/projects/doohbot/src/lib/directives/draggable/draggable-dialog.directive.ts +0 -62
  53. package/projects/doohbot/src/lib/directives/draggable/draggable-dialog.module.ts +0 -9
  54. package/projects/doohbot/src/lib/directives/resizable/resizable-dialog.directive.ts +0 -163
  55. package/projects/doohbot/src/lib/directives/resizable/resizable-dialog.module.ts +0 -9
  56. package/projects/doohbot/src/lib/doohbot.html +0 -216
  57. package/projects/doohbot/src/lib/doohbot.scss +0 -568
  58. package/projects/doohbot/src/lib/doohbot.spec.ts +0 -21
  59. package/projects/doohbot/src/lib/doohbot.ts +0 -345
  60. package/projects/doohbot/src/lib/elements/elements.ts +0 -25
  61. package/projects/doohbot/src/lib/helpers/predefined_messages.ts +0 -2
  62. package/projects/doohbot/src/lib/inputs/doohbot-input.ts +0 -25
  63. package/projects/doohbot/src/lib/model/doohbot.intents.ts +0 -24
  64. package/projects/doohbot/src/lib/model/message.ts +0 -13
  65. package/projects/doohbot/src/lib/model/token.ts +0 -3
  66. package/projects/doohbot/src/lib/services/messaging.service.ts +0 -76
  67. package/projects/doohbot/src/lib/shared/chips/chips.html +0 -9
  68. package/projects/doohbot/src/lib/shared/chips/chips.spec.ts +0 -23
  69. package/projects/doohbot/src/lib/shared/chips/chips.ts +0 -18
  70. package/projects/doohbot/src/lib/shared/snackbar/snackbar.html +0 -7
  71. package/projects/doohbot/src/lib/shared/snackbar/snackbar.scss +0 -73
  72. package/projects/doohbot/src/lib/shared/snackbar/snackbar.spec.ts +0 -21
  73. package/projects/doohbot/src/lib/shared/snackbar/snackbar.ts +0 -44
  74. package/projects/doohbot/src/lib/utils/material-override.scss +0 -312
  75. package/projects/doohbot/src/public-api.ts +0 -5
  76. package/projects/doohbot/tsconfig.lib.json +0 -19
  77. package/projects/doohbot/tsconfig.lib.prod.json +0 -11
  78. package/projects/doohbot/tsconfig.spec.json +0 -14
  79. package/projects/doohbot-element/public/favicon.ico +0 -0
  80. package/projects/doohbot-element/src/app/app.config.ts +0 -12
  81. package/projects/doohbot-element/src/app/app.html +0 -1
  82. package/projects/doohbot-element/src/app/app.routes.ts +0 -3
  83. package/projects/doohbot-element/src/app/app.spec.ts +0 -23
  84. package/projects/doohbot-element/src/app/app.ts +0 -10
  85. package/projects/doohbot-element/src/index.html +0 -15
  86. package/projects/doohbot-element/src/main.ts +0 -6
  87. package/projects/doohbot-element/src/styles.scss +0 -15
  88. package/projects/doohbot-element/tsconfig.app.json +0 -15
  89. package/projects/doohbot-element/tsconfig.spec.json +0 -14
  90. package/tsconfig.json +0 -43
  91. /package/{projects/doohbot-element/src/app/app.scss → src/lib/shared/menu-item/menu-item.component.scss} +0 -0
@@ -0,0 +1,235 @@
1
+ :host {
2
+ display: block;
3
+ width: 100%;
4
+ }
5
+
6
+ /* Message */
7
+ .message {
8
+ display: flex;
9
+ align-items: center;
10
+ gap: 8px;
11
+ margin-bottom: 6px;
12
+
13
+ &.user {
14
+ justify-content: flex-end;
15
+ }
16
+
17
+ &.assistant {
18
+ justify-content: flex-start;
19
+ }
20
+
21
+ /* User avatar container */
22
+ .avatar-container {
23
+ display: flex;
24
+ flex-direction: column;
25
+ align-items: center;
26
+ gap: 4px;
27
+
28
+ .user-avatar {
29
+ width: 24px;
30
+ height: 24px;
31
+ border-radius: 50%;
32
+ object-fit: cover;
33
+ border: 1px solid var(--border-color);
34
+ }
35
+
36
+ /* Bot avatar */
37
+ .assistant-avatar {
38
+ width: 24px;
39
+ height: 24px;
40
+ border-radius: 50%;
41
+ object-fit: cover;
42
+ border: 1px solid var(--border-color);
43
+ filter: var(--avatar-filter);
44
+ }
45
+
46
+ /* Only placeholder gets filter */
47
+ .user-avatar.placeholder {
48
+ filter: var(--avatar-filter);
49
+ }
50
+ }
51
+
52
+ /* Message bubbles */
53
+ .message-content {
54
+ max-width: 80%;
55
+ font-family: var(--font-family);
56
+ user-select: text;
57
+ cursor: text;
58
+
59
+ .user {
60
+ background-color: var(--bot-message-color);
61
+ color: var(--bot-text-color);
62
+ align-self: flex-end;
63
+ border-radius: 20px;
64
+ padding: 10px 15px;
65
+ position: relative;
66
+ user-select: text;
67
+ cursor: text;
68
+ }
69
+
70
+ .assistant {
71
+ background-color: none;
72
+ color: var(--bot-text-color);
73
+ align-self: flex-start;
74
+ border-radius: 20px;
75
+ padding: 10px 15px;
76
+ position: relative;
77
+ display: flex;
78
+ flex-direction: column;
79
+
80
+ // Apply animation only to bot messages
81
+ // animation: fadeIn 0.4s ease-out forwards;
82
+
83
+ .message-footer {
84
+ width: 100%;
85
+ margin-top: 2px;
86
+ display: flex;
87
+ flex-direction: column;
88
+ align-items: flex-start;
89
+ gap: 4px;
90
+
91
+ .footer-text {
92
+ margin: 0;
93
+ font-size: 13px;
94
+ color: var(--secondary-text-color);
95
+ font-family: var(--font-family);
96
+ font-style: italic;
97
+ }
98
+
99
+ .message-actions {
100
+ display: flex;
101
+ align-items: center;
102
+ gap: 12px;
103
+ padding-top: 4px;
104
+
105
+
106
+ .action-btn {
107
+ background: transparent;
108
+ border: none;
109
+ cursor: pointer;
110
+ padding: 2px;
111
+ border-radius: 4px;
112
+ display: flex;
113
+ align-items: center;
114
+ justify-content: center;
115
+ color: var(--secondary-text-color);
116
+ transition: all 0.2s;
117
+
118
+ mat-icon {
119
+ font-size: 16px;
120
+ width: 16px;
121
+ height: 16px;
122
+ }
123
+
124
+ &:hover {
125
+ color: var(--text-color);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+
133
+ /* User Message Wrapper */
134
+ .user-message-wrapper {
135
+ display: flex;
136
+ flex-direction: column;
137
+ align-items: flex-end;
138
+ position: relative;
139
+ gap: 2px;
140
+
141
+ .action-btn.user-copy {
142
+ background: transparent;
143
+ border: none;
144
+ cursor: pointer;
145
+ padding: 4px;
146
+ border-radius: 4px;
147
+ display: flex;
148
+ align-items: center;
149
+ justify-content: center;
150
+ color: var(--secondary-text-color);
151
+ transition: all 0.2s;
152
+ opacity: 0;
153
+
154
+ mat-icon {
155
+ font-size: 14px;
156
+ width: 14px;
157
+ height: 14px;
158
+ }
159
+
160
+ &:hover {
161
+ color: var(--text-color);
162
+ background-color: rgba(var(--black-rgb), 0.05);
163
+ }
164
+ }
165
+
166
+ &:hover .action-btn.user-copy {
167
+ opacity: 1;
168
+ }
169
+
170
+ .message-content ::selection {
171
+ background-color: color-mix(in srgb, var(--primary-color), white 60%);
172
+ }
173
+
174
+ .message-content ::-moz-selection {
175
+ background-color: color-mix(in srgb, var(--primary-color), white 60%);
176
+ }
177
+ }
178
+ }
179
+
180
+ @keyframes fadeIn {
181
+ from {
182
+ opacity: 0;
183
+ transform: translateY(10px);
184
+ }
185
+
186
+ to {
187
+ opacity: 1;
188
+ transform: translateY(0);
189
+ }
190
+ }
191
+
192
+ /* Typing indicator */
193
+ .typing-indicator {
194
+ display: flex;
195
+ align-items: center;
196
+ justify-content: flex-start;
197
+ gap: 4px;
198
+ min-height: 20px;
199
+
200
+ .thinking-text {
201
+ font-size: 13px;
202
+ color: var(--secondary-text-color);
203
+ margin-right: 4px;
204
+ font-family: var(--font-family);
205
+ }
206
+ }
207
+
208
+ .typing-indicator span:not(.thinking-text) {
209
+ width: 6px;
210
+ height: 6px;
211
+ background-color: var(--typing-indicator-color);
212
+ border-radius: 50%;
213
+ animation: blink 1.4s infinite both;
214
+ }
215
+
216
+ .typing-indicator span:nth-child(2) {
217
+ animation-delay: 0.2s;
218
+ }
219
+
220
+ .typing-indicator span:nth-child(3) {
221
+ animation-delay: 0.4s;
222
+ }
223
+
224
+ @keyframes blink {
225
+
226
+ 0%,
227
+ 80%,
228
+ 100% {
229
+ opacity: 0.2;
230
+ }
231
+
232
+ 40% {
233
+ opacity: 1;
234
+ }
235
+ }
@@ -0,0 +1,194 @@
1
+ @use '@angular/material' as mat;
2
+
3
+ /* Chat container */
4
+ .doohbot-container {
5
+ position: fixed;
6
+ bottom: 20px;
7
+ right: 20px;
8
+ z-index: 1000;
9
+ }
10
+
11
+ /* Chat window */
12
+ .chat-window {
13
+ width: clamp(400px, 30vw, 450px);
14
+ height: clamp(620px, 70vh, 660px);
15
+ background-color: var(--background-color);
16
+ // background-color: var(--mat-menu-bg) !important;
17
+ border-radius: 20px;
18
+ border-color: var(--border-color);
19
+ box-shadow: var(--border-shadow-color);
20
+ display: flex;
21
+ flex-direction: column;
22
+ overflow: hidden;
23
+ animation: slide-in 0.5s ease;
24
+ position: fixed;
25
+ right: 20px;
26
+ bottom: 20px;
27
+ user-select: none;
28
+ cursor: move;
29
+ z-index: 1000;
30
+ }
31
+
32
+ .chat-window:active {
33
+ cursor: grabbing;
34
+ }
35
+
36
+ @media (max-width: 768px) {
37
+ .chat-window {
38
+ width: 95%;
39
+ height: calc(100vh - 20px);
40
+ }
41
+ }
42
+
43
+ .chat-window.layout-sidebar {
44
+ height: 100vh;
45
+ top: 0;
46
+ bottom: 0;
47
+ right: 0;
48
+ width: clamp(400px, 25vw, 450px);
49
+ border-radius: 20px 0 0 20px;
50
+ animation: slide-in-sidebar 0.4s ease-out;
51
+
52
+ &.fullscreen {
53
+ width: 100vw;
54
+ height: 100vh;
55
+ border-radius: 0;
56
+ transform: none;
57
+ top: 0;
58
+ left: 0;
59
+ }
60
+ }
61
+
62
+ @keyframes slide-in-sidebar {
63
+ from {
64
+ transform: translateX(100%);
65
+ }
66
+
67
+ to {
68
+ transform: translateX(0);
69
+ }
70
+ }
71
+
72
+ @media (max-width: 480px) {
73
+ .chat-window {
74
+ width: 90%;
75
+ height: calc(100vh - 40px);
76
+ }
77
+ }
78
+
79
+ .chat-window.fullscreen {
80
+ width: 100vw;
81
+ height: 100vh;
82
+ border-radius: 0;
83
+ position: fixed;
84
+ top: 0;
85
+ left: 0;
86
+ transform: none;
87
+ user-select: none;
88
+ // z-index: 999999 !important;
89
+ }
90
+
91
+ /* Slide-in animation */
92
+ @keyframes slide-in {
93
+ from {
94
+ transform: translateY(100%);
95
+ opacity: 0;
96
+ }
97
+
98
+ to {
99
+ transform: translateY(0);
100
+ opacity: 1;
101
+ }
102
+ }
103
+
104
+ // Chat content wrapper - main content area
105
+ .chat-content-wrapper {
106
+ flex: 1;
107
+ display: flex;
108
+ flex-direction: column;
109
+ overflow: hidden;
110
+ position: relative;
111
+
112
+ app-chat-history-sidebar {
113
+ height: 100%;
114
+ width: 100%; // Default mobile/popup behavior
115
+ display: flex;
116
+ flex-direction: column;
117
+ flex: 1;
118
+ min-height: 0;
119
+ }
120
+ }
121
+
122
+ // Fullscreen specific layout overrides
123
+ .chat-window.fullscreen {
124
+ .chat-content-wrapper {
125
+ flex-direction: row; // Side-by-side in fullscreen
126
+ }
127
+
128
+ app-chat-history-sidebar {
129
+ width: 260px; // Fixed width sidebar
130
+ flex: 0 0 260px; // Don't shrink/grow
131
+ border-right: 1px solid var(--border-color);
132
+ }
133
+
134
+ app-chat-history-sidebar.sidebar-closed {
135
+ display: none;
136
+ }
137
+
138
+ .messages-view {
139
+ app-message-input {
140
+ max-width: 800px;
141
+ margin: 0 auto;
142
+ width: 100%;
143
+ }
144
+ }
145
+ }
146
+
147
+ // Messages view
148
+ .messages-view {
149
+ display: flex;
150
+ flex-direction: column;
151
+ height: 100%;
152
+ width: 100%;
153
+
154
+ &.hidden {
155
+ display: none;
156
+ }
157
+
158
+ // Ensure message list takes available space
159
+ app-message-list,
160
+ app-login-form {
161
+ flex: 1;
162
+ min-height: 0; // Important for proper scrolling
163
+ }
164
+
165
+ // Keep snackbar and input at the bottom
166
+ app-snackbar {
167
+ flex-shrink: 0;
168
+ margin-top: auto;
169
+ }
170
+
171
+ app-message-input {
172
+ flex-shrink: 0;
173
+ }
174
+ }
175
+
176
+ // <--- Theme Selector --->
177
+
178
+ .theme-selector {
179
+ display: flex;
180
+ align-items: center;
181
+ padding: 4px 12px;
182
+ gap: 8px;
183
+ }
184
+
185
+ .theme-btn {
186
+ background: none;
187
+ border: none;
188
+ color: var(--white);
189
+ transition: color 0.2s ease;
190
+ }
191
+
192
+ .theme-btn.selected {
193
+ color: var(--primary-color);
194
+ }
@@ -0,0 +1,59 @@
1
+ /* Chat input */
2
+ :host {
3
+ display: block;
4
+ width: 100%;
5
+ }
6
+
7
+ .chat-input {
8
+ display: flex;
9
+ padding: 10px;
10
+ border-top: 1px solid var(--border-top-color);
11
+ background-color: var(--background-color);
12
+ }
13
+
14
+ .chat-input .input-wrapper {
15
+ position: relative;
16
+ flex-grow: 1;
17
+ }
18
+
19
+ .chat-input input {
20
+ width: 100%;
21
+ background-color: var(--background-color);
22
+ border: 1px solid var(--border-color);
23
+ border-radius: 16px;
24
+ padding: 10px 50px 10px 15px;
25
+ /* Extra right padding to make room for the button */
26
+ font-size: 14px;
27
+ color: var(--text-color);
28
+ caret-color: var(--hint-text-color);
29
+ font-family: var(--font-family);
30
+ box-sizing: border-box;
31
+
32
+ &::placeholder {
33
+ color: var(--hint-text-color);
34
+ }
35
+
36
+ &:focus {
37
+ border-color: var(--primary-color);
38
+ outline: none;
39
+ }
40
+ }
41
+
42
+ .chat-input button {
43
+ position: absolute;
44
+ right: 5px;
45
+ top: 50%;
46
+ transform: translateY(-50%);
47
+ background-color: transparent;
48
+ color: var(--primary-color);
49
+ border: none;
50
+ cursor: pointer;
51
+ display: flex;
52
+ justify-content: center;
53
+ align-items: center;
54
+ // z-index: 2;
55
+
56
+ .stop-icon {
57
+ color: var(--red);
58
+ }
59
+ }