@consilioweb/payload-support 0.6.0 → 0.6.2

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 (85) hide show
  1. package/dist/{styles/theme.css → components/TicketConversation.css} +13 -326
  2. package/dist/components/TicketConversation.js +3004 -0
  3. package/dist/index.cjs +11 -11
  4. package/dist/index.js +11 -11
  5. package/dist/views/BillingView/client.cjs +209 -0
  6. package/dist/views/BillingView/index.cjs +34 -0
  7. package/dist/views/ChatView/client.cjs +253 -0
  8. package/dist/views/ChatView/index.cjs +34 -0
  9. package/dist/views/CrmView/client.cjs +233 -0
  10. package/dist/views/CrmView/index.cjs +34 -0
  11. package/dist/views/EmailTrackingView/client.cjs +159 -0
  12. package/dist/views/EmailTrackingView/index.cjs +34 -0
  13. package/dist/views/ImportConversationView/client.cjs +205 -0
  14. package/dist/views/ImportConversationView/index.cjs +34 -0
  15. package/dist/views/LogsView/client.cjs +149 -0
  16. package/dist/views/LogsView/index.cjs +32 -0
  17. package/dist/views/NewTicketView/client.cjs +229 -0
  18. package/dist/views/NewTicketView/index.cjs +32 -0
  19. package/dist/views/PendingEmailsView/client.cjs +173 -0
  20. package/dist/views/PendingEmailsView/index.cjs +34 -0
  21. package/dist/views/SupportDashboardView/client.cjs +301 -0
  22. package/dist/views/SupportDashboardView/index.cjs +34 -0
  23. package/dist/views/TicketDetailView/client.cjs +850 -0
  24. package/dist/views/TicketDetailView/index.cjs +34 -0
  25. package/dist/views/TicketInboxView/client.cjs +299 -0
  26. package/dist/views/TicketInboxView/index.cjs +32 -0
  27. package/dist/views/TicketingSettingsView/client.cjs +733 -0
  28. package/dist/views/TicketingSettingsView/index.cjs +34 -0
  29. package/dist/views/TimeDashboardView/client.cjs +169 -0
  30. package/dist/views/TimeDashboardView/index.cjs +34 -0
  31. package/dist/views/shared/AdminViewHeader.cjs +68 -0
  32. package/dist/views/shared/ErrorBoundary.cjs +55 -0
  33. package/dist/views/shared/Skeleton.cjs +77 -0
  34. package/dist/views/shared/adminTokens.cjs +34 -0
  35. package/dist/views/shared/adminTokens.js +0 -1
  36. package/dist/{components/TicketConversation/config.js → views/shared/config.cjs} +5 -2
  37. package/dist/views/shared/config.js +0 -1
  38. package/dist/views/shared/index.cjs +58 -0
  39. package/dist/views/shared/index.js +0 -1
  40. package/dist/views.cjs +86 -0
  41. package/dist/views.d.cts +13 -0
  42. package/dist/views.d.ts +13 -0
  43. package/dist/views.js +13 -0
  44. package/package.json +14 -7
  45. package/src/plugin.ts +11 -11
  46. package/src/views.ts +17 -0
  47. package/dist/components/TicketConversation/components/AISummaryPanel.js +0 -76
  48. package/dist/components/TicketConversation/components/ActionPanels.js +0 -118
  49. package/dist/components/TicketConversation/components/ActivityLog.js +0 -23
  50. package/dist/components/TicketConversation/components/ClientBar.js +0 -42
  51. package/dist/components/TicketConversation/components/ClientHistory.js +0 -137
  52. package/dist/components/TicketConversation/components/CodeBlock.js +0 -152
  53. package/dist/components/TicketConversation/components/CodeBlockInserter.js +0 -155
  54. package/dist/components/TicketConversation/components/QuickActions.js +0 -65
  55. package/dist/components/TicketConversation/components/TicketHeader.js +0 -92
  56. package/dist/components/TicketConversation/components/TimeTrackingPanel.js +0 -133
  57. package/dist/components/TicketConversation/constants.js +0 -96
  58. package/dist/components/TicketConversation/context.js +0 -11
  59. package/dist/components/TicketConversation/hooks/useAI.js +0 -176
  60. package/dist/components/TicketConversation/hooks/useMessageActions.js +0 -135
  61. package/dist/components/TicketConversation/hooks/useReply.js +0 -187
  62. package/dist/components/TicketConversation/hooks/useTicketActions.js +0 -230
  63. package/dist/components/TicketConversation/hooks/useTimeTracking.js +0 -122
  64. package/dist/components/TicketConversation/hooks/useTranslation.js +0 -70
  65. package/dist/components/TicketConversation/index.js +0 -1123
  66. package/dist/components/TicketConversation/locales/en.json +0 -878
  67. package/dist/components/TicketConversation/locales/fr.json +0 -878
  68. package/dist/components/TicketConversation/types.js +0 -2
  69. package/dist/components/TicketConversation/utils.js +0 -25
  70. package/dist/styles/BillingView.module.scss +0 -311
  71. package/dist/styles/ChatView.module.scss +0 -438
  72. package/dist/styles/CommandPalette.module.scss +0 -160
  73. package/dist/styles/CrmView.module.scss +0 -554
  74. package/dist/styles/EmailTracking.module.scss +0 -238
  75. package/dist/styles/ImportConversation.module.scss +0 -267
  76. package/dist/styles/Layout.module.scss +0 -55
  77. package/dist/styles/Logs.module.scss +0 -164
  78. package/dist/styles/NewTicket.module.scss +0 -143
  79. package/dist/styles/PendingEmails.module.scss +0 -629
  80. package/dist/styles/SupportDashboard.module.scss +0 -649
  81. package/dist/styles/TicketDetail.module.scss +0 -1050
  82. package/dist/styles/TicketInbox.module.scss +0 -296
  83. package/dist/styles/TicketingSettings.module.scss +0 -358
  84. package/dist/styles/TimeDashboard.module.scss +0 -287
  85. package/dist/styles/_tokens.scss +0 -78
