open-chat-studio-widget 0.4.8 → 0.5.1

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 (51) hide show
  1. package/README.md +23 -20
  2. package/dist/cjs/{index-AhSI5tER.js → index-Du0PBL6n.js} +4 -2
  3. package/dist/cjs/index-Du0PBL6n.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/open-chat-studio-widget.cjs.entry.js +1116 -301
  6. package/dist/cjs/open-chat-studio-widget.cjs.entry.js.map +1 -1
  7. package/dist/cjs/open-chat-studio-widget.cjs.js +2 -2
  8. package/dist/cjs/open-chat-studio-widget.entry.cjs.js.map +1 -1
  9. package/dist/collection/components/ocs-chat/{heroicons.js → icons.js} +23 -1
  10. package/dist/collection/components/ocs-chat/icons.js.map +1 -0
  11. package/dist/collection/components/ocs-chat/ocs-chat.css +596 -1983
  12. package/dist/collection/components/ocs-chat/ocs-chat.js +480 -273
  13. package/dist/collection/components/ocs-chat/ocs-chat.js.map +1 -1
  14. package/dist/collection/services/chat-session-service.js +145 -0
  15. package/dist/collection/services/chat-session-service.js.map +1 -0
  16. package/dist/collection/services/file-attachment-manager.js +125 -0
  17. package/dist/collection/services/file-attachment-manager.js.map +1 -0
  18. package/dist/collection/utils/cookies.js +5 -12
  19. package/dist/collection/utils/cookies.js.map +1 -1
  20. package/dist/collection/utils/markdown.js +1 -1
  21. package/dist/collection/utils/markdown.js.map +1 -1
  22. package/dist/collection/utils/translations.js +99 -0
  23. package/dist/collection/utils/translations.js.map +1 -0
  24. package/dist/components/open-chat-studio-widget.js +1122 -302
  25. package/dist/components/open-chat-studio-widget.js.map +1 -1
  26. package/dist/esm/{index-DkJ7OJTS.js → index-CX3v6rTy.js} +4 -3
  27. package/dist/esm/index-CX3v6rTy.js.map +1 -0
  28. package/dist/esm/loader.js +3 -3
  29. package/dist/esm/open-chat-studio-widget.entry.js +1116 -301
  30. package/dist/esm/open-chat-studio-widget.entry.js.map +1 -1
  31. package/dist/esm/open-chat-studio-widget.js +3 -3
  32. package/dist/open-chat-studio-widget/open-chat-studio-widget.entry.esm.js.map +1 -1
  33. package/dist/open-chat-studio-widget/open-chat-studio-widget.esm.js +1 -1
  34. package/dist/open-chat-studio-widget/p-90719a8b.entry.js +4 -0
  35. package/dist/open-chat-studio-widget/p-90719a8b.entry.js.map +1 -0
  36. package/dist/open-chat-studio-widget/p-CX3v6rTy.js +3 -0
  37. package/dist/open-chat-studio-widget/p-CX3v6rTy.js.map +1 -0
  38. package/dist/types/components/ocs-chat/{heroicons.d.ts → icons.d.ts} +19 -0
  39. package/dist/types/components/ocs-chat/ocs-chat.d.ts +52 -36
  40. package/dist/types/components.d.ts +22 -8
  41. package/dist/types/services/chat-session-service.d.ts +78 -0
  42. package/dist/types/services/file-attachment-manager.d.ts +40 -0
  43. package/dist/types/utils/translations.d.ts +23 -0
  44. package/package.json +8 -3
  45. package/dist/cjs/index-AhSI5tER.js.map +0 -1
  46. package/dist/collection/components/ocs-chat/heroicons.js.map +0 -1
  47. package/dist/esm/index-DkJ7OJTS.js.map +0 -1
  48. package/dist/open-chat-studio-widget/p-DkJ7OJTS.js +0 -3
  49. package/dist/open-chat-studio-widget/p-DkJ7OJTS.js.map +0 -1
  50. package/dist/open-chat-studio-widget/p-bde68fbd.entry.js +0 -4
  51. package/dist/open-chat-studio-widget/p-bde68fbd.entry.js.map +0 -1
