@consilioweb/payload-support 0.10.0 → 0.11.0

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 (42) hide show
  1. package/dist/components/TicketConversation/locales/en.json +25 -1
  2. package/dist/components/TicketConversation/locales/fr.json +25 -1
  3. package/dist/index.cjs +799 -4
  4. package/dist/index.d.cts +15 -1
  5. package/dist/index.d.ts +15 -1
  6. package/dist/index.js +800 -6
  7. package/dist/styles/TicketDetail.module.scss +294 -0
  8. package/dist/views/TicketDetailView/client.cjs +455 -249
  9. package/dist/views/TicketDetailView/client.js +456 -250
  10. package/dist/views/TicketInboxView/client.cjs +10 -9
  11. package/dist/views/TicketInboxView/client.js +2 -1
  12. package/package.json +1 -1
  13. package/src/collections/ClientSummaries.ts +16 -0
  14. package/src/collections/TicketCollaborators.ts +93 -0
  15. package/src/collections/TicketFeedback.ts +116 -0
  16. package/src/collections/TicketMessages.ts +9 -0
  17. package/src/collections/Tickets.ts +31 -1
  18. package/src/collections/index.ts +2 -0
  19. package/src/components/TicketConversation/locales/en.json +25 -1
  20. package/src/components/TicketConversation/locales/fr.json +25 -1
  21. package/src/endpoints/escalate.ts +44 -0
  22. package/src/endpoints/index.ts +15 -0
  23. package/src/endpoints/invite-collaborator.ts +215 -0
  24. package/src/endpoints/kb-search.ts +156 -0
  25. package/src/endpoints/ticket-feedback.ts +104 -0
  26. package/src/endpoints/transfer-ticket.ts +248 -0
  27. package/src/index.ts +1 -0
  28. package/src/plugin.ts +4 -0
  29. package/src/portal/auth/ChatWidget.tsx +11 -0
  30. package/src/portal/auth/dashboard/DashboardClient.tsx +85 -99
  31. package/src/portal/auth/dashboard/page.tsx +11 -2
  32. package/src/portal/auth/tickets/detail/TransferAndInviteActions.tsx +402 -0
  33. package/src/portal/auth/tickets/detail/page.tsx +122 -23
  34. package/src/portal/auth/tickets/new/KbDeflection.tsx +128 -0
  35. package/src/portal/auth/tickets/new/page.tsx +203 -100
  36. package/src/portal/locales/en.json +5 -0
  37. package/src/portal/locales/fr.json +5 -0
  38. package/src/styles/TicketDetail.module.scss +294 -0
  39. package/src/types.ts +19 -0
  40. package/src/utils/slugs.ts +2 -0
  41. package/src/views/TicketDetailView/client.tsx +346 -89
  42. package/src/views/TicketInboxView/client.tsx +2 -1
@@ -1298,3 +1298,297 @@
1298
1298
  background: var(--theme-accent-500, #6b46e8);
1299
1299
  flex-shrink: 0;
1300
1300
  }
