@consilioweb/payload-support 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 (189) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +525 -0
  3. package/dist/client.cjs +7 -0
  4. package/dist/client.d.cts +3 -0
  5. package/dist/client.d.ts +3 -0
  6. package/dist/client.js +5 -0
  7. package/dist/index.cjs +7766 -0
  8. package/dist/index.d.cts +384 -0
  9. package/dist/index.d.ts +384 -0
  10. package/dist/index.js +7730 -0
  11. package/dist/views.d.cts +30 -0
  12. package/dist/views.d.ts +30 -0
  13. package/package.json +131 -0
  14. package/src/client.ts +1 -0
  15. package/src/collections/AuthLogs.ts +65 -0
  16. package/src/collections/CannedResponses.ts +69 -0
  17. package/src/collections/ChatMessages.ts +98 -0
  18. package/src/collections/EmailLogs.ts +94 -0
  19. package/src/collections/KnowledgeBase.ts +99 -0
  20. package/src/collections/Macros.ts +98 -0
  21. package/src/collections/PendingEmails.ts +122 -0
  22. package/src/collections/SatisfactionSurveys.ts +98 -0
  23. package/src/collections/SlaPolicies.ts +123 -0
  24. package/src/collections/SupportClients.ts +210 -0
  25. package/src/collections/TicketActivityLog.ts +81 -0
  26. package/src/collections/TicketMessages.ts +364 -0
  27. package/src/collections/TicketStatuses.ts +108 -0
  28. package/src/collections/Tickets.ts +704 -0
  29. package/src/collections/TimeEntries.ts +105 -0
  30. package/src/collections/WebhookEndpoints.ts +96 -0
  31. package/src/collections/index.ts +16 -0
  32. package/src/components/TicketConversation/components/AISummaryPanel.tsx +85 -0
  33. package/src/components/TicketConversation/components/ActionPanels.tsx +140 -0
  34. package/src/components/TicketConversation/components/ActivityLog.tsx +39 -0
  35. package/src/components/TicketConversation/components/ClientBar.tsx +37 -0
  36. package/src/components/TicketConversation/components/ClientHistory.tsx +117 -0
  37. package/src/components/TicketConversation/components/CodeBlock.tsx +186 -0
  38. package/src/components/TicketConversation/components/CodeBlockInserter.tsx +166 -0
  39. package/src/components/TicketConversation/components/QuickActions.tsx +82 -0
  40. package/src/components/TicketConversation/components/TicketHeader.tsx +91 -0
  41. package/src/components/TicketConversation/components/TimeTrackingPanel.tsx +161 -0
  42. package/src/components/TicketConversation/config.ts +82 -0
  43. package/src/components/TicketConversation/constants.ts +74 -0
  44. package/src/components/TicketConversation/context.ts +63 -0
  45. package/src/components/TicketConversation/hooks/useAI.ts +180 -0
  46. package/src/components/TicketConversation/hooks/useMessageActions.ts +131 -0
  47. package/src/components/TicketConversation/hooks/useReply.ts +190 -0
  48. package/src/components/TicketConversation/hooks/useTicketActions.ts +205 -0
  49. package/src/components/TicketConversation/hooks/useTimeTracking.ts +107 -0
  50. package/src/components/TicketConversation/hooks/useTranslation.ts +116 -0
  51. package/src/components/TicketConversation/index.tsx +1110 -0
  52. package/src/components/TicketConversation/locales/en.json +878 -0
  53. package/src/components/TicketConversation/locales/fr.json +878 -0
  54. package/src/components/TicketConversation/types.ts +54 -0
  55. package/src/components/TicketConversation/utils.ts +25 -0
  56. package/src/endpoints/admin-chat-stream.ts +238 -0
  57. package/src/endpoints/admin-chat.ts +263 -0
  58. package/src/endpoints/admin-stats.ts +200 -0
  59. package/src/endpoints/ai.ts +199 -0
  60. package/src/endpoints/apply-macro.ts +144 -0
  61. package/src/endpoints/auth-2fa.ts +163 -0
  62. package/src/endpoints/auto-close.ts +175 -0
  63. package/src/endpoints/billing.ts +167 -0
  64. package/src/endpoints/bulk-action.ts +103 -0
  65. package/src/endpoints/chat-stream.ts +127 -0
  66. package/src/endpoints/chat.ts +188 -0
  67. package/src/endpoints/chatbot.ts +113 -0
  68. package/src/endpoints/delete-account.ts +129 -0
  69. package/src/endpoints/email-stats.ts +109 -0
  70. package/src/endpoints/export-csv.ts +84 -0
  71. package/src/endpoints/export-data.ts +104 -0
  72. package/src/endpoints/import-conversation.ts +307 -0
  73. package/src/endpoints/index.ts +154 -0
  74. package/src/endpoints/login.ts +92 -0
  75. package/src/endpoints/merge-clients.ts +132 -0
  76. package/src/endpoints/merge-tickets.ts +137 -0
  77. package/src/endpoints/oauth-google.ts +179 -0
  78. package/src/endpoints/pending-emails-process.ts +224 -0
  79. package/src/endpoints/presence.ts +104 -0
  80. package/src/endpoints/process-scheduled.ts +144 -0
  81. package/src/endpoints/purge-logs.ts +58 -0
  82. package/src/endpoints/resend-notification.ts +99 -0
  83. package/src/endpoints/round-robin-config.ts +92 -0
  84. package/src/endpoints/satisfaction.ts +93 -0
  85. package/src/endpoints/search.ts +106 -0
  86. package/src/endpoints/seed-kb.ts +153 -0
  87. package/src/endpoints/settings.ts +144 -0
  88. package/src/endpoints/signature.ts +93 -0
  89. package/src/endpoints/sla-check.ts +124 -0
  90. package/src/endpoints/split-ticket.ts +131 -0
  91. package/src/endpoints/statuses.ts +45 -0
  92. package/src/endpoints/track-open.ts +154 -0
  93. package/src/endpoints/typing.ts +101 -0
  94. package/src/endpoints/user-prefs.ts +125 -0
  95. package/src/hooks/checkSLA.ts +414 -0
  96. package/src/hooks/ticketStatusEmail.ts +182 -0
  97. package/src/index.ts +51 -0
  98. package/src/plugin.ts +157 -0
  99. package/src/portal/LiveChat.tsx +1353 -0
  100. package/src/portal/auth/ChatWidget.tsx +350 -0
  101. package/src/portal/auth/ChatbotWidget.tsx +285 -0
  102. package/src/portal/auth/SupportHeader.tsx +409 -0
  103. package/src/portal/auth/dashboard/DashboardClient.tsx +650 -0
  104. package/src/portal/auth/dashboard/page.tsx +84 -0
  105. package/src/portal/auth/faq/FAQSearch.tsx +117 -0
  106. package/src/portal/auth/faq/page.tsx +199 -0
  107. package/src/portal/auth/layout.tsx +61 -0
  108. package/src/portal/auth/profile/page.tsx +705 -0
  109. package/src/portal/auth/tickets/detail/CloseTicketButton.tsx +74 -0
  110. package/src/portal/auth/tickets/detail/CollapsibleMessages.tsx +46 -0
  111. package/src/portal/auth/tickets/detail/MarkSolutionButton.tsx +50 -0
  112. package/src/portal/auth/tickets/detail/MessageActions.tsx +158 -0
  113. package/src/portal/auth/tickets/detail/PrintButton.tsx +16 -0
  114. package/src/portal/auth/tickets/detail/ReadReceipt.tsx +34 -0
  115. package/src/portal/auth/tickets/detail/ReopenTicketButton.tsx +74 -0
  116. package/src/portal/auth/tickets/detail/SatisfactionForm.tsx +156 -0
  117. package/src/portal/auth/tickets/detail/TicketPolling.tsx +57 -0
  118. package/src/portal/auth/tickets/detail/TicketReplyForm.tsx +294 -0
  119. package/src/portal/auth/tickets/detail/TypingIndicator.tsx +58 -0
  120. package/src/portal/auth/tickets/detail/page.tsx +738 -0
  121. package/src/portal/auth/tickets/new/page.tsx +515 -0
  122. package/src/portal/forgot-password/page.tsx +114 -0
  123. package/src/portal/layout.tsx +26 -0
  124. package/src/portal/locales/en.json +374 -0
  125. package/src/portal/locales/fr.json +374 -0
  126. package/src/portal/login/page.tsx +351 -0
  127. package/src/portal/page.tsx +162 -0
  128. package/src/portal/register/page.tsx +281 -0
  129. package/src/portal/reset-password/page.tsx +152 -0
  130. package/src/styles/BillingView.module.scss +311 -0
  131. package/src/styles/ChatView.module.scss +438 -0
  132. package/src/styles/CommandPalette.module.scss +160 -0
  133. package/src/styles/CrmView.module.scss +554 -0
  134. package/src/styles/EmailTracking.module.scss +238 -0
  135. package/src/styles/ImportConversation.module.scss +267 -0
  136. package/src/styles/Layout.module.scss +55 -0
  137. package/src/styles/Logs.module.scss +164 -0
  138. package/src/styles/NewTicket.module.scss +143 -0
  139. package/src/styles/PendingEmails.module.scss +629 -0
  140. package/src/styles/SupportDashboard.module.scss +649 -0
  141. package/src/styles/TicketDetail.module.scss +1043 -0
  142. package/src/styles/TicketInbox.module.scss +296 -0
  143. package/src/styles/TicketingSettings.module.scss +358 -0
  144. package/src/styles/TimeDashboard.module.scss +287 -0
  145. package/src/styles/_tokens.scss +78 -0
  146. package/src/styles/theme.css +633 -0
  147. package/src/types.ts +255 -0
  148. package/src/utils/adminNotification.ts +38 -0
  149. package/src/utils/auth.ts +46 -0
  150. package/src/utils/emailTemplate.ts +343 -0
  151. package/src/utils/fireWebhooks.ts +84 -0
  152. package/src/utils/index.ts +22 -0
  153. package/src/utils/rateLimiter.ts +52 -0
  154. package/src/utils/readSettings.ts +67 -0
  155. package/src/utils/slugs.ts +54 -0
  156. package/src/utils/webhookDispatcher.ts +120 -0
  157. package/src/views/BillingView/client.tsx +137 -0
  158. package/src/views/BillingView/index.tsx +33 -0
  159. package/src/views/ChatView/client.tsx +294 -0
  160. package/src/views/ChatView/index.tsx +33 -0
  161. package/src/views/CrmView/client.tsx +206 -0
  162. package/src/views/CrmView/index.tsx +33 -0
  163. package/src/views/EmailTrackingView/client.tsx +124 -0
  164. package/src/views/EmailTrackingView/index.tsx +33 -0
  165. package/src/views/ImportConversationView/client.tsx +133 -0
  166. package/src/views/ImportConversationView/index.tsx +33 -0
  167. package/src/views/LogsView/client.tsx +151 -0
  168. package/src/views/LogsView/index.tsx +30 -0
  169. package/src/views/NewTicketView/client.tsx +227 -0
  170. package/src/views/NewTicketView/index.tsx +30 -0
  171. package/src/views/PendingEmailsView/client.tsx +177 -0
  172. package/src/views/PendingEmailsView/index.tsx +33 -0
  173. package/src/views/SupportDashboardView/client.tsx +424 -0
  174. package/src/views/SupportDashboardView/index.tsx +33 -0
  175. package/src/views/TicketDetailView/client.tsx +775 -0
  176. package/src/views/TicketDetailView/index.tsx +33 -0
  177. package/src/views/TicketInboxView/client.tsx +313 -0
  178. package/src/views/TicketInboxView/index.tsx +30 -0
  179. package/src/views/TicketingSettingsView/client.tsx +866 -0
  180. package/src/views/TicketingSettingsView/index.tsx +33 -0
  181. package/src/views/TimeDashboardView/client.tsx +144 -0
  182. package/src/views/TimeDashboardView/index.tsx +33 -0
  183. package/src/views/shared/AdminViewHeader.tsx +69 -0
  184. package/src/views/shared/ErrorBoundary.tsx +68 -0
  185. package/src/views/shared/Skeleton.tsx +125 -0
  186. package/src/views/shared/adminTokens.ts +37 -0
  187. package/src/views/shared/config.ts +82 -0
  188. package/src/views/shared/index.ts +6 -0
  189. package/src/views.ts +16 -0
