@quidgest/chatbot 0.5.1 → 0.5.3

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 (70) hide show
  1. package/README.md +1 -2
  2. package/dist/components/ChatBot/types.d.ts +3 -1
  3. package/dist/components/ChatBotInput/ChatBotInput.vue.d.ts +3 -3
  4. package/dist/components/ChatBotInput/__tests__/ChatBotInput.spec.d.ts +1 -0
  5. package/dist/components/ChatBotInput/index.d.ts +2 -2
  6. package/dist/components/ChatBotInput/types.d.ts +4 -4
  7. package/dist/components/ChatBotMessage/__tests__/ChatBotMessage.spec.d.ts +1 -0
  8. package/dist/components/ChatBotMessage/__tests__/ChatBotMessageButtons.spec.d.ts +1 -0
  9. package/dist/components/ChatBotMessage/types.d.ts +3 -2
  10. package/dist/components/ChatToolBar/__tests__/ChatToolBar.spec.d.ts +1 -0
  11. package/dist/components/FieldPreview/__tests__/FieldPreview.spec.d.ts +1 -0
  12. package/dist/components/MarkdownRender/__tests__/MarkdownRender.spec.d.ts +1 -0
  13. package/dist/components/PulseDots/__tests__/PulseDots.spec.d.ts +1 -0
  14. package/dist/composables/__tests__/useChatMessages.spec.d.ts +1 -0
  15. package/dist/composables/__tests__/useSSE.spec.d.ts +1 -0
  16. package/dist/composables/useChatMessages.d.ts +2 -1
  17. package/dist/composables/useSSE.d.ts +1 -2
  18. package/dist/composables/useTexts.d.ts +2 -0
  19. package/dist/index.js +16 -16
  20. package/dist/index.mjs +2924 -1770
  21. package/dist/style.css +1 -1
  22. package/dist/test/setup.d.ts +1 -0
  23. package/dist/utils/__tests__/parseFieldValue.spec.d.ts +1 -0
  24. package/package.json +27 -5
  25. package/src/assets/styles/preview-file.scss +70 -0
  26. package/src/assets/styles/styles.scss +190 -222
  27. package/src/components/ChatBot/ChatBot.vue +345 -368
  28. package/src/components/ChatBot/types.ts +35 -33
  29. package/src/components/ChatBotInput/ChatBotInput.vue +188 -190
  30. package/src/components/ChatBotInput/__tests__/ChatBotInput.spec.ts +279 -0
  31. package/src/components/ChatBotInput/__tests__/__snapshots__/ChatBotInput.spec.ts.snap +25 -0
  32. package/src/components/ChatBotInput/index.ts +2 -2
  33. package/src/components/ChatBotInput/types.ts +25 -25
  34. package/src/components/ChatBotMessage/ChatBotMessage.vue +159 -134
  35. package/src/components/ChatBotMessage/ChatBotMessageButtons.vue +179 -164
  36. package/src/components/ChatBotMessage/__tests__/ChatBotMessage.spec.ts +256 -0
  37. package/src/components/ChatBotMessage/__tests__/ChatBotMessageButtons.spec.ts +199 -0
  38. package/src/components/ChatBotMessage/__tests__/__snapshots__/ChatBotMessage.spec.ts.snap +35 -0
  39. package/src/components/ChatBotMessage/__tests__/__snapshots__/ChatBotMessageButtons.spec.ts.snap +25 -0
  40. package/src/components/ChatBotMessage/types.ts +54 -53
  41. package/src/components/ChatToolBar/ChatToolBar.vue +68 -64
  42. package/src/components/ChatToolBar/__tests__/ChatToolBar.spec.ts +118 -0
  43. package/src/components/ChatToolBar/__tests__/__snapshots__/ChatToolBar.spec.ts.snap +11 -0
  44. package/src/components/ChatToolBar/types.ts +12 -12
  45. package/src/components/FieldPreview/FieldPreview.vue +56 -58
  46. package/src/components/FieldPreview/__tests__/FieldPreview.spec.ts +72 -0
  47. package/src/components/FieldPreview/__tests__/__snapshots__/FieldPreview.spec.ts.snap +25 -0
  48. package/src/components/FieldPreview/field-preview.scss +26 -26
  49. package/src/components/FieldPreview/types.ts +5 -5
  50. package/src/components/MarkdownRender/MarkdownRender.vue +15 -15
  51. package/src/components/MarkdownRender/__tests__/MarkdownRender.spec.ts +68 -0
  52. package/src/components/MarkdownRender/__tests__/__snapshots__/MarkdownRender.spec.ts.snap +8 -0
  53. package/src/components/MarkdownRender/markdown-render.scss +19 -20
  54. package/src/components/MarkdownRender/types.ts +3 -3
  55. package/src/components/PulseDots/PulseDots.vue +17 -17
  56. package/src/components/PulseDots/__tests__/PulseDots.spec.ts +35 -0
  57. package/src/components/PulseDots/__tests__/__snapshots__/PulseDots.spec.ts.snap +7 -0
  58. package/src/components/PulseDots/__tests__/__snapshots__/pulse-dots.spec.ts.snap +7 -0
  59. package/src/components/PulseDots/pulse-dots.scss +24 -23
  60. package/src/composables/__tests__/useChatMessages.spec.ts +51 -0
  61. package/src/composables/__tests__/useSSE.spec.ts +132 -0
  62. package/src/composables/useChatApi.ts +128 -134
  63. package/src/composables/useChatMessages.ts +46 -48
  64. package/src/composables/useSSE.ts +75 -76
  65. package/src/composables/useTexts.ts +30 -30
  66. package/src/test/setup.ts +36 -0
  67. package/src/utils/__tests__/parseFieldValue.spec.ts +27 -0
  68. package/src/utils/parseFieldValue.ts +12 -0
  69. package/src/utils/helper.ts +0 -12
  70. /package/dist/utils/{helper.d.ts → parseFieldValue.d.ts} +0 -0
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .markdown-renderer pre,.markdown-renderer code{white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;overflow-x:auto}.markdown-renderer pre{position:relative;background-color:#f5f5f5;border:1px solid #e0e0e0;border-radius:6px;padding:.75rem 1rem;font-size:.875rem}.markdown-renderer code{padding:.2rem .4rem;border-radius:4px;font-size:.875rem}.q-field-preview{position:relative;display:flex;flex-direction:column;margin:1rem .25rem}.q-field-preview__toolbar{z-index:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:.1rem .2rem}.q-field-preview__content{position:relative;background-color:#f5f5f5;border:1px solid #e0e0e0;border-radius:6px;padding:.75rem 1rem;font-size:.875rem}.q-field-preview__footer{display:flex;flex-direction:row;margin-top:.25rem}.q-field-preview:first-child{margin:0 1rem .25rem .25rem}.pulsing-dots{display:flex;align-items:center;justify-content:center;flex-direction:row;gap:.25rem}.generating-text{font-size:.9rem;color:var(--q-theme-primary)}.dots-container{display:flex;align-items:center;gap:.1rem}.dot{font-size:16px;line-height:1;animation:pulse 1s infinite;color:var(--q-theme-primary)}@keyframes pulse{0%,to{transform:scale(.8);opacity:.6}50%{transform:scale(1);opacity:1}}.q-chatbot{width:100%;display:flex;flex-direction:column;height:100%}.q-chatbot input{line-height:1.5rem}.q-chatbot .q-input-group .i-text__field{border-radius:0;flex:1}.q-chatbot__text p{margin:0}.q-chatbot__content{background-color:#fff;border:1px solid #eaebec;height:100%;width:100%;display:flex;gap:.75rem;flex-direction:column;overflow:hidden}.q-chatbot__footer-container{padding:.8rem 0 0}.q-chatbot__input-wrapper{display:flex;flex-direction:column;position:relative}.q-chatbot__image-preview{display:inline-flex;align-items:center;position:relative;margin-top:.5rem;width:fit-content}.q-chatbot__image-preview img{width:60px;height:60px;object-fit:cover;border-radius:4px;margin-right:.25rem;border:1px solid #eaebec;overflow:hidden}.q-chatbot__image-preview img:hover+.q-chatbot__remove-image,.q-chatbot__image-preview img:focus+.q-chatbot__remove-image{opacity:1;pointer-events:auto}.q-chatbot__image-preview img:focus{outline:solid rgb(var(--q-theme-info-rgb)/50%)}.q-chatbot .q-button.q-chatbot__remove-image{position:absolute;top:-5px;right:-5px;background-color:#00000080;color:#fff;border-radius:50%;padding:5px;font-size:12px;border:none;opacity:0;pointer-events:none;transition:opacity .2s ease-in-out}.q-chatbot .q-button.q-chatbot__remove-image:hover,.q-chatbot .q-button.q-chatbot__remove-image:focus{opacity:1;pointer-events:auto}.q-chatbot__send-container{padding-bottom:.25rem;display:flex;justify-content:space-between;width:100%}.q-chatbot__send-container .q-chatbot__send,.q-chatbot__send-container .q-chatbot__upload{border-radius:1rem}.q-chatbot__send-container .spacer{flex-grow:1}.q-chatbot__footer{position:sticky;padding:0 .5rem;border:1px solid #eaebec;border-radius:.25rem;bottom:0;width:100%;display:flex;flex-direction:column;gap:.25rem}.q-chatbot__footer-disabled{background-color:rgb(var(--q-theme-neutral-light-rgb)/.25);cursor:not-allowed}.q-chatbot__footer.drag-over{border:2px dashed rgb(var(--q-theme-primary-rgb)/.25);background-color:#018bd20d}.q-chatbot__footer .q-chatbot__input{min-height:50px;max-height:100px;border-bottom:1px solid #eaebec;overflow-y:auto}.q-chatbot__footer .q-text-area{max-height:100%;overflow-y:auto}.q-chatbot__footer .q-text-area .q-field__control{border:none}.q-chatbot__upload-container{display:flex;justify-content:flex-start;padding:.25rem 0}.q-chatbot__upload-container .q-chatbot__upload{border-radius:1rem}.q-chatbot__messages-container{display:flex;flex-direction:column;flex-grow:1;padding:0 1rem 2rem;gap:1.5rem;overflow-y:auto}.q-chatbot__messages-wrapper{display:flex;max-width:100%;gap:.2rem}.q-chatbot__tools{display:flex;flex-direction:row;justify-content:space-between;max-width:100%;padding:.25rem .5rem}.q-chatbot__message-wrapper{display:flex;flex-direction:column;gap:.2rem}.q-chatbot__message-container{display:flex;flex-direction:column;gap:.25rem}.q-chatbot__messages-wrapper_right{justify-content:flex-end}.q-chatbot__messages-wrapper_right .q-chatbot__message-container{align-items:flex-end}.q-chatbot__messages-wrapper_right .q-chatbot__message-wrapper{display:flex;align-items:flex-end}.q-chatbot__profile.q-icon__img{border-radius:50%;height:2rem;width:2rem}.q-chatbot__message{padding:.3rem .5rem;background-color:#eaebec;width:fit-content;min-height:2rem;white-space:normal;border-radius:0 .5rem .5rem}.q-chatbot__messages-wrapper_right .q-chatbot__message{background-color:#018bd233;border-radius:.5rem 0 .5rem .5rem;white-space:normal}.q-chatbot__sender{white-space:nowrap;color:#7c858d;font-size:.7rem}.q-chatbot__retry-button{align-items:center;display:flex}.q-chatbot__dialog-title{margin:.5rem 0}.hidden-input{display:none}
1
+ .markdown-renderer pre,.markdown-renderer code{white-space:pre-wrap;overflow-wrap:anywhere;overflow-x:auto}.markdown-renderer pre{position:relative;background-color:#f5f5f5;border:1px solid #e0e0e0;border-radius:6px;padding:.75rem 1rem;font-size:.875rem}.markdown-renderer code{padding:.2rem .4rem;border-radius:4px;font-size:.875rem}.q-field-preview{position:relative;display:flex;flex-direction:column;margin:1rem .25rem}.q-field-preview__toolbar{z-index:1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:.1rem .2rem}.q-field-preview__content{position:relative;background-color:#f5f5f5;border:1px solid #e0e0e0;border-radius:6px;padding:.75rem 1rem;font-size:.875rem}.q-field-preview__footer{display:flex;flex-direction:row;margin-top:.25rem}.q-field-preview:first-child{margin:0 1rem .25rem .25rem}.pulsing-dots{display:flex;align-items:center;justify-content:center;flex-direction:row;gap:.25rem}.generating-text{font-size:.9rem;color:var(--q-theme-primary)}.dots-container{display:flex;align-items:center;gap:.1rem}.dot{font-size:16px;line-height:1;animation:pulse 1s infinite;color:var(--q-theme-primary)}@keyframes pulse{0%,to{transform:scale(.8);opacity:.6}50%{transform:scale(1);opacity:1}}.q-chatbot__file-preview img,.q-chatbot__image-preview img{width:60px;height:60px;object-fit:cover;border-radius:4px;margin-right:.25rem;border:1px solid #eaebec;overflow:hidden}.q-chatbot__file-preview{display:inline-flex;align-items:center;position:relative;margin-top:.5rem;gap:.25rem;width:fit-content}.q-chatbot__file-preview img:focus{outline:solid rgb(var(--q-theme-info-rgb)/50%)}.q-chatbot__file-preview-container{display:flex;border-radius:.5rem;padding:.25rem .5rem;max-width:320px;align-items:center;justify-content:center;border:1px solid var(--q-theme-primary-light)}.q-chatbot__file-icon-container{display:flex;align-items:center;justify-content:center;border-radius:8px;width:36px;height:36px;flex-shrink:0;margin-right:10px;background:var(--q-theme-primary-light)}.q-chatbot__file-icon-container .q-icon{width:20px;height:20px}.q-chatbot__file-info{display:flex;flex-direction:column;overflow:hidden}.q-chatbot__file-name{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.q-chatbot__file-extension{font-size:10px}.q-chatbot{width:100%;height:100%;display:flex;flex-direction:column}.q-chatbot input{line-height:1.5rem}.q-chatbot .q-input-group .i-text__field{border-radius:0;flex:1}.q-chatbot__remove-file{position:absolute;top:-8px;right:-8px}.q-chatbot__text p{margin:0}.q-chatbot__content{background-color:#fff;border:1px solid #eaebec;height:100%;width:100%;display:flex;flex-direction:column;gap:.75rem;overflow:hidden}.q-chatbot__footer-container{padding:.8rem 0 0}.q-chatbot__input-wrapper{display:flex;flex-direction:column;position:relative}.q-chatbot .q-button.q-chatbot__remove-file{position:absolute;top:-5px;right:-5px;background-color:#00000080;color:#fff;border-radius:50%;padding:5px;font-size:10px;border:none}.q-chatbot .q-button.q-chatbot__remove-file:hover,.q-chatbot .q-button.q-chatbot__remove-file:focus{opacity:1;pointer-events:auto}.q-chatbot__send-container{padding-bottom:.25rem;display:flex;justify-content:space-between;width:100%}.q-chatbot__send-container .q-chatbot__send,.q-chatbot__send-container .q-chatbot__upload{border-radius:1rem}.q-chatbot__send-container .spacer{flex-grow:1}.q-chatbot__footer{position:sticky;padding:0 .5rem;border:1px solid #eaebec;border-radius:.25rem;bottom:0;width:100%;display:flex;flex-direction:column;gap:.25rem}.q-chatbot__footer-disabled{background-color:rgb(var(--q-theme-neutral-light-rgb)/25%);cursor:not-allowed}.q-chatbot__footer.drag-over{border:2px dashed rgb(var(--q-theme-primary-rgb)/25%);background-color:#018bd20d}.q-chatbot__footer .q-chatbot__input{min-height:50px;max-height:100px;border-bottom:1px solid #eaebec;overflow-y:auto}.q-chatbot__footer .q-text-area{max-height:100%;overflow-y:auto}.q-chatbot__footer .q-text-area .q-field__control{border:none}.q-chatbot__upload-container{display:flex;justify-content:flex-start;padding:.25rem 0}.q-chatbot__upload-container .q-chatbot__upload{border-radius:1rem}.q-chatbot__messages-container{display:flex;flex-direction:column;flex-grow:1;padding:0 1rem 2rem;gap:1.5rem;overflow-y:auto}.q-chatbot__messages-wrapper{display:flex;max-width:100%;gap:.2rem}.q-chatbot__tools{display:flex;flex-direction:row;justify-content:space-between;max-width:100%;padding:.25rem .5rem}.q-chatbot__message-wrapper{display:flex;flex-direction:column;gap:.2rem}.q-chatbot__message-container{display:flex;flex-direction:column;gap:.25rem}.q-chatbot__messages-wrapper_right{justify-content:flex-end}.q-chatbot__messages-wrapper_right .q-chatbot__message-container{align-items:flex-end}.q-chatbot__messages-wrapper_right .q-chatbot__message-wrapper{display:flex;align-items:flex-end}.q-chatbot__profile.q-icon__img{border-radius:50%;height:2rem;width:2rem}.q-chatbot__message{padding:.3rem .5rem;background-color:#eaebec;width:fit-content;min-height:2rem;white-space:normal;border-radius:0 .5rem .5rem}.q-chatbot__messages-wrapper_right .q-chatbot__message{background-color:#018bd233;border-radius:.5rem 0 .5rem .5rem;white-space:normal}.q-chatbot__sender{white-space:nowrap;color:#7c858d;font-size:.7rem}.q-chatbot__retry-button{align-items:center;display:flex}.q-chatbot__dialog-title{margin:.5rem 0}.hidden-input{display:none}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@quidgest/chatbot",
3
3
  "private": false,
4
- "version": "0.5.1",
4
+ "version": "0.5.3",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
7
7
  "main": "dist/index.cjs",
@@ -26,10 +26,13 @@
26
26
  "scripts": {
27
27
  "build": "rimraf ./dist && vite build",
28
28
  "build-types": "vue-tsc --emitDeclarationOnly --declaration -p tsconfig.json",
29
- "lint": "pnpm lint:eslint && pnpm lint:prettier",
30
- "lint:eslint": "eslint .",
31
- "lint:prettier": "prettier src --check",
32
- "lint:fix": "eslint . --fix && prettier --write --list-different src"
29
+ "format": "prettier --check --cache .",
30
+ "format:fix": "prettier --write --cache .",
31
+ "lint": "eslint --cache .",
32
+ "lint:fix": "pnpm lint --fix",
33
+ "lint:style": "stylelint \"**/*.scss\"",
34
+ "test": "vitest",
35
+ "test:coverage": "vitest run --coverage"
33
36
  },
34
37
  "dependencies": {
35
38
  "axios": "^1.9.0",
@@ -37,21 +40,40 @@
37
40
  "uuid": "^11.1.0"
38
41
  },
39
42
  "devDependencies": {
43
+ "@testing-library/user-event": "^14.6.1",
44
+ "@testing-library/vue": "^8.1.0",
40
45
  "@types/markdown-it": "^14.1.2",
41
46
  "@types/node": "^20.11.13",
42
47
  "@vitejs/plugin-vue": "^4.5.2",
48
+ "@vitest/coverage-v8": "^3.2.4",
49
+ "@vitest/eslint-plugin": "^1.3.7",
50
+ "@vue/eslint-config-prettier": "^10.2.0",
51
+ "@vue/eslint-config-typescript": "^14.6.0",
52
+ "@vue/test-utils": "^2.4.6",
43
53
  "eslint": "^9.9.0",
44
54
  "eslint-plugin-prettier": "^5.2.1",
55
+ "eslint-plugin-vue": "^10.4.0",
56
+ "happy-dom": "^18.0.1",
45
57
  "prettier": "^3.3.3",
46
58
  "rimraf": "^5.0.10",
47
59
  "sass": "^1.77.8",
60
+ "semver": "^7.7.2",
61
+ "stylelint": "^16.23.1",
62
+ "stylelint-config-standard-scss": "^15.0.1",
48
63
  "typescript": "^5.5.4",
49
64
  "vite": "^5.4.2",
50
65
  "vite-plugin-dts": "^3.9.1",
66
+ "vitest": "^3.2.4",
51
67
  "vue-tsc": "^1.8.27"
52
68
  },
53
69
  "peerDependencies": {
54
70
  "@quidgest/ui": "0.16.12",
55
71
  "vue": "3.5.17"
72
+ },
73
+ "engines": {
74
+ "node": ">=22.0.0",
75
+ "pnpm": ">=9.15.0",
76
+ "npm": "please-use-pnpm",
77
+ "yarn": "please-use-pnpm"
56
78
  }
57
79
  }
@@ -0,0 +1,70 @@
1
+ .q-chatbot__file-preview img,
2
+ .q-chatbot__image-preview img {
3
+ width: 60px;
4
+ height: 60px;
5
+ object-fit: cover;
6
+ border-radius: 4px;
7
+ margin-right: 0.25rem;
8
+ border: 1px solid #eaebec;
9
+ overflow: hidden;
10
+ }
11
+
12
+ .q-chatbot__file {
13
+ &-preview {
14
+ display: inline-flex;
15
+ align-items: center;
16
+ position: relative;
17
+ margin-top: 0.5rem;
18
+ gap: 0.25rem;
19
+ width: fit-content;
20
+
21
+ img:focus {
22
+ outline: solid rgb(var(--q-theme-info-rgb) / 50%);
23
+ }
24
+
25
+ &-container {
26
+ display: flex;
27
+ border-radius: 0.5rem;
28
+ padding: 0.25rem 0.5rem;
29
+ max-width: 320px;
30
+ align-items: center;
31
+ justify-content: center;
32
+ border: 1px solid var(--q-theme-primary-light);
33
+ }
34
+ }
35
+
36
+ &-icon-container {
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+ border-radius: 8px;
41
+ width: 36px;
42
+ height: 36px;
43
+ flex-shrink: 0;
44
+ margin-right: 10px;
45
+ background: var(--q-theme-primary-light);
46
+
47
+ .q-icon {
48
+ width: 20px;
49
+ height: 20px;
50
+ }
51
+ }
52
+
53
+ &-info {
54
+ display: flex;
55
+ flex-direction: column;
56
+ overflow: hidden;
57
+ }
58
+
59
+ &-name {
60
+ font-size: 12px;
61
+ font-weight: 600;
62
+ white-space: nowrap;
63
+ overflow: hidden;
64
+ text-overflow: ellipsis;
65
+ }
66
+
67
+ &-extension {
68
+ font-size: 10px;
69
+ }
70
+ }
@@ -1,258 +1,226 @@
1
- @import '../../components/MarkdownRender/markdown-render.scss';
2
- @import '../../components/FieldPreview/field-preview.scss';
3
- @import '../../components/PulseDots/pulse-dots.scss';
1
+ @import '../../components/MarkdownRender/markdown-render';
2
+ @import '../../components/FieldPreview/field-preview';
3
+ @import '../../components/PulseDots/pulse-dots';
4
+ @import '../styles/preview-file';
4
5
 
5
6
  .q-chatbot {
6
- width: 100%;
7
+ width: 100%;
8
+ height: 100%;
9
+ display: flex;
10
+ flex-direction: column;
11
+
12
+ input {
13
+ line-height: 1.5rem;
14
+ }
15
+
16
+ & .q-input-group .i-text__field {
17
+ border-radius: 0;
18
+ flex: 1;
19
+ }
20
+
21
+ &__remove-file {
22
+ position: absolute;
23
+ top: -8px;
24
+ right: -8px;
25
+ }
26
+
27
+ &__text {
28
+ p {
29
+ margin: 0;
30
+ }
31
+ }
32
+
33
+ &__content {
34
+ background-color: white;
35
+ border: 1px solid #eaebec;
7
36
  height: 100%;
37
+ width: 100%;
8
38
  display: flex;
9
39
  flex-direction: column;
10
- height: 100%;
11
-
12
- input {
13
- line-height: 1.5rem;
14
- }
15
-
16
- & .q-input-group .i-text__field {
17
- border-radius: 0;
18
- flex: 1;
19
- }
20
-
21
- &__text {
22
- p {
23
- margin: 0;
24
- }
25
- }
26
-
27
- &__content {
28
- background-color: white;
29
- border: 1px solid #eaebec;
30
- height: 100%;
31
- width: 100%;
32
- display: flex;
33
- flex-direction: column;
34
- gap: 0.75rem;
35
- flex-direction: column;
36
- overflow: hidden;
37
- }
38
-
39
- &__footer-container {
40
- padding: .8rem 0 0 0;
41
- }
40
+ gap: 0.75rem;
41
+ overflow: hidden;
42
+ }
42
43
 
43
- &__input-wrapper {
44
- display: flex;
45
- flex-direction: column;
46
- position: relative;
47
- }
44
+ &__footer-container {
45
+ padding: 0.8rem 0 0;
46
+ }
48
47
 
49
- &__image-preview {
50
- display: inline-flex;
51
- align-items: center;
52
- position: relative;
53
- margin-top: 0.5rem;
54
- width: fit-content;
55
-
56
- img {
57
- width: 60px;
58
- height: 60px;
59
- object-fit: cover;
60
- border-radius: 4px;
61
- margin-right: 0.25rem;
62
- border: 1px solid #eaebec;
63
- overflow: hidden;
64
-
65
- &:hover,
66
- &:focus {
67
- & + .q-chatbot__remove-image {
68
- opacity: 1;
69
- pointer-events: auto;
70
- }
71
- }
72
-
73
- &:focus {
74
- outline: solid rgb(var(--q-theme-info-rgb) / 50%);
75
- }
76
- }
77
- }
48
+ &__input-wrapper {
49
+ display: flex;
50
+ flex-direction: column;
51
+ position: relative;
52
+ }
53
+
54
+ .q-button.q-chatbot__remove-file {
55
+ position: absolute;
56
+ top: -5px;
57
+ right: -5px;
58
+ background-color: rgb(0 0 0 / 50%);
59
+ color: white;
60
+ border-radius: 50%;
61
+ padding: 5px;
62
+ font-size: 10px;
63
+ border: none;
64
+
65
+ &:hover,
66
+ &:focus {
67
+ opacity: 1;
68
+ pointer-events: auto;
69
+ }
70
+ }
71
+
72
+ &__send-container {
73
+ padding-bottom: 0.25rem;
74
+ display: flex;
75
+ justify-content: space-between;
76
+ width: 100%;
78
77
 
79
- .q-button.q-chatbot__remove-image {
80
- position: absolute;
81
- top: -5px;
82
- right: -5px;
83
- background-color: rgba(0, 0, 0, 0.5);
84
- color: white;
85
- border-radius: 50%;
86
- padding: 5px;
87
- font-size: 12px;
88
- border: none;
89
- opacity: 0;
90
- pointer-events: none;
91
- transition: opacity 0.2s ease-in-out;
92
-
93
- &:hover,
94
- &:focus {
95
- opacity: 1;
96
- pointer-events: auto;
97
- }
78
+ & .q-chatbot__send {
79
+ border-radius: 1rem;
98
80
  }
99
81
 
100
- &__send-container {
101
- padding-bottom: 0.25rem;
102
- display: flex;
103
- justify-content: space-between;
104
- width: 100%;
105
-
106
- & .q-chatbot__send {
107
- border-radius: 1rem;
108
- }
109
-
110
- & .q-chatbot__upload {
111
- border-radius: 1rem;
112
- }
113
-
114
- & .spacer {
115
- flex-grow: 1;
116
- }
82
+ & .q-chatbot__upload {
83
+ border-radius: 1rem;
117
84
  }
118
85
 
119
- &__footer {
120
- position: sticky;
121
- padding: 0 0.5rem;
122
- border: 1px solid #eaebec;
123
- border-radius: 0.25rem;
124
- bottom: 0;
125
- width: 100%;
126
- display: flex;
127
- flex-direction: column;
128
- gap: 0.25rem;
129
-
130
- &-disabled {
131
- background-color: rgb(var(--q-theme-neutral-light-rgb) / 0.25);
132
- cursor: not-allowed;
133
- }
134
-
135
- &.drag-over {
136
- border: 2px dashed rgb(var(--q-theme-primary-rgb) / 0.25);
137
- background-color: rgba(1, 139, 210, 0.05);
138
- }
139
-
140
- & .q-chatbot__input {
141
- min-height: 50px;
142
- max-height: 100px;
143
- border-bottom: 1px solid #eaebec;
144
- overflow-y: auto;
145
- }
146
-
147
- & .q-text-area {
148
- max-height: 100%;
149
- overflow-y: auto;
150
-
151
- & .q-field__control {
152
- border: none;
153
- }
154
- }
86
+ & .spacer {
87
+ flex-grow: 1;
155
88
  }
89
+ }
156
90
 
157
- &__upload-container {
158
- display: flex;
159
- justify-content: flex-start;
160
- padding: 0.25rem 0;
161
-
162
- & .q-chatbot__upload {
163
- border-radius: 1rem;
164
- }
165
- }
91
+ &__footer {
92
+ position: sticky;
93
+ padding: 0 0.5rem;
94
+ border: 1px solid #eaebec;
95
+ border-radius: 0.25rem;
96
+ bottom: 0;
97
+ width: 100%;
98
+ display: flex;
99
+ flex-direction: column;
100
+ gap: 0.25rem;
166
101
 
167
- &__messages-container {
168
- display: flex;
169
- flex-direction: column;
170
- flex-grow: 1;
171
- padding: 0 1rem 2rem 1rem;
172
- gap: 1.5rem;
173
- overflow-y: auto;
102
+ &-disabled {
103
+ background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
104
+ cursor: not-allowed;
174
105
  }
175
106
 
176
- &__messages-wrapper {
177
- display: flex;
178
- max-width: 100%;
179
- gap: 0.2rem;
180
-
181
- &_right {
182
- justify-content: flex-end;
183
- }
107
+ &.drag-over {
108
+ border: 2px dashed rgb(var(--q-theme-primary-rgb) / 25%);
109
+ background-color: rgb(1 139 210 / 5%);
184
110
  }
185
111
 
186
- &__tools {
187
- display: flex;
188
- flex-direction: row;
189
- justify-content: space-between;
190
- max-width: 100%;
191
- padding: 0.25rem 0.5rem;
112
+ & .q-chatbot__input {
113
+ min-height: 50px;
114
+ max-height: 100px;
115
+ border-bottom: 1px solid #eaebec;
116
+ overflow-y: auto;
192
117
  }
193
118
 
194
- &__message-wrapper {
195
- display: flex;
196
- flex-direction: column;
197
- gap: 0.2rem;
198
- }
119
+ & .q-text-area {
120
+ max-height: 100%;
121
+ overflow-y: auto;
199
122
 
200
- &__message-container {
201
- display: flex;
202
- flex-direction: column;
203
- gap: 0.25rem;
123
+ & .q-field__control {
124
+ border: none;
125
+ }
204
126
  }
127
+ }
205
128
 
206
- &__messages-wrapper_right {
207
- justify-content: flex-end;
208
-
209
- .q-chatbot__message-container {
210
- align-items: flex-end;
211
- }
129
+ &__upload-container {
130
+ display: flex;
131
+ justify-content: flex-start;
132
+ padding: 0.25rem 0;
212
133
 
213
- .q-chatbot__message-wrapper {
214
- display: flex;
215
- align-items: flex-end;
216
- }
134
+ & .q-chatbot__upload {
135
+ border-radius: 1rem;
217
136
  }
137
+ }
218
138
 
219
- &__profile.q-icon__img {
220
- border-radius: 50%;
221
- height: 2rem;
222
- width: 2rem;
223
- }
139
+ &__messages-container {
140
+ display: flex;
141
+ flex-direction: column;
142
+ flex-grow: 1;
143
+ padding: 0 1rem 2rem;
144
+ gap: 1.5rem;
145
+ overflow-y: auto;
146
+ }
224
147
 
225
- &__message {
226
- padding: 0.3rem 0.5rem;
227
- background-color: #eaebec;
228
- width: fit-content;
229
- min-height: 2rem;
230
- white-space: normal;
231
- border-radius: 0 0.5rem 0.5rem 0.5rem;
232
- }
148
+ &__messages-wrapper {
149
+ display: flex;
150
+ max-width: 100%;
151
+ gap: 0.2rem;
152
+ }
233
153
 
234
- &__messages-wrapper_right .q-chatbot__message {
235
- background-color: rgba(#018bd2, 20%);
236
- border-radius: 0.5rem 0 0.5rem 0.5rem;
237
- white-space: normal;
238
- }
154
+ &__tools {
155
+ display: flex;
156
+ flex-direction: row;
157
+ justify-content: space-between;
158
+ max-width: 100%;
159
+ padding: 0.25rem 0.5rem;
160
+ }
239
161
 
240
- &__sender {
241
- white-space: nowrap;
242
- color: #7c858d;
243
- font-size: 0.7rem;
244
- }
162
+ &__message-wrapper {
163
+ display: flex;
164
+ flex-direction: column;
165
+ gap: 0.2rem;
166
+ }
245
167
 
246
- &__retry-button {
247
- align-items: center;
248
- display: flex;
249
- }
168
+ &__message-container {
169
+ display: flex;
170
+ flex-direction: column;
171
+ gap: 0.25rem;
172
+ }
173
+
174
+ &__messages-wrapper_right {
175
+ justify-content: flex-end;
176
+
177
+ .q-chatbot__message-container {
178
+ align-items: flex-end;
179
+ }
180
+
181
+ .q-chatbot__message-wrapper {
182
+ display: flex;
183
+ align-items: flex-end;
184
+ }
185
+ }
186
+
187
+ &__profile.q-icon__img {
188
+ border-radius: 50%;
189
+ height: 2rem;
190
+ width: 2rem;
191
+ }
192
+
193
+ &__message {
194
+ padding: 0.3rem 0.5rem;
195
+ background-color: #eaebec;
196
+ width: fit-content;
197
+ min-height: 2rem;
198
+ white-space: normal;
199
+ border-radius: 0 0.5rem 0.5rem;
200
+ }
201
+
202
+ &__messages-wrapper_right .q-chatbot__message {
203
+ background-color: rgba(#018bd2, 20%);
204
+ border-radius: 0.5rem 0 0.5rem 0.5rem;
205
+ white-space: normal;
206
+ }
207
+
208
+ &__sender {
209
+ white-space: nowrap;
210
+ color: #7c858d;
211
+ font-size: 0.7rem;
212
+ }
213
+
214
+ &__retry-button {
215
+ align-items: center;
216
+ display: flex;
217
+ }
250
218
 
251
- &__dialog-title {
252
- margin: 0.5rem 0;
253
- }
219
+ &__dialog-title {
220
+ margin: 0.5rem 0;
221
+ }
254
222
  }
255
223
 
256
224
  .hidden-input {
257
- display: none;
225
+ display: none;
258
226
  }