@redacto.io/consent-sdk-react 3.6.0 → 5.0.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 (103) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.d.mts +4 -4
  3. package/dist/index.d.ts +4 -4
  4. package/dist/index.js +36 -7
  5. package/dist/index.mjs +36 -7
  6. package/dist/privacy-center.d.mts +134 -51
  7. package/dist/privacy-center.d.ts +134 -51
  8. package/dist/privacy-center.js +6391 -2741
  9. package/dist/privacy-center.mjs +6135 -2482
  10. package/package.json +1 -1
  11. package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +5 -5
  12. package/src/RedactoNoticeConsent/language-codes.ts +37 -1
  13. package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.tsx +0 -3
  14. package/src/RedactoNoticeConsentInline/api/index.ts +0 -1
  15. package/src/RedactoPrivacyCenter/PrivacyCenterCaseDetailsPage.tsx +154 -0
  16. package/src/RedactoPrivacyCenter/PrivacyCenterHomePage.tsx +3 -0
  17. package/src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx +81 -50
  18. package/src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx +4 -0
  19. package/src/RedactoPrivacyCenter/api/actions.ts +68 -36
  20. package/src/RedactoPrivacyCenter/api/client.ts +125 -14
  21. package/src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx +38 -0
  22. package/src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx +31 -0
  23. package/src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx +73 -0
  24. package/src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx +87 -0
  25. package/src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx +95 -0
  26. package/src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx +147 -0
  27. package/src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx +171 -0
  28. package/src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx +23 -0
  29. package/src/RedactoPrivacyCenter/components/CaseDetails/useFileUpload.ts +116 -0
  30. package/src/RedactoPrivacyCenter/components/CaseDetails/useMessagePolling.ts +36 -0
  31. package/src/RedactoPrivacyCenter/components/CaseDetails/utils.ts +56 -0
  32. package/src/RedactoPrivacyCenter/components/CaseDetailsModal.tsx +1 -0
  33. package/src/RedactoPrivacyCenter/components/CaseHistory.tsx +6 -13
  34. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +6 -0
  35. package/src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx +0 -1
  36. package/src/RedactoPrivacyCenter/components/DataRequest/CorrectionDataSection.tsx +2 -2
  37. package/src/RedactoPrivacyCenter/components/DataRequest/PurposeSelectionSection.tsx +2 -3
  38. package/src/RedactoPrivacyCenter/components/Form.tsx +152 -11
  39. package/src/RedactoPrivacyCenter/components/GrievanceTable.tsx +4 -6
  40. package/src/RedactoPrivacyCenter/components/GrievanceTablePagination.tsx +9 -2
  41. package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +1 -0
  42. package/src/RedactoPrivacyCenter/components/Pagination.tsx +12 -12
  43. package/src/RedactoPrivacyCenter/components/PrivacyCenterLayout.tsx +3 -1
  44. package/src/RedactoPrivacyCenter/components/RequestSubmit.tsx +15 -1
  45. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideBarPC.tsx +8 -8
  46. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideMenuPC.tsx +7 -11
  47. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/types.ts +1 -1
  48. package/src/RedactoPrivacyCenter/components/activitiesColumns.tsx +1 -1
  49. package/src/RedactoPrivacyCenter/components/caseHistoryColumns.tsx +4 -24
  50. package/src/RedactoPrivacyCenter/components/constant.ts +3 -7
  51. package/src/RedactoPrivacyCenter/components/types.ts +12 -4
  52. package/src/RedactoPrivacyCenter/context/AuthContext.tsx +30 -16
  53. package/src/RedactoPrivacyCenter/context/BaseUrlContext.tsx +3 -6
  54. package/src/RedactoPrivacyCenter/context/NavigationContext.tsx +35 -3
  55. package/src/RedactoPrivacyCenter/context/OrganizationContext.tsx +1 -1
  56. package/src/RedactoPrivacyCenter/context/types.ts +14 -0
  57. package/src/RedactoPrivacyCenter/lib/api.ts +101 -3
  58. package/src/RedactoPrivacyCenter/lib/constants.ts +46 -1
  59. package/src/RedactoPrivacyCenter/lib/i18n.ts +1 -1
  60. package/src/RedactoPrivacyCenter/lib/queries.ts +106 -2
  61. package/src/RedactoPrivacyCenter/lib/types.ts +186 -1
  62. package/src/RedactoPrivacyCenter/lib/utils.ts +1 -0
  63. package/src/RedactoPrivacyCenter/locales/as/translation.json +93 -1
  64. package/src/RedactoPrivacyCenter/locales/bho/translation.json +93 -1
  65. package/src/RedactoPrivacyCenter/locales/bn/translation.json +93 -1
  66. package/src/RedactoPrivacyCenter/locales/brx/translation.json +93 -1
  67. package/src/RedactoPrivacyCenter/locales/doi/translation.json +93 -1
  68. package/src/RedactoPrivacyCenter/locales/en/translation.json +69 -2
  69. package/src/RedactoPrivacyCenter/locales/gom/translation.json +93 -1
  70. package/src/RedactoPrivacyCenter/locales/gu/translation.json +93 -1
  71. package/src/RedactoPrivacyCenter/locales/hi/translation.json +93 -1
  72. package/src/RedactoPrivacyCenter/locales/kn/translation.json +93 -1
  73. package/src/RedactoPrivacyCenter/locales/ks/translation.json +93 -1
  74. package/src/RedactoPrivacyCenter/locales/mai/translation.json +93 -1
  75. package/src/RedactoPrivacyCenter/locales/ml/translation.json +93 -1
  76. package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +93 -1
  77. package/src/RedactoPrivacyCenter/locales/mr/translation.json +93 -1
  78. package/src/RedactoPrivacyCenter/locales/ne/translation.json +93 -1
  79. package/src/RedactoPrivacyCenter/locales/or/translation.json +93 -1
  80. package/src/RedactoPrivacyCenter/locales/pa/translation.json +93 -1
  81. package/src/RedactoPrivacyCenter/locales/sa/translation.json +93 -1
  82. package/src/RedactoPrivacyCenter/locales/sat/translation.json +93 -1
  83. package/src/RedactoPrivacyCenter/locales/sd/translation.json +93 -1
  84. package/src/RedactoPrivacyCenter/locales/ta/translation.json +93 -1
  85. package/src/RedactoPrivacyCenter/locales/te/translation.json +93 -1
  86. package/src/RedactoPrivacyCenter/locales/ur/translation.json +93 -1
  87. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +725 -0
  88. package/src/RedactoPrivacyCenter/styles/pcStyles.ts +0 -6
  89. package/src/RedactoPrivacyCenter/table/AdvancedTable.tsx +5 -3
  90. package/src/RedactoPrivacyCenter/table/AdvancedTablePagination.tsx +9 -12
  91. package/src/RedactoPrivacyCenter/ui/Footer.tsx +4 -2
  92. package/src/RedactoPrivacyCenter/ui/PCAccordion.tsx +24 -18
  93. package/src/RedactoPrivacyCenter/ui/PCCollapse.tsx +30 -20
  94. package/src/RedactoPrivacyCenter/ui/PCInput.tsx +17 -13
  95. package/src/RedactoPrivacyCenter/ui/PCLoader.tsx +3 -2
  96. package/src/RedactoPrivacyCenter/ui/PCModal.tsx +3 -1
  97. package/src/RedactoPrivacyCenter/ui/PCPopover.tsx +0 -2
  98. package/src/RedactoPrivacyCenter/ui/PCSelect.tsx +10 -4
  99. package/src/RedactoPrivacyCenter/ui/PCTable.tsx +44 -32
  100. package/src/RedactoPrivacyCenter/ui/PCText.tsx +5 -3
  101. package/src/RedactoPrivacyCenter/ui/StatusBadge.tsx +0 -2
  102. package/src/RedactoPrivacyCenter/ui/ThemeToggle.tsx +4 -2
  103. package/src/privacy-center.ts +1 -0
