@quidgest/chatbot 0.5.0 → 0.5.3-dev.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 (66) hide show
  1. package/README.md +1 -2
  2. package/dist/components/ChatBot/ChatBot.vue.d.ts +2 -0
  3. package/dist/components/ChatBot/types.d.ts +2 -1
  4. package/dist/components/ChatBotInput/ChatBotInput.vue.d.ts +2 -2
  5. package/dist/components/ChatBotInput/__tests__/ChatBotInput.spec.d.ts +1 -0
  6. package/dist/components/ChatBotMessage/ChatBotMessage.vue.d.ts +3 -1
  7. package/dist/components/ChatBotMessage/__tests__/ChatBotMessageButtons.spec.d.ts +1 -0
  8. package/dist/components/ChatToolBar/__tests__/ChatToolBar.spec.d.ts +1 -0
  9. package/dist/components/FieldPreview/FieldPreview.vue.d.ts +2 -0
  10. package/dist/components/FieldPreview/__tests__/FieldPreview.spec.d.ts +1 -0
  11. package/dist/components/MarkdownRender/__tests__/MarkdownRender.spec.d.ts +1 -0
  12. package/dist/components/PulseDots/__tests__/PulseDots.spec.d.ts +1 -0
  13. package/dist/composables/__tests__/useChatMessages.spec.d.ts +1 -0
  14. package/dist/composables/__tests__/useSSE.spec.d.ts +1 -0
  15. package/dist/composables/useChatApi.d.ts +1 -1
  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 +5 -0
  19. package/dist/index.js +25 -25
  20. package/dist/index.mjs +2317 -1810
  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 +28 -7
  25. package/src/assets/styles/styles.scss +212 -220
  26. package/src/components/ChatBot/ChatBot.vue +346 -370
  27. package/src/components/ChatBot/types.ts +34 -33
  28. package/src/components/ChatBotInput/ChatBotInput.vue +181 -190
  29. package/src/components/ChatBotInput/__tests__/ChatBotInput.spec.ts +292 -0
  30. package/src/components/ChatBotInput/__tests__/__snapshots__/ChatBotInput.spec.ts.snap +25 -0
  31. package/src/components/ChatBotInput/types.ts +24 -24
  32. package/src/components/ChatBotMessage/ChatBotMessage.vue +133 -134
  33. package/src/components/ChatBotMessage/ChatBotMessageButtons.vue +179 -164
  34. package/src/components/ChatBotMessage/__tests__/ChatBotMessageButtons.spec.ts +199 -0
  35. package/src/components/ChatBotMessage/__tests__/__snapshots__/ChatBotMessageButtons.spec.ts.snap +25 -0
  36. package/src/components/ChatBotMessage/types.ts +52 -52
  37. package/src/components/ChatToolBar/ChatToolBar.vue +69 -64
  38. package/src/components/ChatToolBar/__tests__/ChatToolBar.spec.ts +138 -0
  39. package/src/components/ChatToolBar/__tests__/__snapshots__/ChatToolBar.spec.ts.snap +11 -0
  40. package/src/components/ChatToolBar/types.ts +12 -12
  41. package/src/components/FieldPreview/FieldPreview.vue +83 -63
  42. package/src/components/FieldPreview/__tests__/FieldPreview.spec.ts +72 -0
  43. package/src/components/FieldPreview/__tests__/__snapshots__/FieldPreview.spec.ts.snap +19 -0
  44. package/src/components/FieldPreview/field-preview.scss +28 -24
  45. package/src/components/FieldPreview/types.ts +5 -5
  46. package/src/components/MarkdownRender/MarkdownRender.vue +16 -15
  47. package/src/components/MarkdownRender/__tests__/MarkdownRender.spec.ts +68 -0
  48. package/src/components/MarkdownRender/__tests__/__snapshots__/MarkdownRender.spec.ts.snap +8 -0
  49. package/src/components/MarkdownRender/markdown-render.scss +19 -20
  50. package/src/components/MarkdownRender/types.ts +3 -3
  51. package/src/components/PulseDots/PulseDots.vue +17 -17
  52. package/src/components/PulseDots/__tests__/PulseDots.spec.ts +35 -0
  53. package/src/components/PulseDots/__tests__/__snapshots__/PulseDots.spec.ts.snap +7 -0
  54. package/src/components/PulseDots/__tests__/__snapshots__/pulse-dots.spec.ts.snap +7 -0
  55. package/src/components/PulseDots/pulse-dots.scss +24 -23
  56. package/src/composables/__tests__/useChatMessages.spec.ts +64 -0
  57. package/src/composables/__tests__/useSSE.spec.ts +132 -0
  58. package/src/composables/useChatApi.ts +132 -134
  59. package/src/composables/useChatMessages.ts +50 -48
  60. package/src/composables/useSSE.ts +75 -73
  61. package/src/composables/useTexts.ts +33 -30
  62. package/src/test/setup.ts +41 -0
  63. package/src/utils/__tests__/parseFieldValue.spec.ts +27 -0
  64. package/src/utils/parseFieldValue.ts +12 -0
  65. package/src/utils/helper.ts +0 -12
  66. /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__content.preserve-whitespace{white-space:pre-wrap}.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%;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__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__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}
