@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,554 +0,0 @@
1
- // CRM View — Clean SaaS design, 2026
2
-
3
- $font-stack: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', system-ui, sans-serif;
4
- $font-mono: 'SF Mono', 'Fira Code', 'JetBrains Mono', 'Cascadia Code', monospace;
5
- $accent: #2563eb;
6
- $green: #16a34a;
7
- $orange: #ea580c;
8
- $amber: #d97706;
9
- $red: #dc2626;
10
-
11
- // Layout
12
- .page {
13
- max-width: 1920px;
14
- margin: 0 auto;
15
- padding: 0 24px 60px;
16
- font-family: $font-stack;
17
- }
18
-
19
- // Header
20
- .header {
21
- display: flex;
22
- align-items: center;
23
- gap: 16px;
24
- padding: 20px 0 16px;
25
- flex-wrap: wrap;
26
- }
27
-
28
- .title {
29
- font-size: 24px;
30
- font-weight: 800;
31
- color: var(--theme-text);
32
- margin: 0;
33
- }
34
-
35
- .subtitle {
36
- font-size: 13px;
37
- color: var(--theme-elevation-500);
38
- font-weight: 400;
39
- }
40
-
41
- // Grid layout
42
- .grid {
43
- display: grid;
44
- grid-template-columns: 320px 1fr;
45
- gap: 16px;
46
- align-items: start;
47
-
48
- @media (max-width: 800px) {
49
- grid-template-columns: 1fr;
50
- }
51
- }
52
-
53
- // Cards
54
- .card {
55
- border: 1px solid var(--theme-elevation-200);
56
- border-radius: 10px;
57
- background: var(--theme-elevation-0, #fff);
58
- }
59
-
60
- // Sidebar: client list
61
- .sidebar {
62
- composes: card;
63
- overflow: hidden;
64
- }
65
-
66
- .sidebarSearch {
67
- padding: 12px;
68
- border-bottom: 1px solid var(--theme-elevation-200);
69
- }
70
-
71
- .searchInput {
72
- width: 100%;
73
- padding: 8px 12px;
74
- border-radius: 8px;
75
- border: 1px solid var(--theme-elevation-200);
76
- background: var(--theme-elevation-0, #fff);
77
- color: var(--theme-text);
78
- font-size: 13px;
79
- font-family: $font-stack;
80
- transition: border-color 150ms, box-shadow 150ms;
81
- box-sizing: border-box;
82
-
83
- &:focus {
84
- outline: none;
85
- border-color: $accent;
86
- box-shadow: 0 0 0 3px rgba($accent, 0.08);
87
- }
88
-
89
- &::placeholder {
90
- color: var(--theme-elevation-400);
91
- }
92
- }
93
-
94
- .clientList {
95
- max-height: 600px;
96
- overflow-y: auto;
97
- }
98
-
99
- .clientItem {
100
- padding: 10px 14px;
101
- border-bottom: 1px solid var(--theme-elevation-100);
102
- cursor: pointer;
103
- border-left: 3px solid transparent;
104
- transition: background 80ms;
105
-
106
- &:hover {
107
- background: var(--theme-elevation-50);
108
- }
109
-
110
- &:last-child {
111
- border-bottom: none;
112
- }
113
- }
114
-
115
- .clientItemActive {
116
- background: var(--theme-elevation-50);
117
- border-left-color: $accent;
118
- }
119
-
120
- .clientCompany {
121
- font-size: 14px;
122
- font-weight: 600;
123
- color: var(--theme-text);
124
- }
125
-
126
- .clientName {
127
- font-size: 12px;
128
- color: var(--theme-elevation-500);
129
- }
130
-
131
- .clientEmail {
132
- font-size: 11px;
133
- color: var(--theme-elevation-400);
134
- }
135
-
136
- // Empty / loading states
137
- .emptyState {
138
- padding: 24px;
139
- text-align: center;
140
- color: var(--theme-elevation-400);
141
- font-size: 13px;
142
- }
143
-
144
- .placeholder {
145
- composes: card;
146
- text-align: center;
147
- padding: 60px 24px;
148
- color: var(--theme-elevation-400);
149
- font-size: 14px;
150
- }
151
-
152
- .loadingCard {
153
- composes: card;
154
- padding: 40px;
155
- }
156
-
157
- // Detail panel
158
- .detailStack {
159
- display: flex;
160
- flex-direction: column;
161
- gap: 12px;
162
- }
163
-
164
- // Client header card
165
- .clientHeader {
166
- composes: card;
167
- padding: 16px;
168
- display: flex;
169
- justify-content: space-between;
170
- align-items: flex-start;
171
- flex-wrap: wrap;
172
- gap: 12px;
173
- }
174
-
175
- .clientHeaderName {
176
- margin: 0;
177
- font-size: 20px;
178
- font-weight: 700;
179
- color: var(--theme-text);
180
- }
181
-
182
- .clientHeaderContact {
183
- font-size: 14px;
184
- color: var(--theme-elevation-500);
185
- margin-top: 4px;
186
- }
187
-
188
- .clientContactRow {
189
- display: flex;
190
- gap: 16px;
191
- margin-top: 8px;
192
- font-size: 13px;
193
- color: var(--theme-text);
194
- }
195
-
196
- .clientNotes {
197
- margin-top: 8px;
198
- padding: 8px;
199
- background: var(--theme-elevation-50);
200
- border-radius: 6px;
201
- font-size: 12px;
202
- color: var(--theme-elevation-500);
203
- font-style: italic;
204
- }
205
-
206
- .headerActions {
207
- display: flex;
208
- gap: 8px;
209
- }
210
-
211
- // Buttons
212
- .btn {
213
- padding: 8px 14px;
214
- border-radius: 8px;
215
- border: 1px solid var(--theme-elevation-200);
216
- font-size: 13px;
217
- font-weight: 600;
218
- font-family: $font-stack;
219
- cursor: pointer;
220
- text-decoration: none;
221
- white-space: nowrap;
222
- transition: all 100ms;
223
- display: inline-flex;
224
- align-items: center;
225
- gap: 6px;
226
- }
227
-
228
- .btnPrimary {
229
- composes: btn;
230
- background: $accent;
231
- color: #fff;
232
- border-color: $accent;
233
-
234
- &:hover {
235
- background: darken($accent, 8%);
236
- }
237
- }
238
-
239
- .btnWarning {
240
- composes: btn;
241
- background: $orange;
242
- color: #fff;
243
- border-color: $orange;
244
-
245
- &:hover {
246
- background: darken($orange, 8%);
247
- }
248
- }
249
-
250
- // Success toast
251
- .successBanner {
252
- padding: 10px 14px;
253
- border-radius: 8px;
254
- background: #f0fdf4;
255
- border: 1px solid #86efac;
256
- color: #166534;
257
- font-size: 13px;
258
- font-weight: 600;
259
- }
260
-
261
- // Merge panel
262
- .mergePanel {
263
- padding: 16px;
264
- border-radius: 10px;
265
- background: #fff7ed;
266
- border: 2px solid $orange;
267
-
268
- // Dark mode override
269
- @media (prefers-color-scheme: dark) {
270
- background: rgba($orange, 0.06);
271
- }
272
- }
273
-
274
- .mergePanelTitle {
275
- font-size: 13px;
276
- font-weight: 800;
277
- color: $orange;
278
- text-transform: uppercase;
279
- margin: 0 0 10px;
280
- }
281
-
282
- .mergePanelDesc {
283
- font-size: 12px;
284
- color: var(--theme-elevation-500);
285
- margin: 0 0 10px;
286
- line-height: 1.5;
287
- }
288
-
289
- .mergeInput {
290
- composes: searchInput;
291
- margin-bottom: 8px;
292
- }
293
-
294
- .mergeResultList {
295
- display: flex;
296
- flex-direction: column;
297
- gap: 4px;
298
- }
299
-
300
- .mergeResultItem {
301
- display: flex;
302
- justify-content: space-between;
303
- align-items: center;
304
- padding: 8px 12px;
305
- border-radius: 6px;
306
- border: 1px solid var(--theme-elevation-200);
307
- background: var(--theme-elevation-0, #fff);
308
- cursor: pointer;
309
- text-align: left;
310
- font-size: 13px;
311
- font-family: $font-stack;
312
- width: 100%;
313
- transition: background 80ms;
314
-
315
- &:hover {
316
- background: var(--theme-elevation-50);
317
- }
318
-
319
- &:disabled {
320
- opacity: 0.5;
321
- cursor: wait;
322
- }
323
- }
324
-
325
- .mergeResultEmail {
326
- color: var(--theme-elevation-400);
327
- font-size: 12px;
328
- }
329
-
330
- .mergeResultName {
331
- color: var(--theme-elevation-500);
332
- margin-left: 8px;
333
- }
334
-
335
- .mergeEmpty {
336
- font-size: 12px;
337
- color: var(--theme-elevation-500);
338
- font-style: italic;
339
- margin: 0;
340
- }
341
-
342
- // Stats grid
343
- .statsGrid {
344
- display: grid;
345
- grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
346
- gap: 8px;
347
- }
348
-
349
- .statCard {
350
- composes: card;
351
- padding: 10px 12px;
352
- }
353
-
354
- .statLabel {
355
- font-size: 10px;
356
- font-weight: 700;
357
- text-transform: uppercase;
358
- color: var(--theme-elevation-500);
359
- letter-spacing: 0.03em;
360
- }
361
-
362
- .statValue {
363
- font-size: 20px;
364
- font-weight: 600;
365
- margin-top: 2px;
366
- }
367
-
368
- .statAccent { color: $accent; }
369
- .statGreen { color: $green; }
370
- .statOrange { color: $orange; }
371
- .statAmber { color: $amber; }
372
-
373
- // Section card with content
374
- .sectionCard {
375
- composes: card;
376
- padding: 16px;
377
- }
378
-
379
- .sectionHeader {
380
- display: flex;
381
- justify-content: space-between;
382
- align-items: center;
383
- margin-bottom: 10px;
384
- }
385
-
386
- .sectionTitle {
387
- margin: 0;
388
- font-size: 13px;
389
- font-weight: 600;
390
- text-transform: uppercase;
391
- color: var(--theme-text);
392
- letter-spacing: 0.02em;
393
- }
394
-
395
- .sectionLink {
396
- font-size: 12px;
397
- font-weight: 700;
398
- color: $accent;
399
- text-decoration: none;
400
-
401
- &:hover {
402
- text-decoration: underline;
403
- }
404
- }
405
-
406
- // Projects list
407
- .projectList {
408
- display: flex;
409
- flex-wrap: wrap;
410
- gap: 8px;
411
- }
412
-
413
- .projectChip {
414
- display: flex;
415
- align-items: center;
416
- gap: 8px;
417
- padding: 6px 12px;
418
- border-radius: 6px;
419
- border: 1.5px solid var(--theme-elevation-200);
420
- text-decoration: none;
421
- color: var(--theme-text);
422
- font-size: 13px;
423
- font-weight: 700;
424
- transition: border-color 100ms;
425
-
426
- &:hover {
427
- border-color: var(--theme-elevation-400);
428
- }
429
- }
430
-
431
- // Badges
432
- .badge {
433
- display: inline-block;
434
- padding: 2px 8px;
435
- border-radius: 4px;
436
- font-size: 10px;
437
- font-weight: 600;
438
- text-transform: uppercase;
439
- letter-spacing: 0.02em;
440
- }
441
-
442
- .badgeAccent {
443
- background: $accent;
444
- color: #fff;
445
- }
446
-
447
- .badgeGreen {
448
- background: $green;
449
- color: #fff;
450
- }
451
-
452
- .badgeOrange {
453
- background: $orange;
454
- color: #fff;
455
- }
456
-
457
- .badgeAmber {
458
- background: $amber;
459
- color: #000;
460
- }
461
-
462
- .badgeMuted {
463
- background: var(--theme-elevation-300);
464
- color: #fff;
465
- }
466
-
467
- // Tickets table
468
- .table {
469
- width: 100%;
470
- border-collapse: collapse;
471
- font-size: 13px;
472
- }
473
-
474
- .table th {
475
- padding: 6px 8px;
476
- text-align: left;
477
- font-size: 10px;
478
- font-weight: 600;
479
- text-transform: uppercase;
480
- color: var(--theme-elevation-500);
481
- border-bottom: 1px solid var(--theme-elevation-200);
482
- letter-spacing: 0.03em;
483
- }
484
-
485
- .table th:nth-child(3) {
486
- text-align: center;
487
- }
488
-
489
- .table th:nth-child(4) {
490
- text-align: right;
491
- }
492
-
493
- .table td {
494
- padding: 6px 8px;
495
- }
496
-
497
- .table tr {
498
- border-bottom: 1px solid var(--theme-elevation-100);
499
-
500
- &:last-child {
501
- border-bottom: none;
502
- }
503
- }
504
-
505
- .ticketLink {
506
- color: var(--theme-text);
507
- font-weight: 700;
508
- text-decoration: underline;
509
- font-family: $font-mono;
510
- font-size: 11px;
511
-
512
- &:hover {
513
- color: $accent;
514
- }
515
- }
516
-
517
- .ticketSubject {
518
- font-weight: 600;
519
- }
520
-
521
- .ticketStatusCell {
522
- text-align: center;
523
- }
524
-
525
- .ticketDate {
526
- text-align: right;
527
- font-size: 11px;
528
- color: var(--theme-elevation-400);
529
- }
530
-
531
- .ticketEmpty {
532
- color: var(--theme-elevation-400);
533
- font-size: 13px;
534
- text-align: center;
535
- padding: 20px;
536
- }
537
-
538
- // Skeleton placeholder
539
- .skeleton {
540
- height: 14px;
541
- border-radius: 4px;
542
- background: var(--theme-elevation-150, var(--theme-elevation-100));
543
- animation: pulse 1.5s ease-in-out infinite;
544
- margin-bottom: 10px;
545
-
546
- &:nth-child(2) { width: 80%; }
547
- &:nth-child(3) { width: 60%; }
548
- &:nth-child(4) { width: 70%; }
549
- }
550
-
551
- @keyframes pulse {
552
- 0%, 100% { opacity: 1; }
553
- 50% { opacity: 0.4; }
554
- }