@@ -970,6 +970,617 @@ export const injectPCStyles = () => {
970
970
  }
971
971
  }
972
972
 
973
+ /* ─── Case Details Page ───────────────────────────────────────────────── */
974
+
975
+ .pc-case-page {
976
+ width: 100%;
977
+ display: flex;
978
+ flex-direction: column;
979
+ min-height: 100%;
980
+ }
981
+
982
+ .pc-case-back {
983
+ margin-bottom: 1rem;
984
+ }
985
+
986
+ .pc-case-back-btn {
987
+ padding-left: 0;
988
+ color: var(--pc-text-secondary);
989
+ }
990
+
991
+ .pc-case-back-icon {
992
+ margin-right: 0.5rem;
993
+ }
994
+
995
+ .pc-case-header {
996
+ display: flex;
997
+ flex-wrap: wrap;
998
+ align-items: center;
999
+ gap: 0.5rem;
1000
+ padding: 0.75rem 0;
1001
+ border-bottom: 1px solid var(--pc-border-color);
1002
+ font-size: var(--pc-font-size-sm);
1003
+ color: var(--pc-text-secondary);
1004
+ }
1005
+
1006
+ .pc-case-header-id {
1007
+ font-weight: var(--pc-font-weight-semibold);
1008
+ color: var(--pc-text-primary);
1009
+ }
1010
+
1011
+ .pc-case-header-overdue {
1012
+ color: #dc2626;
1013
+ }
1014
+
1015
+ .pc-case-tabs {
1016
+ display: flex;
1017
+ border-bottom: 1px solid var(--pc-border-color);
1018
+ }
1019
+
1020
+ .pc-case-tab {
1021
+ padding: 0.75rem 1.25rem;
1022
+ font-size: var(--pc-font-size-sm);
1023
+ font-weight: var(--pc-font-weight-medium);
1024
+ color: var(--pc-text-secondary);
1025
+ border: none;
1026
+ border-bottom: 2px solid transparent;
1027
+ background: transparent;
1028
+ cursor: pointer;
1029
+ margin-bottom: -1px;
1030
+ transition: all 0.15s;
1031
+ }
1032
+
1033
+ .pc-case-tab--active {
1034
+ font-weight: var(--pc-font-weight-semibold);
1035
+ color: var(--pc-primary);
1036
+ border-bottom-color: var(--pc-primary);
1037
+ }
1038
+
1039
+ .pc-case-tab-content {
1040
+ flex: 1;
1041
+ display: flex;
1042
+ flex-direction: column;
1043
+ min-height: 0;
1044
+ }
1045
+
1046
+ /* ─── Messages Tab ─────────────────────────────────────────────────── */
1047
+
1048
+ .pc-messages-container {
1049
+ display: flex;
1050
+ flex-direction: column;
1051
+ min-height: 30vh;
1052
+ max-height: 60vh;
1053
+ border: 1px solid var(--pc-border-color);
1054
+ border-radius: 0.5rem;
1055
+ overflow: hidden;
1056
+ margin-top: 1rem;
1057
+ background-color: var(--pc-bg-primary);
1058
+ }
1059
+
1060
+ .pc-messages-notice {
1061
+ display: flex;
1062
+ align-items: center;
1063
+ gap: 0.5rem;
1064
+ padding: 0.625rem 1rem;
1065
+ font-size: var(--pc-font-size-sm);
1066
+ flex-shrink: 0;
1067
+ }
1068
+
1069
+ .pc-messages-notice-text {
1070
+ flex: 1;
1071
+ }
1072
+
1073
+ .pc-messages-refresh-btn {
1074
+ display: flex;
1075
+ align-items: center;
1076
+ justify-content: center;
1077
+ background: transparent;
1078
+ border: none;
1079
+ cursor: pointer;
1080
+ padding: 0.25rem;
1081
+ border-radius: 0.25rem;
1082
+ transition: opacity 0.15s;
1083
+ }
1084
+
1085
+ .pc-messages-refresh-btn:disabled {
1086
+ cursor: default;
1087
+ opacity: 0.5;
1088
+ }
1089
+
1090
+ .pc-messages-list {
1091
+ flex: 1;
1092
+ overflow-y: auto;
1093
+ padding: 1rem;
1094
+ display: flex;
1095
+ flex-direction: column;
1096
+ gap: 1rem;
1097
+ min-height: 0;
1098
+ }
1099
+
1100
+ .pc-messages-center {
1101
+ display: flex;
1102
+ justify-content: center;
1103
+ padding: 3rem 0;
1104
+ }
1105
+
1106
+ .pc-messages-center-text {
1107
+ text-align: center;
1108
+ padding: 3rem 0;
1109
+ }
1110
+
1111
+ .pc-messages-empty {
1112
+ flex: 1;
1113
+ display: flex;
1114
+ flex-direction: column;
1115
+ align-items: center;
1116
+ justify-content: center;
1117
+ gap: 0.75rem;
1118
+ padding: 3rem 0;
1119
+ }
1120
+
1121
+ .pc-messages-empty-icon {
1122
+ opacity: 0.3;
1123
+ color: var(--pc-text-secondary);
1124
+ }
1125
+
1126
+ /* ─── Message Composer ─────────────────────────────────────────────── */
1127
+
1128
+ .pc-composer {
1129
+ border-top: 1px solid var(--pc-border-color);
1130
+ background-color: var(--pc-bg-primary);
1131
+ flex-shrink: 0;
1132
+ }
1133
+
1134
+ .pc-composer-pending-row {
1135
+ display: flex;
1136
+ align-items: center;
1137
+ gap: 0.5rem;
1138
+ padding: 0.5rem 1rem 0;
1139
+ }
1140
+
1141
+ .pc-composer-pending-pill {
1142
+ display: flex;
1143
+ align-items: center;
1144
+ gap: 0.5rem;
1145
+ padding: 0.25rem 0.75rem;
1146
+ background-color: var(--pc-bg-secondary);
1147
+ border: 1px solid var(--pc-border-color);
1148
+ border-radius: 1rem;
1149
+ font-size: var(--pc-font-size-xs);
1150
+ color: var(--pc-text-primary);
1151
+ }
1152
+
1153
+ .pc-composer-pending-size {
1154
+ color: var(--pc-text-secondary);
1155
+ }
1156
+
1157
+ .pc-composer-remove-btn {
1158
+ background: none;
1159
+ border: none;
1160
+ cursor: pointer;
1161
+ color: var(--pc-text-secondary);
1162
+ padding: 0;
1163
+ line-height: 1;
1164
+ }
1165
+
1166
+ .pc-composer-textarea-wrap {
1167
+ padding: 0.75rem 1rem 0;
1168
+ }
1169
+
1170
+ .pc-composer-textarea {
1171
+ width: 100%;
1172
+ resize: none;
1173
+ outline: none;
1174
+ font-size: var(--pc-font-size-sm);
1175
+ color: var(--pc-text-primary);
1176
+ background-color: transparent;
1177
+ font-family: inherit;
1178
+ line-height: 1.5;
1179
+ border: 1px solid var(--pc-border-color);
1180
+ border-radius: 0.5rem;
1181
+ }
1182
+
1183
+ .pc-composer-actions {
1184
+ display: flex;
1185
+ justify-content: space-between;
1186
+ align-items: center;
1187
+ padding: 0.5rem 1rem 0.75rem;
1188
+ }
1189
+
1190
+ .pc-composer-btn {
1191
+ gap: 0.375rem;
1192
+ width: auto;
1193
+ }
1194
+
1195
+ .pc-composer-footer {
1196
+ text-align: center;
1197
+ padding: 0.375rem;
1198
+ font-size: var(--pc-font-size-xs);
1199
+ color: var(--pc-text-secondary);
1200
+ border-top: 1px solid var(--pc-border-color);
1201
+ }
1202
+
1203
+ /* ─── Chat Bubble ──────────────────────────────────────────────────── */
1204
+
1205
+ .pc-chat-bubble-wrap {
1206
+ display: flex;
1207
+ flex-direction: column;
1208
+ gap: 0.25rem;
1209
+ }
1210
+
1211
+ .pc-chat-bubble-wrap--sent {
1212
+ align-items: flex-end;
1213
+ }
1214
+
1215
+ .pc-chat-bubble-wrap--received {
1216
+ align-items: flex-start;
1217
+ }
1218
+
1219
+ .pc-chat-sender {
1220
+ font-size: var(--pc-font-size-xs);
1221
+ color: var(--pc-text-secondary);
1222
+ }
1223
+
1224
+ .pc-chat-bubble {
1225
+ max-width: 70%;
1226
+ padding: 0.625rem 0.875rem;
1227
+ font-size: var(--pc-font-size-sm);
1228
+ line-height: 1.5;
1229
+ word-break: break-word;
1230
+ }
1231
+
1232
+ .pc-chat-bubble--sent {
1233
+ border-radius: 1rem 0.25rem 1rem 1rem;
1234
+ background-color: var(--pc-primary);
1235
+ color: #ffffff;
1236
+ }
1237
+
1238
+ .pc-chat-bubble--received {
1239
+ border-radius: 0.25rem 1rem 1rem 1rem;
1240
+ background-color: var(--pc-bg-secondary);
1241
+ color: var(--pc-text-primary);
1242
+ border: 1px solid var(--pc-border-color);
1243
+ }
1244
+
1245
+ /* ─── Attachment Card ──────────────────────────────────────────────── */
1246
+
1247
+ .pc-attachment-card {
1248
+ display: flex;
1249
+ align-items: center;
1250
+ gap: 0.75rem;
1251
+ padding: 0.625rem 0.875rem;
1252
+ background-color: var(--pc-bg-secondary);
1253
+ border: 1px solid var(--pc-border-color);
1254
+ border-radius: 0.5rem;
1255
+ max-width: 320px;
1256
+ }
1257
+
1258
+ .pc-attachment-icon {
1259
+ color: var(--pc-primary);
1260
+ flex-shrink: 0;
1261
+ }
1262
+
1263
+ .pc-attachment-info {
1264
+ flex: 1;
1265
+ min-width: 0;
1266
+ }
1267
+
1268
+ .pc-attachment-name {
1269
+ font-size: var(--pc-font-size-sm);
1270
+ font-weight: var(--pc-font-weight-medium);
1271
+ color: var(--pc-primary);
1272
+ overflow: hidden;
1273
+ text-overflow: ellipsis;
1274
+ white-space: nowrap;
1275
+ }
1276
+
1277
+ .pc-attachment-size {
1278
+ font-size: var(--pc-font-size-xs);
1279
+ color: var(--pc-text-secondary);
1280
+ }
1281
+
1282
+ .pc-attachment-download {
1283
+ color: var(--pc-text-secondary);
1284
+ flex-shrink: 0;
1285
+ }
1286
+
1287
+ /* ─── Document Request Card ────────────────────────────────────────── */
1288
+
1289
+ .pc-doc-request-card {
1290
+ border-radius: 0.75rem;
1291
+ padding: 1rem;
1292
+ display: flex;
1293
+ flex-direction: column;
1294
+ gap: 0.75rem;
1295
+ max-width: 480px;
1296
+ }
1297
+
1298
+ .pc-doc-request-header {
1299
+ display: flex;
1300
+ align-items: flex-start;
1301
+ gap: 0.5rem;
1302
+ }
1303
+
1304
+ .pc-doc-request-icon {
1305
+ margin-top: 2px;
1306
+ flex-shrink: 0;
1307
+ }
1308
+
1309
+ .pc-doc-request-title {
1310
+ font-weight: var(--pc-font-weight-semibold);
1311
+ font-size: var(--pc-font-size-sm);
1312
+ }
1313
+
1314
+ .pc-doc-request-accepted {
1315
+ font-size: var(--pc-font-size-xs);
1316
+ margin-top: 0.125rem;
1317
+ }
1318
+
1319
+ .pc-doc-request-status {
1320
+ margin-left: auto;
1321
+ font-size: var(--pc-font-size-xs);
1322
+ font-weight: var(--pc-font-weight-medium);
1323
+ white-space: nowrap;
1324
+ padding: 0.125rem 0.5rem;
1325
+ border-radius: 0.375rem;
1326
+ }
1327
+
1328
+ .pc-doc-request-upload-btn {
1329
+ width: 100%;
1330
+ justify-content: center;
1331
+ gap: 0.375rem;
1332
+ border-style: solid;
1333
+ }
1334
+
1335
+ .pc-doc-request-rejection {
1336
+ font-size: var(--pc-font-size-xs);
1337
+ padding: 0.375rem 0.625rem;
1338
+ border-radius: 0.375rem;
1339
+ }
1340
+
1341
+ /* ─── Status Event ─────────────────────────────────────────────────── */
1342
+
1343
+ .pc-status-event {
1344
+ display: flex;
1345
+ flex-direction: column;
1346
+ align-items: center;
1347
+ gap: 0.25rem;
1348
+ }
1349
+
1350
+ .pc-status-event-pill {
1351
+ display: flex;
1352
+ align-items: center;
1353
+ gap: 0.5rem;
1354
+ padding: 0.5rem 1rem;
1355
+ border-radius: 1rem;
1356
+ font-size: var(--pc-font-size-sm);
1357
+ font-weight: var(--pc-font-weight-medium);
1358
+ }
1359
+
1360
+ .pc-status-event-sub {
1361
+ font-size: var(--pc-font-size-xs);
1362
+ opacity: 0.85;
1363
+ }
1364
+
1365
+ .pc-status-event-time {
1366
+ font-size: var(--pc-font-size-xs);
1367
+ color: var(--pc-text-secondary);
1368
+ }
1369
+
1370
+ /* ─── Request Details Tab ──────────────────────────────────────────── */
1371
+
1372
+ .pc-request-details {
1373
+ display: flex;
1374
+ flex-direction: column;
1375
+ gap: var(--pc-spacing-xl);
1376
+ padding: var(--pc-spacing-xl) var(--pc-spacing-lg);
1377
+ overflow-y: auto;
1378
+ }
1379
+
1380
+ /* Summary card row: each field sits in a subtle card */
1381
+ .pc-request-summary-card {
1382
+ background-color: var(--pc-bg-secondary);
1383
+ border: 1px solid var(--pc-border-color);
1384
+ border-radius: var(--pc-border-radius-lg);
1385
+ padding: var(--pc-spacing-lg);
1386
+ }
1387
+
1388
+ .pc-request-summary-grid {
1389
+ display: grid;
1390
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1391
+ gap: var(--pc-spacing-lg);
1392
+ }
1393
+
1394
+ .pc-request-field-label {
1395
+ margin-bottom: 0.375rem;
1396
+ }
1397
+
1398
+ .pc-request-field-value {
1399
+ color: var(--pc-text-primary);
1400
+ }
1401
+
1402
+ .pc-request-field-value--capitalize {
1403
+ text-transform: capitalize;
1404
+ color: var(--pc-text-primary);
1405
+ }
1406
+
1407
+ /* Description block */
1408
+ .pc-request-description {
1409
+ background-color: var(--pc-bg-secondary);
1410
+ padding: var(--pc-spacing-lg);
1411
+ border-radius: var(--pc-border-radius-lg);
1412
+ border: 1px solid var(--pc-border-color);
1413
+ }
1414
+
1415
+ .pc-request-description-title {
1416
+ margin-bottom: var(--pc-spacing-sm);
1417
+ color: var(--pc-text-primary);
1418
+ }
1419
+
1420
+ .pc-request-description-text {
1421
+ line-height: 1.7;
1422
+ }
1423
+
1424
+ /* Specifics section */
1425
+ .pc-request-specifics {
1426
+ display: flex;
1427
+ flex-direction: column;
1428
+ gap: var(--pc-spacing-xl);
1429
+ }
1430
+
1431
+ .pc-request-section-divider {
1432
+ display: flex;
1433
+ align-items: center;
1434
+ gap: 0.75rem;
1435
+ }
1436
+
1437
+ .pc-request-section-divider::after {
1438
+ content: '';
1439
+ flex: 1;
1440
+ height: 1px;
1441
+ background-color: var(--pc-border-color);
1442
+ }
1443
+
1444
+ .pc-request-section-title {
1445
+ font-size: var(--pc-font-size-xs);
1446
+ font-weight: var(--pc-font-weight-bold);
1447
+ text-transform: uppercase;
1448
+ letter-spacing: 0.08em;
1449
+ color: var(--pc-text-secondary);
1450
+ margin: 0;
1451
+ white-space: nowrap;
1452
+ }
1453
+
1454
+ .pc-request-section-heading {
1455
+ margin-bottom: var(--pc-spacing-sm);
1456
+ color: var(--pc-text-primary);
1457
+ font-size: var(--pc-font-size-sm);
1458
+ }
1459
+
1460
+ /* Purpose cards */
1461
+ .pc-request-purpose-list {
1462
+ list-style-type: none;
1463
+ padding-left: 0;
1464
+ margin: 0;
1465
+ display: flex;
1466
+ flex-direction: column;
1467
+ gap: var(--pc-spacing-sm);
1468
+ }
1469
+
1470
+ .pc-request-purpose-item {
1471
+ padding: var(--pc-spacing-lg);
1472
+ background-color: var(--pc-bg-secondary);
1473
+ border-radius: var(--pc-border-radius-lg);
1474
+ border: 1px solid var(--pc-border-color);
1475
+ transition: box-shadow 0.15s ease;
1476
+ }
1477
+
1478
+ .pc-request-purpose-item:hover {
1479
+ box-shadow: var(--pc-shadow-sm);
1480
+ }
1481
+
1482
+ .pc-request-purpose-name {
1483
+ font-weight: var(--pc-font-weight-semibold);
1484
+ font-size: var(--pc-font-size-sm);
1485
+ color: var(--pc-text-primary);
1486
+ margin-bottom: 0.25rem;
1487
+ }
1488
+
1489
+ .pc-request-purpose-desc {
1490
+ color: var(--pc-text-secondary);
1491
+ font-size: var(--pc-font-size-xs);
1492
+ margin-bottom: var(--pc-spacing-sm);
1493
+ line-height: 1.6;
1494
+ }
1495
+
1496
+ .pc-request-data-elements {
1497
+ margin-top: var(--pc-spacing-sm);
1498
+ padding-top: var(--pc-spacing-sm);
1499
+ border-top: 1px solid var(--pc-border-color);
1500
+ display: flex;
1501
+ flex-wrap: wrap;
1502
+ gap: var(--pc-spacing-xs);
1503
+ }
1504
+
1505
+ /* Correction data table */
1506
+ .pc-request-table-wrap {
1507
+ min-width: 100%;
1508
+ border: 1px solid var(--pc-border-color);
1509
+ border-radius: var(--pc-border-radius-lg);
1510
+ overflow: hidden;
1511
+ background-color: var(--pc-bg-primary);
1512
+ }
1513
+
1514
+ .pc-request-table {
1515
+ width: 100%;
1516
+ font-size: var(--pc-font-size-sm);
1517
+ }
1518
+
1519
+ .pc-request-table-header {
1520
+ background-color: var(--pc-bg-secondary);
1521
+ }
1522
+
1523
+ .pc-request-table-head {
1524
+ padding: 0.625rem 1rem;
1525
+ white-space: nowrap;
1526
+ color: var(--pc-text-secondary);
1527
+ font-weight: var(--pc-font-weight-semibold);
1528
+ font-size: var(--pc-font-size-xs);
1529
+ text-transform: uppercase;
1530
+ letter-spacing: 0.04em;
1531
+ }
1532
+
1533
+ .pc-request-table-row {
1534
+ border-bottom: 1px solid var(--pc-border-color);
1535
+ }
1536
+
1537
+ .pc-request-table-row:last-child {
1538
+ border-bottom: none;
1539
+ }
1540
+
1541
+ .pc-request-table-cell {
1542
+ padding: 0.75rem 1rem;
1543
+ font-size: var(--pc-font-size-sm);
1544
+ }
1545
+
1546
+ .pc-request-table-cell--name {
1547
+ font-weight: var(--pc-font-weight-medium);
1548
+ color: var(--pc-text-primary);
1549
+ }
1550
+
1551
+ .pc-request-table-cell--value {
1552
+ color: var(--pc-text-secondary);
1553
+ word-break: break-word;
1554
+ }
1555
+
1556
+ /* Nomination card */
1557
+ .pc-request-nomination-card {
1558
+ background-color: var(--pc-bg-secondary);
1559
+ padding: var(--pc-spacing-lg);
1560
+ border-radius: var(--pc-border-radius-lg);
1561
+ border: 1px solid var(--pc-border-color);
1562
+ display: grid;
1563
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1564
+ gap: var(--pc-spacing-md);
1565
+ }
1566
+
1567
+ .pc-request-nomination-field {
1568
+ display: flex;
1569
+ flex-direction: column;
1570
+ gap: 0.25rem;
1571
+ }
1572
+
1573
+ /* Grievance badges */
1574
+ .pc-request-grievance-wrap {
1575
+ display: flex;
1576
+ flex-wrap: wrap;
1577
+ gap: var(--pc-spacing-xs);
1578
+ }
1579
+
1580
+ .pc-hidden {
1581
+ display: none;
1582
+ }
1583
+
973
1584
  /* Case Details Modal Responsive Styles */
