@contenify/chatbot 4.0.0 → 4.0.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.
package/dist/styles.css CHANGED
@@ -1,6 +1,25 @@
1
1
  /* contenify-chatbot component styles */
2
2
  /* No external CSS framework required */
3
3
 
4
+ /* ========================================
5
+ Chat route: full-width layout override
6
+ ======================================== */
7
+ .container-max-width {
8
+ max-width: 1244px;
9
+ padding-inline: calc(var(--spacing) * 4);
10
+ }
11
+
12
+ /* ========================================
13
+ Hindi language font override
14
+ ======================================== */
15
+ .cnfy-lang-hi,
16
+ .cnfy-lang-hi input,
17
+ .cnfy-lang-hi textarea,
18
+ .cnfy-lang-hi button,
19
+ .cnfy-lang-hi [class*="cnfy-"] {
20
+ font-family: 'Noto Sans Devanagari', sans-serif;
21
+ }
22
+
4
23
  /* ========================================
5
24
  CSS Variables
6
25
  ======================================== */
@@ -68,13 +87,13 @@
68
87
  Base / Reset
69
88
  ======================================== */
70
89
  .cnfy-root {
71
- width: 100%;
72
- height: 100vh;
73
- display: flex;
74
- flex-direction: column;
75
- background-color: var(--cnfy-white);
76
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
77
- box-sizing: border-box;
90
+ background-color: var(--cnfy-white);
91
+ box-sizing: border-box;
92
+ flex-direction: column;
93
+ width: 100%;
94
+ height: 91vh;
95
+ font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif;
96
+ display: flex;
78
97
  }
79
98
 
80
99
  .cnfy-root *, .cnfy-root *::before, .cnfy-root *::after {
@@ -191,6 +210,248 @@
191
210
  min-height: 0;
192
211
  }
193
212
 