@@ -1,1115 +1,6 @@
1
- *, ::before, ::after {
2
- --tw-border-spacing-x: 0;
3
- --tw-border-spacing-y: 0;
4
- --tw-translate-x: 0;
5
- --tw-translate-y: 0;
6
- --tw-rotate: 0;
7
- --tw-skew-x: 0;
8
- --tw-skew-y: 0;
9
- --tw-scale-x: 1;
10
- --tw-scale-y: 1;
11
- --tw-pan-x: ;
12
- --tw-pan-y: ;
13
- --tw-pinch-zoom: ;
14
- --tw-scroll-snap-strictness: proximity;
15
- --tw-gradient-from-position: ;
16
- --tw-gradient-via-position: ;
17
- --tw-gradient-to-position: ;
18
- --tw-ordinal: ;
19
- --tw-slashed-zero: ;
20
- --tw-numeric-figure: ;
21
- --tw-numeric-spacing: ;
22
- --tw-numeric-fraction: ;
23
- --tw-ring-inset: ;
24
- --tw-ring-offset-width: 0px;
25
- --tw-ring-offset-color: #fff;
26
- --tw-ring-color: rgb(59 130 246 / 0.5);
27
- --tw-ring-offset-shadow: 0 0 #0000;
28
- --tw-ring-shadow: 0 0 #0000;
29
- --tw-shadow: 0 0 #0000;
30
- --tw-shadow-colored: 0 0 #0000;
31
- --tw-blur: ;
32
- --tw-brightness: ;
33
- --tw-contrast: ;
34
- --tw-grayscale: ;
35
- --tw-hue-rotate: ;
36
- --tw-invert: ;
37
- --tw-saturate: ;
38
- --tw-sepia: ;
39
- --tw-drop-shadow: ;
40
- --tw-backdrop-blur: ;
41
- --tw-backdrop-brightness: ;
42
- --tw-backdrop-contrast: ;
43
- --tw-backdrop-grayscale: ;
44
- --tw-backdrop-hue-rotate: ;
45
- --tw-backdrop-invert: ;
46
- --tw-backdrop-opacity: ;
47
- --tw-backdrop-saturate: ;
48
- --tw-backdrop-sepia: ;
49
- --tw-contain-size: ;
50
- --tw-contain-layout: ;
51
- --tw-contain-paint: ;
52
- --tw-contain-style: ;
53
- }
54
-
55
- ::backdrop {
56
- --tw-border-spacing-x: 0;
57
- --tw-border-spacing-y: 0;
58
- --tw-translate-x: 0;
59
- --tw-translate-y: 0;
60
- --tw-rotate: 0;
61
- --tw-skew-x: 0;
62
- --tw-skew-y: 0;
63
- --tw-scale-x: 1;
64
- --tw-scale-y: 1;
65
- --tw-pan-x: ;
66
- --tw-pan-y: ;
67
- --tw-pinch-zoom: ;
68
- --tw-scroll-snap-strictness: proximity;
69
- --tw-gradient-from-position: ;
70
- --tw-gradient-via-position: ;
71
- --tw-gradient-to-position: ;
72
- --tw-ordinal: ;
73
- --tw-slashed-zero: ;
74
- --tw-numeric-figure: ;
75
- --tw-numeric-spacing: ;
76
- --tw-numeric-fraction: ;
77
- --tw-ring-inset: ;
78
- --tw-ring-offset-width: 0px;
79
- --tw-ring-offset-color: #fff;
80
- --tw-ring-color: rgb(59 130 246 / 0.5);
81
- --tw-ring-offset-shadow: 0 0 #0000;
82
- --tw-ring-shadow: 0 0 #0000;
83
- --tw-shadow: 0 0 #0000;
84
- --tw-shadow-colored: 0 0 #0000;
85
- --tw-blur: ;
86
- --tw-brightness: ;
87
- --tw-contrast: ;
88
- --tw-grayscale: ;
89
- --tw-hue-rotate: ;
90
- --tw-invert: ;
91
- --tw-saturate: ;
92
- --tw-sepia: ;
93
- --tw-drop-shadow: ;
94
- --tw-backdrop-blur: ;
95
- --tw-backdrop-brightness: ;
96
- --tw-backdrop-contrast: ;
97
- --tw-backdrop-grayscale: ;
98
- --tw-backdrop-hue-rotate: ;
99
- --tw-backdrop-invert: ;
100
- --tw-backdrop-opacity: ;
101
- --tw-backdrop-saturate: ;
102
- --tw-backdrop-sepia: ;
103
- --tw-contain-size: ;
104
- --tw-contain-layout: ;
105
- --tw-contain-paint: ;
106
- --tw-contain-style: ;
107
- }/*
108
- ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
109
- *//*
110
- 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
111
- 2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
112
- */
113
-
114
- *,
115
- ::before,
116
- ::after {
117
- box-sizing: border-box; /* 1 */
118
- border-width: 0; /* 2 */
119
- border-style: solid; /* 2 */
120
- border-color: #e5e7eb; /* 2 */
121
- }
122
-
123
- ::before,
124
- ::after {
125
- --tw-content: '';
126
- }
127
-
128
- /*
129
- 1. Use a consistent sensible line-height in all browsers.
130
- 2. Prevent adjustments of font size after orientation changes in iOS.
131
- 3. Use a more readable tab size.
132
- 4. Use the user's configured `sans` font-family by default.
133
- 5. Use the user's configured `sans` font-feature-settings by default.
134
- 6. Use the user's configured `sans` font-variation-settings by default.
135
- 7. Disable tap highlights on iOS
136
- */
137
-
138
- html,
139
- :host {
140
- line-height: 1.5; /* 1 */
141
- -webkit-text-size-adjust: 100%; /* 2 */
142
- -moz-tab-size: 4; /* 3 */
143
- -o-tab-size: 4;
144
- tab-size: 4; /* 3 */
145
- font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */
146
- font-feature-settings: normal; /* 5 */
147
- font-variation-settings: normal; /* 6 */
148
- -webkit-tap-highlight-color: transparent; /* 7 */
149
- }
150
-
151
- /*
152
- 1. Remove the margin in all browsers.
153
- 2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
154
- */
155
-
156
- body {
157
- margin: 0; /* 1 */
158
- line-height: inherit; /* 2 */
159
- }
160
-
161
- /*
162
- 1. Add the correct height in Firefox.
163
- 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
164
- 3. Ensure horizontal rules are visible by default.
165
- */
166
-
167
- hr {
168
- height: 0; /* 1 */
169
- color: inherit; /* 2 */
170
- border-top-width: 1px; /* 3 */
171
- }
172
-
173
- /*
174
- Add the correct text decoration in Chrome, Edge, and Safari.
175
- */
176
-
177
- abbr:where([title]) {
178
- -webkit-text-decoration: underline dotted;
179
- text-decoration: underline dotted;
180
- }
181
-
182
- /*
183
- Remove the default font size and weight for headings.
184
- */
185
-
186
- h1,
187
- h2,
188
- h3,
189
- h4,
190
- h5,
191
- h6 {
192
- font-size: inherit;
193
- font-weight: inherit;
194
- }
195
-
196
- /*
197
- Reset links to optimize for opt-in styling instead of opt-out.
198
- */
199
-
200
- a {
201
- color: inherit;
202
- text-decoration: inherit;
203
- }
204
-
205
- /*
206
- Add the correct font weight in Edge and Safari.
207
- */
208
-
209
- b,
210
- strong {
211
- font-weight: bolder;
212
- }
213
-
214
- /*
215
- 1. Use the user's configured `mono` font-family by default.
216
- 2. Use the user's configured `mono` font-feature-settings by default.
217
- 3. Use the user's configured `mono` font-variation-settings by default.
218
- 4. Correct the odd `em` font sizing in all browsers.
219
- */
220
-
221
- code,
222
- kbd,
223
- samp,
224
- pre {
225
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
226
- font-feature-settings: normal; /* 2 */
227
- font-variation-settings: normal; /* 3 */
228
- font-size: 1em; /* 4 */
229
- }
230
-
231
- /*
232
- Add the correct font size in all browsers.
233
- */
234
-
235
- small {
236
- font-size: 80%;
237
- }
238
-
239
- /*
240
- Prevent `sub` and `sup` elements from affecting the line height in all browsers.
241
- */
242
-
243
- sub,
244
- sup {
245
- font-size: 75%;
246
- line-height: 0;
247
- position: relative;
248
- vertical-align: baseline;
249
- }
250
-
251
- sub {
252
- bottom: -0.25em;
253
- }
254
-
255
- sup {
256
- top: -0.5em;
257
- }
258
-
259
- /*
260
- 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
261
- 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
262
- 3. Remove gaps between table borders by default.
263
- */
264
-
265
- table {
266
- text-indent: 0; /* 1 */
267
- border-color: inherit; /* 2 */
268
- border-collapse: collapse; /* 3 */
269
- }
270
-
271
- /*
272
- 1. Change the font styles in all browsers.
273
- 2. Remove the margin in Firefox and Safari.
274
- 3. Remove default padding in all browsers.
275
- */
276
-
277
- button,
278
- input,
279
- optgroup,
280
- select,
281
- textarea {
282
- font-family: inherit; /* 1 */
283
- font-feature-settings: inherit; /* 1 */
284
- font-variation-settings: inherit; /* 1 */
285
- font-size: 100%; /* 1 */
286
- font-weight: inherit; /* 1 */
287
- line-height: inherit; /* 1 */
288
- letter-spacing: inherit; /* 1 */
289
- color: inherit; /* 1 */
290
- margin: 0; /* 2 */
291
- padding: 0; /* 3 */
292
- }
293
-
294
- /*
295
- Remove the inheritance of text transform in Edge and Firefox.
296
- */
297
-
298
- button,
299
- select {
300
- text-transform: none;
301
- }
302
-
303
- /*
304
- 1. Correct the inability to style clickable types in iOS and Safari.
305
- 2. Remove default button styles.
306
- */
307
-
308
- button,
309
- input:where([type='button']),
310
- input:where([type='reset']),
311
- input:where([type='submit']) {
312
- -webkit-appearance: button; /* 1 */
313
- background-color: transparent; /* 2 */
314
- background-image: none; /* 2 */
315
- }
316
-
317
- /*
318
- Use the modern Firefox focus style for all focusable elements.
319
- */
320
-
321
- :-moz-focusring {
322
- outline: auto;
323
- }
324
-
325
- /*
326
- Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
327
- */
328
-
329
- :-moz-ui-invalid {
330
- box-shadow: none;
331
- }
332
-
333
- /*
334
- Add the correct vertical alignment in Chrome and Firefox.
335
- */
336
-
337
- progress {
338
- vertical-align: baseline;
339
- }
340
-
341
- /*
342
- Correct the cursor style of increment and decrement buttons in Safari.
343
- */
344
-
345
- ::-webkit-inner-spin-button,
346
- ::-webkit-outer-spin-button {
347
- height: auto;
348
- }
349
-
350
- /*
351
- 1. Correct the odd appearance in Chrome and Safari.
352
- 2. Correct the outline style in Safari.
353
- */
354
-
355
- [type='search'] {
356
- -webkit-appearance: textfield; /* 1 */
357
- outline-offset: -2px; /* 2 */
358
- }
359
-
360
- /*
361
- Remove the inner padding in Chrome and Safari on macOS.
362
- */
363
-
364
- ::-webkit-search-decoration {
365
- -webkit-appearance: none;
366
- }
367
-
368
- /*
369
- 1. Correct the inability to style clickable types in iOS and Safari.
370
- 2. Change font properties to `inherit` in Safari.
371
- */
372
-
373
- ::-webkit-file-upload-button {
374
- -webkit-appearance: button; /* 1 */
375
- font: inherit; /* 2 */
376
- }
377
-
378
- /*
379
- Add the correct display in Chrome and Safari.
380
- */
381
-
382
- summary {
383
- display: list-item;
384
- }
385
-
386
- /*
387
- Removes the default spacing and border for appropriate elements.
388
- */
389
-
390
- blockquote,
391
- dl,
392
- dd,
393
- h1,
394
- h2,
395
- h3,
396
- h4,
397
- h5,
398
- h6,
399
- hr,
400
- figure,
401
- p,
402
- pre {
403
- margin: 0;
404
- }
405
-
406
- fieldset {
407
- margin: 0;
408
- padding: 0;
409
- }
410
-
411
- legend {
412
- padding: 0;
413
- }
414
-
415
- ol,
416
- ul,
417
- menu {
418
- list-style: none;
419
- margin: 0;
420
- padding: 0;
421
- }
422
-
423
- /*
424
- Reset default styling for dialogs.
425
- */
426
- dialog {
427
- padding: 0;
428
- }
429
-
430
- /*
431
- Prevent resizing textareas horizontally by default.
432
- */
433
-
434
- textarea {
435
- resize: vertical;
436
- }
437
-
438
- /*
439
- 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
440
- 2. Set the default placeholder color to the user's configured gray 400 color.
441
- */
442
-
443
- input::-moz-placeholder, textarea::-moz-placeholder {
444
- opacity: 1; /* 1 */
445
- color: #9ca3af; /* 2 */
446
- }
447
-
448
- input::placeholder,
449
- textarea::placeholder {
450
- opacity: 1; /* 1 */
451
- color: #9ca3af; /* 2 */
452
- }
453
-
454
- /*
455
- Set the default cursor for buttons.
456
- */
457
-
458
- button,
459
- [role="button"] {
460
- cursor: pointer;
461
- }
462
-
463
- /*
464
- Make sure disabled buttons don't get the pointer cursor.
465
- */
466
- :disabled {
467
- cursor: default;
468
- }
469
-
470
- /*
471
- 1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
472
- 2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
473
- This can trigger a poorly considered lint error in some tools but is included by design.
474
- */
475
-
476
- img,
477
- svg,
478
- video,
479
- canvas,
480
- audio,
481
- iframe,
482
- embed,
483
- object {
484
- display: block; /* 1 */
485
- vertical-align: middle; /* 2 */
486
- }
487
-
488
- /*
489
- Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
490
- */
491
-
492
- img,
493
- video {
494
- max-width: 100%;
495
- height: auto;
496
- }
497
-
498
- /* Make elements with the HTML hidden attribute stay hidden by default */
499
- [hidden]:where(:not([hidden="until-found"])) {
500
- display: none;
501
- }
502
- .container {
503
- width: 100%;
504
- }
505
- @media (min-width: 640px) {
506
-
507
- .container {
508
- max-width: 640px;
509
- }
510
- }
511
- @media (min-width: 768px) {
512
-
513
- .container {
514
- max-width: 768px;
515
- }
516
- }
517
- @media (min-width: 1024px) {
518
-
519
- .container {
520
- max-width: 1024px;
521
- }
522
- }
523
- @media (min-width: 1280px) {
524
-
525
- .container {
526
- max-width: 1280px;
527
- }
528
- }
529
- @media (min-width: 1536px) {
530
-
531
- .container {
532
- max-width: 1536px;
533
- }
534
- }
535
- #ocs-chat-window {
536
- z-index: var(--chat-z-index);
537
- font-size: var(--chat-window-font-size);
538
- }
539
- .starter-question {
540
- border-radius: 0.5rem;
541
- text-align: left;
542
- transition-duration: 200ms;
543
- padding: 0.75em;
544
- background-color: var(--starter-question-bg-color);
545
- border: 1px solid var(--starter-question-border-color);
546
- color: var(--starter-question-text-color);
547
- }
548
- .starter-question:hover {
549
- background-color: var(--starter-question-bg-hover-color);
550
- border-color: var(--starter-question-border-hover-color);
551
- }
552
- .chat-btn-text,
553
- .chat-btn-icon {
554
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
555
- border-radius: 0.5rem;
556
- border-width: 0px;
557
- --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
558
- --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
559
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
560
- transition-property: all;
561
- transition-duration: 200ms;
562
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
563
- }
564
- .chat-btn-text:hover,
565
- .chat-btn-icon:hover {
566
- --tw-scale-x: 1.05;
567
- --tw-scale-y: 1.05;
568
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
569
- }
570
- .chat-btn-text,
571
- .chat-btn-icon {
572
- background-color: var(--button-background-color, white);
573
- border: 1px solid var(--button-border-color);
574
- z-index: var(--chat-z-index, 50);
575
- font-size: var(--button-font-size);
576
- padding: 0.5em;
577
- }
578
- .chat-btn-text:hover, .chat-btn-icon:hover {
579
- color: var(--button-text-color-hover, #1d4ed8);
580
- border: 1px solid var(--button-border-color-hover);
581
- }
582
- /* Button with text and icon */
583
- .chat-btn-text {
584
- display: flex;
585
- align-items: center;
586
- gap: 8px;
587
- color: var(--button-text-color, #111827);
588
- }
589
- .chat-btn-text span {
590
- white-space: nowrap;
591
- font-weight: 500;
592
- }
593
- .chat-btn-text img {
594
- flex-shrink: 0;
595
- -o-object-fit: contain;
596
- object-fit: contain;
597
- width: var(--button-icon-size);
598
- height: var(--button-icon-size);
599
- }
600
- /* Icon-only button */
601
- .chat-btn-icon {
602
- }
603
- .chat-btn-icon img {
604
- -o-object-fit: contain;
605
- object-fit: contain;
606
- width: var(--button-icon-size);
607
- height: var(--button-icon-size);
608
- }
609
- .chat-btn-text.round,
610
- .chat-btn-icon.round {
611
- border-radius: 9999px;
612
- }
613
- /* Error message styling */
614
- .error-message {
615
- padding: 0.5em;
616
- color: var(--error-text-color);
617
- }
618
- /* Chat window positioning classes */
619
- .chat-window-fullscreen {
620
- position: fixed;
621
- inset: 0px;
622
- z-index: 9999;
623
- display: flex;
624
- height: 100%;
625
- max-height: 100%;
626
- width: 100%;
627
- flex-direction: column;
628
- overflow: hidden;
629
- border-radius: 0px;
630
- border-width: 0px;
631
- --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
632
- --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
633
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
634
- transition-property: box-shadow;
635
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
636
- transition-duration: 200ms;
637
- background-color: var(--chat-window-bg-color);
638
- max-width: var(--chat-window-fullscreen-width);
639
- }
640
- .chat-window-normal {
641
- position: fixed;
642
- display: flex;
643
- height: 100vh;
644
- min-height: 300px;
645
- width: 100vw;
646
- min-width: 300px;
647
- max-width: 1024px;
648
- flex-direction: column;
649
- overflow: hidden;
650
- border-radius: 0.5rem;
651
- }
652
- @media (min-width: 640px) {
653
-
654
- .chat-window-normal {
655
- height: var(--chat-window-height);
656
- width: var(--chat-window-width);
657
- }
658
- }
659
- .chat-window-normal {
660
- background-color: var(--chat-window-bg-color);
661
- border: 1px solid var(--chat-window-border-color);
662
- }
663
- .chat-window-dragging {
664
- cursor: grabbing;
665
- --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
666
- --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);
667
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
668
- }
669
- .chat-window-normal:not(.chat-window-dragging) {
670
- --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
671
- --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
672
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
673
- transition-property: box-shadow;
674
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
675
- transition-duration: 200ms;
676
- }
677
- /* Header/drag bar classes */
678
- .chat-header {
679
- display: flex;
680
- align-items: center;
681
- justify-content: space-between;
682
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
683
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
684
- transition-duration: 150ms;
685
- padding: 0.5em;
686
- background-color: var(--header-bg-color);
687
- border-bottom: 1px solid var(--header-border-color);
688
- font-size: var(--header-font-size);
689
- }
690
- .header-text {
691
- display: flex;
692
- align-items: center;
693
- justify-content: center;
694
- font-size: var(--header-text-font-size);
695
- color: var(--header-text-color);
696
- }
697
- .chat-header:hover,
698
- .chat-header:active {
699
- background-color: var(--header-bg-hover-color);
700
- }
701
- .chat-header-draggable {
702
- cursor: grab;
703
- }
704
- .chat-header-dragging {
705
- cursor: grabbing;
706
- }
707
- .drag-indicator {
708
- display: none;
709
- }
710
- @media (min-width: 640px) {
711
-
712
- .drag-indicator {
713
- display: flex;
714
- }
715
- }
716
- .drag-dots {
717
- pointer-events: none;
718
- margin-left: 2px;
719
- display: flex;
720
- gap: 2px;
721
- }
722
- .header-buttons {
723
- display: flex;
724
- align-items: center;
725
- gap: 4px;
726
- }
727
- /* Header button classes */
728
- .header-button {
729
- border-radius: 0.375rem;
730
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
731
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
732
- transition-duration: 200ms;
733
- padding: 0.375em;
734
- color: var(--header-button-text-color);
735
- }
736
- .header-button svg {
737
- width: var(--header-button-icon-size);
738
- height: var(--header-button-icon-size);
739
- }
740
- .header-button:hover {
741
- background-color: var(--header-button-bg-hover-color);
742
- }
743
- .fullscreen-button {
744
- display: none;
745
- }
746
- @media (min-width: 640px) {
747
-
748
- .fullscreen-button {
749
- display: block;
750
- }
751
- }
752
- /* Chat content area */
753
- .chat-content {
754
- display: flex;
755
- flex-grow: 1;
756
- flex-direction: column;
757
- overflow: hidden;
758
- }
759
- /* Loading state */
760
- .loading-container {
761
- display: flex;
762
- flex-grow: 1;
763
- align-items: center;
764
- justify-content: center;
765
- }
766
- .loading-text {
767
- margin-left: 2px;
768
- color: var(--loading-text-color);
769
- }
770
- /* Messages container */
771
- .messages-container {
772
- flex-grow: 1;
773
- }
774
- .messages-container > :not([hidden]) ~ :not([hidden]) {
775
- --tw-space-y-reverse: 0;
776
- margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
777
- margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
778
- }
779
- .messages-container {
780
- overflow-y: auto;
781
- }
782
- .messages-container::-webkit-scrollbar {
783
- height: 0.375rem;
784
- width: 0.375rem;
785
- }
786
- .messages-container::-webkit-scrollbar-track {
787
- border-radius: 0.25rem;
788
- background-color: var(--scrollbar-track-color);
789
- }
790
- .messages-container::-webkit-scrollbar-thumb {
791
- border-radius: 0.25rem;
792
- background-color: var(--scrollbar-thumb-color);
793
- }
794
- .messages-container::-webkit-scrollbar-thumb:hover {
795
- background-color: var(--scrollbar-thumb-hover-color);
796
- }
797
- .messages-container {
798
- padding: 1em;
799
- }
800
- /* Message bubbles */
801
- .message-row {
802
- display: flex;
803
- }
804
- .message-row-user {
805
- justify-content: flex-end;
806
- }
807
- .message-row-assistant {
808
- justify-content: flex-start;
809
- }
810
- .message-bubble {
811
- border-radius: 0.5rem;
812
- padding: 0.5em 1em;
813
- }
814
- .message-bubble-user {
815
- background-color: var(--message-user-bg-color);
816
- color: var(--message-user-text-color);
817
- }
818
- .message-bubble-assistant {
819
- background-color: var(--message-assistant-bg-color);
820
- color: var(--message-assistant-text-color);
821
- }
822
- .message-bubble-system {
823
- background-color: var(--message-system-bg-color);
824
- color: var(--message-system-text-color);
825
- }
826
- .message-timestamp {
827
- margin-top: 4px;
828
- opacity: 0.7;
829
- font-size: var(--chat-window-font-size-sm);
830
- }
831
- .message-attachments {
832
- margin-top: 8px;
833
- }
834
- .message-attachments > :not([hidden]) ~ :not([hidden]) {
835
- --tw-space-y-reverse: 0;
836
- margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
837
- margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
838
- }
839
- /* Welcome messages */
840
- .welcome-messages > :not([hidden]) ~ :not([hidden]) {
841
- --tw-space-y-reverse: 0;
842
- margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
843
- margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
844
- }
845
- /* Typing indicator */
846
- .typing-indicator {
847
- height: 0.375rem;
848
- width: 100%;
849
- overflow: hidden;
850
- }
851
- .typing-progress {
852
- height: 100%;
853
- width: 100%;
854
- transform-origin: 0% 50%;
855
- }
856
- @keyframes progress {
857
-
858
- 0% {
859
- transform: translateX(0) scaleX(0);
860
- }
861
-
862
- 10% {
863
- transform: translateX(0) scaleX(0.3);
864
- }
865
-
866
- 50% {
867
- transform: translateX(100%) scaleX(0.3);
868
- }
869
-
870
- 90% {
871
- transform: translateX(0) scaleX(0.3);
872
- }
873
-
874
- 100% {
875
- transform: translateX(0) scaleX(0);
876
- }
877
- }
878
- .typing-progress {
879
- animation: progress 3s infinite linear;
880
- border-radius: 0.5rem;
881
- background-color: var(--typing-progress-bg-color);
882
- }
883
- .typing-text {
884
- width: 100%;
885
- justify-content: center;
886
- opacity: 0.7;
887
- font-size: var(--chat-window-font-size-sm);
888
- }
889
- @keyframes dots {
890
-
891
- 0%, 20% {
892
- color: rgba(0,0,0,0);
893
- text-shadow: .25em 0 0 rgba(0,0,0,0), .5em 0 0 rgba(0,0,0,0);
894
- }
895
-
896
- 40% {
897
- color: black;
898
- text-shadow: .25em 0 0 rgba(0,0,0,0), .5em 0 0 rgba(0,0,0,0);
899
- }
900
-
901
- 60% {
902
- text-shadow: .25em 0 0 black, .5em 0 0 rgba(0,0,0,0);
903
- }
904
-
905
- 80%, 100% {
906
- text-shadow: .25em 0 0 black, .5em 0 0 black;
907
- }
908
- }
909
- .typing-dots {
910
- animation: dots 1s steps(5, end) infinite;
911
- }
912
- .typing-dots:after {
913
- content: ' .';
914
- }
915
- /* Starter questions */
916
- .starter-questions > :not([hidden]) ~ :not([hidden]) {
917
- --tw-space-y-reverse: 0;
918
- margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
919
- margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
920
- }
921
- .starter-questions {
922
- padding: 1em;
923
- }
924
- .starter-question-row {
925
- display: flex;
926
- justify-content: flex-end;
927
- }
928
- /* Input area */
929
- .input-area {
930
- padding: 1em 1em 0 1em;
931
- background-color: var(--input-bg-color);
932
- border-top: 1px solid var(--input-border-color);
933
- }
934
- .input-container {
935
- display: flex;
936
- gap: 8px;
937
- }
938
- .message-textarea {
939
- flex-grow: 1;
940
- resize: none;
941
- border-radius: 0.375rem;
942
- border-width: 1px;
943
- --tw-border-opacity: 1;
944
- border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
945
- }
946
- .message-textarea:focus {
947
- outline-color: #93c5fd;
948
- }
949
- .message-textarea {
950
- background-color: var(--input-bg-color);
951
- padding: 0.5em 0.75em;
952
- color: var(--input-text-color);
953
- border: 1px solid var(--input-border-color);
954
- }
955
- .message-textarea:focus {
956
- outline-color: var(--input-outline-focus-color);
957
- }
958
- .send-button {
959
- border-radius: 0.375rem;
960
- font-weight: 500;
961
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
962
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
963
- transition-duration: 200ms;
964
- padding: 0.5em 1em;
965
- }
966
- .send-button-enabled {
967
- background-color: var(--send-button-bg-color);
968
- color: var(--send-button-text-color);
969
- }
970
- .send-button-enabled:hover {
971
- background-color: var(--send-button-bg-hover-color);
972
- }
973
- .send-button-disabled {
974
- cursor: not-allowed;
975
- background-color: var(--send-button-bg-disabled-color);
976
- color: var(--send-button-text-disabled-color);
977
- }
978
- /* Confirmation dialog */
979
- .confirmation-overlay {
980
- position: fixed;
981
- inset: 0px;
982
- display: flex;
983
- align-items: center;
984
- justify-content: center;
985
- background-color: var(--confirmation-overlay-bg-color);
986
- z-index: 9999;
987
- }
988
- .confirmation-dialog {
989
- margin-left: 1rem;
990
- margin-right: 1rem;
991
- width: 100%;
992
- max-width: 24rem;
993
- background-color: var(--confirmation-dialog-bg-color);
994
- border: 1px solid var(--confirmation-dialog-border-color);
995
- border-radius: 0.75em;
996
- box-shadow: 0 0.625em 1.5625em var(--confirmation-dialog-shadow-color);
997
- }
998
- .confirmation-content {
999
- padding: 1.5em;
1000
- }
1001
- .confirmation-title {
1002
- margin-bottom: 0.5rem;
1003
- font-weight: 600;
1004
- color: var(--confirmation-title-color);
1005
- font-size: var(--confirmation-title-font-size);
1006
- }
1007
- .confirmation-message {
1008
- margin-bottom: 1rem;
1009
- color: var(--confirmation-message-color);
1010
- font-size: var(--confirmation-message-font-size);
1011
- }
1012
- .confirmation-buttons {
1013
- display: flex;
1014
- justify-content: flex-end;
1015
- gap: 0.75em;
1016
- }
1017
- .confirmation-button {
1018
- border-radius: 0.375rem;
1019
- font-weight: 500;
1020
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
1021
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
1022
- transition-duration: 200ms;
1023
- padding: 0.5em 1em;
1024
- }
1025
- .confirmation-button-cancel {
1026
- background-color: var(--confirmation-button-cancel-bg-color);
1027
- color: var(--confirmation-button-cancel-text-color);
1028
- }
1029
- .confirmation-button-cancel:hover {
1030
- background-color: var(--confirmation-button-cancel-bg-hover-color);
1031
- }
1032
- .confirmation-button-confirm {
1033
- background-color: var(--confirmation-button-confirm-bg-color);
1034
- color: var(--confirmation-button-confirm-text-color);
1035
- }
1036
- .confirmation-button-confirm:hover {
1037
- background-color: var(--confirmation-button-confirm-bg-hover-color);
1038
- }
1039
- .\!visible {
1040
- visibility: visible !important;
1041
- }
1042
- .visible {
1043
- visibility: visible;
1044
- }
1045
- .static {
1046
- position: static;
1047
- }
1048
- .relative {
1049
- position: relative;
1050
- }
1051
- .flex {
1052
- display: flex;
1053
- }
1054
- .table {
1055
- display: table;
1056
- }
1057
- .hidden {
1058
- display: none;
1059
- }
1060
- .w-full {
1061
- width: 100%;
1062
- }
1063
- .transform {
1064
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1065
- }
1066
- .resize {
1067
- resize: both;
1068
- }
1069
- .items-center {
1070
- align-items: center;
1071
- }
1072
- .justify-center {
1073
- justify-content: center;
1074
- }
1075
- .gap-\[0\.5em\] {
1076
- gap: 0.5em;
1077
- }
1078
- .space-y-\[0\.25em\] > :not([hidden]) ~ :not([hidden]) {
1079
- --tw-space-y-reverse: 0;
1080
- margin-top: calc(0.25em * calc(1 - var(--tw-space-y-reverse)));
1081
- margin-bottom: calc(0.25em * var(--tw-space-y-reverse));
1082
- }
1083
- .border {
1084
- border-width: 1px;
1085
- }
1086
- .py-\[2px\] {
1087
- padding-top: 2px;
1088
- padding-bottom: 2px;
1089
- }
1090
- .text-\[0\.8em\] {
1091
- font-size: 0.8em;
1092
- }
1093
- .font-light {
1094
- font-weight: 300;
1095
- }
1096
- .text-slate-500 {
1097
- --tw-text-opacity: 1;
1098
- color: rgb(100 116 139 / var(--tw-text-opacity, 1));
1099
- }
1100
- .underline {
1101
- text-decoration-line: underline;
1102
- }
1103
- .shadow {
1104
- --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
1105
- --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
1106
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1107
- }
1108
- .filter {
1109
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
1110
- }
1111
- :host {
1112
- /**
1
+ @layer utilities {
2
+ :host {
3
+ /**
1113
4
  * @prop --chat-z-index: Z-index for chat widget (50)
1114
5
  *
1115
6
  * @prop --button-background-color: Button background color (#ffffff)
@@ -1226,870 +117,598 @@ video {
1226
117
  *
1227
118
  * @prop --message-attachment-icon-size: Message attachment icon size (1em)
1228
119
  */
1229
- /* Global variables */
1230
- --chat-z-index: 50;
1231
-
1232
- /* Button variables */
1233
- --button-background-color: #ffffff;
1234
- --button-background-color-hover: #f3f4f6;
1235
- --button-text-color: #111827;
1236
- --button-text-color-hover: #1d4ed8;
1237
- --button-border-color: #d1d5db;
1238
- --button-border-color-hover: #6b7280;
1239
- --button-font-size: 1em; /* text-sm */
1240
- --button-icon-size: 1.5em;
1241
-
1242
- /* Chat window variables */
1243
- --chat-window-height: 60%;
1244
- --chat-window-width: 25%;
1245
- --chat-window-fullscreen-width: 80%;
1246
- --chat-window-bg-color: #ffffff;
1247
- --chat-window-border-color: #d1d5db;
1248
- --chat-window-shadow-color: rgba(0, 0, 0, 0.1);
1249
- --chat-window-font-size: 0.875em; /* text-sm */
1250
- --chat-window-font-size-sm: 0.75em; /* text-xs */
1251
-
1252
- /* Header variables */
1253
- --header-bg-color: transparent;
1254
- --header-bg-hover-color: #f9fafb;
1255
- --header-border-color: #f3f4f6;
1256
- --header-button-text-color: #6b7280;
1257
- --header-button-bg-hover-color: #f3f4f6;
1258
- --header-font-size: 1em;
1259
- --header-text-font-size: 1em;
1260
- --header-text-color: #525762;
1261
- --header-button-icon-size: 1.5em;
1262
-
1263
- /* Starter question variables */
1264
- --starter-question-bg-color: transparent;
1265
- --starter-question-bg-hover-color: #eff6ff;
1266
- --starter-question-text-color: #3b82f6;
1267
- --starter-question-border-color: #3b82f6;
1268
- --starter-question-border-hover-color: #2563eb;
1269
-
1270
- /* Message bubble variables */
1271
- --message-user-bg-color: #e4edfb;
1272
- --message-user-text-color: #1f2937;
1273
- --message-user-link-color: #155dfc;
1274
-
1275
- --message-assistant-bg-color: #eae7e8;
1276
- --message-assistant-text-color: var(--message-user-text-color);
1277
- --message-assistant-link-color: var(--message-user-link-color);
1278
-
1279
- --message-system-bg-color: #fbe4f8;
1280
- --message-system-text-color: var(--message-user-text-color);
1281
- --message-system-link-color: var(--message-user-link-color);
1282
-
1283
- --message-timestamp-color: rgba(255, 255, 255, 0.7);
1284
- --message-timestamp-assistant-color: rgba(75, 85, 99, 0.7);
1285
-
1286
- /* Input area variables */
1287
- --input-bg-color: transparent;
1288
- --input-border-color: #d1d5db;
1289
- --input-text-color: #111827;
1290
- --input-placeholder-color: #6b7280;
1291
- --input-outline-focus-color: #3b82f6;
1292
-
1293
- /* Send button variables */
1294
- --send-button-bg-color: #3b82f6;
1295
- --send-button-bg-hover-color: #2563eb;
1296
- --send-button-text-color: #ffffff;
1297
- --send-button-bg-disabled-color: #d1d5db;
1298
- --send-button-text-disabled-color: #6b7280;
1299
-
1300
- /* Loading variables */
1301
- --loading-text-color: #6b7280;
1302
- --loading-spinner-track-color: #e5e7eb;
1303
- --loading-spinner-fill-color: #3b82f6;
1304
- --loading-spinner-size: 1.25em;
1305
-
1306
- /* Typing indicator variables */
1307
- --typing-progress-bg-color: #ade3ff;
1308
-
1309
- /* Scrollbar variables */
1310
- --scrollbar-track-color: #f3f4f6;
1311
- --scrollbar-thumb-color: #d1d5db;
1312
- --scrollbar-thumb-hover-color: #9ca3af;
1313
-
1314
- /* Error variables */
1315
- --error-text-color: #ef4444;
1316
- --success-text-color: #10b981; /* Complementary green to existing blue palette */;
1317
-
1318
- /* Markdown code variables */
1319
- --code-bg-user-color: color-mix(in srgb, var(--message-user-bg-color) 80%, white 20%);
1320
- --code-text-user-color: var(--message-user-text-color);
1321
- --code-border-user-color: color-mix(in srgb, var(--message-user-bg-color) 90%, black 10%);
1322
- --code-bg-assistant-color: color-mix(in srgb, var(--message-assistant-bg-color) 50%, white 50%);
1323
- --code-text-assistant-color: var(--message-assistant-text-color);
1324
- --code-border-assistant-color: color-mix(in srgb, var(--message-assistant-bg-color) 90%, black 10%);;
1325
-
1326
- --confirmation-overlay-bg-color: rgba(0, 0, 0, 0.5);
1327
- --confirmation-dialog-bg-color: var(--chat-window-bg-color);
1328
- --confirmation-dialog-border-color: var(--chat-window-border-color);
1329
- --confirmation-dialog-shadow-color: var(--chat-window-shadow-color);
1330
- --confirmation-title-color: #111827;
1331
- --confirmation-title-font-size: 1.125em;
1332
- --confirmation-message-color: var(--loading-text-color);
1333
- --confirmation-message-font-size: 1em;
1334
- --confirmation-button-cancel-bg-color: var(--button-background-color-hover);
1335
- --confirmation-button-cancel-bg-hover-color: #e5e7eb;
1336
- --confirmation-button-cancel-text-color: var(--header-button-text-color);
1337
- --confirmation-button-confirm-bg-color: var(--error-text-color);
1338
- --confirmation-button-confirm-bg-hover-color: var(--error-text-color);
1339
- --confirmation-button-confirm-text-color: var(--send-button-text-color);
1340
-
1341
- /* File upload variables */
1342
- --file-attachment-button-bg-color: transparent;
1343
- --file-attachment-button-bg-hover-color: var(--header-button-bg-hover-color); /* #f3f4f6 */
1344
- --file-attachment-button-text-color: var(--header-button-text-color); /* #6b7280 */
1345
- --file-attachment-button-text-disabled-color: var(--send-button-text-disabled-color); /* #6b7280 */
1346
-
1347
- /* Selected files variables */
1348
- --selected-files-bg-color: var(--chat-window-bg-color); /* transparent */
1349
- --selected-files-border-color: var(--header-border-color); /* #f3f4f6 */
1350
-
1351
- /* Selected file item variables */
1352
- --selected-file-bg-color: var(--message-system-bg-color); /* #f3f4f6 */
1353
-
1354
- /* Selected file text variables */
1355
- --selected-file-font-size: var(--chat-window-font-size-sm);
1356
- --selected-file-name-color: var(--message-assistant-text-color); /* #1f2937 */
1357
- --selected-file-size-color: var(--input-placeholder-color); /* #6b7280 */
1358
-
1359
- /* Selected file icon variables */
1360
- --selected-file-icon-size: 1.25em;
1361
- --selected-file-remove-icon-color: var(--error-text-color); /* #ef4444 */
1362
- --selected-file-remove-icon-hover-color: #dc2626; /* Darker red for hover */
1363
-
1364
- /* Message attachment variables */
1365
- --message-attachment-icon-size: 1em;
1366
-
1367
- display: block;
1368
- position: fixed;
1369
- right: 30px;
1370
- bottom: 30px;
120
+ /* Global variables */
121
+ --chat-z-index: 50;
122
+
123
+ /* Button variables */
124
+ --button-background-color: #ffffff;
125
+ --button-background-color-hover: #f3f4f6;
126
+ --button-text-color: #111827;
127
+ --button-text-color-hover: #1d4ed8;
128
+ --button-border-color: #d1d5db;
129
+ --button-border-color-hover: #6b7280;
130
+ --button-font-size: 1em; /* text-sm */
131
+ --button-icon-size: 1.5em;
132
+
133
+ /* Chat window variables */
134
+ --chat-window-height: 60%;
135
+ --chat-window-width: 25%;
136
+ --chat-window-fullscreen-width: 80%;
137
+ --chat-window-bg-color: #ffffff;
138
+ --chat-window-border-color: #d1d5db;
139
+ --chat-window-shadow-color: rgba(0, 0, 0, 0.1);
140
+ --chat-window-font-size: 0.875em; /* text-sm */
141
+ --chat-window-font-size-sm: 0.75em; /* text-xs */
142
+
143
+ /* Header variables */
144
+ --header-bg-color: transparent;
145
+ --header-bg-hover-color: #f9fafb;
146
+ --header-border-color: #f3f4f6;
147
+ --header-button-text-color: #6b7280;
148
+ --header-button-bg-hover-color: #f3f4f6;
149
+ --header-font-size: 1em;
150
+ --header-text-font-size: 1em;
151
+ --header-text-color: #525762;
152
+ --header-button-icon-size: 1.5em;
153
+
154
+ /* Starter question variables */
155
+ --starter-question-bg-color: transparent;
156
+ --starter-question-bg-hover-color: #eff6ff;
157
+ --starter-question-text-color: #3b82f6;
158
+ --starter-question-border-color: #3b82f6;
159
+ --starter-question-border-hover-color: #2563eb;
160
+
161
+ /* Message bubble variables */
162
+ --message-user-bg-color: #e4edfb;
163
+ --message-user-text-color: #1f2937;
164
+ --message-user-link-color: #155dfc;
165
+
166
+ --message-assistant-bg-color: #eae7e8;
167
+ --message-assistant-text-color: var(--message-user-text-color);
168
+ --message-assistant-link-color: var(--message-user-link-color);
169
+
170
+ --message-system-bg-color: #fbe4f8;
171
+ --message-system-text-color: var(--message-user-text-color);
172
+ --message-system-link-color: var(--message-user-link-color);
173
+
174
+ --message-timestamp-color: rgba(255, 255, 255, 0.7);
175
+ --message-timestamp-assistant-color: rgba(75, 85, 99, 0.7);
176
+
177
+ /* Input area variables */
178
+ --input-bg-color: transparent;
179
+ --input-border-color: #d1d5db;
180
+ --input-text-color: #111827;
181
+ --input-placeholder-color: #6b7280;
182
+ --input-outline-focus-color: #3b82f6;
183
+
184
+ /* Send button variables */
185
+ --send-button-bg-color: #3b82f6;
186
+ --send-button-bg-hover-color: #2563eb;
187
+ --send-button-text-color: #ffffff;
188
+ --send-button-bg-disabled-color: #d1d5db;
189
+ --send-button-text-disabled-color: #6b7280;
190
+
191
+ /* Loading variables */
192
+ --loading-text-color: #6b7280;
193
+ --loading-spinner-track-color: #e5e7eb;
194
+ --loading-spinner-fill-color: #3b82f6;
195
+ --loading-spinner-size: 1.25em;
196
+
197
+ /* Typing indicator variables */
198
+ --typing-progress-bg-color: #ade3ff;
199
+
200
+ /* Scrollbar variables */
201
+ --scrollbar-track-color: #f3f4f6;
202
+ --scrollbar-thumb-color: #d1d5db;
203
+ --scrollbar-thumb-hover-color: #9ca3af;
204
+
205
+ /* Error variables */
206
+ --error-text-color: #ef4444;
207
+ --success-text-color: #10b981; /* Complementary green to existing blue palette */
208
+
209
+ /* Markdown code variables */
210
+ --code-bg-user-color: color-mix(
211
+ in srgb,
212
+ var(--message-user-bg-color) 80%,
213
+ white 20%
214
+ );
215
+ --code-text-user-color: var(--message-user-text-color);
216
+ --code-border-user-color: color-mix(
217
+ in srgb,
218
+ var(--message-user-bg-color) 90%,
219
+ black 10%
220
+ );
221
+ --code-bg-assistant-color: color-mix(
222
+ in srgb,
223
+ var(--message-assistant-bg-color) 50%,
224
+ white 50%
225
+ );
226
+ --code-text-assistant-color: var(--message-assistant-text-color);
227
+ --code-border-assistant-color: color-mix(
228
+ in srgb,
229
+ var(--message-assistant-bg-color) 90%,
230
+ black 10%
231
+ );
232
+
233
+ --confirmation-overlay-bg-color: rgba(0, 0, 0, 0.5);
234
+ --confirmation-dialog-bg-color: var(--chat-window-bg-color);
235
+ --confirmation-dialog-border-color: var(--chat-window-border-color);
236
+ --confirmation-dialog-shadow-color: var(--chat-window-shadow-color);
237
+ --confirmation-title-color: #111827;
238
+ --confirmation-title-font-size: 1.125em;
239
+ --confirmation-message-color: var(--loading-text-color);
240
+ --confirmation-message-font-size: 1em;
241
+ --confirmation-button-cancel-bg-color: var(--button-background-color-hover);
242
+ --confirmation-button-cancel-bg-hover-color: #e5e7eb;
243
+ --confirmation-button-cancel-text-color: var(--header-button-text-color);
244
+ --confirmation-button-confirm-bg-color: var(--error-text-color);
245
+ --confirmation-button-confirm-bg-hover-color: var(--error-text-color);
246
+ --confirmation-button-confirm-text-color: var(--send-button-text-color);
247
+
248
+ /* File upload variables */
249
+ --file-attachment-button-bg-color: transparent;
250
+ --file-attachment-button-bg-hover-color: var(
251
+ --header-button-bg-hover-color
252
+ ); /* #f3f4f6 */
253
+ --file-attachment-button-text-color: var(
254
+ --header-button-text-color
255
+ ); /* #6b7280 */
256
+ --file-attachment-button-text-disabled-color: var(
257
+ --send-button-text-disabled-color
258
+ ); /* #6b7280 */
259
+
260
+ /* Selected files variables */
261
+ --selected-files-bg-color: var(--chat-window-bg-color); /* transparent */
262
+ --selected-files-border-color: var(--header-border-color); /* #f3f4f6 */
263
+
264
+ /* Selected file item variables */
265
+ --selected-file-bg-color: var(--message-system-bg-color); /* #f3f4f6 */
266
+
267
+ /* Selected file text variables */
268
+ --selected-file-font-size: var(--chat-window-font-size-sm);
269
+ --selected-file-name-color: var(
270
+ --message-assistant-text-color
271
+ ); /* #1f2937 */
272
+ --selected-file-size-color: var(--input-placeholder-color); /* #6b7280 */
273
+
274
+ /* Selected file icon variables */
275
+ --selected-file-icon-size: 1.25em;
276
+ --selected-file-remove-icon-color: var(--error-text-color); /* #ef4444 */
277
+ --selected-file-remove-icon-hover-color: #dc2626; /* Darker red for hover */
278
+
279
+ /* Message attachment variables */
280
+ --message-attachment-icon-size: 1em;
281
+
282
+ display: block;
283
+ position: fixed;
284
+ right: 30px;
285
+ bottom: 30px;
286
+ }
287
+ }
288
+
289
+ @layer components {
290
+ #ocs-chat-window {
291
+ z-index: var(--chat-z-index);
292
+ font-size: var(--chat-window-font-size);
293
+ }
294
+
295
+ .starter-question {
296
+ @apply text-left rounded-lg duration-200;
297
+ padding: 0.75em;
298
+ background-color: var(--starter-question-bg-color);
299
+ border: 1px solid var(--starter-question-border-color);
300
+ color: var(--starter-question-text-color);
301
+
302
+ &:hover {
303
+ background-color: var(--starter-question-bg-hover-color);
304
+ border-color: var(--starter-question-border-hover-color);
305
+ }
306
+ }
307
+
308
+ .chat-btn-text {
309
+ @apply shadow-lg border-0 transition-all duration-200 ease-in-out transform hover:scale-105 rounded-lg;
310
+ background-color: var(--button-background-color, white);
311
+ border: 1px solid var(--button-border-color);
312
+ z-index: var(--chat-z-index, 50);
313
+ font-size: var(--button-font-size);
314
+ padding: 0.5em;
315
+
316
+ &:hover {
317
+ color: var(--button-text-color-hover, #1d4ed8);
318
+ border: 1px solid var(--button-border-color-hover);
319
+ }
320
+
321
+ /* Button with text and icon */
322
+ @apply flex gap-[8px] items-center;
323
+ color: var(--button-text-color, #111827);
324
+
325
+ & span {
326
+ @apply font-medium whitespace-nowrap;
327
+ }
328
+
329
+ & img {
330
+ @apply object-contain flex-shrink-0;
331
+ width: var(--button-icon-size);
332
+ height: var(--button-icon-size);
333
+ }
334
+
335
+ &.round {
336
+ @apply rounded-full;
337
+ }
338
+ }
339
+
340
+ .chat-btn-icon {
341
+ @apply shadow-lg border-0 transition-all duration-200 ease-in-out transform hover:scale-105 rounded-lg;
342
+ background-color: var(--button-background-color, white);
343
+ border: 1px solid var(--button-border-color);
344
+ z-index: var(--chat-z-index, 50);
345
+ font-size: var(--button-font-size);
346
+ padding: 0.5em;
347
+
348
+ &:hover {
349
+ color: var(--button-text-color-hover, #1d4ed8);
350
+ border: 1px solid var(--button-border-color-hover);
351
+ }
352
+
353
+ /* Icon-only button */
354
+
355
+ & img {
356
+ @apply object-contain;
357
+ width: var(--button-icon-size);
358
+ height: var(--button-icon-size);
359
+ }
360
+
361
+ &.round {
362
+ @apply rounded-full;
363
+ }
364
+ }
365
+
366
+ .round {
367
+ &.chat-btn-text {
368
+ @apply rounded-full;
369
+ }
370
+
371
+ & .chat-btn-icon {
372
+ @apply rounded-full;
373
+ }
374
+ }
375
+
376
+ .error-message {
377
+ /* Error message styling */
378
+ padding: 0.5em;
379
+ color: var(--error-text-color);
380
+ }
381
+
382
+ .chat-window-fullscreen {
383
+ /* Chat window positioning classes */
384
+ @apply fixed inset-0 w-full h-full max-h-full border-0 shadow-lg transition-shadow duration-200 rounded-none overflow-hidden flex flex-col z-9999;
385
+ background-color: var(--chat-window-bg-color);
386
+ max-width: var(--chat-window-fullscreen-width);
387
+ }
388
+
389
+ .chat-window-normal {
390
+ @apply fixed w-screen h-screen min-h-[300px] min-w-[300px] sm:w-(--chat-window-width) sm:h-(--chat-window-height) max-w-(--breakpoint-lg) rounded-lg overflow-hidden flex flex-col;
391
+ background-color: var(--chat-window-bg-color);
392
+ border: 1px solid var(--chat-window-border-color);
393
+
394
+ &:not(.chat-window-dragging) {
395
+ @apply shadow-lg transition-shadow duration-200;
396
+ }
397
+ }
398
+
399
+ .chat-window-dragging {
400
+ @apply shadow-2xl cursor-grabbing;
401
+ }
402
+
403
+ .chat-header {
404
+ /* Header/drag bar classes */
405
+ @apply flex justify-between items-center transition-colors duration-150;
406
+ padding: 0.5em;
407
+ background-color: var(--header-bg-color);
408
+ border-bottom: 1px solid var(--header-border-color);
409
+ font-size: var(--header-font-size);
410
+
411
+ &:hover {
412
+ background-color: var(--header-bg-hover-color);
413
+ }
414
+
415
+ &:active {
416
+ background-color: var(--header-bg-hover-color);
417
+ }
418
+ }
419
+
420
+ .header-text {
421
+ @apply flex items-center justify-center;
422
+ font-size: var(--header-text-font-size);
423
+ color: var(--header-text-color);
424
+ }
425
+
426
+ .chat-header-draggable {
427
+ @apply cursor-grab;
428
+ }
429
+
430
+ .chat-header-dragging {
431
+ @apply cursor-grabbing;
432
+ }
433
+
434
+ .drag-indicator {
435
+ @apply hidden sm:flex;
436
+ }
437
+
438
+ .drag-dots {
439
+ @apply flex gap-[2px] ml-[2px] pointer-events-none;
440
+ }
441
+
442
+ .header-buttons {
443
+ @apply flex gap-[4px] items-center;
444
+ }
445
+
446
+ .header-button {
447
+ /* Header button classes */
448
+ @apply rounded-md transition-colors duration-200;
449
+ padding: 0.375em;
450
+ color: var(--header-button-text-color);
451
+
452
+ & svg {
453
+ width: var(--header-button-icon-size);
454
+ height: var(--header-button-icon-size);
455
+ }
456
+
457
+ &:hover {
458
+ background-color: var(--header-button-bg-hover-color);
459
+ }
460
+ }
461
+
462
+ .fullscreen-button {
463
+ @apply hidden sm:block;
464
+ }
465
+
466
+ .chat-content {
467
+ /* Chat content area */
468
+ @apply flex flex-col flex-grow overflow-hidden;
469
+ }
470
+
471
+ .loading-container {
472
+ /* Loading state */
473
+ @apply flex items-center justify-center flex-grow;
474
+ }
475
+
476
+ .loading-text {
477
+ margin-left: 2px;
478
+ color: var(--loading-text-color);
479
+ }
480
+
481
+ .messages-container {
482
+ /* Messages container */
483
+ @apply flex-grow overflow-y-auto space-y-2;
484
+ padding: 1em;
485
+ }
486
+
487
+ .message-row {
488
+ /* Message bubbles */
489
+ @apply flex;
490
+ }
491
+
492
+ .message-row-user {
493
+ @apply justify-end;
494
+ }
495
+
496
+ .message-row-assistant {
497
+ @apply justify-start;
498
+ }
499
+
500
+ .message-bubble {
501
+ @apply rounded-lg;
502
+ padding: 0.5em 1em;
503
+ }
504
+
505
+ .message-bubble-user {
506
+ background-color: var(--message-user-bg-color);
507
+ color: var(--message-user-text-color);
508
+ }
509
+
510
+ .message-bubble-assistant {
511
+ background-color: var(--message-assistant-bg-color);
512
+ color: var(--message-assistant-text-color);
513
+ }
514
+
515
+ .message-bubble-system {
516
+ background-color: var(--message-system-bg-color);
517
+ color: var(--message-system-text-color);
518
+ }
519
+
520
+ .message-timestamp {
521
+ @apply opacity-70 mt-[4px];
522
+ font-size: var(--chat-window-font-size-sm);
523
+ }
524
+
525
+ .message-attachments {
526
+ @apply mt-[8px] space-y-1;
527
+ }
528
+
529
+ .attachment-link {
530
+ @apply block underline hover:no-underline;
531
+ }
532
+
533
+ .welcome-messages {
534
+ /* Welcome messages */
535
+ @apply space-y-2;
536
+ }
537
+
538
+ .typing-indicator {
539
+ /* Typing indicator */
540
+ @apply h-1.5 w-full overflow-hidden;
541
+ }
542
+
543
+ .typing-progress {
544
+ @apply animate-progress w-full h-full origin-left-right rounded-lg;
545
+ background-color: var(--typing-progress-bg-color);
546
+ }
547
+
548
+ .typing-text {
549
+ @apply w-full opacity-70 justify-center;
550
+ font-size: var(--chat-window-font-size-sm);
551
+ }
552
+
553
+ .typing-dots {
554
+ @apply animate-dots;
555
+ }
556
+
557
+ .starter-questions {
558
+ /* Starter questions */
559
+ @apply space-y-2;
560
+ padding: 1em;
561
+ }
562
+
563
+ .starter-question-row {
564
+ @apply flex justify-end;
565
+ }
566
+
567
+ .input-area {
568
+ /* Input area */
569
+ padding: 1em 1em 0 1em;
570
+ background-color: var(--input-bg-color);
571
+ border-top: 1px solid var(--input-border-color);
572
+ }
573
+
574
+ .input-container {
575
+ @apply flex gap-[8px];
576
+ }
577
+
578
+ .message-textarea {
579
+ @apply flex-grow border border-gray-300 rounded-md resize-none focus:outline-blue-300;
580
+ background-color: var(--input-bg-color);
581
+ padding: 0.5em 0.75em;
582
+ color: var(--input-text-color);
583
+ border: 1px solid var(--input-border-color);
584
+
585
+ &:focus {
586
+ outline-color: var(--input-outline-focus-color);
587
+ }
588
+ }
589
+
590
+ .send-button {
591
+ @apply rounded-md font-medium transition-colors duration-200;
592
+ padding: 0.5em 1em;
593
+ }
594
+
595
+ .send-button-enabled {
596
+ background-color: var(--send-button-bg-color);
597
+ color: var(--send-button-text-color);
598
+
599
+ &:hover {
600
+ background-color: var(--send-button-bg-hover-color);
601
+ }
602
+ }
603
+
604
+ .send-button-disabled {
605
+ @apply cursor-not-allowed;
606
+ background-color: var(--send-button-bg-disabled-color);
607
+ color: var(--send-button-text-disabled-color);
608
+ }
609
+
610
+ .confirmation-overlay {
611
+ /* Confirmation dialog */
612
+ @apply fixed inset-0 flex items-center justify-center;
613
+ background-color: var(--confirmation-overlay-bg-color);
614
+ z-index: 9999;
615
+ }
616
+
617
+ .confirmation-dialog {
618
+ @apply max-w-sm w-full mx-4;
619
+ background-color: var(--confirmation-dialog-bg-color);
620
+ border: 1px solid var(--confirmation-dialog-border-color);
621
+ border-radius: 0.75em;
622
+ box-shadow: 0 0.625em 1.5625em var(--confirmation-dialog-shadow-color);
623
+ }
624
+
625
+ .confirmation-content {
626
+ padding: 1.5em;
627
+ }
628
+
629
+ .confirmation-title {
630
+ @apply font-semibold mb-2;
631
+ color: var(--confirmation-title-color);
632
+ font-size: var(--confirmation-title-font-size);
633
+ }
634
+
635
+ .confirmation-message {
636
+ @apply mb-4;
637
+ color: var(--confirmation-message-color);
638
+ font-size: var(--confirmation-message-font-size);
639
+ }
640
+
641
+ .confirmation-buttons {
642
+ @apply flex justify-end;
643
+ gap: 0.75em;
644
+ }
645
+
646
+ .confirmation-button {
647
+ @apply rounded-md font-medium transition-colors duration-200;
648
+ padding: 0.5em 1em;
649
+ }
650
+
651
+ .confirmation-button-cancel {
652
+ background-color: var(--confirmation-button-cancel-bg-color);
653
+ color: var(--confirmation-button-cancel-text-color);
654
+
655
+ &:hover {
656
+ background-color: var(--confirmation-button-cancel-bg-hover-color);
657
+ }
658
+ }
659
+
660
+ .confirmation-button-confirm {
661
+ background-color: var(--confirmation-button-confirm-bg-color);
662
+ color: var(--confirmation-button-confirm-text-color);
663
+
664
+ &:hover {
665
+ background-color: var(--confirmation-button-confirm-bg-hover-color);
666
+ }
667
+ }
1371
668
  }
669
+
1372
670
  textarea {
1373
- max-height: 8rem;
1374
- min-height: 2.5rem;
1375
- resize: none;
1376
- overflow-y: auto;
1377
- }
1378
- textarea::-webkit-scrollbar {
1379
- height: 0.375rem;
1380
- width: 0.375rem;
1381
- }
1382
- textarea::-webkit-scrollbar-track {
1383
- border-radius: 0.25rem;
1384
- background-color: var(--scrollbar-track-color);
1385
- }
1386
- textarea::-webkit-scrollbar-thumb {
1387
- border-radius: 0.25rem;
1388
- background-color: var(--scrollbar-thumb-color);
1389
- }
1390
- textarea::-webkit-scrollbar-thumb:hover {
1391
- background-color: var(--scrollbar-thumb-hover-color);
671
+ @apply min-h-10 max-h-32 resize-none overflow-y-auto;
1392
672
  }
1393
- @keyframes spin {
1394
673
 
1395
- to {
1396
- transform: rotate(360deg);
1397
- }
1398
- }
1399
674
  .loading-spinner {
1400
- animation: spin 1s linear infinite;
1401
- border-radius: 9999px;
1402
- border-width: 2px;
675
+ @apply border-2 rounded-full animate-spin;
1403
676
  border-color: var(--loading-spinner-track-color);
1404
677
  border-top-color: var(--loading-spinner-fill-color);
1405
678
  width: var(--loading-spinner-size);
1406
679
  height: var(--loading-spinner-size);
1407
680
  }
681
+
1408
682
  .overflow-y-auto::-webkit-scrollbar {
1409
- height: 0.375rem;
1410
- width: 0.375rem;
683
+ @apply w-1.5 h-1.5;
1411
684
  }
685
+
1412
686
  .overflow-y-auto::-webkit-scrollbar-track {
1413
- border-radius: 0.25rem;
687
+ @apply rounded-sm;
1414
688
  background-color: var(--scrollbar-track-color);
1415
689
  }
690
+
1416
691
  .overflow-y-auto::-webkit-scrollbar-thumb {
1417
- border-radius: 0.25rem;
692
+ @apply rounded-sm;
1418
693
  background-color: var(--scrollbar-thumb-color);
1419
694
  }
695
+
1420
696
  .overflow-y-auto::-webkit-scrollbar-thumb:hover {
1421
697
  background-color: var(--scrollbar-thumb-hover-color);
1422
698
  }
699
+
1423
700
  /* Markdown content styling for chat messages */
1424
701
  .chat-markdown {
1425
- color: var(--tw-prose-body);
1426
- max-width: 65ch;
1427
- }
1428
- .chat-markdown :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1429
- margin-top: 1.25em;
1430
- margin-bottom: 1.25em;
1431
- }
1432
- .chat-markdown :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1433
- color: var(--tw-prose-lead);
1434
- font-size: 1.25em;
1435
- line-height: 1.6;
1436
- margin-top: 1.2em;
1437
- margin-bottom: 1.2em;
1438
- }
1439
- .chat-markdown :where(a):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1440
- color: var(--tw-prose-links);
1441
- text-decoration: underline;
1442
- font-weight: 500;
1443
- }
1444
- .chat-markdown :where(strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1445
- color: var(--tw-prose-bold);
1446
- font-weight: 600;
1447
- }
1448
- .chat-markdown :where(a strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1449
- color: inherit;
1450
- }
1451
- .chat-markdown :where(blockquote strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1452
- color: inherit;
1453
- }
1454
- .chat-markdown :where(thead th strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1455
- color: inherit;
1456
- }
1457
- .chat-markdown :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1458
- list-style-type: decimal;
1459
- margin-top: 1.25em;
1460
- margin-bottom: 1.25em;
1461
- padding-inline-start: 1.625em;
1462
- }
1463
- .chat-markdown :where(ol[type="A"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1464
- list-style-type: upper-alpha;
1465
- }
1466
- .chat-markdown :where(ol[type="a"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1467
- list-style-type: lower-alpha;
1468
- }
1469
- .chat-markdown :where(ol[type="A" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1470
- list-style-type: upper-alpha;
1471
- }
1472
- .chat-markdown :where(ol[type="a" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1473
- list-style-type: lower-alpha;
1474
- }
1475
- .chat-markdown :where(ol[type="I"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1476
- list-style-type: upper-roman;
1477
- }
1478
- .chat-markdown :where(ol[type="i"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1479
- list-style-type: lower-roman;
1480
- }
1481
- .chat-markdown :where(ol[type="I" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1482
- list-style-type: upper-roman;
1483
- }
1484
- .chat-markdown :where(ol[type="i" s]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1485
- list-style-type: lower-roman;
1486
- }
1487
- .chat-markdown :where(ol[type="1"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1488
- list-style-type: decimal;
1489
- }
1490
- .chat-markdown :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1491
- list-style-type: disc;
1492
- margin-top: 1.25em;
1493
- margin-bottom: 1.25em;
1494
- padding-inline-start: 1.625em;
1495
- }
1496
- .chat-markdown :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker {
1497
- font-weight: 400;
1498
- color: var(--tw-prose-counters);
1499
- }
1500
- .chat-markdown :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *))::marker {
1501
- color: var(--tw-prose-bullets);
1502
- }
1503
- .chat-markdown :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1504
- color: var(--tw-prose-headings);
1505
- font-weight: 600;
1506
- margin-top: 1.25em;
1507
- }
1508
- .chat-markdown :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1509
- border-color: var(--tw-prose-hr);
1510
- border-top-width: 1px;
1511
- margin-top: 3em;
1512
- margin-bottom: 3em;
1513
- }
1514
- .chat-markdown :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1515
- font-weight: 500;
1516
- font-style: italic;
1517
- color: var(--tw-prose-quotes);
1518
- border-inline-start-width: 0.25rem;
1519
- border-inline-start-color: var(--tw-prose-quote-borders);
1520
- quotes: "\201C""\201D""\2018""\2019";
1521
- margin-top: 1.6em;
1522
- margin-bottom: 1.6em;
1523
- padding-inline-start: 1em;
1524
- }
1525
- .chat-markdown :where(blockquote p:first-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
1526
- content: open-quote;
1527
- }
1528
- .chat-markdown :where(blockquote p:last-of-type):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
1529
- content: close-quote;
1530
- }
1531
- .chat-markdown :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1532
- color: var(--tw-prose-headings);
1533
- font-weight: 800;
1534
- font-size: 2.25em;
1535
- margin-top: 0;
1536
- margin-bottom: 0.8888889em;
1537
- line-height: 1.1111111;
1538
- }
1539
- .chat-markdown :where(h1 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1540
- font-weight: 900;
1541
- color: inherit;
1542
- }
1543
- .chat-markdown :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1544
- color: var(--tw-prose-headings);
1545
- font-weight: 700;
1546
- font-size: 1.5em;
1547
- margin-top: 2em;
1548
- margin-bottom: 1em;
1549
- line-height: 1.3333333;
1550
- }
1551
- .chat-markdown :where(h2 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1552
- font-weight: 800;
1553
- color: inherit;
1554
- }
1555
- .chat-markdown :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1556
- color: var(--tw-prose-headings);
1557
- font-weight: 600;
1558
- font-size: 1.25em;
1559
- margin-top: 1.6em;
1560
- margin-bottom: 0.6em;
1561
- line-height: 1.6;
1562
- }
1563
- .chat-markdown :where(h3 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1564
- font-weight: 700;
1565
- color: inherit;
1566
- }
1567
- .chat-markdown :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1568
- color: var(--tw-prose-headings);
1569
- font-weight: 600;
1570
- margin-top: 1.5em;
1571
- margin-bottom: 0.5em;
1572
- line-height: 1.5;
1573
- }
1574
- .chat-markdown :where(h4 strong):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1575
- font-weight: 700;
1576
- color: inherit;
1577
- }
1578
- .chat-markdown :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1579
- margin-top: 2em;
1580
- margin-bottom: 2em;
1581
- }
1582
- .chat-markdown :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1583
- display: block;
1584
- margin-top: 2em;
1585
- margin-bottom: 2em;
1586
- }
1587
- .chat-markdown :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1588
- margin-top: 2em;
1589
- margin-bottom: 2em;
1590
- }
1591
- .chat-markdown :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1592
- font-weight: 500;
1593
- font-family: inherit;
1594
- color: var(--tw-prose-kbd);
1595
- box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);
1596
- font-size: 0.875em;
1597
- border-radius: 0.3125rem;
1598
- padding-top: 0.1875em;
1599
- padding-inline-end: 0.375em;
1600
- padding-bottom: 0.1875em;
1601
- padding-inline-start: 0.375em;
1602
- }
1603
- .chat-markdown :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1604
- color: var(--tw-prose-code);
1605
- font-weight: 600;
1606
- font-size: 0.875em;
1607
- }
1608
- .chat-markdown :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
1609
- content: "`";
1610
- }
1611
- .chat-markdown :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
1612
- content: "`";
1613
- }
1614
- .chat-markdown :where(a code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1615
- color: inherit;
1616
- }
1617
- .chat-markdown :where(h1 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1618
- color: inherit;
1619
- }
1620
- .chat-markdown :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1621
- color: inherit;
1622
- font-size: 0.875em;
1623
- }
1624
- .chat-markdown :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1625
- color: inherit;
1626
- font-size: 0.9em;
1627
- }
1628
- .chat-markdown :where(h4 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1629
- color: inherit;
1630
- }
1631
- .chat-markdown :where(blockquote code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1632
- color: inherit;
1633
- }
1634
- .chat-markdown :where(thead th code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1635
- color: inherit;
1636
- }
1637
- .chat-markdown :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1638
- color: var(--tw-prose-pre-code);
1639
- background-color: var(--tw-prose-pre-bg);
1640
- overflow-x: auto;
1641
- font-weight: 400;
1642
- font-size: 0.875em;
1643
- line-height: 1.7142857;
1644
- margin-top: 1.7142857em;
1645
- margin-bottom: 1.7142857em;
1646
- border-radius: 0.375rem;
1647
- padding-top: 0.8571429em;
1648
- padding-inline-end: 1.1428571em;
1649
- padding-bottom: 0.8571429em;
1650
- padding-inline-start: 1.1428571em;
1651
- }
1652
- .chat-markdown :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1653
- background-color: transparent;
1654
- border-width: 0;
1655
- border-radius: 0;
1656
- padding: 0;
1657
- font-weight: inherit;
1658
- color: inherit;
1659
- font-size: inherit;
1660
- font-family: inherit;
1661
- line-height: inherit;
1662
- }
1663
- .chat-markdown :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::before {
1664
- content: none;
1665
- }
1666
- .chat-markdown :where(pre code):not(:where([class~="not-prose"],[class~="not-prose"] *))::after {
1667
- content: none;
1668
- }
1669
- .chat-markdown :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1670
- width: 100%;
1671
- table-layout: auto;
1672
- margin-top: 2em;
1673
- margin-bottom: 2em;
1674
- font-size: 0.875em;
1675
- line-height: 1.7142857;
1676
- }
1677
- .chat-markdown :where(thead):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1678
- border-bottom-width: 1px;
1679
- border-bottom-color: var(--tw-prose-th-borders);
1680
- }
1681
- .chat-markdown :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1682
- color: var(--tw-prose-headings);
1683
- font-weight: 600;
1684
- vertical-align: bottom;
1685
- padding-inline-end: 0.5714286em;
1686
- padding-bottom: 0.5714286em;
1687
- padding-inline-start: 0.5714286em;
1688
- }
1689
- .chat-markdown :where(tbody tr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1690
- border-bottom-width: 1px;
1691
- border-bottom-color: var(--tw-prose-td-borders);
1692
- }
1693
- .chat-markdown :where(tbody tr:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1694
- border-bottom-width: 0;
1695
- }
1696
- .chat-markdown :where(tbody td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1697
- vertical-align: baseline;
1698
- }
1699
- .chat-markdown :where(tfoot):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1700
- border-top-width: 1px;
1701
- border-top-color: var(--tw-prose-th-borders);
1702
- }
1703
- .chat-markdown :where(tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1704
- vertical-align: top;
1705
- }
1706
- .chat-markdown :where(th, td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1707
- text-align: start;
1708
- }
1709
- .chat-markdown :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1710
- margin-top: 0;
1711
- margin-bottom: 0;
1712
- }
1713
- .chat-markdown :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1714
- color: var(--tw-prose-captions);
1715
- font-size: 0.875em;
1716
- line-height: 1.4285714;
1717
- margin-top: 0.8571429em;
1718
- }
1719
- .chat-markdown {
1720
- --tw-prose-body: #374151;
1721
- --tw-prose-headings: #111827;
1722
- --tw-prose-lead: #4b5563;
1723
- --tw-prose-links: #111827;
1724
- --tw-prose-bold: #111827;
1725
- --tw-prose-counters: #6b7280;
1726
- --tw-prose-bullets: #d1d5db;
1727
- --tw-prose-hr: #e5e7eb;
1728
- --tw-prose-quotes: #111827;
1729
- --tw-prose-quote-borders: #e5e7eb;
1730
- --tw-prose-captions: #6b7280;
1731
- --tw-prose-kbd: #111827;
1732
- --tw-prose-kbd-shadows: 17 24 39;
1733
- --tw-prose-code: #111827;
1734
- --tw-prose-pre-code: #e5e7eb;
1735
- --tw-prose-pre-bg: #1f2937;
1736
- --tw-prose-th-borders: #d1d5db;
1737
- --tw-prose-td-borders: #e5e7eb;
1738
- --tw-prose-invert-body: #d1d5db;
1739
- --tw-prose-invert-headings: #fff;
1740
- --tw-prose-invert-lead: #9ca3af;
1741
- --tw-prose-invert-links: #fff;
1742
- --tw-prose-invert-bold: #fff;
1743
- --tw-prose-invert-counters: #9ca3af;
1744
- --tw-prose-invert-bullets: #4b5563;
1745
- --tw-prose-invert-hr: #374151;
1746
- --tw-prose-invert-quotes: #f3f4f6;
1747
- --tw-prose-invert-quote-borders: #374151;
1748
- --tw-prose-invert-captions: #9ca3af;
1749
- --tw-prose-invert-kbd: #fff;
1750
- --tw-prose-invert-kbd-shadows: 255 255 255;
1751
- --tw-prose-invert-code: #fff;
1752
- --tw-prose-invert-pre-code: #d1d5db;
1753
- --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);
1754
- --tw-prose-invert-th-borders: #4b5563;
1755
- --tw-prose-invert-td-borders: #374151;
1756
- font-size: 1rem;
1757
- line-height: 1.75;
1758
- }
1759
- .chat-markdown :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1760
- margin-top: 0;
1761
- margin-bottom: 0;
1762
- }
1763
- .chat-markdown :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1764
- margin-top: 0.5em;
1765
- margin-bottom: 0.5em;
1766
- }
1767
- .chat-markdown :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1768
- padding-inline-start: 0.375em;
1769
- }
1770
- .chat-markdown :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1771
- padding-inline-start: 0.375em;
1772
- }
1773
- .chat-markdown :where(.prose > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1774
- margin-top: 0.75em;
1775
- margin-bottom: 0.75em;
1776
- }
1777
- .chat-markdown :where(.prose > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1778
- margin-top: 1.25em;
1779
- }
1780
- .chat-markdown :where(.prose > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1781
- margin-bottom: 1.25em;
1782
- }
1783
- .chat-markdown :where(.prose > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1784
- margin-top: 1.25em;
1785
- }
1786
- .chat-markdown :where(.prose > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1787
- margin-bottom: 1.25em;
1788
- }
1789
- .chat-markdown :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1790
- margin-top: 0.75em;
1791
- margin-bottom: 0.75em;
1792
- }
1793
- .chat-markdown :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1794
- margin-top: 1.25em;
1795
- margin-bottom: 1.25em;
1796
- }
1797
- .chat-markdown :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1798
- margin-top: 0.5em;
1799
- padding-inline-start: 1.625em;
1800
- }
1801
- .chat-markdown :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1802
- margin-top: 0;
1803
- }
1804
- .chat-markdown :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1805
- margin-top: 0;
1806
- }
1807
- .chat-markdown :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1808
- margin-top: 0;
1809
- }
1810
- .chat-markdown :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1811
- margin-top: 0;
1812
- }
1813
- .chat-markdown :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1814
- padding-inline-start: 0;
1815
- }
1816
- .chat-markdown :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1817
- padding-inline-end: 0;
1818
- }
1819
- .chat-markdown :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1820
- padding-top: 0.5714286em;
1821
- padding-inline-end: 0.5714286em;
1822
- padding-bottom: 0.5714286em;
1823
- padding-inline-start: 0.5714286em;
1824
- }
1825
- .chat-markdown :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1826
- padding-inline-start: 0;
1827
- }
1828
- .chat-markdown :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1829
- padding-inline-end: 0;
1830
- }
1831
- .chat-markdown :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1832
- margin-top: 2em;
1833
- margin-bottom: 2em;
1834
- }
1835
- .chat-markdown :where(.prose > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1836
- margin-top: 0;
1837
- }
1838
- .chat-markdown :where(.prose > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1839
- margin-bottom: 0;
1840
- }
1841
- .chat-markdown {
1842
- font-size: 0.875rem;
1843
- line-height: 1.7142857;
1844
- }
1845
- .chat-markdown :where(p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1846
- margin-top: 1.1428571em;
1847
- margin-bottom: 1.1428571em;
1848
- }
1849
- .chat-markdown :where([class~="lead"]):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1850
- font-size: 1.2857143em;
1851
- line-height: 1.5555556;
1852
- margin-top: 0.8888889em;
1853
- margin-bottom: 0.8888889em;
1854
- }
1855
- .chat-markdown :where(blockquote):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1856
- margin-top: 1.3333333em;
1857
- margin-bottom: 1.3333333em;
1858
- padding-inline-start: 1.1111111em;
1859
- }
1860
- .chat-markdown :where(h1):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1861
- font-size: 2.1428571em;
1862
- margin-top: 0;
1863
- margin-bottom: 0.8em;
1864
- line-height: 1.2;
1865
- }
1866
- .chat-markdown :where(h2):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1867
- font-size: 1.4285714em;
1868
- margin-top: 1.6em;
1869
- margin-bottom: 0.8em;
1870
- line-height: 1.4;
1871
- }
1872
- .chat-markdown :where(h3):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1873
- font-size: 1.2857143em;
1874
- margin-top: 1.5555556em;
1875
- margin-bottom: 0.4444444em;
1876
- line-height: 1.5555556;
1877
- }
1878
- .chat-markdown :where(h4):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1879
- margin-top: 1.4285714em;
1880
- margin-bottom: 0.5714286em;
1881
- line-height: 1.4285714;
1882
- }
1883
- .chat-markdown :where(img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1884
- margin-top: 1.7142857em;
1885
- margin-bottom: 1.7142857em;
1886
- }
1887
- .chat-markdown :where(picture):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1888
- margin-top: 1.7142857em;
1889
- margin-bottom: 1.7142857em;
1890
- }
1891
- .chat-markdown :where(picture > img):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1892
- margin-top: 0;
1893
- margin-bottom: 0;
1894
- }
1895
- .chat-markdown :where(video):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1896
- margin-top: 1.7142857em;
1897
- margin-bottom: 1.7142857em;
1898
- }
1899
- .chat-markdown :where(kbd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1900
- font-size: 0.8571429em;
1901
- border-radius: 0.3125rem;
1902
- padding-top: 0.1428571em;
1903
- padding-inline-end: 0.3571429em;
1904
- padding-bottom: 0.1428571em;
1905
- padding-inline-start: 0.3571429em;
1906
- }
1907
- .chat-markdown :where(code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1908
- font-size: 0.8571429em;
1909
- }
1910
- .chat-markdown :where(h2 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1911
- font-size: 0.9em;
1912
- }
1913
- .chat-markdown :where(h3 code):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1914
- font-size: 0.8888889em;
1915
- }
1916
- .chat-markdown :where(pre):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1917
- font-size: 0.8571429em;
1918
- line-height: 1.6666667;
1919
- margin-top: 1.6666667em;
1920
- margin-bottom: 1.6666667em;
1921
- border-radius: 0.25rem;
1922
- padding-top: 0.6666667em;
1923
- padding-inline-end: 1em;
1924
- padding-bottom: 0.6666667em;
1925
- padding-inline-start: 1em;
1926
- }
1927
- .chat-markdown :where(ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1928
- margin-top: 1.1428571em;
1929
- margin-bottom: 1.1428571em;
1930
- padding-inline-start: 1.5714286em;
1931
- }
1932
- .chat-markdown :where(ul):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1933
- margin-top: 1.1428571em;
1934
- margin-bottom: 1.1428571em;
1935
- padding-inline-start: 1.5714286em;
1936
- }
1937
- .chat-markdown :where(li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1938
- margin-top: 0.2857143em;
1939
- margin-bottom: 0.2857143em;
1940
- }
1941
- .chat-markdown :where(ol > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1942
- padding-inline-start: 0.4285714em;
1943
- }
1944
- .chat-markdown :where(ul > li):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1945
- padding-inline-start: 0.4285714em;
1946
- }
1947
- .chat-markdown :where(.prose-sm > ul > li p):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1948
- margin-top: 0.5714286em;
1949
- margin-bottom: 0.5714286em;
1950
- }
1951
- .chat-markdown :where(.prose-sm > ul > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1952
- margin-top: 1.1428571em;
1953
- }
1954
- .chat-markdown :where(.prose-sm > ul > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1955
- margin-bottom: 1.1428571em;
1956
- }
1957
- .chat-markdown :where(.prose-sm > ol > li > p:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1958
- margin-top: 1.1428571em;
1959
- }
1960
- .chat-markdown :where(.prose-sm > ol > li > p:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1961
- margin-bottom: 1.1428571em;
1962
- }
1963
- .chat-markdown :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1964
- margin-top: 0.5714286em;
1965
- margin-bottom: 0.5714286em;
1966
- }
1967
- .chat-markdown :where(dl):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1968
- margin-top: 1.1428571em;
1969
- margin-bottom: 1.1428571em;
1970
- }
1971
- .chat-markdown :where(dt):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1972
- margin-top: 1.1428571em;
1973
- }
1974
- .chat-markdown :where(dd):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1975
- margin-top: 0.2857143em;
1976
- padding-inline-start: 1.5714286em;
1977
- }
1978
- .chat-markdown :where(hr):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1979
- margin-top: 2.8571429em;
1980
- margin-bottom: 2.8571429em;
1981
- }
1982
- .chat-markdown :where(hr + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1983
- margin-top: 0;
1984
- }
1985
- .chat-markdown :where(h2 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1986
- margin-top: 0;
1987
- }
1988
- .chat-markdown :where(h3 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1989
- margin-top: 0;
1990
- }
1991
- .chat-markdown :where(h4 + *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1992
- margin-top: 0;
1993
- }
1994
- .chat-markdown :where(table):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1995
- font-size: 0.8571429em;
1996
- line-height: 1.5;
1997
- }
1998
- .chat-markdown :where(thead th):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1999
- padding-inline-end: 1em;
2000
- padding-bottom: 0.6666667em;
2001
- padding-inline-start: 1em;
2002
- }
2003
- .chat-markdown :where(thead th:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2004
- padding-inline-start: 0;
2005
- }
2006
- .chat-markdown :where(thead th:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2007
- padding-inline-end: 0;
2008
- }
2009
- .chat-markdown :where(tbody td, tfoot td):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2010
- padding-top: 0.6666667em;
2011
- padding-inline-end: 1em;
2012
- padding-bottom: 0.6666667em;
2013
- padding-inline-start: 1em;
2014
- }
2015
- .chat-markdown :where(tbody td:first-child, tfoot td:first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2016
- padding-inline-start: 0;
2017
- }
2018
- .chat-markdown :where(tbody td:last-child, tfoot td:last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2019
- padding-inline-end: 0;
2020
- }
2021
- .chat-markdown :where(figure):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2022
- margin-top: 1.7142857em;
2023
- margin-bottom: 1.7142857em;
2024
- }
2025
- .chat-markdown :where(figure > *):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2026
- margin-top: 0;
2027
- margin-bottom: 0;
2028
- }
2029
- .chat-markdown :where(figcaption):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2030
- font-size: 0.8571429em;
2031
- line-height: 1.3333333;
2032
- margin-top: 0.6666667em;
2033
- }
2034
- .chat-markdown :where(.prose-sm > :first-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2035
- margin-top: 0;
2036
- }
2037
- .chat-markdown :where(.prose-sm > :last-child):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
2038
- margin-bottom: 0;
2039
- }
2040
- .chat-markdown {
2041
- --tw-prose-body: #374151;
2042
- --tw-prose-headings: #111827;
2043
- --tw-prose-lead: #4b5563;
2044
- --tw-prose-links: #111827;
2045
- --tw-prose-bold: #111827;
2046
- --tw-prose-counters: #6b7280;
2047
- --tw-prose-bullets: #d1d5db;
2048
- --tw-prose-hr: #e5e7eb;
2049
- --tw-prose-quotes: #111827;
2050
- --tw-prose-quote-borders: #e5e7eb;
2051
- --tw-prose-captions: #6b7280;
2052
- --tw-prose-kbd: #111827;
2053
- --tw-prose-kbd-shadows: 17 24 39;
2054
- --tw-prose-code: #111827;
2055
- --tw-prose-pre-code: #e5e7eb;
2056
- --tw-prose-pre-bg: #1f2937;
2057
- --tw-prose-th-borders: #d1d5db;
2058
- --tw-prose-td-borders: #e5e7eb;
2059
- --tw-prose-invert-body: #d1d5db;
2060
- --tw-prose-invert-headings: #fff;
2061
- --tw-prose-invert-lead: #9ca3af;
2062
- --tw-prose-invert-links: #fff;
2063
- --tw-prose-invert-bold: #fff;
2064
- --tw-prose-invert-counters: #9ca3af;
2065
- --tw-prose-invert-bullets: #4b5563;
2066
- --tw-prose-invert-hr: #374151;
2067
- --tw-prose-invert-quotes: #f3f4f6;
2068
- --tw-prose-invert-quote-borders: #374151;
2069
- --tw-prose-invert-captions: #9ca3af;
2070
- --tw-prose-invert-kbd: #fff;
2071
- --tw-prose-invert-kbd-shadows: 255 255 255;
2072
- --tw-prose-invert-code: #fff;
2073
- --tw-prose-invert-pre-code: #d1d5db;
2074
- --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);
2075
- --tw-prose-invert-th-borders: #4b5563;
2076
- --tw-prose-invert-td-borders: #374151;
2077
- max-width: none;
2078
- }
2079
- .chat-markdown :is(:where(a):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
2080
- text-decoration-line: none;
2081
- }
2082
- .chat-markdown :is(:where(a):not(:where([class~="not-prose"],[class~="not-prose"] *))):hover {
2083
- text-decoration-line: underline;
2084
- }
2085
- .chat-markdown {
702
+ @apply prose prose-sm prose-gray max-w-none prose-a:no-underline prose-a:hover:underline;
2086
703
  font-size: 1em;
2087
704
  }
