@product7/feedback-sdk 1.6.7 → 1.6.8

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.
@@ -1727,7 +1727,7 @@
1727
1727
  backgroundColor: options.backgroundColor || '#ffffff',
1728
1728
  textColor: options.textColor || '#1F2937',
1729
1729
  autoShow: false,
1730
- showBackdrop: false,
1730
+ showBackdrop: true,
1731
1731
  customStyles: {},
1732
1732
  suppressAfterSubmission: true,
1733
1733
  suppressionDays: BaseWidget.DEFAULT_COOLDOWN_DAYS,
@@ -1845,9 +1845,11 @@
1845
1845
  _showLoadingModal() {
1846
1846
  this.state.isLoading = true;
1847
1847
 
1848
- this.backdropElement = document.createElement('div');
1849
- this.backdropElement.className = 'sdk-modal-backdrop';
1850
- document.body.appendChild(this.backdropElement);
1848
+ if (this.options.showBackdrop) {
1849
+ this.backdropElement = document.createElement('div');
1850
+ this.backdropElement.className = 'sdk-modal-backdrop';
1851
+ document.body.appendChild(this.backdropElement);
1852
+ }
1851
1853
 
1852
1854
  this.loadingElement = document.createElement('div');
1853
1855
  this.loadingElement.className = 'feedback-loading-modal';
@@ -1857,7 +1859,9 @@
1857
1859
  document.body.appendChild(this.loadingElement);
1858
1860
 
1859
1861
  requestAnimationFrame(() => {
1860
- this.backdropElement.classList.add('show');
1862
+ if (this.backdropElement) {
1863
+ this.backdropElement.classList.add('show');
1864
+ }
1861
1865
  this.loadingElement.classList.add('show');
1862
1866
  });
1863
1867
  }
@@ -2052,16 +2056,17 @@
2052
2056
  : 'feedback-panel';
2053
2057
  const sizeClass = `size-${this.options.size}`;
2054
2058
  this.panelElement = document.createElement('div');
2055
- this.panelElement.className = `${modeClass} ${sizeClass}`;
2059
+ const themeClass = `theme-${this.options.theme || 'light'}`;
2060
+ this.panelElement.className = `${modeClass} ${sizeClass} ${themeClass}`;
2061
+ this.panelElement.style.setProperty('--color-primary', this.options.primaryColor);
2056
2062
  this.panelElement.style.setProperty(
2057
- '--primary-color',
2058
- this.options.primaryColor
2063
+ '--feedback-panel-bg',
2064
+ this.options.backgroundColor
2059
2065
  );
2060
2066
  this.panelElement.style.setProperty(
2061
- '--bg-color',
2062
- this.options.backgroundColor
2067
+ '--feedback-panel-text',
2068
+ this.options.textColor
2063
2069
  );
2064
- this.panelElement.style.setProperty('--text-color', this.options.textColor);
2065
2070
  this.panelElement.innerHTML = this._getPanelHTML();
2066
2071
 
2067
2072
  document.body.appendChild(this.panelElement);
@@ -2390,7 +2395,7 @@
2390
2395
 