@@ -1,649 +0,0 @@
1
- // SupportDashboard — Linear/Vercel 2026 inspired dashboard
2
- // Uses Payload CMS CSS variables for dark mode compatibility
3
-
4
- $font: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', system-ui, sans-serif;
5
- $radius-sm: 8px;
6
- $radius-md: 12px;
7
-
8
- // ─── PAGE ───
9
- .page {
10
- max-width: 1920px;
11
- margin: 0 auto;
12
- padding: 24px 24px 60px;
13
- font-family: $font;
14
- }
15
-
16
- .header {
17
- margin-bottom: 32px;
18
- }
19
-
20
- .title {
21
- font-size: 24px;
22
- font-weight: 800;
23
- color: var(--theme-text);
24
- margin: 0 0 4px;
25
- }
26
-
27
- .subtitle {
28
- font-size: 13px;
29
- color: var(--theme-elevation-500);
30
- margin: 0;
31
- }
32
-
33
- // ─── STAT CARDS ROW ───
34
- .statsRow {
35
- display: grid;
36
- grid-template-columns: repeat(4, 1fr);
37
- gap: 16px;
38
- margin-bottom: 32px;
39
-
40
- @media (max-width: 800px) {
41
- grid-template-columns: repeat(2, 1fr);
42
- }
43
- @media (max-width: 520px) {
44
- grid-template-columns: 1fr;
45
- }
46
- }
47
-
48
- .statCard {
49
- position: relative;
50
- padding: 20px 20px 16px;
51
- background: var(--theme-elevation-50, #f8fafc);
52
- border-radius: $radius-md;
53
- overflow: hidden;
54
- transition: background 150ms;
55
-
56
- &::after {
57
- content: '';
58
- position: absolute;
59
- bottom: 0;
60
- left: 16px;
61
- right: 16px;
62
- height: 2px;
63
- border-radius: 1px;
64
- background: var(--stat-accent, var(--theme-elevation-200));
65
- opacity: 0.7;
66
- }
67
-
68
- &:hover {
69
- background: var(--theme-elevation-100, #f1f5f9);
70
- }
71
- }
72
-
73
- .statLabel {
74
- font-size: 11px;
75
- font-weight: 700;
76
- text-transform: uppercase;
77
- letter-spacing: 0.6px;
78
- color: var(--theme-elevation-500);
79
- margin-bottom: 8px;
80
- }
81
-
82
- .statValueRow {
83
- display: flex;
84
- align-items: flex-end;
85
- justify-content: space-between;
86
- gap: 12px;
87
- }
88
-
89
- .statValue {
90
- font-size: 28px;
91
- font-weight: 600;
92
- color: var(--theme-text);
93
- line-height: 1;
94
- letter-spacing: -0.5px;
95
- }
96
-
97
- .sparkline {
98
- flex-shrink: 0;
99
- opacity: 0.6;
100
- }
101
-
102
- .statTrend {
103
- display: flex;
104
- align-items: center;
105
- gap: 4px;
106
- margin-top: 8px;
107
- font-size: 12px;
108
- font-weight: 600;
109
-
110
- &.up {
111
- color: #16a34a;
112
- }
113
- &.down {
114
- color: #dc2626;
115
- }
116
- &.neutral {
117
- color: var(--theme-elevation-400);
118
- }
119
- }
120
-
121
- .trendArrow {
122
- display: inline-flex;
123
- font-size: 14px;
124
- line-height: 1;
125
- }
126
-
127
- // ─── MIDDLE SECTION (2 columns) ───
128
- .middleGrid {
129
- display: grid;
130
- grid-template-columns: 3fr 2fr;
131
- gap: 20px;
132
- margin-bottom: 32px;
133
-
134
- @media (max-width: 800px) {
135
- grid-template-columns: 1fr;
136
- }
137
- }
138
-
139
- // ─── PANEL (shared card style) ───
140
- .panel {
141
- background: var(--theme-elevation-50, #f8fafc);
142
- border-radius: $radius-md;
143
- padding: 20px;
144
- }
145
-
146
- .panelTitle {
147
- font-size: 13px;
148
- font-weight: 700;
149
- text-transform: uppercase;
150
- letter-spacing: 0.5px;
151
- color: var(--theme-elevation-500);
152
- margin: 0 0 16px;
153
- }
154
-
155
- // ─── ACTIVE TICKETS TABLE ───
156
- .ticketTable {
157
- width: 100%;
158
- border-spacing: 0;
159
-
160
- th {
161
- font-size: 11px;
162
- font-weight: 600;
163
- text-transform: uppercase;
164
- letter-spacing: 0.4px;
165
- color: var(--theme-elevation-400);
166
- text-align: left;
167
- padding: 0 12px 10px;
168
- border-bottom: 1px solid var(--theme-elevation-150, #e2e8f0);
169
- }
170
-
171
- td {
172
- padding: 10px 12px;
173
- font-size: 13px;
174
- color: var(--theme-text);
175
- vertical-align: middle;
176
- }
177
-
178
- tbody tr {
179
- cursor: pointer;
180
- transition: background 100ms;
181
-
182
- &:nth-child(even) {
183
- background: var(--theme-elevation-50, rgba(0,0,0,0.015));
184
- }
185
-
186
- &:hover {
187
- background: var(--theme-elevation-100, #f1f5f9);
188
- }
189
- }
190
- }
191
-
192
- .statusDot {
193
- display: inline-block;
194
- width: 8px;
195
- height: 8px;
196
- border-radius: 50%;
197
- margin-right: 8px;
198
- flex-shrink: 0;
199
- }
200
-
201
- .statusDotOpen { background: #3b82f6; }
202
- .statusDotWaiting { background: #f59e0b; }
203
- .statusDotResolved { background: #22c55e; }
204
-
205
- .ticketNum {
206
- font-family: 'SF Mono', 'Fira Code', 'JetBrains Mono', 'Cascadia Code', monospace;
207
- font-weight: 600;
208
- font-variant-numeric: tabular-nums;
209
- font-size: 12px;
210
- color: var(--theme-elevation-500);
211
- white-space: nowrap;
212
- }
213
-
214
- .ticketSubject {
215
- max-width: 260px;
216
- overflow: hidden;
217
- text-overflow: ellipsis;
218
- white-space: nowrap;
219
- font-weight: 500;
220
- }
221
-
222
- .ticketClient {
223
- font-size: 12px;
224
- color: var(--theme-elevation-500);
225
- max-width: 120px;
226
- overflow: hidden;
227
- text-overflow: ellipsis;
228
- white-space: nowrap;
229
- }
230
-
231
- .ticketTime {
232
- font-size: 12px;
233
- color: var(--theme-elevation-400);
234
- white-space: nowrap;
235
- }
236
-
237
- .ticketArrow {
238
- color: var(--theme-elevation-300);
239
- font-size: 16px;
240
- text-align: right;
241
- transition: color 100ms;
242
-
243
- tr:hover & {
244
- color: var(--theme-text);
245
- }
246
- }
247
-
248
- .emptyTable {
249
- text-align: center;
250
- color: var(--theme-elevation-400);
251
- padding: 32px 12px;
252
- font-size: 13px;
253
- }
254
-
255
- // ─── RIGHT COLUMN ───
256
- .rightColumn {
257
- display: flex;
258
- flex-direction: column;
259
- gap: 20px;
260
- }
261
-
262
- // ─── VOLUME CHART ───
263
- .volumeChart {
264
- display: flex;
265
- align-items: flex-end;
266
- gap: 6px;
267
- height: 80px;
268
- padding-top: 8px;
269
- }
270
-
271
- .volumeBar {
272
- flex: 1;
273
- background: var(--theme-elevation-200, #cbd5e1);
274
- border-radius: 4px 4px 0 0;
275
- min-height: 4px;
276
- transition: background 150ms;
277
- position: relative;
278
-
279
- &:hover {
280
- background: #3b82f6;
281
- }
282
- }
283
-
284
- .volumeLabels {
285
- display: flex;
286
- justify-content: space-between;
287
- margin-top: 6px;
288
- font-size: 10px;
289
- color: var(--theme-elevation-400);
290
- font-variant-numeric: tabular-nums;
291
- }
292
-
293
- // ─── CSAT RING ───
294
- .csatContainer {
295
- display: flex;
296
- align-items: center;
297
- justify-content: center;
298
- gap: 24px;
299
- padding: 12px 0;
300
- }
301
-
302
- .csatRing {
303
- position: relative;
304
- width: 100px;
305
- height: 100px;
306
- flex-shrink: 0;
307
- }
308
-
309
- .csatValue {
310
- position: absolute;
311
- inset: 0;
312
- display: flex;
313
- align-items: center;
314
- justify-content: center;
315
- font-size: 24px;
316
- font-weight: 700;
317
- color: var(--theme-text);
318
- }
319
-
320
- .csatMeta {
321
- display: flex;
322
- flex-direction: column;
323
- gap: 4px;
324
- }
325
-
326
- .csatLabel {
327
- font-size: 13px;
328
- font-weight: 600;
329
- color: var(--theme-text);
330
- }
331
-
332
- .csatSub {
333
- font-size: 12px;
334
- color: var(--theme-elevation-400);
335
- }
336
-
337
- // ─── QUICK ACTIONS ───
338
- .actionsRow {
339
- display: flex;
340
- flex-wrap: wrap;
341
- gap: 10px;
342
- }
343
-
344
- .actionBtn {
345
- display: inline-flex;
346
- align-items: center;
347
- gap: 8px;
348
- padding: 10px 18px;
349
- border-radius: $radius-sm;
350
- background: var(--theme-elevation-100, #f1f5f9);
351
- color: var(--theme-text);
352
- font-size: 13px;
353
- font-weight: 600;
354
- text-decoration: none;
355
- border: none;
356
- cursor: pointer;
357
- transition: background 120ms, transform 80ms;
358
- font-family: $font;
359
-
360
- &:hover {
361
- background: var(--theme-elevation-200, #e2e8f0);
362
- transform: translateY(-1px);
363
- }
364
-
365
- &:active {
366
- transform: translateY(0);
367
- }
368
- }
369
-
370
- .badge {
371
- display: inline-flex;
372
- align-items: center;
373
- justify-content: center;
374
- min-width: 20px;
375
- height: 20px;
376
- padding: 0 6px;
377
- border-radius: 10px;
378
- font-size: 11px;
379
- font-weight: 700;
380
- font-variant-numeric: tabular-nums;
381
-
382
- &.badgeRed {
383
- background: #fecaca;
384
- color: #b91c1c;
385
- }
386
- &.badgeGreen {
387
- background: #dcfce7;
388
- color: #166534;
389
- }
390
- }
391
-
392
- // ─── SKELETON LOADING ───
393
- .skeleton {
394
- background: linear-gradient(90deg, var(--theme-elevation-100) 25%, var(--theme-elevation-150, #e8ecf0) 50%, var(--theme-elevation-100) 75%);
395
- background-size: 200% 100%;
396
- animation: shimmer 1.5s infinite;
397
- border-radius: 6px;
398
- }
399
-
400
- @keyframes shimmer {
401
- 0% { background-position: 200% 0; }
402
- 100% { background-position: -200% 0; }
403
- }
404
-
405
- .skeletonCard {
406
- @extend .skeleton;
407
- height: 100px;
408
- border-radius: $radius-md;
409
- }
410
-
411
- .skeletonTable {
412
- @extend .skeleton;
413
- height: 300px;
414
- border-radius: $radius-md;
415
- }
416
-
417
- .skeletonChart {
418
- @extend .skeleton;
419
- height: 160px;
420
- border-radius: $radius-md;
421
- }
422
-
423
- // ─── SLA SECTION ───
424
- .slaSection {
425
- margin-bottom: 32px;
426
- }
427
-
428
- .slaSectionTitle {
429
- font-size: 13px;
430
- font-weight: 700;
431
- text-transform: uppercase;
432
- letter-spacing: 0.5px;
433
- color: var(--theme-elevation-500);
434
- margin: 0 0 16px;
435
- }
436
-
437
- .slaGrid {
438
- display: grid;
439
- grid-template-columns: 1fr 1fr;
440
- gap: 16px;
441
-
442
- @media (max-width: 700px) {
443
- grid-template-columns: 1fr;
444
- }
445
- }
446
-
447
- .slaCard {
448
- border-radius: $radius-md;
449
- padding: 20px;
450
- position: relative;
451
- overflow: hidden;
452
-
453
- &.slaBreach {
454
- background: #fef2f2;
455
- border: 1px solid #fecaca;
456
-
457
- :global(.theme-dark) & {
458
- background: rgba(239, 68, 68, 0.08);
459
- border-color: rgba(239, 68, 68, 0.2);
460
- }
461
- }
462
-
463
- &.slaRisk {
464
- background: #fffbeb;
465
- border: 1px solid #fed7aa;
466
-
467
- :global(.theme-dark) & {
468
- background: rgba(245, 158, 11, 0.08);
469
- border-color: rgba(245, 158, 11, 0.2);
470
- }
471
- }
472
- }
473
-
474
- .slaCardHeader {
475
- display: flex;
476
- align-items: center;
477
- justify-content: space-between;
478
- margin-bottom: 16px;
479
- }
480
-
481
- .slaCardTitle {
482
- display: flex;
483
- align-items: center;
484
- gap: 8px;
485
- font-size: 14px;
486
- font-weight: 600;
487
- margin: 0;
488
- }
489
-
490
- .slaCardTitleBreach {
491
- color: #dc2626;
492
-
493
- :global(.theme-dark) & {
494
- color: #f87171;
495
- }
496
- }
497
-
498
- .slaCardTitleRisk {
499
- color: #d97706;
500
-
501
- :global(.theme-dark) & {
502
- color: #fbbf24;
503
- }
504
- }
505
-
506
- .slaCount {
507
- display: inline-flex;
508
- align-items: center;
509
- justify-content: center;
510
- min-width: 28px;
511
- height: 28px;
512
- padding: 0 8px;
513
- border-radius: 14px;
514
- font-size: 13px;
515
- font-weight: 700;
516
- font-variant-numeric: tabular-nums;
517
- }
518
-
519
- .slaCountBreach {
520
- background: #fecaca;
521
- color: #b91c1c;
522
-
523
- :global(.theme-dark) & {
524
- background: rgba(239, 68, 68, 0.2);
525
- color: #f87171;
526
- }
527
- }
528
-
529
- .slaCountRisk {
530
- background: #fed7aa;
531
- color: #92400e;
532
-
533
- :global(.theme-dark) & {
534
- background: rgba(245, 158, 11, 0.2);
535
- color: #fbbf24;
536
- }
537
- }
538
-
539
- .slaList {
540
- list-style: none;
541
- margin: 0;
542
- padding: 0;
543
- display: flex;
544
- flex-direction: column;
545
- gap: 8px;
546
- }
547
-
548
- .slaItem {
549
- display: flex;
550
- align-items: center;
551
- justify-content: space-between;
552
- gap: 12px;
553
- padding: 8px 12px;
554
- border-radius: $radius-sm;
555
- background: rgba(255, 255, 255, 0.6);
556
- cursor: pointer;
557
- transition: background 100ms;
558
-
559
- :global(.theme-dark) & {
560
- background: rgba(255, 255, 255, 0.04);
561
- }
562
-
563
- &:hover {
564
- background: rgba(255, 255, 255, 0.9);
565
-
566
- :global(.theme-dark) & {
567
- background: rgba(255, 255, 255, 0.08);
568
- }
569
- }
570
- }
571
-
572
- .slaItemLeft {
573
- display: flex;
574
- align-items: center;
575
- gap: 10px;
576
- min-width: 0;
577
- flex: 1;
578
- }
579
-
580
- .slaItemNum {
581
- font-family: 'SF Mono', 'Fira Code', 'JetBrains Mono', 'Cascadia Code', monospace;
582
- font-size: 12px;
583
- font-weight: 600;
584
- font-variant-numeric: tabular-nums;
585
- color: var(--theme-elevation-500);
586
- white-space: nowrap;
587
- flex-shrink: 0;
588
- }
589
-
590
- .slaItemSubject {
591
- font-size: 13px;
592
- font-weight: 500;
593
- color: var(--theme-text);
594
- overflow: hidden;
595
- text-overflow: ellipsis;
596
- white-space: nowrap;
597
- }
598
-
599
- .slaItemTime {
600
- font-size: 11px;
601
- font-weight: 600;
602
- white-space: nowrap;
603
- flex-shrink: 0;
604
- }
605
-
606
- .slaTimeBreach {
607
- color: #dc2626;
608
-
609
- :global(.theme-dark) & {
610
- color: #f87171;
611
- }
612
- }
613
-
614
- .slaTimeRisk {
615
- color: #d97706;
616
-
617
- :global(.theme-dark) & {
618
- color: #fbbf24;
619
- }
620
- }
621
-
622
- .slaEmpty {
623
- font-size: 13px;
624
- color: var(--theme-elevation-400);
625
- padding: 12px 0;
626
- text-align: center;
627
- }
628
-
629
- .slaLoading {
630
- font-size: 13px;
631
- color: var(--theme-elevation-400);
632
- padding: 12px 0;
633
- text-align: center;
634
- }
635
-
636
- // ─── SESSION EXPIRED ───
637
- .errorState {
638
- text-align: center;
639
- padding: 60px 24px;
640
- color: var(--theme-elevation-500);
641
- font-size: 14px;
642
-
643
- strong {
644
- display: block;
645
- font-size: 16px;
646
- color: var(--theme-text);
647
- margin-bottom: 8px;
648
- }
649
- }