705
+
2088
706
  /* override spacing */
2089
707
  .chat-markdown > * {
2090
708
  margin-top: 0.1em;
2091
709
  margin-bottom: 0.1em;
2092
710
  }
711
+
2093
712
  .message-bubble-assistant .chat-markdown {
2094
713
  --tw-prose-body: var(--message-assistant-text-color);
2095
714
  --tw-prose-headings: var(--message-assistant-text-color);
@@ -2110,6 +729,7 @@ textarea::-webkit-scrollbar-thumb:hover {
2110
729
  --tw-prose-th-borders: var(--message-assistant-text-color);
2111
730
  --tw-prose-td-borders: var(--message-assistant-text-color);
2112
731
  }
732
+
2113
733
  .message-bubble-user .chat-markdown {
2114
734
  --tw-prose-body: var(--message-user-text-color);
2115
735
  --tw-prose-headings: var(--message-user-text-color);
@@ -2130,6 +750,7 @@ textarea::-webkit-scrollbar-thumb:hover {
2130
750
  --tw-prose-th-borders: var(--message-user-text-color);
2131
751
  --tw-prose-td-borders: var(--message-user-text-color);
2132
752
  }
753
+
2133
754
  .message-bubble-system .chat-markdown {
2134
755
  --tw-prose-body: var(--message-system-text-color);
2135
756
  --tw-prose-headings: var(--message-system-text-color);
@@ -2150,118 +771,110 @@ textarea::-webkit-scrollbar-thumb:hover {
2150
771
  --tw-prose-th-borders: var(--message-system-text-color);
2151
772
  --tw-prose-td-borders: var(--message-system-text-color);
2152
773
  }
774
+
2153
775
  .message-bubble-user .chat-markdown pre {
2154
776
  border: 1px solid var(--code-border-user-color);
2155
777
  }
778
+
2156
779
  .message-bubble-assistant .chat-markdown pre {
2157
780
  border: 1px solid var(--code-border-assistant-color);
2158
781
  }
782
+
2159
783
  .loading:after {
2160
784
  content: ' .';
2161
785
  }
786
+
2162
787
  /* File Upload Button */
2163
788
  .file-attachment-button {
2164
- border-radius: 0.375rem;
2165
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
2166
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2167
- transition-duration: 200ms;
2168
- }
2169
- .file-attachment-button:disabled {
2170
- cursor: not-allowed;
2171
- opacity: 0.5;
2172
- }
2173
- .file-attachment-button {
789
+ @apply rounded-md transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed;
2174
790
  padding: 0.375em;
2175
791
  background-color: var(--file-attachment-button-bg-color);
2176
792
  color: var(--file-attachment-button-text-color);
2177
793
  }
794
+
2178
795
  .file-attachment-button svg {
2179
- width: 1.5em;
2180
- height: 1.5em;
796
+ @apply size-[1.5em];
2181
797
  }
798
+
2182
799
  .file-attachment-button:hover:not(:disabled) {
2183
800
  background-color: var(--file-attachment-button-bg-hover-color);
2184
801
  }
802
+
2185
803
  .file-attachment-button:disabled {
2186
804
  color: var(--file-attachment-button-text-disabled-color);
2187
805
  }
806
+
2188
807
  /* Selected Files Container */
2189
808
  .selected-files-container {
2190
809
  padding: 1em 1em 0.5em 1em;
2191
810
  background-color: var(--selected-files-bg-color);
2192
811
  border-top: 1px solid var(--selected-files-border-color);
2193
812
  }
813
+
2194
814
  /* Selected File Item */
2195
815
  .selected-file-item {
2196
- display: flex;
2197
- align-items: center;
2198
- justify-content: space-between;
816
+ @apply flex items-center justify-between;
2199
817
  background-color: var(--selected-file-bg-color);
2200
818
  border-radius: 0.375em;
2201
819
  padding: 0.25em 0.5em;
2202
820
  font-size: var(--selected-file-font-size);
2203
821
  color: var(--selected-file-name-color);
2204
822
  }
823
+
2205
824
  .selected-file-icon {
2206
- display: flex;
2207
- align-items: center;
2208
- justify-content: center;
825
+ @apply flex items-center justify-center;
2209
826
  }
827
+
2210
828
  .selected-file-icon svg {
2211
829
  width: var(--selected-file-icon-size);
2212
830
  height: var(--selected-file-icon-size);
2213
831
  }
832
+
2214
833
  .selected-file-size {
2215
834
  color: var(--selected-file-size-color);
2216
835
  }
836
+
2217
837
  .selected-file-error {
2218
838
  color: var(--error-text-color);
2219
839
  }
840
+
2220
841
  .selected-file-success-icon {
2221
- display: flex;
2222
- align-items: center;
2223
- justify-content: center;
842
+ @apply flex items-center justify-center;
2224
843
  color: var(--success-text-color);
2225
844
  width: var(--selected-file-icon-size);
2226
845
  height: var(--selected-file-icon-size);
2227
846
  }
847
+
2228
848
  .selected-file-remove-button {
2229
- font-weight: 700;
2230
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
2231
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2232
- transition-duration: 200ms;
849
+ @apply font-bold transition-colors duration-200;
2233
850
  color: var(--selected-file-remove-icon-color);
2234
851
  padding: 0.375em;
2235
852
  }
853
+
2236
854
  .selected-file-remove-button svg {
2237
855
  width: var(--selected-file-icon-size);
2238
856
  height: var(--selected-file-icon-size);
2239
857
  }
858
+
2240
859
  .selected-file-remove-button:hover {
2241
860
  color: var(--selected-file-remove-icon-hover-color);
2242
861
  }
862
+
2243
863
  /* Message Attachments */
2244
864
  .message-attachments {
2245
- margin-top: 0.5em;
2246
- }
2247
- .message-attachments > :not([hidden]) ~ :not([hidden]) {
2248
- --tw-space-y-reverse: 0;
2249
- margin-top: calc(0.25em * calc(1 - var(--tw-space-y-reverse)));
2250
- margin-bottom: calc(0.25em * var(--tw-space-y-reverse));
2251
- }
2252
- .message-attachments {
865
+ @apply mt-[0.5em] space-y-[0.25em];
2253
866
  font-size: var(--chat-window-font-size-sm);
2254
867
  }
868
+
2255
869
  .message-attachment-icon {
2256
- display: flex;
2257
- align-items: center;
2258
- justify-content: center;
870
+ @apply flex items-center justify-center;
2259
871
  width: var(--message-attachment-icon-size);
2260
872
  height: var(--message-attachment-icon-size);
2261
873
  }
874
+
2262
875
  /* Update Send Button for Upload State */
2263
876
  .send-button-disabled {
2264
- cursor: not-allowed;
877
+ @apply cursor-not-allowed;
2265
878
  background-color: var(--send-button-bg-disabled-color);
2266
879
  color: var(--send-button-text-disabled-color);
2267
880
  }