974
1585
  .pc-case-details-content {
975
1586
  padding: 1rem !important;
@@ -993,6 +1604,120 @@ export const injectPCStyles = () => {
993
1604
  grid-template-columns: repeat(4, 1fr) !important;
994
1605
  }
995
1606
  }
1607
+
1608
+ /* ─── Erasure Consent Modal ────────────────────────────────────────── */
1609
+
1610
+ .pc-erasure-modal-content {
1611
+ display: flex;
1612
+ flex-direction: column;
1613
+ gap: var(--pc-spacing-lg);
1614
+ }
1615
+
1616
+ .pc-erasure-modal-footer {
1617
+ display: flex;
1618
+ justify-content: flex-end;
1619
+ gap: var(--pc-spacing-sm);
1620
+ width: 100%;
1621
+ flex-wrap: wrap;
1622
+ }
1623
+
1624
+ .pc-erasure-modal-header {
1625
+ display: flex;
1626
+ flex-direction: column;
1627
+ align-items: center;
1628
+ text-align: center;
1629
+ gap: var(--pc-spacing-sm);
1630
+ }
1631
+
1632
+ .pc-erasure-modal-icon {
1633
+ flex-shrink: 0;
1634
+ width: 3rem;
1635
+ height: 3rem;
1636
+ border-radius: 50%;
1637
+ background-color: color-mix(in srgb, var(--pc-primary) 10%, transparent);
1638
+ display: flex;
1639
+ align-items: center;
1640
+ justify-content: center;
1641
+ color: var(--pc-primary);
1642
+ }
1643
+
1644
+ .pc-erasure-modal-title {
1645
+ margin: 0;
1646
+ font-size: var(--pc-font-size-lg);
1647
+ font-weight: var(--pc-font-weight-semibold);
1648
+ color: var(--pc-text-primary);
1649
+ }
1650
+
1651
+ .pc-erasure-modal-question {
1652
+ margin: 0;
1653
+ max-width: 28rem;
1654
+ font-size: var(--pc-font-size-sm);
1655
+ color: var(--pc-text-secondary);
1656
+ line-height: 1.5;
1657
+ }
1658
+
1659
+ .pc-erasure-modal-purposes {
1660
+ border-radius: var(--pc-border-radius-md);
1661
+ border: 1px solid var(--pc-border-color);
1662
+ background-color: var(--pc-bg-secondary);
1663
+ padding: var(--pc-spacing-md);
1664
+ display: flex;
1665
+ flex-direction: column;
1666
+ gap: var(--pc-spacing-sm);
1667
+ }
1668
+
1669
+ .pc-erasure-modal-purposes-label {
1670
+ margin: 0;
1671
+ font-size: var(--pc-font-size-xs);
1672
+ font-weight: var(--pc-font-weight-semibold);
1673
+ color: var(--pc-text-secondary);
1674
+ letter-spacing: 0.05em;
1675
+ text-transform: uppercase;
1676
+ }
1677
+
1678
+ .pc-erasure-modal-purpose-item {
1679
+ font-size: var(--pc-font-size-sm);
1680
+ font-weight: var(--pc-font-weight-semibold);
1681
+ color: var(--pc-text-primary);
1682
+ word-break: break-word;
1683
+ }
1684
+
1685
+ .pc-erasure-modal-purposes-placeholder {
1686
+ font-size: var(--pc-font-size-sm);
1687
+ color: var(--pc-text-secondary);
1688
+ }
1689
+
1690
+ .pc-erasure-modal-warning {
1691
+ border-radius: var(--pc-border-radius-md);
1692
+ border: 1px solid var(--pc-warning);
1693
+ background-color: color-mix(in srgb, var(--pc-warning) 10%, transparent);
1694
+ padding: var(--pc-spacing-md);
1695
+ }
1696
+
1697
+ .pc-erasure-modal-warning-text {
1698
+ margin: 0;
1699
+ font-size: var(--pc-font-size-sm);
1700
+ color: var(--pc-text-primary);
1701
+ line-height: 1.5;
1702
+ }
1703
+
1704
+ .pc-erasure-modal-warning-label {
1705
+ font-weight: var(--pc-font-weight-semibold);
1706
+ }
1707
+
1708
+ /* ─── Request Submit: Revoke Consent Notice ────────────────────────── */
1709
+
1710
+ .pc-request-submit-revoke-notice {
1711
+ margin-top: var(--pc-spacing-md);
1712
+ padding: var(--pc-spacing-sm);
1713
+ border-radius: var(--pc-border-radius-md);
1714
+ border: 1px solid var(--pc-warning);
1715
+ background-color: color-mix(in srgb, var(--pc-warning) 10%, transparent);
1716
+ }
1717
+
1718
+ .pc-request-submit-revoke-notice-text {
1719
+ color: var(--pc-text-primary);
1720
+ }
996
1721
  `;
997
1722
 
998
1723
  document.head.appendChild(style);