2391
2396
  _render() {
2392
2397
  const trigger = document.createElement('div');
2393
- trigger.className = `changelog-widget position-${this.options.position}`;
2398
+ trigger.className = `changelog-widget position-${this.options.position} changelog-theme-${this.options.theme || 'light'}`;
2394
2399
  trigger.innerHTML = `
2395
2400
  <button class="changelog-trigger-btn" type="button" aria-label="View Updates">
2396
2401
  <svg class="changelog-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
@@ -2466,12 +2471,12 @@
2466
2471
 
2467
2472
  _createModal() {
2468
2473
  this.backdropElement = document.createElement('div');
2469
- this.backdropElement.className = 'changelog-modal-backdrop';
2474
+ this.backdropElement.className = `changelog-modal-backdrop changelog-theme-${this.options.theme || 'light'}`;
2470
2475
  document.body.appendChild(this.backdropElement);
2471
2476
  this.backdropElement.addEventListener('click', () => this.closeModal());
2472
2477
 
2473
2478
  this.modalElement = document.createElement('div');
2474
- this.modalElement.className = 'changelog-modal';
2479
+ this.modalElement.className = `changelog-modal changelog-theme-${this.options.theme || 'light'}`;
2475
2480
  this.modalElement.innerHTML = `
2476
2481
  <div class="changelog-modal-container">
2477
2482
  <button class="changelog-modal-close" type="button" aria-label="Close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"><rect width="256" height="256" fill="none"/><line x1="200" y1="56" x2="56" y2="200" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/><line x1="200" y1="200" x2="56" y2="56" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="16"/></svg></button>
@@ -2609,14 +2614,14 @@
2609
2614
 
2610
2615
  _createListModal() {
2611
2616
  this.listModalBackdropElement = document.createElement('div');
2612
- this.listModalBackdropElement.className = 'changelog-list-modal-backdrop';
2617
+ this.listModalBackdropElement.className = `changelog-list-modal-backdrop changelog-theme-${this.options.theme || 'light'}`;
2613
2618
  document.body.appendChild(this.listModalBackdropElement);
2614
2619
  this.listModalBackdropElement.addEventListener('click', () =>
2615
2620
  this.closeSidebar()
2616
2621
  );
2617
2622
 
2618
2623
  this.listModalElement = document.createElement('div');
2619
- this.listModalElement.className = 'changelog-list-modal';
2624
+ this.listModalElement.className = `changelog-list-modal changelog-theme-${this.options.theme || 'light'}`;
2620
2625
  this.listModalElement.innerHTML = `
2621
2626
  <div class="changelog-list-modal-container">
2622
2627
  <div class="changelog-list-modal-header">
@@ -3398,7 +3403,12 @@
3398
3403
  }
3399
3404
 
3400
3405
  const adjustColor = (hex, percent, alpha = 1) => {
3401
- const num = parseInt(hex.replace('#', ''), 16);
3406
+ const normalized = String(hex || '').trim();
3407
+ if (!/^#?[0-9a-fA-F]{6}$/.test(normalized)) {
3408
+ return normalized || '#000000';
3409
+ }
3410
+
3411
+ const num = parseInt(normalized.replace('#', ''), 16);
3402
3412
  const r = Math.max(0, Math.min(255, (num >> 16) + percent));
3403
3413
  const g = Math.max(0, Math.min(255, ((num >> 8) & 0x00ff) + percent));
3404
3414
  const b = Math.max(0, Math.min(255, (num & 0x0000ff) + percent));
@@ -3410,6 +3420,10 @@
3410
3420
  return '#' + ((r << 16) | (g << 8) | b).toString(16).padStart(6, '0');
3411
3421
  };
3412
3422
 
3423
+ const darkSurface = adjustColor(backgroundColor, 12);
3424
+ const darkSurfaceAlt = adjustColor(backgroundColor, 20);
3425
+ const darkBorder = adjustColor(backgroundColor, 34);
3426
+
3413
3427
  styleElement.textContent = `
3414
3428
  #product7-messenger-widget {
3415
3429
  --color-primary: ${primaryColor} !important;
@@ -3471,6 +3485,77 @@
3471
3485
  `
3472
3486
  : ''
3473
3487
  }
3488
+
3489
+ ${
3490
+ theme === 'dark'
3491
+ ? `
3492
+ .messenger-widget.theme-dark .messenger-panel-content,
3493
+ .messenger-widget.theme-dark .messenger-home-view,
3494
+ .messenger-widget.theme-dark .messenger-nav,
3495
+ .messenger-widget.theme-dark .messenger-chat-compose,
3496
+ .messenger-widget.theme-dark .messenger-compose-attachments-preview,
3497
+ .messenger-widget.theme-dark .messenger-home-featured,
3498
+ .messenger-widget.theme-dark .messenger-chat-header {
3499
+ background: ${backgroundColor} !important;
3500
+ border-color: ${darkBorder} !important;
3501
+ }
3502
+
3503
+ .messenger-widget.theme-dark .messenger-view,
3504
+ .messenger-widget.theme-dark .messenger-chat-title,
3505
+ .messenger-widget.theme-dark .messenger-home-greeting,
3506
+ .messenger-widget.theme-dark .messenger-home-question,
3507
+ .messenger-widget.theme-dark .messenger-home-featured-content h3,
3508
+ .messenger-widget.theme-dark .messenger-home-featured-content p,
3509
+ .messenger-widget.theme-dark .messenger-home-changelog-card-title,
3510
+ .messenger-widget.theme-dark .messenger-home-changelog-card-desc,
3511
+ .messenger-widget.theme-dark .messenger-conversation-title,
3512
+ .messenger-widget.theme-dark .messenger-article-title,
3513
+ .messenger-widget.theme-dark .messenger-compose-input,
3514
+ .messenger-widget.theme-dark .messenger-message-sender,
3515
+ .messenger-widget.theme-dark .messenger-message-time,
3516
+ .messenger-widget.theme-dark .messenger-nav-label {
3517
+ color: ${textColor} !important;
3518
+ }
3519
+
3520
+ .messenger-widget.theme-dark .messenger-home-view {
3521
+ background: linear-gradient(180deg, ${adjustColor(backgroundColor, 10)} 0%, ${backgroundColor} 55%) !important;
3522
+ }
3523
+
3524
+ .messenger-widget.theme-dark .messenger-home-view::before {
3525
+ background: radial-gradient(circle, ${adjustColor(primaryColor, 0, 0.12)} 0%, transparent 70%) !important;
3526
+ }
3527
+
3528
+ .messenger-widget.theme-dark .messenger-home-message-btn,
3529
+ .messenger-widget.theme-dark .messenger-home-changelog-card,
3530
+ .messenger-widget.theme-dark .messenger-compose-input-wrapper,
3531
+ .messenger-widget.theme-dark .messenger-message-received .messenger-message-bubble,
3532
+ .messenger-widget.theme-dark .messenger-message-file,
3533
+ .messenger-widget.theme-dark .messenger-prechat-card,
3534
+ .messenger-widget.theme-dark .messenger-list-item,
3535
+ .messenger-widget.theme-dark .messenger-article-item {
3536
+ background: ${darkSurface} !important;
3537
+ border-color: ${darkBorder} !important;
3538
+ }
3539
+
3540
+ .messenger-widget.theme-dark .messenger-home-message-btn:hover,
3541
+ .messenger-widget.theme-dark .messenger-home-changelog-card:hover,
3542
+ .messenger-widget.theme-dark .messenger-list-item:hover,
3543
+ .messenger-widget.theme-dark .messenger-article-item:hover {
3544
+ background: ${darkSurfaceAlt} !important;
3545
+ }
3546
+
3547
+ .messenger-widget.theme-dark .messenger-message-own .messenger-message-bubble,
3548
+ .messenger-widget.theme-dark .messenger-compose-send,
3549
+ .messenger-widget.theme-dark .messenger-launcher-btn,
3550
+ .messenger-widget.theme-dark .messenger-nav-badge,
3551
+ .messenger-widget.theme-dark .messenger-launcher-badge,
3552
+ .messenger-widget.theme-dark .messenger-home-changelog-cover-text,
3553
+ .messenger-widget.theme-dark .messenger-attachment-remove {
3554
+ color: #FFFFFF !important;
3555
+ }
3556
+ `
3557
+ : ''
3558
+ }
3474
3559
  `;
3475
3560
 
3476
3561
  console.log('✅ Custom messenger styles applied:', { primaryColor, theme });
@@ -5942,6 +6027,19 @@
5942
6027
  class MessengerWidget extends BaseWidget {
5943
6028
  constructor(options) {
5944
6029
  super({ ...options, type: 'messenger' });
6030
+ const resolvedTheme = options.theme || 'light';
6031
+ const hasExplicitTextColor = Object.prototype.hasOwnProperty.call(
6032
+ options,
6033
+ 'textColor'
6034
+ );
6035
+ const hasExplicitBackgroundColor = Object.prototype.hasOwnProperty.call(
6036
+ options,
6037
+ 'backgroundColor'
6038
+ );
6039
+ const defaultTextColor =
6040
+ resolvedTheme === 'dark' ? '#E2E8F0' : '#1d1d1f';
6041
+ const defaultBackgroundColor =
6042
+ resolvedTheme === 'dark' ? '#0F172A' : '#ffffff';
5945
6043
 
5946
6044
  const resolvedEnableChangelog =
5947
6045
  typeof options.enableChangelog === 'boolean'
@@ -5950,10 +6048,12 @@
5950
6048
 
5951
6049
  this.messengerOptions = {
5952
6050
  position: options.position || 'bottom-right',
5953
- theme: options.theme || 'light',
6051
+ theme: resolvedTheme,
5954
6052
  primaryColor: options.primaryColor || '#155EEF',
5955
- textColor: options.textColor || '#1d1d1f',
5956
- backgroundColor: options.backgroundColor || '#ffffff',
6053
+ textColor: hasExplicitTextColor ? options.textColor : defaultTextColor,
6054
+ backgroundColor: hasExplicitBackgroundColor
6055
+ ? options.backgroundColor
6056
+ : defaultBackgroundColor,
5957
6057
  logoUrl: options.logoUrl || 'https://product7.io/p7logo.svg',
5958
6058
  teamName: options.teamName || 'Support',
5959
6059
  teamAvatars: options.teamAvatars || [],
@@ -6865,6 +6965,7 @@
6865
6965
  surveyId: options.surveyId || null,
6866
6966
  surveyType: options.surveyType || 'nps',
6867
6967
  position: options.position || 'bottom-right',
6968
+ theme: options.theme || 'light',
6868
6969
  enabled:
6869
6970
  typeof options.enabled === 'boolean' ? options.enabled : undefined,
6870
6971
  title: options.title || null,
@@ -6909,6 +7010,20 @@
6909
7010
  };
6910
7011
  }
6911
7012
 
7013
+ static removeDanglingElements() {
7014
+ if (typeof document === 'undefined') return;
7015
+
7016
+ document
7017
+ .querySelectorAll(
7018
+ '.feedback-survey, .feedback-survey-backdrop, .feedback-survey-success'
7019
+ )
7020
+ .forEach((el) => {
7021
+ if (el && el.parentNode) {
7022
+ el.parentNode.removeChild(el);
7023
+ }
7024
+ });
7025
+ }
7026
+
6912
7027
  _render() {
6913
7028
  const container = document.createElement('div');
6914
7029
  container.className = 'feedback-survey-container';
@@ -6929,6 +7044,7 @@
6929
7044
  return this;
6930
7045
  }
6931
7046
 
7047
+ SurveyWidget.removeDanglingElements();
6932
7048
  this._renderSurvey();
6933
7049
  this.surveyState.isVisible = true;
6934
7050
  this.sdk.eventBus.emit('survey:shown', {
@@ -6964,7 +7080,7 @@
6964
7080
 
6965
7081
  if (this.surveyOptions.position === 'center') {
6966
7082
  this.backdropElement = document.createElement('div');
6967
- this.backdropElement.className = 'feedback-survey-backdrop';
7083
+ this.backdropElement.className = `feedback-survey-backdrop feedback-survey-backdrop-${this.surveyOptions.theme}`;
6968
7084
  document.body.appendChild(this.backdropElement);
6969
7085
  this.backdropElement.addEventListener('click', () =>
6970
7086
  this._handleDismiss()
@@ -6972,7 +7088,7 @@
6972
7088
  }
6973
7089
 
6974
7090
  this.surveyElement = document.createElement('div');
6975
- this.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position}${
7091
+ this.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position} feedback-survey-theme-${this.surveyOptions.theme}${
6976
7092
  showDescription && !showTitle
6977
7093
  ? ' feedback-survey-description-primary'
6978
7094
  : ''
@@ -7992,7 +8108,7 @@
7992
8108
  }, 3000);
7993
8109
  }
7994
8110
 
7995
- _closeSurvey(resetState = true) {
8111
+ _closeSurvey(resetState = true, immediate = false) {
7996
8112
  if (this._escapeHandler) {
7997
8113
  document.removeEventListener('keydown', this._escapeHandler);
7998
8114
  this._escapeHandler = null;
@@ -8007,21 +8123,33 @@
8007
8123
  this.surveyOptions.position === 'center'
8008
8124
  ? 'translate(-50%, -50%) scale(0.95)'
8009
8125
  : 'translateY(20px)';
8010
- setTimeout(() => {
8011
- if (surveyEl && surveyEl.parentNode) {
8126
+ if (immediate) {
8127
+ if (surveyEl.parentNode) {
8012
8128
  surveyEl.parentNode.removeChild(surveyEl);
8013
8129
  }
8014
- }, 300);
8130
+ } else {
8131
+ setTimeout(() => {
8132
+ if (surveyEl && surveyEl.parentNode) {
8133
+ surveyEl.parentNode.removeChild(surveyEl);
8134
+ }
8135
+ }, 300);
8136
+ }
8015
8137
  this.surveyElement = null;
8016
8138
  }
8017
8139
 
8018
8140
  if (backdropEl) {
8019
8141
  backdropEl.style.opacity = '0';
8020
- setTimeout(() => {
8021
- if (backdropEl && backdropEl.parentNode) {
8142
+ if (immediate) {
8143
+ if (backdropEl.parentNode) {
8022
8144
  backdropEl.parentNode.removeChild(backdropEl);
8023
8145
  }
8024
- }, 300);
8146
+ } else {
8147
+ setTimeout(() => {
8148
+ if (backdropEl && backdropEl.parentNode) {
8149
+ backdropEl.parentNode.removeChild(backdropEl);
8150
+ }
8151
+ }, 300);
8152
+ }
8025
8153
  this.backdropElement = null;
8026
8154
  }
8027
8155
 
@@ -8039,7 +8167,7 @@
8039
8167
  }
8040
8168
 
8041
8169
  destroy() {
8042
- this._closeSurvey();
8170
+ this._closeSurvey(true, true);
8043
8171
  super.destroy();
8044
8172
  }
8045
8173
  }
@@ -9132,6 +9260,23 @@
9132
9260
  font-family: inherit;
9133
9261
  }
9134
9262
 
9263
+ .changelog-modal-backdrop,
9264
+ .changelog-list-modal-backdrop {
9265
+ position: fixed;
9266
+ inset: 0;
9267
+ background: rgba(0, 0, 0, 0.5);
9268
+ opacity: 0;
9269
+ pointer-events: none;
9270
+ transition: opacity var(--transition-slow);
9271
+ z-index: var(--z-modal-backdrop);
9272
+ }
9273
+
9274
+ .changelog-modal-backdrop.show,
9275
+ .changelog-list-modal-backdrop.show {
9276
+ opacity: 1;
9277
+ pointer-events: auto;
9278
+ }
9279
+
9135
9280
  .changelog-modal.open {
9136
9281
  pointer-events: auto;
9137
9282
  }
@@ -9395,6 +9540,53 @@
9395
9540
  opacity: 1;
9396
9541
  }
9397
9542
 
9543
+ .changelog-theme-dark.changelog-widget .changelog-trigger-btn {
9544
+ background: #0F172A;
9545
+ color: #E2E8F0;
9546
+ border: 1px solid #334155;
9547
+ }
9548
+
9549
+ .changelog-theme-dark.changelog-modal-backdrop,
9550
+ .changelog-theme-dark.changelog-list-modal-backdrop {
9551
+ background: rgba(2, 6, 23, 0.72);
9552
+ }
9553
+
9554
+ .changelog-theme-dark .changelog-modal-container,
9555
+ .changelog-theme-dark .changelog-list-modal-container {
9556
+ background: #111827;
9557
+ border: 1px solid #334155;
9558
+ }
9559
+
9560
+ .changelog-theme-dark .changelog-list-modal-header {
9561
+ background: #111827;
9562
+ border-bottom-color: #334155;
9563
+ }
9564
+
9565
+ .changelog-theme-dark .changelog-list-modal-header h2,
9566
+ .changelog-theme-dark .changelog-list-item-title,
9567
+ .changelog-theme-dark .changelog-popup-title,
9568
+ .changelog-theme-dark .changelog-view-all-btn {
9569
+ color: #F3F4F6;
9570
+ }
9571
+
9572
+ .changelog-theme-dark .changelog-list-item-description,
9573
+ .changelog-theme-dark .changelog-popup-description,
9574
+ .changelog-theme-dark .changelog-list-item-date {
9575
+ color: #9CA3AF;
9576
+ }
9577
+
9578
+ .changelog-theme-dark .changelog-list-item {
9579
+ border-bottom-color: #334155;
9580
+ }
9581
+
9582
+ .changelog-theme-dark .changelog-list-item:hover {
9583
+ background: #1F2937;
9584
+ }
9585
+
9586
+ .changelog-theme-dark .changelog-popup-btn {
9587
+ color: #FFFFFF;
9588
+ }
9589
+
9398
9590
  .changelog-list-modal-header {
9399
9591
  display: flex;
9400
9592
  align-items: center;
@@ -10365,8 +10557,26 @@
10365
10557
  transform: translateX(0);
10366
10558
  }
10367
10559
 
10560
+ .feedback-modal {
10561
+ position: fixed;
10562
+ top: 50%;
10563
+ left: 50%;
10564
+ transform: translate(-50%, -50%) scale(0.96);
10565
+ width: min(460px, calc(100vw - (var(--spacing-5) * 2)));
10566
+ max-height: min(560px, calc(100vh - (var(--spacing-6) * 2)));
10567
+ z-index: var(--z-popover);
10568
+ transition: transform var(--transition-slow);
10569
+ font-family: inherit;
10570
+ box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
10571
+ }
10572
+
10573
+ .feedback-modal.open {
10574
+ transform: translate(-50%, -50%) scale(1);
10575
+ }
10576
+
10368
10577
  .feedback-panel-content {
10369
- background: var(--color-white);
10578
+ background: var(--feedback-panel-bg, var(--color-white));
10579
+ color: var(--feedback-panel-text, var(--color-text-primary));
10370
10580
  height: 100%;
10371
10581
  display: flex;
10372
10582
  flex-direction: column;
@@ -10386,7 +10596,7 @@
10386
10596
  margin: 0;
10387
10597
  font-size: var(--font-size-xl);
10388
10598
  font-weight: var(--font-weight-semibold);
10389
- color: var(--color-text-primary);
10599
+ color: var(--feedback-panel-text, var(--color-text-primary));
10390
10600
  }
10391
10601
 
10392
10602
  .feedback-panel-body {
@@ -10425,6 +10635,51 @@
10425
10635
  display: block;
10426
10636
  }
10427
10637
 
10638
+ .feedback-panel.theme-dark .feedback-panel-content,
10639
+ .feedback-modal.theme-dark .feedback-panel-content {
10640
+ background: #111827;
10641
+ color: #E2E8F0;
10642
+ }
10643
+
10644
+ .feedback-panel.theme-dark .feedback-panel-header,
10645
+ .feedback-modal.theme-dark .feedback-panel-header {
10646
+ border-bottom-color: #374151;
10647
+ }
10648
+
10649
+ .feedback-panel.theme-dark .sdk-label,
10650
+ .feedback-panel.theme-dark .feedback-panel-header h3,
10651
+ .feedback-modal.theme-dark .sdk-label,
10652
+ .feedback-modal.theme-dark .feedback-panel-header h3 {
10653
+ color: #E2E8F0;
10654
+ }
10655
+
10656
+ .feedback-panel.theme-dark .sdk-input,
10657
+ .feedback-panel.theme-dark .sdk-textarea,
10658
+ .feedback-modal.theme-dark .sdk-input,
10659
+ .feedback-modal.theme-dark .sdk-textarea {
10660
+ background: #1F2937;
10661
+ border-color: #374151;
10662
+ color: #E2E8F0;
10663
+ }
10664
+
10665
+ .feedback-panel.theme-dark .sdk-input::placeholder,
10666
+ .feedback-panel.theme-dark .sdk-textarea::placeholder,
10667
+ .feedback-modal.theme-dark .sdk-input::placeholder,
10668
+ .feedback-modal.theme-dark .sdk-textarea::placeholder {
10669
+ color: #9CA3AF;
10670
+ }
10671
+
10672
+ .feedback-panel.theme-dark .sdk-close-btn,
10673
+ .feedback-modal.theme-dark .sdk-close-btn {
10674
+ color: #9CA3AF;
10675
+ }
10676
+
10677
+ .feedback-panel.theme-dark .sdk-close-btn:hover,
10678
+ .feedback-modal.theme-dark .sdk-close-btn:hover {
10679
+ background: #1F2937;
10680
+ color: #E2E8F0;
10681
+ }
10682
+
10428
10683
  @media (max-width: 768px) {
10429
10684
  .feedback-widget-button {
10430
10685
  bottom: var(--spacing-4);
@@ -12127,6 +12382,10 @@
12127
12382
  animation: fadeIn var(--transition-slow);
12128
12383
  }
12129
12384
 
12385
+ .feedback-survey-backdrop-dark {
12386
+ background: rgba(2, 6, 23, 0.72);
12387
+ }
12388
+
12130
12389
  /* ========================================
12131
12390
  SURVEY CARD
12132
12391
  ======================================== */
@@ -12144,6 +12403,79 @@
12144
12403
  font-family: inherit;
12145
12404
  }
12146
12405
 
12406
+ .feedback-survey-theme-dark {
12407
+ background: #111827;
12408
+ border-color: #374151;
12409
+ }
12410
+
12411
+ .feedback-survey-theme-dark .feedback-survey-title,
12412
+ .feedback-survey-theme-dark .feedback-survey-description-primary .feedback-survey-description {
12413
+ color: #F3F4F6;
12414
+ }
12415
+
12416
+ .feedback-survey-theme-dark .feedback-survey-description,
12417
+ .feedback-survey-theme-dark .feedback-survey-labels,
12418
+ .feedback-survey-theme-dark .feedback-survey-progress {
12419
+ color: #9CA3AF;
12420
+ }
12421
+
12422
+ .feedback-survey-theme-dark .feedback-survey-close {
12423
+ color: #9CA3AF;
12424
+ }
12425
+
12426
+ .feedback-survey-theme-dark .feedback-survey-close:hover {
12427
+ background: #1F2937;
12428
+ color: #F3F4F6;
12429
+ }
12430
+
12431
+ .feedback-survey-theme-dark .feedback-survey-rating-scale {
12432
+ border-color: #374151;
12433
+ background: #1F2937;
12434
+ }
12435
+
12436
+ .feedback-survey-theme-dark .feedback-survey-rating-scale-btn {
12437
+ background: #1F2937;
12438
+ border-right-color: #374151;
12439
+ color: #F3F4F6;
12440
+ }
12441
+
12442
+ .feedback-survey-theme-dark .feedback-survey-rating-scale-btn:hover,
12443
+ .feedback-survey-theme-dark .feedback-survey-nps-btn:hover,
12444
+ .feedback-survey-theme-dark .feedback-survey-ces-btn:hover,
12445
+ .feedback-survey-theme-dark .feedback-survey-page-choice-btn:hover {
12446
+ background: #273549;
12447
+ }
12448
+
12449
+ .feedback-survey-theme-dark .feedback-survey-nps-btn,
12450
+ .feedback-survey-theme-dark .feedback-survey-ces-btn,
12451
+ .feedback-survey-theme-dark .feedback-survey-freq-btn,
12452
+ .feedback-survey-theme-dark .feedback-survey-page-choice-btn {
12453
+ background: #1F2937;
12454
+ border-color: #374151;
12455
+ color: #E5E7EB;
12456
+ }
12457
+
12458
+ .feedback-survey-theme-dark .feedback-survey-page-textarea,
12459
+ .feedback-survey-theme-dark .feedback-survey-select,
12460
+ .feedback-survey-theme-dark .feedback-survey-input,
12461
+ .feedback-survey-theme-dark .feedback-survey-textarea {
12462
+ background: #1F2937;
12463
+ border-color: #374151;
12464
+ color: #F3F4F6;
12465
+ }
12466
+
12467
+ .feedback-survey-theme-dark .feedback-survey-page-textarea::placeholder,
12468
+ .feedback-survey-theme-dark .feedback-survey-input::placeholder,
12469
+ .feedback-survey-theme-dark .feedback-survey-textarea::placeholder {
12470
+ color: #9CA3AF;
12471
+ }
12472
+
12473
+ .feedback-survey-theme-dark .feedback-survey-back {
12474
+ background: #111827;
12475
+ border-color: #374151;
12476
+ color: #E5E7EB;
12477
+ }
12478
+
12147
12479
  .feedback-survey-bottom-right {
12148
12480
  bottom: var(--spacing-6);
12149
12481
  right: var(--spacing-6);