@product7/feedback-sdk 1.6.7 → 1.6.9

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);
@@ -2385,12 +2390,13 @@
2385
2390
  this.isLoading = false;
2386
2391
  this.modalElement = null;
2387
2392
  this.sidebarElement = null;
2393
+ this.listModalBackdropElement = null;
2388
2394
  this.currentIndex = 0;
2389
2395
  }
2390
2396
 
2391
2397
  _render() {
2392
2398
  const trigger = document.createElement('div');
2393
- trigger.className = `changelog-widget position-${this.options.position}`;
2399
+ trigger.className = `changelog-widget position-${this.options.position} changelog-theme-${this.options.theme || 'light'}`;
2394
2400
  trigger.innerHTML = `
2395
2401
  <button class="changelog-trigger-btn" type="button" aria-label="View Updates">
2396
2402
  <svg class="changelog-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor">
@@ -2465,13 +2471,15 @@
2465
2471
  }
2466
2472
 
2467
2473
  _createModal() {
2468
- this.backdropElement = document.createElement('div');
2469
- this.backdropElement.className = 'changelog-modal-backdrop';
2470
- document.body.appendChild(this.backdropElement);
2471
- this.backdropElement.addEventListener('click', () => this.closeModal());
2474
+ if (this.options.showBackdrop !== false) {
2475
+ this.backdropElement = document.createElement('div');
2476
+ this.backdropElement.className = `changelog-modal-backdrop changelog-theme-${this.options.theme || 'light'}`;
2477
+ document.body.appendChild(this.backdropElement);
2478
+ this.backdropElement.addEventListener('click', () => this.closeModal());
2479
+ }
2472
2480
 
2473
2481
  this.modalElement = document.createElement('div');
2474
- this.modalElement.className = 'changelog-modal';
2482
+ this.modalElement.className = `changelog-modal changelog-theme-${this.options.theme || 'light'}`;
2475
2483
  this.modalElement.innerHTML = `
2476
2484
  <div class="changelog-modal-container">
2477
2485
  <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>
@@ -2608,15 +2616,17 @@
2608
2616
  }
2609
2617
 