213
+ .cnfy-chat-inner--with-history {
214
+ display: flex;
215
+ height: 100%;
216
+ }
217
+
218
+ /* ── History Panel ── */
219
+ .cnfy-history-panel {
220
+ width: 260px;
221
+ flex-shrink: 0;
222
+ display: flex;
223
+ flex-direction: column;
224
+ height: 100%;
225
+ border-right: 1px solid var(--cnfy-gray-200);
226
+ background-color: var(--cnfy-gray-50);
227
+ overflow: hidden;
228
+ transition: width 0.2s ease;
229
+ }
230
+
231
+ .cnfy-history-panel--collapsed {
232
+ width: 52px;
233
+ align-items: center;
234
+ padding: 0.75rem 0;
235
+ gap: 0.25rem;
236
+ }
237
+
238
+ .cnfy-history-header {
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: space-between;
242
+ padding: 0.75rem 0.75rem 0.5rem;
243
+ flex-shrink: 0;
244
+ gap: 0.25rem;
245
+ }
246
+
247
+ .cnfy-history-icon-btn {
248
+ display: flex;
249
+ align-items: center;
250
+ justify-content: center;
251
+ background: none;
252
+ border: none;
253
+ cursor: pointer;
254
+ color: var(--cnfy-gray-500);
255
+ padding: 0.4375rem;
256
+ border-radius: 0.5rem;
257
+ flex-shrink: 0;
258
+ transition: background-color 0.12s, color 0.12s;
259
+ }
260
+ .cnfy-history-icon-btn:hover {
261
+ background-color: var(--cnfy-gray-200);
262
+ color: var(--cnfy-gray-800);
263
+ }
264
+
265
+ .cnfy-history-icon-divider {
266
+ width: 24px;
267
+ height: 1px;
268
+ background-color: var(--cnfy-gray-200);
269
+ margin: 0.25rem 0;
270
+ }
271
+
272
+ .cnfy-history-body {
273
+ flex: 1;
274
+ overflow-y: auto;
275
+ padding: 0.25rem 0 0.75rem;
276
+ }
277
+
278
+ .cnfy-history-loading {
279
+ display: flex;
280
+ justify-content: center;
281
+ align-items: center;
282
+ padding: 2.5rem;
283
+ color: var(--cnfy-gray-400);
284
+ }
285
+
286
+ .cnfy-history-error {
287
+ display: flex;
288
+ flex-direction: column;
289
+ align-items: center;
290
+ gap: 0.5rem;
291
+ padding: 1.5rem 1rem;
292
+ text-align: center;
293
+ font-size: 0.8125rem;
294
+ color: var(--cnfy-gray-500);
295
+ }
296
+
297
+ .cnfy-history-retry-btn {
298
+ font-size: 0.75rem;
299
+ color: inherit;
300
+ background: none;
301
+ border: 1px solid var(--cnfy-gray-300);
302
+ border-radius: 0.375rem;
303
+ padding: 0.25rem 0.625rem;
304
+ cursor: pointer;
305
+ }
306
+ .cnfy-history-retry-btn:hover {
307
+ background-color: var(--cnfy-gray-100);
308
+ }
309
+
310
+ .cnfy-history-empty {
311
+ display: flex;
312
+ flex-direction: column;
313
+ align-items: center;
314
+ gap: 0.375rem;
315
+ padding: 2.5rem 1rem;
316
+ text-align: center;
317
+ }
318
+ .cnfy-history-empty-icon {
319
+ color: var(--cnfy-gray-300);
320
+ }
321
+ .cnfy-history-empty p {
322
+ font-size: 0.8125rem;
323
+ color: var(--cnfy-gray-500);
324
+ margin: 0;
325
+ }
326
+
327
+ .cnfy-history-group {
328
+ margin-bottom: 0.25rem;
329
+ }
330
+
331
+ .cnfy-history-group-label {
332
+ font-size: 0.6875rem;
333
+ font-weight: 600;
334
+ color: var(--cnfy-gray-500);
335
+ text-transform: uppercase;
336
+ letter-spacing: 0.04em;
337
+ padding: 0.625rem 0.875rem 0.25rem;
338
+ }
339
+
340
+ .cnfy-history-item {
341
+ display: flex;
342
+ align-items: center;
343
+ width: 100%;
344
+ text-align: left;
345
+ background: none;
346
+ border: none;
347
+ padding: 0.4375rem 0.875rem;
348
+ cursor: pointer;
349
+ transition: background-color 0.1s;
350
+ gap: 0.375rem;
351
+ border-radius: 0.375rem;
352
+ margin: 0 0.375rem;
353
+ width: calc(100% - 0.75rem);
354
+ }
355
+ .cnfy-history-item:hover:not(.cnfy-history-item--disabled) {
356
+ background-color: var(--cnfy-gray-200);
357
+ }
358
+ .cnfy-history-item--disabled {
359
+ opacity: 0.5;
360
+ cursor: not-allowed;
361
+ }
362
+
363
+ .cnfy-history-item-title {
364
+ flex: 1;
365
+ min-width: 0;
366
+ display: flex;
367
+ align-items: center;
368
+ gap: 0.375rem;
369
+ font-size: 0.8125rem;
370
+ font-weight: 400;
371
+ color: var(--cnfy-gray-800);
372
+ white-space: nowrap;
373
+ overflow: hidden;
374
+ text-overflow: ellipsis;
375
+ }
376
+
377
+ .cnfy-history-item-spinner {
378
+ flex-shrink: 0;
379
+ }
380
+
381
+ .cnfy-history-delete-btn {
382
+ flex-shrink: 0;
383
+ display: flex;
384
+ align-items: center;
385
+ justify-content: center;
386
+ background: none;
387
+ border: none;
388
+ color: var(--cnfy-gray-400);
389
+ cursor: pointer;
390
+ padding: 0.1875rem;
391
+ border-radius: 0.25rem;
392
+ transition: color 0.1s, background-color 0.1s;
393
+ }
394
+ .cnfy-history-delete-btn:hover {
395
+ color: var(--cnfy-red-500, #ef4444);
396
+ background-color: var(--cnfy-red-50, #fef2f2);
397
+ }
398
+
399
+ .cnfy-history-load-more {
400
+ display: flex;
401
+ align-items: center;
402
+ justify-content: center;
403
+ gap: 0.375rem;
404
+ width: 100%;
405
+ padding: 0.625rem;
406
+ font-size: 0.8125rem;
407
+ color: var(--cnfy-gray-500);
408
+ background: none;
409
+ border: none;
410
+ cursor: pointer;
411
+ transition: opacity 0.15s;
412
+ margin-top: 0.25rem;
413
+ }
414
+ .cnfy-history-load-more:hover:not(:disabled) {
415
+ opacity: 0.75;
416
+ }
417
+ .cnfy-history-load-more:disabled {
418
+ opacity: 0.5;
419
+ cursor: not-allowed;
420
+ }
421
+
422
+ /* ── Chat topbar ── */
423
+ .cnfy-chat-topbar {
424
+ display: flex;
425
+ align-items: center;
426
+ padding: 0.375rem 0.75rem;
427
+ border-bottom: 1px solid var(--cnfy-gray-100);
428
+ flex-shrink: 0;
429
+ }
430
+
431
+ .cnfy-history-toggle-btn {
432
+ display: flex;
433
+ align-items: center;
434
+ gap: 0.375rem;
435
+ font-size: 0.8125rem;
436
+ font-weight: 500;
437
+ color: var(--cnfy-gray-500);
438
+ background: none;
439
+ border: 1px solid transparent;
440
+ border-radius: 0.5rem;
441
+ padding: 0.3rem 0.625rem;
442
+ cursor: pointer;
443
+ transition: background-color 0.15s, color 0.15s, border-color 0.15s;
444
+ }
445
+ .cnfy-history-toggle-btn:hover {
446
+ background-color: var(--cnfy-gray-100);
447
+ color: var(--cnfy-gray-700);
448
+ }
449
+ .cnfy-history-toggle-btn--active {
450
+ background-color: var(--cnfy-gray-100);
451
+ color: var(--cnfy-gray-800);
452
+ border-color: var(--cnfy-gray-200);
453
+ }
454
+
194
455
  .cnfy-empty-state {
195
456
  pointer-events: none;
196
457
  position: absolute;
@@ -346,69 +607,290 @@
346
607
  }
347
608
 
348
609
  /* ========================================
349
- ChatWindow.tsx
610
+ ChatWindow.tsx — slide-panel editor
350
611
  ======================================== */
351
- .cnfy-chat {
612
+
613
+ /* Outer wrapper — holds chat pane + edit pane side by side */
614
+ .cnfy-editor-wrapper {
615
+ width: 100%;
352
616
  height: 100%;
353
617
  display: flex;
354
- width: 100%;
355
- flex-direction: column;
618
+ overflow: hidden;
356
619
  }
357
620
 
358
- .cnfy-chat-area {
359
- flex: 1;
360
- padding: 0rem 1.5rem;
621
+ /* Chat pane: fills full width by default, shrinks to 50% when editing */
622
+ .cnfy-editor-chat-pane {
623
+ flex: 0 0 100%;
624
+ width: 100%;
625
+ height: 100%;
626
+ transition: flex-basis 0.32s cubic-bezier(0.4, 0, 0.2, 1),
627
+ width 0.32s cubic-bezier(0.4, 0, 0.2, 1);
628
+ overflow: hidden;
361
629
  }
362
630
 
363
- .cnfy-chat-scroll {
364
- max-width: 48rem;
365
- height: 80vh;
366
- margin: 0 auto;
367
- padding-left: 1rem;
368
- padding-right: 1rem;
369
- overflow-y: auto;
631
+ .cnfy-editor-wrapper--editing .cnfy-editor-chat-pane {
632
+ flex: 0 0 50%;
633
+ width: 50%;
370
634
  }
371
635
 
372
- .cnfy-chat-scroll::-webkit-scrollbar {
373
- width: 1px;
636
+ /* Edit pane: hidden (zero-width) by default, expands to 50% when editing */
637
+ .cnfy-editor-edit-pane {
638
+ flex: 0 0 0%;
639
+ width: 0;
640
+ height: 100%;
641
+ overflow: hidden;
642
+ transition: flex-basis 0.32s cubic-bezier(0.4, 0, 0.2, 1),
643
+ width 0.32s cubic-bezier(0.4, 0, 0.2, 1);
644
+ border-left: 1px solid var(--cnfy-gray-200);
645
+ background: var(--cnfy-white);
374
646
  }
375
647
 
376
- .cnfy-chat-scroll::-webkit-scrollbar-track {
377
- background: transparent;
648
+ .cnfy-editor-wrapper--editing .cnfy-editor-edit-pane {
649
+ flex: 0 0 50%;
650
+ width: 50%;
378
651
  }
379
652
 
380
- .cnfy-chat-scroll::-webkit-scrollbar-thumb {
381
- background: rgba(0,0,0,0.25);
382
- border-radius: 10px;
653
+ /* Drag resize handle */
654
+ .cnfy-resize-handle {
655
+ flex-shrink: 0;
656
+ width: 8px;
657
+ height: 100%;
658
+ cursor: col-resize;
659
+ display: flex;
660
+ align-items: center;
661
+ justify-content: center;
662
+ background: transparent;
663
+ z-index: 10;
664
+ user-select: none;
383
665
  }
384
666
 
385
- .cnfy-chat-scroll::-webkit-scrollbar-thumb:hover {
386
- background: rgba(0,0,0,0.45);
667
+ .cnfy-resize-handle:hover .cnfy-resize-handle-bar,
668
+ .cnfy-resize-handle:active .cnfy-resize-handle-bar {
669
+ background: var(--cnfy-primary, #8b5cf6);
670
+ opacity: 1;
387
671
  }
388
672
 
389
- .cnfy-chat-scroll > * + * {
390
- margin-top: 1.5rem;
673
+ .cnfy-resize-handle-bar {
674
+ background: var(--cnfy-gray-300, #d1d5db);
675
+ opacity: .6;
676
+ border-radius: 2px;
677
+ width: 5px;
678
+ height: 26px;
679
+ margin-left: 3px;
680
+ transition: background .15s, opacity .15s;
391
681
  }
392
682
 
393
- .cnfy-msg {
683
+ /* Inline edit panel (no overlay) */
684
+ .cnfy-edit-inline {
394
685
  display: flex;
395
- gap: 0.75rem;
686
+ flex-direction: column;
687
+ width: 100%;
688
+ height: 100%;
689
+ overflow: hidden;
690
+ background: var(--cnfy-white);
396
691
  }
397
692
 
398
- .cnfy-msg-avatar-wrap {
693
+ .cnfy-edit-inline .cnfy-edit-modal-body {
694
+ flex: 1;
695
+ overflow-y: auto;
696
+ padding: 1.25rem 1.5rem;
697
+ }
698
+
699
+ .cnfy-edit-inline .cnfy-edit-modal-header {
700
+ border-bottom: 1px solid var(--cnfy-gray-200);
701
+ padding: 1rem 1.5rem;
399
702
  flex-shrink: 0;
400
703
  }
401
704
 
402
- .cnfy-msg-avatar {
403
- height: 2rem;
404
- width: 2rem;
405
- border-radius: 9999px;
406
- display: flex;
407
- align-items: center;
408
- justify-content: center;
409
- font-size: 0.75rem;
410
- font-weight: 600;
411
- color: var(--cnfy-white);
705
+ .cnfy-edit-inline .cnfy-edit-modal-footer {
706
+ flex-shrink: 0;
707
+ }
708
+
709
+ .cnfy-chat {
710
+ height: 100%;
711
+ display: flex;
712
+ width: 100%;
713
+ flex-direction: column;
714
+ }
715
+
716
+ /* ── ChatGPT-style centered empty state ── */
717
+ .cnfy-chat--empty {
718
+ justify-content: center;
719
+ align-items: center;
720
+ gap: 2rem;
721
+ padding: 2rem 1rem;
722
+ background: radial-gradient(ellipse 80% 50% at 50% 0%, rgba(139,92,246,0.06) 0%, transparent 70%);
723
+ }
724
+
725
+ .cnfy-chat--empty .cnfy-chat-area {
726
+ display: none;
727
+ }
728
+
729
+ .cnfy-chat--empty .cnfy-input-area {
730
+ width: 100%;
731
+ max-width: 44rem;
732
+ padding: 0;
733
+ background: transparent;
734
+ order: 3;
735
+ }
736
+
737
+ .cnfy-chat--empty .cnfy-suggestions {
738
+ order: 2;
739
+ }
740
+
741
+ .cnfy-chat--empty .cnfy-empty-hero {
742
+ order: 1;
743
+ }
744
+
745
+ .cnfy-chat--empty .cnfy-input-inner {
746
+ max-width: 100%;
747
+ box-shadow: 0 2px 16px rgba(0,0,0,0.08);
748
+ border-radius: 1.5rem;
749
+ }
750
+
751
+ .cnfy-chat--empty .cnfy-chat-textarea {
752
+ border-color: transparent;
753
+ background: #fff;
754
+ border-radius: 1.5rem !important;
755
+ box-shadow: none;
756
+ padding-top: 1rem;
757
+ padding-bottom: 1rem;
758
+ }
759
+
760
+ .cnfy-chat--empty .cnfy-chat-textarea:focus {
761
+ border-color: rgba(139,92,246,0.3);
762
+ outline: none;
763
+ }
764
+
765
+ /* Hero */
766
+ .cnfy-empty-hero {
767
+ text-align: center;
768
+ display: flex;
769
+ flex-direction: column;
770
+ align-items: center;
771
+ gap: 0.75rem;
772
+ }
773
+
774
+ .cnfy-empty-hero-icon {
775
+ width: 3.5rem;
776
+ height: 3.5rem;
777
+ border-radius: 1rem;
778
+ background: linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%);
779
+ display: flex;
780
+ align-items: center;
781
+ justify-content: center;
782
+ color: #fff;
783
+ box-shadow: 0 8px 24px rgba(139,92,246,0.3);
784
+ margin-bottom: 0.25rem;
785
+ }
786
+
787
+ .cnfy-empty-state-title {
788
+ font-size: 1.625rem;
789
+ font-weight: 700;
790
+ color: #111;
791
+ letter-spacing: -0.02em;
792
+ line-height: 1.2;
793
+ }
794
+
795
+ .cnfy-empty-state-subtitle {
796
+ font-size: 0.9375rem;
797
+ color: #6b7280;
798
+ margin-top: 0;
799
+ line-height: 1.5;
800
+ }
801
+
802
+ /* Suggestion chips */
803
+ .cnfy-suggestions {
804
+ display: flex;
805
+ flex-wrap: wrap;
806
+ gap: 0.5rem;
807
+ justify-content: center;
808
+ max-width: 44rem;
809
+ width: 100%;
810
+ }
811
+
812
+ .cnfy-suggestion-chip {
813
+ display: flex;
814
+ align-items: center;
815
+ gap: 0.4rem;
816
+ padding: 0.5rem 0.875rem;
817
+ border-radius: 9999px;
818
+ border: 1px solid #e5e7eb;
819
+ background: #fff;
820
+ color: #374151;
821
+ font-size: 0.8125rem;
822
+ cursor: pointer;
823
+ transition: all 0.15s ease;
824
+ white-space: nowrap;
825
+ box-shadow: 0 1px 3px rgba(0,0,0,0.06);
826
+ }
827
+
828
+ .cnfy-suggestion-chip:hover {
829
+ border-color: #8b5cf6;
830
+ color: #7c3aed;
831
+ background: #faf5ff;
832
+ box-shadow: 0 2px 8px rgba(139,92,246,0.15);
833
+ }
834
+
835
+ .cnfy-suggestion-chip svg {
836
+ opacity: 0.6;
837
+ flex-shrink: 0;
838
+ }
839
+
840
+ .cnfy-chat-area {
841
+ flex: 1;
842
+ padding: 0rem 1.5rem;
843
+ }
844
+
845
+ .cnfy-chat-scroll {
846
+ max-width: 48rem;
847
+ height: 80vh;
848
+ margin: 0 auto;
849
+ padding-left: 1rem;
850
+ padding-right: 1rem;
851
+ overflow-y: auto;
852
+ }
853
+
854
+ .cnfy-chat-scroll::-webkit-scrollbar {
855
+ width: 1px;
856
+ }
857
+
858
+ .cnfy-chat-scroll::-webkit-scrollbar-track {
859
+ background: transparent;
860
+ }
861
+
862
+ .cnfy-chat-scroll::-webkit-scrollbar-thumb {
863
+ background: rgba(0,0,0,0.25);
864
+ border-radius: 10px;
865
+ }
866
+
867
+ .cnfy-chat-scroll::-webkit-scrollbar-thumb:hover {
868
+ background: rgba(0,0,0,0.45);
869
+ }
870
+
871
+ .cnfy-chat-scroll > * + * {
872
+ margin-top: 1.5rem;
873
+ }
874
+
875
+ .cnfy-msg {
876
+ display: flex;
877
+ gap: 0.75rem;
878
+ }
879
+
880
+ .cnfy-msg-avatar-wrap {
881
+ flex-shrink: 0;
882
+ }
883
+
884
+ .cnfy-msg-avatar {
885
+ height: 2rem;
886
+ width: 2rem;
887
+ border-radius: 9999px;
888
+ display: flex;
889
+ align-items: center;
890
+ justify-content: center;
891
+ font-size: 0.75rem;
892
+ font-weight: 600;
893
+ color: var(--cnfy-white);
412
894
  }
413
895
 
414
896
  .cnfy-msg-body {
@@ -511,14 +993,14 @@
511
993
  }
512
994
 
513
995
  .cnfy-article-content h1 {
514
- font-size: 1.05rem;
515
- font-weight: 700;
516
- margin: 0 0 0.5rem;
517
- color: var(--cnfy-gray-900);
996
+ color: var(--cnfy-gray-900);
997
+ margin: 0 0 .5rem;
998
+ font-size: 1.2rem;
999
+ font-weight: 700;
518
1000
  }
519
1001
 
520
1002
  .cnfy-article-content h2 {
521
- font-size: 0.95rem;
1003
+ font-size: 1.2rem;
522
1004
  font-weight: 600;
523
1005
  margin: 1rem 0 0.4rem;
524
1006
  color: var(--cnfy-gray-900);
@@ -528,6 +1010,43 @@
528
1010
  margin: 0.4rem 0;
529
1011
  }
530
1012
 
1013
+ .cnfy-article-content h3 {
1014
+ font-size: 1rem;
1015
+ font-weight: 600;
1016
+ margin: 0.85rem 0 0.3rem;
1017
+ color: var(--cnfy-gray-900);
1018
+ }
1019
+
1020
+ .cnfy-article-content ul,
1021
+ .cnfy-article-content ol {
1022
+ margin: 0.5rem 0 0.5rem 1.25rem;
1023
+ padding: 0;
1024
+ }
1025
+
1026
+ .cnfy-article-content li {
1027
+ margin: 0.25rem 0;
1028
+ }
1029
+
1030
+ .cnfy-article-content blockquote {
1031
+ border-left: 3px solid var(--color-primary, #10b981);
1032
+ margin: 0.75rem 0;
1033
+ padding: 0.5rem 0.75rem;
1034
+ background: var(--cnfy-gray-50, #f9fafb);
1035
+ border-radius: 0 0.25rem 0.25rem 0;
1036
+ font-style: italic;
1037
+ color: var(--cnfy-gray-700);
1038
+ }
1039
+
1040
+ .cnfy-article-content strong {
1041
+ font-weight: 600;
1042
+ color: var(--cnfy-gray-900);
1043
+ }
1044
+
1045
+ .cnfy-article-content a {
1046
+ color: var(--color-primary, #10b981);
1047
+ text-decoration: underline;
1048
+ }
1049
+
531
1050
  .cnfy-msg-keywords {
532
1051
  padding-top: 0.75rem;
533
1052
  border-top: 1px solid var(--cnfy-gray-200);
@@ -621,11 +1140,46 @@
621
1140
  font-size: 0.875rem;
622
1141
  font-weight: 500;
623
1142
  color: var(--cnfy-white);
624
- background: none;
1143
+ background: linear-gradient(135deg, #8b5cf6, #ec4899);
625
1144
  border: none;
626
1145
  cursor: pointer;
1146
+ transition: opacity 0.15s, box-shadow 0.15s;
1147
+ }
1148
+
1149
+ .cnfy-btn-post:hover {
1150
+ opacity: 0.9;
1151
+ box-shadow: 0 4px 14px rgba(139, 92, 246, 0.4);
1152
+ }
1153
+
1154
+ .cnfy-btn-download {
1155
+ display: flex;
1156
+ align-items: center;
1157
+ gap: 0.375rem;
1158
+ padding: 0.5rem 1rem;
1159
+ border: 1px solid var(--cnfy-gray-300);
1160
+ border-radius: 0.5rem;
1161
+ font-size: 0.875rem;
1162
+ font-weight: 500;
1163
+ color: var(--cnfy-gray-700);
1164
+ background: none;
1165
+ cursor: pointer;
627
1166
  transition: background-color 0.15s;
628
1167
  }
1168
+ .cnfy-btn-download:hover:not(:disabled) {
1169
+ background-color: var(--cnfy-gray-50);
1170
+ }
1171
+ .cnfy-btn-download:disabled {
1172
+ opacity: 0.6;
1173
+ cursor: not-allowed;
1174
+ }
1175
+ .cnfy-btn-download--pdf {
1176
+ border: none;
1177
+ color: var(--cnfy-white);
1178
+ }
1179
+ .cnfy-btn-download--pdf:hover:not(:disabled) {
1180
+ opacity: 0.88;
1181
+ background: none;
1182
+ }
629
1183
 
630
1184
  /* Input Area */
631
1185
  .cnfy-input-area {
@@ -753,11 +1307,14 @@
753
1307
  border-radius: 50px;
754
1308
  outline: none;
755
1309
  flex: 1;
756
- height: 50px !important;
757
- padding: 15px 55px 10px 42px;
1310
+ min-height: 50px;
1311
+ max-height: 200px;
1312
+ padding: 14px 55px 14px 50px;
758
1313
  font-family: inherit;
759
1314
  font-size: .875rem;
760
- overflow: hidden;
1315
+ line-height: 1.5;
1316
+ overflow-y: hidden;
1317
+ transition: border-radius 0.15s ease;
761
1318
  }
762
1319
 
763
1320
  .cnfy-chat-textarea--with-trigger {
@@ -774,13 +1331,20 @@
774
1331
  width: 2.5rem;
775
1332
  position: absolute;
776
1333
  right: 10px;
777
- top: 5px;
1334
+ bottom: 8px;
1335
+ top: auto;
778
1336
  align-items: center;
779
1337
  justify-content: center;
780
1338
  border-radius: 9999px;
781
1339
  border: none;
782
1340
  cursor: pointer;
783
1341
  color: var(--cnfy-white);
1342
+ transition: opacity 0.15s, box-shadow 0.15s;
1343
+ }
1344
+
1345
+ .cnfy-send-btn:hover {
1346
+ opacity: 0.9;
1347
+ box-shadow: 0 4px 14px rgba(139, 92, 246, 0.4);
784
1348
  }
785
1349
 
786
1350
  /* ========================================
@@ -1398,6 +1962,7 @@
1398
1962
  color: var(--cnfy-gray-900);
1399
1963
  display: -webkit-box;
1400
1964
  -webkit-line-clamp: 2;
1965
+ line-clamp: 2;
1401
1966
  -webkit-box-orient: vertical;
1402
1967
  overflow: hidden;
1403
1968
  margin: 0;
@@ -1445,7 +2010,7 @@
1445
2010
  }
1446
2011
 
1447
2012
  .cnfy-news-action-btn:hover {
1448
- color: var(--cnfy-gray-700);
2013
+ color: #8b5cf6;
1449
2014
  }
1450
2015
 
1451
2016
  /* ========================================
@@ -1488,8 +2053,9 @@
1488
2053
  }
1489
2054
 
1490
2055
  .cnfy-source-pill:hover {
1491
- border-color: var(--cnfy-primary);
1492
- color: var(--cnfy-primary);
2056
+ background: linear-gradient(135deg, rgba(139,92,246,0.08), rgba(236,72,153,0.06));
2057
+ border-color: #8b5cf6;
2058
+ color: #7c3aed;
1493
2059
  }
1494
2060
 
1495
2061
  .cnfy-source-pill--active {
@@ -2063,6 +2629,580 @@
2063
2629
  min-width: 60px;
2064
2630
  max-width: 100%;
2065
2631
  }
2066
-
2632
+
2633
+ }
2634
+
2635
+ /* ========================================
2636
+ Fixes for contenify-web-access integration
2637
+ ======================================== */
2638
+
2639
+ /* Wrapper for the pulse/news trigger button.
2640
+ - Positioned absolute (like cnfy-news-trigger-wrap) so it sits at left edge of input area.
2641
+ - position:relative so the dropdown (position:absolute; bottom:100%) anchors to it. */
2642
+ .cnfy-news-pulse-wrap {
2643
+ position: absolute;
2644
+ left: 0.75rem;
2645
+ bottom: 8px;
2646
+ top: auto;
2647
+ transform: none;
2648
+ z-index: 10;
2649
+ }
2650
+
2651
+ /* The button inside the wrap — reset the absolute positioning declared
2652
+ in the base .cnfy-news-pulse-btn rule so it sits normally in the wrap. */
2653
+ .cnfy-news-pulse-wrap .cnfy-news-pulse-btn {
2654
+ position: relative;
2655
+ top: auto;
2656
+ left: auto;
2657
+ transform: none;
2658
+ }
2659
+
2660
+ /* Make the chat root fill the viewport without body scroll */
2661
+ .cnfy-root {
2662
+ overflow: hidden;
2663
+ }
2664
+
2665
+ /* Source pills row */
2666
+ .cnfy-source-pills-wrap {
2667
+ display: flex;
2668
+ align-items: center;
2669
+ padding: 0.5rem 0.75rem;
2670
+ gap: 0.5rem;
2671
+ border-bottom: 1px solid var(--cnfy-gray-100);
2672
+ overflow: hidden;
2673
+ }
2674
+
2675
+ .cnfy-source-pills {
2676
+ display: flex;
2677
+ gap: 0.375rem;
2678
+ overflow-x: auto;
2679
+ flex: 1;
2680
+ scrollbar-width: none;
2681
+ }
2682
+
2683
+ .cnfy-source-pills::-webkit-scrollbar {
2684
+ display: none;
2685
+ }
2686
+
2687
+ .cnfy-source-pill {
2688
+ flex-shrink: 0;
2689
+ padding: 0.25rem 0.75rem;
2690
+ border-radius: 9999px;
2691
+ border: 1px solid var(--cnfy-gray-300);
2692
+ background: transparent;
2693
+ font-size: 0.75rem;
2694
+ cursor: pointer;
2695
+ color: var(--cnfy-gray-700);
2696
+ transition: background-color 0.15s, color 0.15s, border-color 0.15s;
2697
+ }
2698
+
2699
+ .cnfy-source-pill:hover {
2700
+ background-color: var(--cnfy-gray-100);
2701
+ }
2702
+
2703
+ .cnfy-source-pill--active {
2704
+ color: #fff;
2705
+ }
2706
+
2707
+ .cnfy-source-pills-loading {
2708
+ display: flex;
2709
+ align-items: center;
2710
+ gap: 0.375rem;
2711
+ font-size: 0.75rem;
2712
+ color: var(--cnfy-gray-500);
2067
2713
  }
2068
2714
 
2715
+ .cnfy-source-refresh-btn {
2716
+ flex-shrink: 0;
2717
+ display: flex;
2718
+ align-items: center;
2719
+ justify-content: center;
2720
+ width: 1.75rem;
2721
+ height: 1.75rem;
2722
+ border-radius: 9999px;
2723
+ border: 1px solid var(--cnfy-gray-200);
2724
+ background: transparent;
2725
+ cursor: pointer;
2726
+ color: var(--cnfy-gray-500);
2727
+ transition: background-color 0.15s;
2728
+ }
2729
+
2730
+ .cnfy-source-refresh-btn:hover:not(:disabled) {
2731
+ background-color: var(--cnfy-gray-100);
2732
+ }
2733
+
2734
+ .cnfy-source-refresh-btn:disabled {
2735
+ opacity: 0.5;
2736
+ cursor: not-allowed;
2737
+ }
2738
+
2739
+ .cnfy-lang-hi .cnfy-block-h1 {
2740
+ word-spacing: -3px;
2741
+ font-weight: 900;
2742
+ font-size: 2rem;
2743
+ font-family: "Noto Sans Devanagari", sans-serif;
2744
+ }
2745
+
2746
+ .cnfy-lang-hi .cnfy-block-h2{
2747
+ font-weight: 700;
2748
+ font-size: 1.2rem;
2749
+ color: #616161;
2750
+ }
2751
+
2752
+ .cnfy-divider{
2753
+ color: #d4d4d4;
2754
+ }
2755
+
2756
+
2757
+ /* ========================================
2758
+ Image Slider (message view)
2759
+ ======================================== */
2760
+ .cnfy-image-slider-wrap {
2761
+ margin-top: 16px;
2762
+ padding-top: 14px;
2763
+ border-top: 1px solid var(--cnfy-gray-200);
2764
+ }
2765
+
2766
+ .cnfy-image-slider-label {
2767
+ font-size: 11px;
2768
+ font-weight: 600;
2769
+ text-transform: uppercase;
2770
+ letter-spacing: 0.06em;
2771
+ color: var(--cnfy-gray-500);
2772
+ margin-bottom: 10px;
2773
+ }
2774
+
2775
+ .cnfy-image-slider {
2776
+ display: flex;
2777
+ gap: 10px;
2778
+ overflow-x: auto;
2779
+ padding-bottom: 6px;
2780
+ scrollbar-width: thin;
2781
+ scrollbar-color: var(--cnfy-gray-300) transparent;
2782
+ }
2783
+
2784
+ .cnfy-image-slider::-webkit-scrollbar {
2785
+ height: 4px;
2786
+ }
2787
+ .cnfy-image-slider::-webkit-scrollbar-thumb {
2788
+ background: var(--cnfy-gray-300);
2789
+ border-radius: 99px;
2790
+ }
2791
+
2792
+ .cnfy-image-slider-item {
2793
+ position: relative;
2794
+ flex-shrink: 0;
2795
+ width: 120px;
2796
+ height: 80px;
2797
+ border-radius: 8px;
2798
+ overflow: hidden;
2799
+ border: 2px solid transparent;
2800
+ cursor: pointer;
2801
+ padding: 0;
2802
+ background: var(--cnfy-gray-100);
2803
+ transition: border-color 0.15s, transform 0.15s;
2804
+ }
2805
+
2806
+ .cnfy-image-slider-item:hover {
2807
+ border-color: var(--cnfy-purple-500);
2808
+ transform: scale(1.03);
2809
+ }
2810
+
2811
+ .cnfy-image-slider-item--selected {
2812
+ border-color: var(--cnfy-purple-600);
2813
+ box-shadow: 0 0 0 2px rgba(139, 92, 246, 0.25);
2814
+ }
2815
+
2816
+ .cnfy-image-slider-thumb {
2817
+ width: 100%;
2818
+ height: 100%;
2819
+ object-fit: cover;
2820
+ display: block;
2821
+ }
2822
+
2823
+ .cnfy-image-slider-check {
2824
+ position: absolute;
2825
+ top: 4px;
2826
+ right: 4px;
2827
+ width: 20px;
2828
+ height: 20px;
2829
+ border-radius: 50%;
2830
+ background: var(--cnfy-purple-600);
2831
+ color: #fff;
2832
+ display: flex;
2833
+ align-items: center;
2834
+ justify-content: center;
2835
+ }
2836
+
2837
+ /* ========================================
2838
+ Featured Image (edit view)
2839
+ ======================================== */
2840
+ .cnfy-edit-featured-image-wrap {
2841
+ position: relative;
2842
+ border-radius: 10px;
2843
+ overflow: hidden;
2844
+ background: var(--cnfy-gray-100);
2845
+ margin-bottom: 4px;
2846
+ }
2847
+
2848
+ .cnfy-edit-featured-image {
2849
+ width: 100%;
2850
+ max-height: 220px;
2851
+ object-fit: cover;
2852
+ display: block;
2853
+ }
2854
+
2855
+ .cnfy-edit-featured-image-remove {
2856
+ position: absolute;
2857
+ top: 8px;
2858
+ right: 8px;
2859
+ width: 26px;
2860
+ height: 26px;
2861
+ border-radius: 50%;
2862
+ background: rgba(0,0,0,0.55);
2863
+ color: #fff;
2864
+ border: none;
2865
+ cursor: pointer;
2866
+ display: flex;
2867
+ align-items: center;
2868
+ justify-content: center;
2869
+ transition: background 0.15s;
2870
+ }
2871
+
2872
+ .cnfy-edit-featured-image-remove:hover {
2873
+ background: rgba(0,0,0,0.8);
2874
+ }
2875
+
2876
+ /* ========================================
2877
+ SEO Toggle Button (copy row)
2878
+ ======================================== */
2879
+ .cnfy-seo-toggle-btn {
2880
+ display: inline-flex;
2881
+ align-items: center;
2882
+ gap: 4px;
2883
+ padding: 3px 9px;
2884
+ border-radius: 6px;
2885
+ border: 1px solid var(--cnfy-gray-200);
2886
+ background: var(--cnfy-white);
2887
+ cursor: pointer;
2888
+ font-size: 0.72rem;
2889
+ font-weight: 600;
2890
+ color: var(--cnfy-gray-500);
2891
+ transition: border-color 0.15s, color 0.15s, background 0.15s;
2892
+ }
2893
+
2894
+ .cnfy-seo-toggle-btn:hover {
2895
+ border-color: var(--cnfy-purple-500);
2896
+ color: var(--cnfy-purple-500);
2897
+ background: #f5f3ff;
2898
+ }
2899
+
2900
+ .cnfy-seo-toggle-btn--active {
2901
+ border-color: var(--cnfy-purple-500);
2902
+ background: #f5f3ff;
2903
+ }
2904
+
2905
+ .cnfy-seo-toggle-score {
2906
+ font-size: 0.75rem;
2907
+ font-weight: 800;
2908
+ }
2909
+
2910
+ /* ========================================
2911
+ SEO Analysis Panel
2912
+ ======================================== */
2913
+ .cnfy-seo-panel {
2914
+ margin-top: 16px;
2915
+ border: 1px solid var(--cnfy-gray-200);
2916
+ border-radius: 12px;
2917
+ overflow: hidden;
2918
+ background: var(--cnfy-white);
2919
+ }
2920
+
2921
+ .cnfy-seo-header {
2922
+ display: flex;
2923
+ align-items: center;
2924
+ justify-content: space-between;
2925
+ padding: 10px 14px;
2926
+ background: var(--cnfy-gray-50);
2927
+ border-bottom: 1px solid var(--cnfy-gray-100);
2928
+ }
2929
+
2930
+ .cnfy-seo-title {
2931
+ display: flex;
2932
+ align-items: center;
2933
+ gap: 6px;
2934
+ font-size: 0.72rem;
2935
+ font-weight: 700;
2936
+ color: var(--cnfy-gray-600);
2937
+ text-transform: uppercase;
2938
+ letter-spacing: 0.06em;
2939
+ }
2940
+
2941
+ .cnfy-seo-score-info {
2942
+ display: flex;
2943
+ align-items: center;
2944
+ gap: 8px;
2945
+ }
2946
+
2947
+ .cnfy-seo-score-num {
2948
+ font-size: 1rem;
2949
+ font-weight: 800;
2950
+ color: var(--cnfy-gray-900);
2951
+ }
2952
+
2953
+ .cnfy-seo-score-denom {
2954
+ font-size: 0.7rem;
2955
+ color: var(--cnfy-gray-400);
2956
+ }
2957
+
2958
+ .cnfy-seo-grade {
2959
+ width: 26px;
2960
+ height: 26px;
2961
+ border-radius: 50%;
2962
+ display: flex;
2963
+ align-items: center;
2964
+ justify-content: center;
2965
+ font-size: 0.75rem;
2966
+ font-weight: 900;
2967
+ color: #fff;
2968
+ flex-shrink: 0;
2969
+ }
2970
+
2971
+ .cnfy-seo-body {
2972
+ padding: 12px 14px;
2973
+ }
2974
+
2975
+ .cnfy-seo-overall-bar {
2976
+ height: 6px;
2977
+ background: var(--cnfy-gray-100);
2978
+ border-radius: 3px;
2979
+ overflow: hidden;
2980
+ margin-bottom: 14px;
2981
+ }
2982
+
2983
+ .cnfy-seo-overall-fill {
2984
+ height: 100%;
2985
+ border-radius: 3px;
2986
+ transition: width 0.5s ease;
2987
+ }
2988
+
2989
+ .cnfy-seo-breakdown {
2990
+ display: flex;
2991
+ flex-direction: column;
2992
+ gap: 7px;
2993
+ margin-bottom: 12px;
2994
+ }
2995
+
2996
+ .cnfy-seo-breakdown-row {
2997
+ display: flex;
2998
+ align-items: center;
2999
+ gap: 8px;
3000
+ }
3001
+
3002
+ .cnfy-seo-bd-label {
3003
+ font-size: 0.7rem;
3004
+ color: var(--cnfy-gray-500);
3005
+ font-weight: 600;
3006
+ width: 90px;
3007
+ flex-shrink: 0;
3008
+ text-transform: capitalize;
3009
+ }
3010
+
3011
+ .cnfy-seo-bd-bar {
3012
+ flex: 1;
3013
+ height: 5px;
3014
+ background: var(--cnfy-gray-100);
3015
+ border-radius: 3px;
3016
+ overflow: hidden;
3017
+ }
3018
+
3019
+ .cnfy-seo-bd-fill {
3020
+ height: 100%;
3021
+ border-radius: 3px;
3022
+ transition: width 0.5s ease;
3023
+ }
3024
+
3025
+ .cnfy-seo-bd-score {
3026
+ font-size: 0.7rem;
3027
+ font-weight: 700;
3028
+ width: 26px;
3029
+ text-align: right;
3030
+ flex-shrink: 0;
3031
+ }
3032
+
3033
+ .cnfy-seo-bd-extra {
3034
+ font-size: 0.65rem;
3035
+ color: var(--cnfy-gray-400);
3036
+ flex-shrink: 0;
3037
+ max-width: 90px;
3038
+ overflow: hidden;
3039
+ text-overflow: ellipsis;
3040
+ white-space: nowrap;
3041
+ }
3042
+
3043
+ /* Issues */
3044
+ .cnfy-seo-issues {
3045
+ margin-bottom: 10px;
3046
+ padding: 9px 11px;
3047
+ background: #fef2f2;
3048
+ border-radius: 8px;
3049
+ border: 1px solid #fecaca;
3050
+ }
3051
+
3052
+ .cnfy-seo-issues-title {
3053
+ font-size: 0.7rem;
3054
+ font-weight: 700;
3055
+ color: #dc2626;
3056
+ display: flex;
3057
+ align-items: center;
3058
+ gap: 4px;
3059
+ margin-bottom: 5px;
3060
+ }
3061
+
3062
+ .cnfy-seo-issue-item {
3063
+ font-size: 0.7rem;
3064
+ color: #991b1b;
3065
+ padding-left: 10px;
3066
+ position: relative;
3067
+ margin-bottom: 3px;
3068
+ line-height: 1.4;
3069
+ }
3070
+
3071
+ .cnfy-seo-issue-item::before {
3072
+ content: '•';
3073
+ position: absolute;
3074
+ left: 0;
3075
+ }
3076
+
3077
+ /* Suggestions */
3078
+ .cnfy-seo-suggestions {
3079
+ border-top: 1px solid var(--cnfy-gray-100);
3080
+ padding-top: 10px;
3081
+ }
3082
+
3083
+ .cnfy-seo-suggestions-toggle {
3084
+ display: flex;
3085
+ align-items: center;
3086
+ justify-content: space-between;
3087
+ width: 100%;
3088
+ background: none;
3089
+ border: none;
3090
+ cursor: pointer;
3091
+ padding: 0;
3092
+ font-size: 0.7rem;
3093
+ font-weight: 700;
3094
+ color: var(--cnfy-gray-500);
3095
+ text-transform: uppercase;
3096
+ letter-spacing: 0.05em;
3097
+ margin-bottom: 0;
3098
+ }
3099
+
3100
+ .cnfy-seo-suggestions-list {
3101
+ margin-top: 8px;
3102
+ display: flex;
3103
+ flex-direction: column;
3104
+ gap: 4px;
3105
+ }
3106
+
3107
+ .cnfy-seo-suggestion-item {
3108
+ font-size: 0.7rem;
3109
+ color: var(--cnfy-gray-600);
3110
+ padding-left: 14px;
3111
+ position: relative;
3112
+ line-height: 1.45;
3113
+ }
3114
+
3115
+ .cnfy-seo-suggestion-item::before {
3116
+ content: '→';
3117
+ position: absolute;
3118
+ left: 0;
3119
+ color: var(--cnfy-purple-500);
3120
+ font-size: 0.65rem;
3121
+ }
3122
+
3123
+ /* Before/after improvement */
3124
+ .cnfy-seo-improvement-badge {
3125
+ display: inline-flex;
3126
+ align-items: center;
3127
+ padding: 1px 6px;
3128
+ border-radius: 20px;
3129
+ background: #d1fae5;
3130
+ color: #065f46;
3131
+ font-size: 0.65rem;
3132
+ font-weight: 800;
3133
+ margin-left: 6px;
3134
+ }
3135
+
3136
+ .cnfy-seo-before {
3137
+ display: inline-flex;
3138
+ align-items: center;
3139
+ gap: 4px;
3140
+ font-size: 0.65rem;
3141
+ color: var(--cnfy-gray-400);
3142
+ margin-right: 4px;
3143
+ }
3144
+
3145
+ .cnfy-seo-before-grade {
3146
+ display: inline-flex;
3147
+ align-items: center;
3148
+ justify-content: center;
3149
+ width: 16px;
3150
+ height: 16px;
3151
+ border-radius: 50%;
3152
+ font-size: 0.6rem;
3153
+ font-weight: 800;
3154
+ color: #fff;
3155
+ }
3156
+
3157
+ /* Fix SEO button in message actions */
3158
+ .cnfy-btn-fix-seo {
3159
+ display: inline-flex;
3160
+ align-items: center;
3161
+ gap: 6px;
3162
+ padding: 7px 14px;
3163
+ border-radius: 8px;
3164
+ border: none;
3165
+ background: linear-gradient(135deg, #7c3aed 0%, #ec4899 100%);
3166
+ color: #fff;
3167
+ font-size: 0.8rem;
3168
+ font-weight: 600;
3169
+ cursor: pointer;
3170
+ transition: opacity 0.15s, transform 0.1s;
3171
+ }
3172
+
3173
+ .cnfy-btn-fix-seo:hover {
3174
+ opacity: 0.9;
3175
+ transform: translateY(-1px);
3176
+ }
3177
+
3178
+ .cnfy-btn-fix-seo:disabled {
3179
+ opacity: 0.5;
3180
+ cursor: not-allowed;
3181
+ transform: none;
3182
+ }
3183
+
3184
+ /* Dark mode */
3185
+ @media (prefers-color-scheme: dark) {
3186
+ .cnfy-seo-panel {
3187
+ background: #1a1a2e;
3188
+ border-color: #2d2d44;
3189
+ }
3190
+ .cnfy-seo-header {
3191
+ background: #14142a;
3192
+ border-color: #2d2d44;
3193
+ }
3194
+ .cnfy-seo-overall-bar,
3195
+ .cnfy-seo-bd-bar {
3196
+ background: #2d2d44;
3197
+ }
3198
+ .cnfy-seo-issues {
3199
+ background: #3b0c0c;
3200
+ border-color: #7f1d1d;
3201
+ }
3202
+ .cnfy-seo-issue-item { color: #fca5a5; }
3203
+ .cnfy-seo-issues-title { color: #f87171; }
3204
+ .cnfy-seo-suggestions { border-color: #2d2d44; }
3205
+ .cnfy-seo-suggestion-item { color: #9ca3af; }
3206
+ .cnfy-seo-improvement-badge { background: #064e3b; color: #6ee7b7; }
3207
+ .cnfy-seo-before { color: #6b7280; }
3208
+ }