@@ -0,0 +1,633 @@
1
+ /* ============================================
2
+ * Support Module — Theme Variables
3
+ * ============================================
4
+ * Override these variables to customize the
5
+ * support module's appearance.
6
+ *
7
+ * Usage: Import this file or copy the variables
8
+ * into your project's global CSS.
9
+ *
10
+ * The module integrates with Payload CMS theme
11
+ * variables (--theme-*) for seamless dark/light
12
+ * mode support.
13
+ * ============================================ */
14
+
15
+ :root {
16
+
17
+ /* ------------------------------------------
18
+ * 1. PRIMARY BRAND COLORS
19
+ * ------------------------------------------
20
+ * Main action color used for buttons, links,
21
+ * active states, and focus rings.
22
+ * ------------------------------------------ */
23
+ --support-primary: #2563eb;
24
+ --support-primary-hover: #1d4ed8;
25
+ --support-primary-light: #dbeafe;
26
+ --support-primary-text: #1e40af;
27
+
28
+ /* ------------------------------------------
29
+ * 2. SEMANTIC COLORS
30
+ * ------------------------------------------
31
+ * Contextual colors for success, warning,
32
+ * error, and informational states.
33
+ * ------------------------------------------ */
34
+ --support-success: #16a34a;
35
+ --support-success-light: #dcfce7;
36
+ --support-success-text: #166534;
37
+
38
+ --support-warning: #d97706;
39
+ --support-warning-light: #fef3c7;
40
+ --support-warning-text: #92400e;
41
+
42
+ --support-error: #dc2626;
43
+ --support-error-light: #fef2f2;
44
+ --support-error-text: #991b1b;
45
+
46
+ --support-info: #0891b2;
47
+ --support-info-light: #ecfeff;
48
+ --support-info-text: #155e75;
49
+
50
+ /* ------------------------------------------
51
+ * 3. TICKET STATUS COLORS
52
+ * ------------------------------------------
53
+ * Background + text pairs for each ticket
54
+ * status badge.
55
+ * ------------------------------------------ */
56
+ --support-status-open-bg: #dbeafe;
57
+ --support-status-open-text: #1e40af;
58
+ --support-status-open-dot: #2563eb;
59
+
60
+ --support-status-waiting-bg: #fef3c7;
61
+ --support-status-waiting-text: #92400e;
62
+ --support-status-waiting-dot: #d97706;
63
+
64
+ --support-status-resolved-bg: #dcfce7;
65
+ --support-status-resolved-text: #166534;
66
+ --support-status-resolved-dot: #16a34a;
67
+
68
+ --support-status-closed-bg: #e5e7eb;
69
+ --support-status-closed-text: #374151;
70
+ --support-status-closed-dot: #6b7280;
71
+
72
+ /* ------------------------------------------
73
+ * 4. PRIORITY COLORS
74
+ * ------------------------------------------
75
+ * Left-border or badge accent for ticket
76
+ * priority levels.
77
+ * ------------------------------------------ */
78
+ --support-priority-urgent: #dc2626;
79
+ --support-priority-urgent-bg: #fef2f2;
80
+ --support-priority-high: #ea580c;
81
+ --support-priority-high-bg: #fff7ed;
82
+ --support-priority-normal: transparent;
83
+ --support-priority-normal-bg: transparent;
84
+ --support-priority-low: #94a3b8;
85
+ --support-priority-low-bg: transparent;
86
+
87
+ /* ------------------------------------------
88
+ * 5. SENTIMENT COLORS
89
+ * ------------------------------------------
90
+ * AI-detected client sentiment indicators.
91
+ * ------------------------------------------ */
92
+ --support-sentiment-frustrated: #dc2626;
93
+ --support-sentiment-unhappy: #ea580c;
94
+ --support-sentiment-urgent: #dc2626;
95
+ --support-sentiment-neutral: #6b7280;
96
+ --support-sentiment-satisfied: #16a34a;
97
+
98
+ /* ------------------------------------------
99
+ * 6. MESSAGE BUBBLES
100
+ * ------------------------------------------
101
+ * Background, border, and text colors for
102
+ * each message type in the conversation.
103
+ * ------------------------------------------ */
104
+
105
+ /* Admin messages (agent replies) */
106
+ --support-msg-admin-bg: #f8fafc;
107
+ --support-msg-admin-border: #2563eb;
108
+ --support-msg-admin-text: var(--theme-text, #1e293b);
109
+
110
+ /* Client messages */
111
+ --support-msg-client-bg: #fafafa;
112
+ --support-msg-client-border: #e2e8f0;
113
+ --support-msg-client-text: var(--theme-text, #1e293b);
114
+
115
+ /* Inbound email messages */
116
+ --support-msg-email-bg: #fffbeb;
117
+ --support-msg-email-border: #ea580c;
118
+ --support-msg-email-text: var(--theme-text, #1e293b);
119
+
120
+ /* Internal notes (visible only to agents) */
121
+ --support-msg-internal-bg: #fefce8;
122
+ --support-msg-internal-border: #d97706;
123
+ --support-msg-internal-text: var(--theme-text, #1e293b);
124
+
125
+ /* System/automated messages */
126
+ --support-msg-system-bg: #f1f5f9;
127
+ --support-msg-system-border: #cbd5e1;
128
+ --support-msg-system-text: #64748b;
129
+
130
+ /* ------------------------------------------
131
+ * 7. CATEGORY COLORS
132
+ * ------------------------------------------
133
+ * Feature flag category indicators used on
134
+ * the settings page.
135
+ * ------------------------------------------ */
136
+ --support-cat-core: #2563eb;
137
+ --support-cat-communication: #16a34a;
138
+ --support-cat-productivity: #d97706;
139
+ --support-cat-advanced: #7c3aed;
140
+
141
+ /* ------------------------------------------
142
+ * 8. PROJECT STATUS COLORS
143
+ * ------------------------------------------
144
+ * Displayed in client history sidebar for
145
+ * associated projects.
146
+ * ------------------------------------------ */
147
+ --support-project-active-bg: #dcfce7;
148
+ --support-project-active-text: #166534;
149
+ --support-project-paused-bg: #fef3c7;
150
+ --support-project-paused-text: #92400e;
151
+ --support-project-completed-bg: #e5e7eb;
152
+ --support-project-completed-text: #374151;
153
+
154
+ /* ------------------------------------------
155
+ * 9. TYPOGRAPHY
156
+ * ------------------------------------------
157
+ * Font families, sizes, weights, and line
158
+ * heights used across the module.
159
+ * ------------------------------------------ */
160
+ --support-font-family: -apple-system, BlinkMacSystemFont, 'Inter', system-ui, sans-serif;
161
+ --support-font-mono: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
162
+
163
+ --support-font-size-xs: 10px;
164
+ --support-font-size-sm: 11px;
165
+ --support-font-size-base: 13px;
166
+ --support-font-size-md: 14px;
167
+ --support-font-size-lg: 16px;
168
+ --support-font-size-xl: 22px;
169
+
170
+ --support-font-weight-normal: 400;
171
+ --support-font-weight-medium: 500;
172
+ --support-font-weight-semibold: 600;
173
+ --support-font-weight-bold: 700;
174
+
175
+ --support-line-height-tight: 1.3;
176
+ --support-line-height-base: 1.5;
177
+ --support-line-height-relaxed: 1.6;
178
+
179
+ /* ------------------------------------------
180
+ * 10. SPACING
181
+ * ------------------------------------------
182
+ * Consistent spacing scale used for padding,
183
+ * margins, and gaps.
184
+ * ------------------------------------------ */
185
+ --support-space-xs: 4px;
186
+ --support-space-sm: 6px;
187
+ --support-space-md: 8px;
188
+ --support-space-base: 12px;
189
+ --support-space-lg: 16px;
190
+ --support-space-xl: 20px;
191
+ --support-space-2xl: 24px;
192
+ --support-space-3xl: 32px;
193
+
194
+ /* ------------------------------------------
195
+ * 11. BORDER RADIUS
196
+ * ------------------------------------------
197
+ * Corner rounding for cards, buttons,
198
+ * badges, and inputs.
199
+ * ------------------------------------------ */
200
+ --support-radius-xs: 4px;
201
+ --support-radius-sm: 6px;
202
+ --support-radius: 8px;
203
+ --support-radius-lg: 12px;
204
+ --support-radius-xl: 16px;
205
+ --support-radius-pill: 9999px;
206
+ --support-radius-circle: 50%;
207
+
208
+ /* ------------------------------------------
209
+ * 12. BORDERS
210
+ * ------------------------------------------
211
+ * Default border color and widths used
212
+ * throughout the module.
213
+ * ------------------------------------------ */
214
+ --support-border-color: #e2e8f0;
215
+ --support-border-light: #f1f5f9;
216
+ --support-border-width: 1px;
217
+ --support-border-width-thick: 2px;
218
+ --support-border-width-accent: 3px;
219
+
220
+ /* ------------------------------------------
221
+ * 13. BACKGROUNDS
222
+ * ------------------------------------------
223
+ * Surface, card, and page-level backgrounds.
224
+ * Integrates with Payload CMS theme vars.
225
+ * ------------------------------------------ */
226
+ --support-bg-page: var(--theme-elevation-50, #f8fafc);
227
+ --support-bg-card: var(--theme-elevation-100, #f1f5f9);
228
+ --support-bg-surface: var(--theme-elevation-0, #ffffff);
229
+ --support-bg-hover: var(--theme-elevation-150, #e2e8f0);
230
+ --support-bg-active: var(--theme-elevation-200, #cbd5e1);
231
+ --support-bg-overlay: rgba(0, 0, 0, 0.5);
232
+
233
+ /* ------------------------------------------
234
+ * 14. TEXT COLORS
235
+ * ------------------------------------------
236
+ * Primary, secondary, and muted text levels.
237
+ * ------------------------------------------ */
238
+ --support-text-primary: var(--theme-text, #1e293b);
239
+ --support-text-secondary: #6b7280;
240
+ --support-text-muted: #9ca3af;
241
+ --support-text-disabled: #d1d5db;
242
+ --support-text-link: #2563eb;
243
+ --support-text-link-hover: #1d4ed8;
244
+ --support-text-on-primary: #ffffff;
245
+ --support-text-on-dark: #f8fafc;
246
+
247
+ /* ------------------------------------------
248
+ * 15. SHADOWS
249
+ * ------------------------------------------
250
+ * Elevation shadows for cards, modals,
251
+ * dropdowns, and tooltips.
252
+ * ------------------------------------------ */
253
+ --support-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
254
+ --support-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
255
+ --support-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
256
+ --support-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
257
+ --support-shadow-focus: 0 0 0 2px rgba(37, 99, 235, 0.15);
258
+ --support-shadow-error-focus: 0 0 0 2px rgba(220, 38, 38, 0.15);
259
+ --support-shadow-toggle: 0 1px 3px rgba(0, 0, 0, 0.15);
260
+
261
+ /* ------------------------------------------
262
+ * 16. TRANSITIONS & ANIMATIONS
263
+ * ------------------------------------------
264
+ * Duration and easing for interactive states.
265
+ * ------------------------------------------ */
266
+ --support-transition-fast: 100ms ease;
267
+ --support-transition-base: 150ms ease;
268
+ --support-transition-slow: 300ms ease;
269
+ --support-transition-spring: 200ms cubic-bezier(0.4, 0, 0.2, 1);
270
+
271
+ /* ------------------------------------------
272
+ * 17. Z-INDEX LAYERS
273
+ * ------------------------------------------
274
+ * Stacking order for overlapping elements.
275
+ * ------------------------------------------ */
276
+ --support-z-base: 1;
277
+ --support-z-sticky: 10;
278
+ --support-z-dropdown: 100;
279
+ --support-z-modal-backdrop: 500;
280
+ --support-z-modal: 510;
281
+ --support-z-toast: 600;
282
+ --support-z-tooltip: 700;
283
+
284
+ /* ------------------------------------------
285
+ * 18. LAYOUT
286
+ * ------------------------------------------
287
+ * Page structure: sidebar width, max-width,
288
+ * header height, breakpoints.
289
+ * ------------------------------------------ */
290
+ --support-sidebar-width: 320px;
291
+ --support-content-max-width: 800px;
292
+ --support-header-height: 56px;
293
+ --support-reply-box-min-height: 120px;
294
+ --support-reply-box-max-height: 400px;
295
+
296
+ /* ------------------------------------------
297
+ * 19. BUTTONS
298
+ * ------------------------------------------
299
+ * Padding, font-size, and border styles for
300
+ * button size variants.
301
+ * ------------------------------------------ */
302
+ --support-btn-padding-sm: 6px 12px;
303
+ --support-btn-padding-md: 7px 14px;
304
+ --support-btn-padding-lg: 10px 18px;
305
+ --support-btn-font-sm: 12px;
306
+ --support-btn-font-md: 13px;
307
+ --support-btn-font-lg: 14px;
308
+ --support-btn-radius: var(--support-radius-sm);
309
+ --support-btn-disabled-opacity: 0.5;
310
+
311
+ /* ------------------------------------------
312
+ * 20. INPUTS & FORM CONTROLS
313
+ * ------------------------------------------
314
+ * Styling for text inputs, textareas,
315
+ * selects, and other form elements.
316
+ * ------------------------------------------ */
317
+ --support-input-padding: 8px 12px;
318
+ --support-input-radius: var(--support-radius-sm);
319
+ --support-input-border: var(--support-border-color);
320
+ --support-input-bg: var(--support-bg-surface);
321
+ --support-input-text: var(--support-text-primary);
322
+ --support-input-placeholder: var(--support-text-muted);
323
+ --support-input-focus-border: var(--support-primary);
324
+ --support-input-focus-shadow: var(--support-shadow-focus);
325
+ --support-input-disabled-bg: var(--support-bg-card);
326
+ --support-input-disabled-opacity: 0.6;
327
+
328
+ /* ------------------------------------------
329
+ * 21. BADGES & TAGS
330
+ * ------------------------------------------
331
+ * Small inline labels used for statuses,
332
+ * categories, and metadata.
333
+ * ------------------------------------------ */
334
+ --support-badge-padding: 2px 8px;
335
+ --support-badge-radius: var(--support-radius-xs);
336
+ --support-badge-font-size: 11px;
337
+ --support-badge-font-weight: 600;
338
+
339
+ /* ------------------------------------------
340
+ * 22. TOGGLE SWITCH
341
+ * ------------------------------------------
342
+ * Custom toggle control used in feature
343
+ * flags and boolean settings.
344
+ * ------------------------------------------ */
345
+ --support-toggle-width: 40px;
346
+ --support-toggle-height: 22px;
347
+ --support-toggle-knob-size: 18px;
348
+ --support-toggle-knob-offset: 2px;
349
+ --support-toggle-off-bg: var(--support-border-color);
350
+ --support-toggle-on-bg: var(--support-primary);
351
+ --support-toggle-knob-color: #ffffff;
352
+ --support-toggle-knob-shadow: var(--support-shadow-toggle);
353
+
354
+ /* ------------------------------------------
355
+ * 23. TIME TRACKING
356
+ * ------------------------------------------
357
+ * Timer display, entries table, and related
358
+ * indicators.
359
+ * ------------------------------------------ */
360
+ --support-timer-running-bg: #fef2f2;
361
+ --support-timer-running-border: #fca5a5;
362
+ --support-timer-running-dot: #dc2626;
363
+ --support-timer-idle-bg: var(--support-bg-card);
364
+ --support-timer-idle-border: var(--support-border-color);
365
+
366
+ /* ------------------------------------------
367
+ * 25. SATISFACTION SURVEY
368
+ * ------------------------------------------
369
+ * CSAT rating colors (1-5 stars or emoji).
370
+ * ------------------------------------------ */
371
+ --support-csat-1: #dc2626;
372
+ --support-csat-2: #ea580c;
373
+ --support-csat-3: #d97706;
374
+ --support-csat-4: #16a34a;
375
+ --support-csat-5: #059669;
376
+ --support-csat-bg: #f0fdf4;
377
+
378
+ /* ------------------------------------------
379
+ * 26. ACTIVITY LOG
380
+ * ------------------------------------------
381
+ * Timeline dots, connector lines, and
382
+ * entry backgrounds.
383
+ * ------------------------------------------ */
384
+ --support-activity-dot-size: 8px;
385
+ --support-activity-line-color: var(--support-border-color);
386
+ --support-activity-dot-default: var(--support-text-muted);
387
+ --support-activity-dot-status: var(--support-primary);
388
+ --support-activity-dot-assign: #7c3aed;
389
+ --support-activity-dot-merge: #0891b2;
390
+
391
+ /* ------------------------------------------
392
+ * 27. NOTIFICATION INDICATORS
393
+ * ------------------------------------------
394
+ * Unread counts, typing indicator, and
395
+ * real-time notification badges.
396
+ * ------------------------------------------ */
397
+ --support-notification-dot: #dc2626;
398
+ --support-notification-dot-size: 8px;
399
+ --support-typing-dot-color: #94a3b8;
400
+ --support-typing-dot-size: 6px;
401
+ --support-unread-bg: #dc2626;
402
+ --support-unread-text: #ffffff;
403
+
404
+ /* ------------------------------------------
405
+ * 28. SEARCH & FILTERS
406
+ * ------------------------------------------
407
+ * Search bar, filter dropdowns, and
408
+ * highlighted match styles.
409
+ * ------------------------------------------ */
410
+ --support-search-bg: var(--support-bg-surface);
411
+ --support-search-border: var(--support-border-color);
412
+ --support-search-focus-border: var(--support-primary);
413
+ --support-search-highlight-bg: #fef08a;
414
+ --support-search-highlight-text: #1e293b;
415
+
416
+ /* ------------------------------------------
417
+ * 29. SCROLLBAR
418
+ * ------------------------------------------
419
+ * Custom scrollbar styling for conversation
420
+ * panels and sidebars.
421
+ * ------------------------------------------ */
422
+ --support-scrollbar-width: 6px;
423
+ --support-scrollbar-track: transparent;
424
+ --support-scrollbar-thumb: #cbd5e1;
425
+ --support-scrollbar-thumb-hover: #94a3b8;
426
+
427
+ /* ------------------------------------------
428
+ * 30. RICH TEXT EDITOR
429
+ * ------------------------------------------
430
+ * Editor area, toolbar, and content styling
431
+ * within the reply box.
432
+ * ------------------------------------------ */
433
+ --support-rte-bg: var(--support-bg-surface);
434
+ --support-rte-border: var(--support-border-color);
435
+ --support-rte-toolbar-bg: var(--support-bg-card);
436
+ --support-rte-toolbar-border: var(--support-border-light);
437
+ --support-rte-blockquote-border: var(--support-primary);
438
+ --support-rte-blockquote-bg: var(--support-bg-page);
439
+ --support-rte-link-color: var(--support-primary);
440
+
441
+ /* ------------------------------------------
442
+ * 31. SNOOZE INDICATOR
443
+ * ------------------------------------------
444
+ * Visual cues when a ticket is snoozed
445
+ * (hidden temporarily).
446
+ * ------------------------------------------ */
447
+ --support-snooze-bg: #eff6ff;
448
+ --support-snooze-border: #93c5fd;
449
+ --support-snooze-text: #1d4ed8;
450
+ --support-snooze-icon: #3b82f6;
451
+
452
+ /* ------------------------------------------
453
+ * 32. MERGE INDICATOR
454
+ * ------------------------------------------
455
+ * Visual treatment for merged tickets
456
+ * and their source references.
457
+ * ------------------------------------------ */
458
+ --support-merge-bg: #ecfeff;
459
+ --support-merge-border: #06b6d4;
460
+ --support-merge-text: #155e75;
461
+
462
+ /* ------------------------------------------
463
+ * 33. SCHEDULED REPLY
464
+ * ------------------------------------------
465
+ * Indicator for messages scheduled to be
466
+ * sent at a future date/time.
467
+ * ------------------------------------------ */
468
+ --support-scheduled-bg: #f5f3ff;
469
+ --support-scheduled-border: #a78bfa;
470
+ --support-scheduled-text: #5b21b6;
471
+ --support-scheduled-icon: #7c3aed;
472
+
473
+ /* ------------------------------------------
474
+ * 34. EMAIL TRACKING
475
+ * ------------------------------------------
476
+ * Delivery and open status indicators for
477
+ * outbound email notifications.
478
+ * ------------------------------------------ */
479
+ --support-email-sent: #2563eb;
480
+ --support-email-delivered: #16a34a;
481
+ --support-email-opened: #059669;
482
+ --support-email-bounced: #dc2626;
483
+ --support-email-pending: #9ca3af;
484
+
485
+ /* ------------------------------------------
486
+ * 35. CANNED RESPONSE PICKER
487
+ * ------------------------------------------
488
+ * Quick reply template selector dropdown.
489
+ * ------------------------------------------ */
490
+ --support-canned-bg: var(--support-bg-surface);
491
+ --support-canned-hover-bg: var(--support-bg-card);
492
+ --support-canned-border: var(--support-border-color);
493
+ --support-canned-category-text: var(--support-text-muted);
494
+ --support-canned-shortcut-bg: var(--support-bg-card);
495
+ --support-canned-shortcut-text: var(--support-text-secondary);
496
+ }
497
+
498
+
499
+ /* ============================================
500
+ * DARK MODE OVERRIDES
501
+ * ============================================
502
+ * Applied when Payload CMS is in dark mode.
503
+ * Uses [data-theme="dark"] selector to match
504
+ * Payload's native theme switching.
505
+ * ============================================ */
506
+
507
+ [data-theme="dark"] {
508
+
509
+ /* Primary */
510
+ --support-primary: #3b82f6;
511
+ --support-primary-hover: #60a5fa;
512
+ --support-primary-light: #1e3a5f;
513
+ --support-primary-text: #93c5fd;
514
+
515
+ /* Semantic */
516
+ --support-success: #22c55e;
517
+ --support-success-light: #14532d;
518
+ --support-success-text: #86efac;
519
+
520
+ --support-warning: #eab308;
521
+ --support-warning-light: #422006;
522
+ --support-warning-text: #fde047;
523
+
524
+ --support-error: #ef4444;
525
+ --support-error-light: #450a0a;
526
+ --support-error-text: #fca5a5;
527
+
528
+ --support-info: #22d3ee;
529
+ --support-info-light: #083344;
530
+ --support-info-text: #67e8f9;
531
+
532
+ /* Ticket statuses */
533
+ --support-status-open-bg: #1e3a5f;
534
+ --support-status-open-text: #93c5fd;
535
+ --support-status-open-dot: #3b82f6;
536
+
537
+ --support-status-waiting-bg: #422006;
538
+ --support-status-waiting-text: #fde047;
539
+ --support-status-waiting-dot: #eab308;
540
+
541
+ --support-status-resolved-bg: #14532d;
542
+ --support-status-resolved-text: #86efac;
543
+ --support-status-resolved-dot: #22c55e;
544
+
545
+ --support-status-closed-bg: #374151;
546
+ --support-status-closed-text: #d1d5db;
547
+ --support-status-closed-dot: #9ca3af;
548
+
549
+ /* Priority */
550
+ --support-priority-urgent: #ef4444;
551
+ --support-priority-urgent-bg: #450a0a;
552
+ --support-priority-high: #f97316;
553
+ --support-priority-high-bg: #431407;
554
+
555
+ /* Message bubbles */
556
+ --support-msg-admin-bg: #1e293b;
557
+ --support-msg-admin-border: #3b82f6;
558
+
559
+ --support-msg-client-bg: #0f172a;
560
+ --support-msg-client-border: #334155;
561
+
562
+ --support-msg-email-bg: #1c1917;
563
+ --support-msg-email-border: #ea580c;
564
+
565
+ --support-msg-internal-bg: #1a1a0e;
566
+ --support-msg-internal-border: #eab308;
567
+
568
+ --support-msg-system-bg: #1e293b;
569
+ --support-msg-system-border: #475569;
570
+ --support-msg-system-text: #94a3b8;
571
+
572
+ /* Backgrounds */
573
+ --support-bg-overlay: rgba(0, 0, 0, 0.7);
574
+
575
+ /* Text */
576
+ --support-text-secondary: #94a3b8;
577
+ --support-text-muted: #64748b;
578
+ --support-text-disabled: #475569;
579
+ --support-text-link: #60a5fa;
580
+ --support-text-link-hover: #93c5fd;
581
+
582
+ /* Borders */
583
+ --support-border-color: #334155;
584
+ --support-border-light: #1e293b;
585
+
586
+ /* Shadows (reduced in dark mode) */
587
+ --support-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
588
+ --support-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.2);
589
+ --support-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.2);
590
+ --support-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.3), 0 8px 10px -6px rgba(0, 0, 0, 0.2);
591
+ --support-shadow-focus: 0 0 0 2px rgba(59, 130, 246, 0.25);
592
+ --support-shadow-error-focus: 0 0 0 2px rgba(239, 68, 68, 0.25);
593
+
594
+ /* Timer */
595
+ --support-timer-running-bg: #450a0a;
596
+ --support-timer-running-border: #7f1d1d;
597
+
598
+ /* Search */
599
+ --support-search-highlight-bg: #854d0e;
600
+ --support-search-highlight-text: #fef08a;
601
+
602
+ /* Scrollbar */
603
+ --support-scrollbar-thumb: #475569;
604
+ --support-scrollbar-thumb-hover: #64748b;
605
+
606
+ /* Snooze */
607
+ --support-snooze-bg: #1e3a5f;
608
+ --support-snooze-border: #1d4ed8;
609
+ --support-snooze-text: #93c5fd;
610
+
611
+ /* Merge */
612
+ --support-merge-bg: #083344;
613
+ --support-merge-border: #0891b2;
614
+ --support-merge-text: #67e8f9;
615
+
616
+ /* Scheduled */
617
+ --support-scheduled-bg: #2e1065;
618
+ --support-scheduled-border: #7c3aed;
619
+ --support-scheduled-text: #c4b5fd;
620
+
621
+ /* Email tracking */
622
+ --support-email-pending: #64748b;
623
+
624
+ /* CSAT */
625
+ --support-csat-bg: #14532d;
626
+
627
+ /* Activity log */
628
+ --support-activity-line-color: #334155;
629
+
630
+ /* Notification */
631
+ --support-notification-dot: #ef4444;
632
+ --support-typing-dot-color: #64748b;
633
+ }