2610
2618
  _createListModal() {
2611
- this.listModalBackdropElement = document.createElement('div');
2612
- this.listModalBackdropElement.className = 'changelog-list-modal-backdrop';
2613
- document.body.appendChild(this.listModalBackdropElement);
2614
- this.listModalBackdropElement.addEventListener('click', () =>
2615
- this.closeSidebar()
2616
- );
2619
+ if (this.options.showBackdrop !== false) {
2620
+ this.listModalBackdropElement = document.createElement('div');
2621
+ this.listModalBackdropElement.className = `changelog-list-modal-backdrop changelog-theme-${this.options.theme || 'light'}`;
2622
+ document.body.appendChild(this.listModalBackdropElement);
2623
+ this.listModalBackdropElement.addEventListener('click', () =>
2624
+ this.closeSidebar()
2625
+ );
2626
+ }
2617
2627
 
2618
2628
  this.listModalElement = document.createElement('div');
2619
- this.listModalElement.className = 'changelog-list-modal';
2629
+ this.listModalElement.className = `changelog-list-modal changelog-theme-${this.options.theme || 'light'}`;
2620
2630
  this.listModalElement.innerHTML = `
2621
2631
  <div class="changelog-list-modal-container">
2622
2632
  <div class="changelog-list-modal-header">
@@ -3398,7 +3408,12 @@
3398
3408
  }
3399
3409
 
3400
3410
  const adjustColor = (hex, percent, alpha = 1) => {
3401
- const num = parseInt(hex.replace('#', ''), 16);
3411
+ const normalized = String(hex || '').trim();
3412
+ if (!/^#?[0-9a-fA-F]{6}$/.test(normalized)) {
3413
+ return normalized || '#000000';
3414
+ }
3415
+
3416
+ const num = parseInt(normalized.replace('#', ''), 16);
3402
3417
  const r = Math.max(0, Math.min(255, (num >> 16) + percent));
3403
3418
  const g = Math.max(0, Math.min(255, ((num >> 8) & 0x00ff) + percent));
3404
3419
  const b = Math.max(0, Math.min(255, (num & 0x0000ff) + percent));
@@ -3410,6 +3425,10 @@
3410
3425
  return '#' + ((r << 16) | (g << 8) | b).toString(16).padStart(6, '0');
3411
3426
  };
3412
3427
 
3428
+ const darkSurface = adjustColor(backgroundColor, 12);
3429
+ const darkSurfaceAlt = adjustColor(backgroundColor, 20);
3430
+ const darkBorder = adjustColor(backgroundColor, 34);
3431
+
3413
3432
  styleElement.textContent = `
3414
3433
  #product7-messenger-widget {
3415
3434
  --color-primary: ${primaryColor} !important;
@@ -3471,6 +3490,77 @@
3471
3490
  `
3472
3491
  : ''
3473
3492
  }
3493
+
3494
+ ${
3495
+ theme === 'dark'
3496
+ ? `
3497
+ .messenger-widget.theme-dark .messenger-panel-content,
3498
+ .messenger-widget.theme-dark .messenger-home-view,
3499
+ .messenger-widget.theme-dark .messenger-nav,
3500
+ .messenger-widget.theme-dark .messenger-chat-compose,
3501
+ .messenger-widget.theme-dark .messenger-compose-attachments-preview,
3502
+ .messenger-widget.theme-dark .messenger-home-featured,
3503
+ .messenger-widget.theme-dark .messenger-chat-header {
3504
+ background: ${backgroundColor} !important;
3505
+ border-color: ${darkBorder} !important;
3506
+ }
3507
+
3508
+ .messenger-widget.theme-dark .messenger-view,
3509
+ .messenger-widget.theme-dark .messenger-chat-title,
3510
+ .messenger-widget.theme-dark .messenger-home-greeting,
3511
+ .messenger-widget.theme-dark .messenger-home-question,
3512
+ .messenger-widget.theme-dark .messenger-home-featured-content h3,
3513
+ .messenger-widget.theme-dark .messenger-home-featured-content p,
3514
+ .messenger-widget.theme-dark .messenger-home-changelog-card-title,
3515
+ .messenger-widget.theme-dark .messenger-home-changelog-card-desc,
3516
+ .messenger-widget.theme-dark .messenger-conversation-title,
3517
+ .messenger-widget.theme-dark .messenger-article-title,
3518
+ .messenger-widget.theme-dark .messenger-compose-input,
3519
+ .messenger-widget.theme-dark .messenger-message-sender,
3520
+ .messenger-widget.theme-dark .messenger-message-time,
3521
+ .messenger-widget.theme-dark .messenger-nav-label {
3522
+ color: ${textColor} !important;
3523
+ }
3524
+
3525
+ .messenger-widget.theme-dark .messenger-home-view {
3526
+ background: linear-gradient(180deg, ${adjustColor(backgroundColor, 10)} 0%, ${backgroundColor} 55%) !important;
3527
+ }
3528
+
3529
+ .messenger-widget.theme-dark .messenger-home-view::before {
3530
+ background: radial-gradient(circle, ${adjustColor(primaryColor, 0, 0.12)} 0%, transparent 70%) !important;
3531
+ }
3532
+
3533
+ .messenger-widget.theme-dark .messenger-home-message-btn,
3534
+ .messenger-widget.theme-dark .messenger-home-changelog-card,
3535
+ .messenger-widget.theme-dark .messenger-compose-input-wrapper,
3536
+ .messenger-widget.theme-dark .messenger-message-received .messenger-message-bubble,
3537
+ .messenger-widget.theme-dark .messenger-message-file,
3538
+ .messenger-widget.theme-dark .messenger-prechat-card,
3539
+ .messenger-widget.theme-dark .messenger-list-item,
3540
+ .messenger-widget.theme-dark .messenger-article-item {
3541
+ background: ${darkSurface} !important;
3542
+ border-color: ${darkBorder} !important;
3543
+ }
3544
+
3545
+ .messenger-widget.theme-dark .messenger-home-message-btn:hover,
3546
+ .messenger-widget.theme-dark .messenger-home-changelog-card:hover,
3547
+ .messenger-widget.theme-dark .messenger-list-item:hover,
3548
+ .messenger-widget.theme-dark .messenger-article-item:hover {
3549
+ background: ${darkSurfaceAlt} !important;
3550
+ }
3551
+
3552
+ .messenger-widget.theme-dark .messenger-message-own .messenger-message-bubble,
3553
+ .messenger-widget.theme-dark .messenger-compose-send,
3554
+ .messenger-widget.theme-dark .messenger-launcher-btn,
3555
+ .messenger-widget.theme-dark .messenger-nav-badge,
3556
+ .messenger-widget.theme-dark .messenger-launcher-badge,
3557
+ .messenger-widget.theme-dark .messenger-home-changelog-cover-text,
3558
+ .messenger-widget.theme-dark .messenger-attachment-remove {
3559
+ color: #FFFFFF !important;
3560
+ }
3561
+ `
3562
+ : ''
3563
+ }
3474
3564
  `;
3475
3565
 
3476
3566
  console.log('✅ Custom messenger styles applied:', { primaryColor, theme });
@@ -5942,6 +6032,19 @@
5942
6032
  class MessengerWidget extends BaseWidget {
5943
6033
  constructor(options) {
5944
6034
  super({ ...options, type: 'messenger' });
6035
+ const resolvedTheme = options.theme || 'light';
6036
+ const hasExplicitTextColor = Object.prototype.hasOwnProperty.call(
6037
+ options,
6038
+ 'textColor'
6039
+ );
6040
+ const hasExplicitBackgroundColor = Object.prototype.hasOwnProperty.call(
6041
+ options,
6042
+ 'backgroundColor'
6043
+ );
6044
+ const defaultTextColor =
6045
+ resolvedTheme === 'dark' ? '#E2E8F0' : '#1d1d1f';
6046
+ const defaultBackgroundColor =
6047
+ resolvedTheme === 'dark' ? '#0F172A' : '#ffffff';
5945
6048
 
5946
6049
  const resolvedEnableChangelog =
5947
6050
  typeof options.enableChangelog === 'boolean'
@@ -5950,10 +6053,12 @@
5950
6053
 
5951
6054
  this.messengerOptions = {
5952
6055
  position: options.position || 'bottom-right',
5953
- theme: options.theme || 'light',
6056
+ theme: resolvedTheme,
5954
6057
  primaryColor: options.primaryColor || '#155EEF',
5955
- textColor: options.textColor || '#1d1d1f',
5956
- backgroundColor: options.backgroundColor || '#ffffff',
6058
+ textColor: hasExplicitTextColor ? options.textColor : defaultTextColor,
6059
+ backgroundColor: hasExplicitBackgroundColor
6060
+ ? options.backgroundColor
6061
+ : defaultBackgroundColor,
5957
6062
  logoUrl: options.logoUrl || 'https://product7.io/p7logo.svg',
5958
6063
  teamName: options.teamName || 'Support',
5959
6064
  teamAvatars: options.teamAvatars || [],
@@ -6865,6 +6970,7 @@
6865
6970
  surveyId: options.surveyId || null,
6866
6971
  surveyType: options.surveyType || 'nps',
6867
6972
  position: options.position || 'bottom-right',
6973
+ theme: options.theme || 'light',
6868
6974
  enabled:
6869
6975
  typeof options.enabled === 'boolean' ? options.enabled : undefined,
6870
6976
  title: options.title || null,
@@ -6909,6 +7015,20 @@
6909
7015
  };
6910
7016
  }
6911
7017
 
7018
+ static removeDanglingElements() {
7019
+ if (typeof document === 'undefined') return;
7020
+
7021
+ document
7022
+ .querySelectorAll(
7023
+ '.feedback-survey, .feedback-survey-backdrop, .feedback-survey-success'
7024
+ )
7025
+ .forEach((el) => {
7026
+ if (el && el.parentNode) {
7027
+ el.parentNode.removeChild(el);
7028
+ }
7029
+ });
7030
+ }
7031
+
6912
7032
  _render() {
6913
7033
  const container = document.createElement('div');
6914
7034
  container.className = 'feedback-survey-container';
@@ -6929,6 +7049,7 @@
6929
7049
  return this;
6930
7050
  }
6931
7051
 
7052
+ SurveyWidget.removeDanglingElements();
6932
7053
  this._renderSurvey();
6933
7054
  this.surveyState.isVisible = true;
6934
7055
  this.sdk.eventBus.emit('survey:shown', {
@@ -6964,7 +7085,7 @@
6964
7085
 
6965
7086
  if (this.surveyOptions.position === 'center') {
6966
7087
  this.backdropElement = document.createElement('div');
6967
- this.backdropElement.className = 'feedback-survey-backdrop';
7088
+ this.backdropElement.className = `feedback-survey-backdrop feedback-survey-backdrop-${this.surveyOptions.theme}`;
6968
7089
  document.body.appendChild(this.backdropElement);
6969
7090
  this.backdropElement.addEventListener('click', () =>
6970
7091
  this._handleDismiss()
@@ -6972,7 +7093,7 @@
6972
7093
  }
6973
7094
 
6974
7095
  this.surveyElement = document.createElement('div');
6975
- this.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position}${
7096
+ this.surveyElement.className = `feedback-survey feedback-survey-${this.surveyOptions.position} feedback-survey-theme-${this.surveyOptions.theme}${
6976
7097
  showDescription && !showTitle
6977
7098
  ? ' feedback-survey-description-primary'
6978
7099
  : ''
@@ -7992,7 +8113,7 @@
7992
8113
  }, 3000);
7993
8114
  }
7994
8115
 
7995
- _closeSurvey(resetState = true) {
8116
+ _closeSurvey(resetState = true, immediate = false) {
7996
8117
  if (this._escapeHandler) {
7997
8118
  document.removeEventListener('keydown', this._escapeHandler);
7998
8119
  this._escapeHandler = null;
@@ -8007,21 +8128,33 @@
8007
8128
  this.surveyOptions.position === 'center'
8008
8129
  ? 'translate(-50%, -50%) scale(0.95)'
8009
8130
  : 'translateY(20px)';
8010
- setTimeout(() => {
8011
- if (surveyEl && surveyEl.parentNode) {
8131
+ if (immediate) {
8132
+ if (surveyEl.parentNode) {
8012
8133
  surveyEl.parentNode.removeChild(surveyEl);
8013
8134
  }
8014
- }, 300);
8135
+ } else {
8136
+ setTimeout(() => {
8137
+ if (surveyEl && surveyEl.parentNode) {
8138
+ surveyEl.parentNode.removeChild(surveyEl);
8139
+ }
8140
+ }, 300);
8141
+ }
8015
8142
  this.surveyElement = null;
8016
8143
  }
8017
8144
 
8018
8145
  if (backdropEl) {
8019
8146
  backdropEl.style.opacity = '0';
8020
- setTimeout(() => {
8021
- if (backdropEl && backdropEl.parentNode) {
8147
+ if (immediate) {
8148
+ if (backdropEl.parentNode) {
8022
8149
  backdropEl.parentNode.removeChild(backdropEl);
8023
8150
  }
8024
- }, 300);
8151
+ } else {
8152
+ setTimeout(() => {
8153
+ if (backdropEl && backdropEl.parentNode) {
8154
+ backdropEl.parentNode.removeChild(backdropEl);
8155
+ }
8156
+ }, 300);
8157
+ }
8025
8158
  this.backdropElement = null;
8026
8159
  }
8027
8160
 
@@ -8039,7 +8172,7 @@
8039
8172
  }
8040
8173
 
8041
8174
  destroy() {
8042
- this._closeSurvey();
8175
+ this._closeSurvey(true, true);
8043
8176
  super.destroy();
8044
8177
  }
8045
8178
  }
@@ -8659,6 +8792,7 @@
8659
8792
  triggerText: "What's New",
8660
8793
  showBadge: true,
8661
8794
  viewButtonText: 'View Update',
8795
+ showBackdrop: true,
8662
8796
  };
8663
8797
 
8664
8798
  const configDefaults = this._getWidgetTypeConfig('changelog');
@@ -9132,6 +9266,23 @@
9132
9266
  font-family: inherit;
9133
9267
  }
9134
9268
 
9269
+ .changelog-modal-backdrop,
9270
+ .changelog-list-modal-backdrop {
9271
+ position: fixed;
9272
+ inset: 0;
9273
+ background: rgba(0, 0, 0, 0.5);
9274
+ opacity: 0;
9275
+ pointer-events: none;
9276
+ transition: opacity var(--transition-slow);
9277
+ z-index: var(--z-modal-backdrop);
9278
+ }
9279
+
9280
+ .changelog-modal-backdrop.show,
9281
+ .changelog-list-modal-backdrop.show {
9282
+ opacity: 1;
9283
+ pointer-events: auto;
9284
+ }
9285
+
9135
9286
  .changelog-modal.open {
9136
9287
  pointer-events: auto;
9137
9288
  }
@@ -9395,6 +9546,53 @@
9395
9546
  opacity: 1;
9396
9547
  }
9397
9548
 
9549
+ .changelog-theme-dark.changelog-widget .changelog-trigger-btn {
9550
+ background: #0F172A;
9551
+ color: #E2E8F0;
9552
+ border: 1px solid #334155;
9553
+ }
9554
+
9555
+ .changelog-theme-dark.changelog-modal-backdrop,
9556
+ .changelog-theme-dark.changelog-list-modal-backdrop {
9557
+ background: rgba(2, 6, 23, 0.72);
9558
+ }
9559
+
9560
+ .changelog-theme-dark .changelog-modal-container,
9561
+ .changelog-theme-dark .changelog-list-modal-container {
9562
+ background: #111827;
9563
+ border: 1px solid #334155;
9564
+ }
9565
+
9566
+ .changelog-theme-dark .changelog-list-modal-header {
9567
+ background: #111827;
9568
+ border-bottom-color: #334155;
9569
+ }
9570
+
9571
+ .changelog-theme-dark .changelog-list-modal-header h2,
9572
+ .changelog-theme-dark .changelog-list-item-title,
9573
+ .changelog-theme-dark .changelog-popup-title,
9574
+ .changelog-theme-dark .changelog-view-all-btn {
9575
+ color: #F3F4F6;
9576
+ }
9577
+
9578
+ .changelog-theme-dark .changelog-list-item-description,
9579
+ .changelog-theme-dark .changelog-popup-description,
9580
+ .changelog-theme-dark .changelog-list-item-date {
9581
+ color: #9CA3AF;
9582
+ }
9583
+
9584
+ .changelog-theme-dark .changelog-list-item {
9585
+ border-bottom-color: #334155;
9586
+ }
9587
+
9588
+ .changelog-theme-dark .changelog-list-item:hover {
9589
+ background: #1F2937;
9590
+ }
9591
+
9592
+ .changelog-theme-dark .changelog-popup-btn {
9593
+ color: #FFFFFF;
9594
+ }
9595
+
9398
9596
  .changelog-list-modal-header {
9399
9597
  display: flex;
9400
9598
  align-items: center;
@@ -10365,8 +10563,26 @@
10365
10563
  transform: translateX(0);
10366
10564
  }
10367
10565
 
10566
+ .feedback-modal {
10567
+ position: fixed;
10568
+ top: 50%;
10569
+ left: 50%;
10570
+ transform: translate(-50%, -50%) scale(0.96);
10571
+ width: min(460px, calc(100vw - (var(--spacing-5) * 2)));
10572
+ max-height: min(560px, calc(100vh - (var(--spacing-6) * 2)));
10573
+ z-index: var(--z-popover);
10574
+ transition: transform var(--transition-slow);
10575
+ font-family: inherit;
10576
+ box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
10577
+ }
10578
+
10579
+ .feedback-modal.open {
10580
+ transform: translate(-50%, -50%) scale(1);
10581
+ }
10582
+
10368
10583
  .feedback-panel-content {
10369
- background: var(--color-white);
10584
+ background: var(--feedback-panel-bg, var(--color-white));
10585
+ color: var(--feedback-panel-text, var(--color-text-primary));
10370
10586
  height: 100%;
10371
10587
  display: flex;
10372
10588
  flex-direction: column;
@@ -10386,7 +10602,7 @@
10386
10602
  margin: 0;
10387
10603
  font-size: var(--font-size-xl);
10388
10604
  font-weight: var(--font-weight-semibold);
10389
- color: var(--color-text-primary);
10605
+ color: var(--feedback-panel-text, var(--color-text-primary));
10390
10606
  }
10391
10607
 
10392
10608
  .feedback-panel-body {
@@ -10425,6 +10641,51 @@
10425
10641
  display: block;
10426
10642
  }
10427
10643
 
10644
+ .feedback-panel.theme-dark .feedback-panel-content,
10645
+ .feedback-modal.theme-dark .feedback-panel-content {
10646
+ background: #111827;
10647
+ color: #E2E8F0;
10648
+ }
10649
+
10650
+ .feedback-panel.theme-dark .feedback-panel-header,
10651
+ .feedback-modal.theme-dark .feedback-panel-header {
10652
+ border-bottom-color: #374151;
10653
+ }
10654
+
10655
+ .feedback-panel.theme-dark .sdk-label,
10656
+ .feedback-panel.theme-dark .feedback-panel-header h3,
10657
+ .feedback-modal.theme-dark .sdk-label,
10658
+ .feedback-modal.theme-dark .feedback-panel-header h3 {
10659
+ color: #E2E8F0;
10660
+ }
10661
+
10662
+ .feedback-panel.theme-dark .sdk-input,
10663
+ .feedback-panel.theme-dark .sdk-textarea,
10664
+ .feedback-modal.theme-dark .sdk-input,
10665
+ .feedback-modal.theme-dark .sdk-textarea {
10666
+ background: #1F2937;
10667
+ border-color: #374151;
10668
+ color: #E2E8F0;
10669
+ }
10670
+
10671
+ .feedback-panel.theme-dark .sdk-input::placeholder,
10672
+ .feedback-panel.theme-dark .sdk-textarea::placeholder,
10673
+ .feedback-modal.theme-dark .sdk-input::placeholder,
10674
+ .feedback-modal.theme-dark .sdk-textarea::placeholder {
10675
+ color: #9CA3AF;
10676
+ }
10677
+
10678
+ .feedback-panel.theme-dark .sdk-close-btn,
10679
+ .feedback-modal.theme-dark .sdk-close-btn {
10680
+ color: #9CA3AF;
10681
+ }
10682
+
10683
+ .feedback-panel.theme-dark .sdk-close-btn:hover,
10684
+ .feedback-modal.theme-dark .sdk-close-btn:hover {
10685
+ background: #1F2937;
10686
+ color: #E2E8F0;
10687
+ }
10688
+
10428
10689
  @media (max-width: 768px) {
10429
10690
  .feedback-widget-button {
10430
10691
  bottom: var(--spacing-4);
@@ -12127,6 +12388,10 @@
12127
12388
  animation: fadeIn var(--transition-slow);
12128
12389
  }
12129
12390
 
12391
+ .feedback-survey-backdrop-dark {
12392
+ background: rgba(2, 6, 23, 0.72);
12393
+ }
12394
+
12130
12395
  /* ========================================
12131
12396
  SURVEY CARD
12132
12397
  ======================================== */
@@ -12144,6 +12409,79 @@
12144
12409
  font-family: inherit;
12145
12410
  }
12146
12411
 
12412
+ .feedback-survey-theme-dark {
12413
+ background: #111827;
12414
+ border-color: #374151;
12415
+ }
12416
+
12417
+ .feedback-survey-theme-dark .feedback-survey-title,
12418
+ .feedback-survey-theme-dark .feedback-survey-description-primary .feedback-survey-description {
12419
+ color: #F3F4F6;
12420
+ }
12421
+
12422
+ .feedback-survey-theme-dark .feedback-survey-description,
12423
+ .feedback-survey-theme-dark .feedback-survey-labels,
12424
+ .feedback-survey-theme-dark .feedback-survey-progress {
12425
+ color: #9CA3AF;
12426
+ }
12427
+
12428
+ .feedback-survey-theme-dark .feedback-survey-close {
12429
+ color: #9CA3AF;
12430
+ }
12431
+
12432
+ .feedback-survey-theme-dark .feedback-survey-close:hover {
12433
+ background: #1F2937;
12434
+ color: #F3F4F6;
12435
+ }
12436
+
12437
+ .feedback-survey-theme-dark .feedback-survey-rating-scale {
12438
+ border-color: #374151;
12439
+ background: #1F2937;
12440
+ }
12441
+
12442
+ .feedback-survey-theme-dark .feedback-survey-rating-scale-btn {
12443
+ background: #1F2937;
12444
+ border-right-color: #374151;
12445
+ color: #F3F4F6;
12446
+ }
12447
+
12448
+ .feedback-survey-theme-dark .feedback-survey-rating-scale-btn:hover,
12449
+ .feedback-survey-theme-dark .feedback-survey-nps-btn:hover,
12450
+ .feedback-survey-theme-dark .feedback-survey-ces-btn:hover,
12451
+ .feedback-survey-theme-dark .feedback-survey-page-choice-btn:hover {
12452
+ background: #273549;
12453
+ }
12454
+
12455
+ .feedback-survey-theme-dark .feedback-survey-nps-btn,
12456
+ .feedback-survey-theme-dark .feedback-survey-ces-btn,
12457
+ .feedback-survey-theme-dark .feedback-survey-freq-btn,
12458
+ .feedback-survey-theme-dark .feedback-survey-page-choice-btn {
12459
+ background: #1F2937;
12460
+ border-color: #374151;
12461
+ color: #E5E7EB;
12462
+ }
12463
+
12464
+ .feedback-survey-theme-dark .feedback-survey-page-textarea,
12465
+ .feedback-survey-theme-dark .feedback-survey-select,
12466
+ .feedback-survey-theme-dark .feedback-survey-input,
12467
+ .feedback-survey-theme-dark .feedback-survey-textarea {
12468
+ background: #1F2937;
12469
+ border-color: #374151;
12470
+ color: #F3F4F6;
12471
+ }
12472
+
12473
+ .feedback-survey-theme-dark .feedback-survey-page-textarea::placeholder,
12474
+ .feedback-survey-theme-dark .feedback-survey-input::placeholder,
12475
+ .feedback-survey-theme-dark .feedback-survey-textarea::placeholder {
12476
+ color: #9CA3AF;
12477
+ }
12478
+
12479
+ .feedback-survey-theme-dark .feedback-survey-back {
12480
+ background: #111827;
12481
+ border-color: #374151;
12482
+ color: #E5E7EB;
12483
+ }
12484
+
12147
12485
  .feedback-survey-bottom-right {
12148
12486
  bottom: var(--spacing-6);
12149
12487
  right: var(--spacing-6);