@@ -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.0",
4
+ "version": "0.5.3-dev.0",
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,39 @@
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
+ "stylelint": "^16.23.1",
61
+ "stylelint-config-standard-scss": "^15.0.1",
48
62
  "typescript": "^5.5.4",
49
63
  "vite": "^5.4.2",
50
64
  "vite-plugin-dts": "^3.9.1",
65
+ "vitest": "^3.2.4",
51
66
  "vue-tsc": "^1.8.27"
52
67
  },
53
68
  "peerDependencies": {
54
- "@quidgest/ui": "0.16.11",
55
- "vue": "^3.5.13"
69
+ "@quidgest/ui": "0.16.19",
70
+ "vue": "3.5.17"
71
+ },
72
+ "engines": {
73
+ "node": ">=22.0.0",
74
+ "pnpm": ">=9.15.0",
75
+ "npm": "please-use-pnpm",
76
+ "yarn": "please-use-pnpm"
56
77
  }
57
78
  }
@@ -1,258 +1,250 @@
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
4
 
5
5
  .q-chatbot {
6
- width: 100%;
7
- height: 100%;
8
- display: flex;
9
- flex-direction: column;
10
- height: 100%;
6
+ width: 100%;
7
+ height: 100%;
8
+ display: flex;
9
+ flex-direction: column;
11
10
 
12
- input {
13
- line-height: 1.5rem;
14
- }
11
+ input {
12
+ line-height: 1.5rem;
13
+ }
15
14
 
16
- & .q-input-group .i-text__field {
17
- border-radius: 0;
18
- flex: 1;
19
- }
15
+ & .q-input-group .i-text__field {
16
+ border-radius: 0;
17
+ flex: 1;
18
+ }
20
19
 
21
- &__text {
22
- p {
23
- margin: 0;
24
- }
20
+ &__text {
21
+ p {
22
+ margin: 0;
25
23
  }
24
+ }
26
25
 
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
- }
26
+ &__content {
27
+ background-color: white;
28
+ border: 1px solid #eaebec;
29
+ height: 100%;
30
+ width: 100%;
31
+ display: flex;
32
+ flex-direction: column;
33
+ gap: 0.75rem;
34
+ overflow: hidden;
35
+ }
42
36
 
43
- &__input-wrapper {
44
- display: flex;
45
- flex-direction: column;
46
- position: relative;
47
- }
37
+ &__footer-container {
38
+ padding: 0.8rem 0 0;
39
+ }
48
40
 
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
- }
41
+ &__input-wrapper {
42
+ display: flex;
43
+ flex-direction: column;
44
+ position: relative;
45
+ }
46
+
47
+ &__image-preview {
48
+ display: inline-flex;
49
+ align-items: center;
50
+ position: relative;
51
+ margin-top: 0.5rem;
52
+ width: fit-content;
53
+
54
+ img {
55
+ width: 60px;
56
+ height: 60px;
57
+ object-fit: cover;
58
+ border-radius: 4px;
59
+ margin-right: 0.25rem;
60
+ border: 1px solid #eaebec;
61
+ overflow: hidden;
62
+ }
63
+ }
64
+
65
+ &__image-preview img:hover + .q-chatbot__remove-image,
66
+ &__image-preview img:focus + .q-chatbot__remove-image {
67
+ opacity: 1;
68
+ pointer-events: auto;
69
+ }
70
+
71
+ &__image-preview img:focus {
72
+ outline: solid rgb(var(--q-theme-info-rgb) / 50%);
73
+ }
74
+
75
+ .q-button.q-chatbot__remove-image {
76
+ position: absolute;
77
+ top: -5px;
78
+ right: -5px;
79
+ background-color: rgb(0 0 0 / 50%);
80
+ color: white;
81
+ border-radius: 50%;
82
+ padding: 5px;
83
+ font-size: 12px;
84
+ border: none;
85
+ opacity: 0;
86
+ pointer-events: none;
87
+ transition: opacity 0.2s ease-in-out;
88
+
89
+ &:hover,
90
+ &:focus {
91
+ opacity: 1;
92
+ pointer-events: auto;
93
+ }
94
+ }
95
+
96
+ &__send-container {
97
+ padding-bottom: 0.25rem;
98
+ display: flex;
99
+ justify-content: space-between;
100
+ width: 100%;
78
101
 
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
- }
102
+ & .q-chatbot__send {
103
+ border-radius: 1rem;
98
104
  }
99
105
 
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
- }
106
+ & .q-chatbot__upload {
107
+ border-radius: 1rem;
117
108
  }
118
109
 
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
- }
110
+ & .spacer {
111
+ flex-grow: 1;
155
112
  }