1301
+
1302
+ // ─── SIDEBAR TABS (Overview / Client / Activity) ───
1303
+ // Sticky tab bar at the top of the sidebar. Active tab gets a 2px
1304
+ // underline using the primary text color; inactive tabs use the secondary
1305
+ // text color and lift to primary on hover. All colors come from
1306
+ // --theme-* tokens to stay coherent with light/dark themes.
1307
+ .sidebarTabs {
1308
+ position: sticky;
1309
+ top: 0;
1310
+ z-index: 2;
1311
+ display: flex;
1312
+ gap: 0;
1313
+ background: var(--theme-bg);
1314
+ border-bottom: 1px solid var(--theme-elevation-150, #f1f5f9);
1315
+ }
1316
+
1317
+ .sidebarTab {
1318
+ flex: 1;
1319
+ appearance: none;
1320
+ background: transparent;
1321
+ border: 0;
1322
+ border-bottom: 2px solid transparent;
1323
+ padding: 10px 8px;
1324
+ font-size: 12px;
1325
+ font-weight: 600;
1326
+ color: var(--theme-text-secondary, var(--theme-elevation-500));
1327
+ cursor: pointer;
1328
+ transition: color 120ms ease, border-color 120ms ease;
1329
+ text-align: center;
1330
+ line-height: 1.2;
1331
+
1332
+ &:hover {
1333
+ color: var(--theme-text);
1334
+ }
1335
+
1336
+ &:focus-visible {
1337
+ outline: 2px solid var(--theme-accent-500, #6b46e8);
1338
+ outline-offset: -2px;
1339
+ }
1340
+ }
1341
+
1342
+ .sidebarTabActive {
1343
+ color: var(--theme-text);
1344
+ border-bottom-color: var(--theme-text);
1345
+ }
1346
+
1347
+ // ─── PREVIOUS TICKETS (Client tab) ───
1348
+ .previousTicketsList {
1349
+ list-style: none;
1350
+ margin: 0;
1351
+ padding: 0;
1352
+ display: flex;
1353
+ flex-direction: column;
1354
+ gap: 4px;
1355
+ }
1356
+
1357
+ .previousTicketsItem {
1358
+ margin: 0;
1359
+ }
1360
+
1361
+ .previousTicketsLink {
1362
+ display: flex;
1363
+ flex-direction: column;
1364
+ gap: 2px;
1365
+ padding: 8px 10px;
1366
+ border-radius: 8px;
1367
+ border: 1px solid var(--theme-elevation-150, #f1f5f9);
1368
+ background: var(--theme-elevation-0);
1369
+ color: var(--theme-text);
1370
+ text-decoration: none;
1371
+ transition: background 120ms ease, border-color 120ms ease;
1372
+
1373
+ &:hover {
1374
+ background: var(--theme-elevation-50);
1375
+ border-color: var(--theme-elevation-200);
1376
+ }
1377
+ }
1378
+
1379
+ .previousTicketsSubject {
1380
+ font-size: 12px;
1381
+ font-weight: 600;
1382
+ color: var(--theme-text);
1383
+ overflow: hidden;
1384
+ text-overflow: ellipsis;
1385
+ white-space: nowrap;
1386
+ }
1387
+
1388
+ .previousTicketsMeta {
1389
+ display: flex;
1390
+ justify-content: space-between;
1391
+ align-items: center;
1392
+ gap: 6px;
1393
+ font-size: 10px;
1394
+ color: var(--theme-elevation-500);
1395
+ }
1396
+
1397
+ .previousTicketsStatus {
1398
+ text-transform: uppercase;
1399
+ letter-spacing: 0.04em;
1400
+ font-weight: 700;
1401
+ }
1402
+
1403
+ .previousTicketsDate {
1404
+ font-weight: 500;
1405
+ }
1406
+
1407
+ .previousTicketsEmpty {
1408
+ font-size: 12px;
1409
+ color: var(--theme-elevation-400);
1410
+ text-align: center;
1411
+ padding: 8px 0;
1412
+ }
1413
+
1414
+ // AI suggestion preview bandeau (au-dessus du composer)
1415
+ .aiSuggestionPreview {
1416
+ margin-top: 16px;
1417
+ padding: 12px 16px;
1418
+ border-radius: 10px;
1419
+ background: linear-gradient(180deg,
1420
+ color-mix(in srgb, var(--theme-accent-500, #6b46e8) 10%, transparent) 0%,
1421
+ color-mix(in srgb, var(--theme-accent-500, #6b46e8) 4%, transparent) 100%);
1422
+ border: 1px solid color-mix(in srgb, var(--theme-accent-500, #6b46e8) 30%, transparent);
1423
+ animation: ai-suggest-in 200ms ease-out;
1424
+ }
1425
+
1426
+ @keyframes ai-suggest-in {
1427
+ from { opacity: 0; transform: translateY(-4px); }
1428
+ to { opacity: 1; transform: translateY(0); }
1429
+ }
1430
+
1431
+ .aiSuggestionPreviewHeader {
1432
+ display: flex;
1433
+ align-items: center;
1434
+ gap: 8px;
1435
+ margin-bottom: 8px;
1436
+ }
1437
+
1438
+ .aiSuggestionIcon {
1439
+ width: 20px;
1440
+ height: 20px;
1441
+ border-radius: 50%;
1442
+ background: var(--theme-accent-500, #6b46e8);
1443
+ color: #fff;
1444
+ display: inline-flex;
1445
+ align-items: center;
1446
+ justify-content: center;
1447
+ font-size: 11px;
1448
+ font-weight: 700;
1449
+ }
1450
+
1451
+ .aiSuggestionLabel {
1452
+ font-size: 11px;
1453
+ font-weight: 700;
1454
+ text-transform: uppercase;
1455
+ letter-spacing: 0.06em;
1456
+ color: var(--theme-accent-500, #6b46e8);
1457
+ flex: 1;
1458
+ }
1459
+
1460
+ .aiSuggestionDismiss {
1461
+ width: 24px;
1462
+ height: 24px;
1463
+ border-radius: 6px;
1464
+ border: 0;
1465
+ background: none;
1466
+ cursor: pointer;
1467
+ color: var(--theme-text-tertiary);
1468
+ font-size: 18px;
1469
+ line-height: 1;
1470
+
1471
+ &:hover {
1472
+ background: var(--theme-elevation-100);
1473
+ color: var(--theme-text);
1474
+ }
1475
+ }
1476
+
1477
+ .aiSuggestionBody {
1478
+ font-size: 13px;
1479
+ line-height: 1.55;
1480
+ color: var(--theme-text);
1481
+ white-space: pre-wrap;
1482
+ max-height: 120px;
1483
+ overflow-y: auto;
1484
+ margin-bottom: 12px;
1485
+ padding: 8px 10px;
1486
+ background: var(--theme-elevation-0, #fff);
1487
+ border-radius: 6px;
1488
+ border: 1px solid var(--theme-elevation-200);
1489
+ }
1490
+
1491
+ .aiSuggestionActions {
1492
+ display: flex;
1493
+ justify-content: flex-end;
1494
+ gap: 8px;
1495
+ }
1496
+
1497
+ .aiSuggestionIgnore {
1498
+ padding: 6px 14px;
1499
+ border-radius: 6px;
1500
+ border: 1px solid var(--theme-elevation-200);
1501
+ background: var(--theme-elevation-0, #fff);
1502
+ color: var(--theme-text-secondary);
1503
+ font-size: 12px;
1504
+ font-weight: 600;
1505
+ cursor: pointer;
1506
+
1507
+ &:hover {
1508
+ background: var(--theme-elevation-100);
1509
+ color: var(--theme-text);
1510
+ }
1511
+ }
1512
+
1513
+ .aiSuggestionInsert {
1514
+ padding: 6px 14px;
1515
+ border-radius: 6px;
1516
+ border: 1px solid var(--theme-accent-500, #6b46e8);
1517
+ background: var(--theme-accent-500, #6b46e8);
1518
+ color: #fff;
1519
+ font-size: 12px;
1520
+ font-weight: 600;
1521
+ cursor: pointer;
1522
+
1523
+ &:hover {
1524
+ background: color-mix(in srgb, var(--theme-accent-500, #6b46e8) 80%, black);
1525
+ }
1526
+ }
1527
+
1528
+ .aiCardNextTitle {
1529
+ font-size: 10px;
1530
+ font-weight: 700;
1531
+ text-transform: uppercase;
1532
+ letter-spacing: 0.06em;
1533
+ color: var(--theme-elevation-500);
1534
+ margin: 12px 0 6px;
1535
+ }
1536
+ .aiCardNextActions {
1537
+ list-style: none; padding: 0; margin: 0;
1538
+ display: flex; flex-direction: column; gap: 4px;
1539
+ }
1540
+ .aiCardNextAction {
1541
+ display: flex; align-items: center; gap: 8px;
1542
+ padding: 6px 8px;
1543
+ border-radius: 6px;
1544
+ background: var(--theme-elevation-0, #fff);
1545
+ border: 1px solid var(--theme-elevation-200);
1546
+ font-size: 12px;
1547
+ }
1548
+ .aiCardNextCheck {
1549
+ width: 16px; height: 16px;
1550
+ border-radius: 4px;
1551
+ border: 1.5px solid var(--theme-elevation-300);
1552
+ background: var(--theme-elevation-0, #fff);
1553
+ display: inline-flex; align-items: center; justify-content: center;
1554
+ flex-shrink: 0;
1555
+ cursor: pointer;
1556
+ font-size: 10px; font-weight: 700;
1557
+ color: transparent;
1558
+ transition: all 100ms;
1559
+ &:hover { border-color: var(--theme-accent-500, #6b46e8); }
1560
+ &:disabled { opacity: 0.5; cursor: not-allowed; }
1561
+ }
1562
+ .aiCardNextCheckDone {
1563
+ background: var(--theme-accent-500, #6b46e8);
1564
+ border-color: var(--theme-accent-500, #6b46e8);
1565
+ color: #fff;
1566
+ }
1567
+ .aiCardNextLabel { flex: 1; color: var(--theme-text); line-height: 1.4; }
1568
+ .aiCardNextLabelDone {
1569
+ text-decoration: line-through;
1570
+ color: var(--theme-text-tertiary);
1571
+ }
1572
+ .aiCardNextWhen {
1573
+ font-size: 10px; font-weight: 600;
1574
+ color: var(--theme-text-tertiary);
1575
+ text-transform: uppercase; letter-spacing: 0.04em;
1576
+ flex-shrink: 0;
1577
+ }
1578
+
1579
+ .composerAliasSelect {
1580
+ height: 28px;
1581
+ padding: 0 8px;
1582
+ font-size: 12px; font-weight: 500;
1583
+ border-radius: 6px;
1584
+ border: 1px solid var(--theme-elevation-200);
1585
+ background: var(--theme-elevation-0, #fff);
1586
+ color: var(--theme-text);
1587
+ cursor: pointer;
1588
+ &:hover { background: var(--theme-elevation-50); }
1589
+ &:focus-visible {
1590
+ outline: 0;
1591
+ border-color: var(--theme-info-500, #2a6bd8);
1592
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--theme-info-500, #2a6bd8) 18%, transparent);
1593
+ }
1594
+ }