113
+ }
156
114
 
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
- }
115
+ &__footer {
116
+ position: sticky;
117
+ padding: 0 0.5rem;
118
+ border: 1px solid #eaebec;
119
+ border-radius: 0.25rem;
120
+ bottom: 0;
121
+ width: 100%;
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: 0.25rem;
166
125
 
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;
126
+ &-disabled {
127
+ background-color: rgb(var(--q-theme-neutral-light-rgb) / 25%);
128
+ cursor: not-allowed;
174
129
  }
175
130
 
176
- &__messages-wrapper {
177
- display: flex;
178
- max-width: 100%;
179
- gap: 0.2rem;
180
-
181
- &_right {
182
- justify-content: flex-end;
183
- }
131
+ &.drag-over {
132
+ border: 2px dashed rgb(var(--q-theme-primary-rgb) / 25%);
133
+ background-color: rgb(1 139 210 / 5%);
184
134
  }
185
135
 
186
- &__tools {
187
- display: flex;
188
- flex-direction: row;
189
- justify-content: space-between;
190
- max-width: 100%;
191
- padding: 0.25rem 0.5rem;
136
+ & .q-chatbot__input {
137
+ min-height: 50px;
138
+ max-height: 100px;
139
+ border-bottom: 1px solid #eaebec;
140
+ overflow-y: auto;
192
141
  }
193
142
 
194
- &__message-wrapper {
195
- display: flex;
196
- flex-direction: column;
197
- gap: 0.2rem;
198
- }
143
+ & .q-text-area {
144
+ max-height: 100%;
145
+ overflow-y: auto;
199
146
 
200
- &__message-container {
201
- display: flex;
202
- flex-direction: column;
203
- gap: 0.25rem;
147
+ & .q-field__control {
148
+ border: none;
149
+ }
204
150
  }
151
+ }
205
152
 
206
- &__messages-wrapper_right {
207
- justify-content: flex-end;
208
-
209
- .q-chatbot__message-container {
210
- align-items: flex-end;
211
- }
153
+ &__upload-container {
154
+ display: flex;
155
+ justify-content: flex-start;
156
+ padding: 0.25rem 0;
212
157
 
213
- .q-chatbot__message-wrapper {
214
- display: flex;
215
- align-items: flex-end;
216
- }
158
+ & .q-chatbot__upload {
159
+ border-radius: 1rem;
217
160
  }
161
+ }
218
162
 
219
- &__profile.q-icon__img {
220
- border-radius: 50%;
221
- height: 2rem;
222
- width: 2rem;
223
- }
163
+ &__messages-container {
164
+ display: flex;
165
+ flex-direction: column;
166
+ flex-grow: 1;
167
+ padding: 0 1rem 2rem;
168
+ gap: 1.5rem;
169
+ overflow-y: auto;
170
+ }
224
171
 
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
- }
172
+ &__messages-wrapper {
173
+ display: flex;
174
+ max-width: 100%;
175
+ gap: 0.2rem;
176
+ }
233
177
 
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
- }
178
+ &__tools {
179
+ display: flex;
180
+ flex-direction: row;
181
+ justify-content: space-between;
182
+ max-width: 100%;
183
+ padding: 0.25rem 0.5rem;
184
+ }
239
185
 
240
- &__sender {
241
- white-space: nowrap;
242
- color: #7c858d;
243
- font-size: 0.7rem;
244
- }
186
+ &__message-wrapper {
187
+ display: flex;
188
+ flex-direction: column;
189
+ gap: 0.2rem;
190
+ }
245
191
 
246
- &__retry-button {
247
- align-items: center;
248
- display: flex;
249
- }
192
+ &__message-container {
193
+ display: flex;
194
+ flex-direction: column;
195
+ gap: 0.25rem;
196
+ }
197
+
198
+ &__messages-wrapper_right {
199
+ justify-content: flex-end;
200
+
201
+ .q-chatbot__message-container {
202
+ align-items: flex-end;
203
+ }
204
+
205
+ .q-chatbot__message-wrapper {
206
+ display: flex;
207
+ align-items: flex-end;
208
+ }
209
+ }
210
+
211
+ &__profile.q-icon__img {
212
+ border-radius: 50%;
213
+ height: 2rem;
214
+ width: 2rem;
215
+ }
216
+
217
+ &__message {
218
+ padding: 0.3rem 0.5rem;
219
+ background-color: #eaebec;
220
+ width: fit-content;
221
+ min-height: 2rem;
222
+ white-space: normal;
223
+ border-radius: 0 0.5rem 0.5rem;
224
+ }
225
+
226
+ &__messages-wrapper_right .q-chatbot__message {
227
+ background-color: rgba(#018bd2, 20%);
228
+ border-radius: 0.5rem 0 0.5rem 0.5rem;
229
+ white-space: normal;
230
+ }
231
+
232
+ &__sender {
233
+ white-space: nowrap;
234
+ color: #7c858d;
235
+ font-size: 0.7rem;
236
+ }
237
+
238
+ &__retry-button {
239
+ align-items: center;
240
+ display: flex;
241
+ }
250
242
 
251
- &__dialog-title {
252
- margin: 0.5rem 0;
253
- }
243
+ &__dialog-title {
244
+ margin: 0.5rem 0;
245
+ }
254
246
  }
255
247
 
256
248
  .hidden-input {
257
- display: none;
249
+ display: none;
258
250
  }