@redacto.io/consent-sdk-react 10.0.0-beta.9 → 10.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 (264) hide show
  1. package/NOTICE.md +17 -0
  2. package/README.md +141 -3
  3. package/dist/chunk-FEGTW73Q.mjs +182 -0
  4. package/dist/fonts.d.mts +35 -0
  5. package/dist/fonts.d.ts +35 -0
  6. package/dist/fonts.js +183 -0
  7. package/dist/fonts.mjs +10 -0
  8. package/dist/index.d.mts +12 -1
  9. package/dist/index.d.ts +12 -1
  10. package/dist/index.js +724 -365
  11. package/dist/index.mjs +346 -201
  12. package/dist/montserrat.generated-NBTECYRW.mjs +22 -0
  13. package/dist/privacy-center.d.mts +0 -1
  14. package/dist/privacy-center.d.ts +0 -1
  15. package/dist/privacy-center.js +2 -66
  16. package/dist/privacy-center.mjs +2 -66
  17. package/dist/types-6Aj7faxL.d.mts +57 -0
  18. package/dist/types-6Aj7faxL.d.ts +57 -0
  19. package/package.json +10 -1
  20. package/.turbo/turbo-build.log +0 -22
  21. package/.turbo/turbo-test.log +0 -203
  22. package/.turbo/turbo-verify-pack.log +0 -6
  23. package/CHANGELOG.md +0 -353
  24. package/src/RedactoNoticeAssisted/RedactoNoticeAssisted.test.tsx +0 -934
  25. package/src/RedactoNoticeAssisted/RedactoNoticeAssisted.tsx +0 -2160
  26. package/src/RedactoNoticeAssisted/api/index.ts +0 -275
  27. package/src/RedactoNoticeAssisted/api/types.ts +0 -182
  28. package/src/RedactoNoticeAssisted/assets/redacto-logo.png +0 -0
  29. package/src/RedactoNoticeAssisted/constants.ts +0 -51
  30. package/src/RedactoNoticeAssisted/i18n.ts +0 -1408
  31. package/src/RedactoNoticeAssisted/index.ts +0 -1
  32. package/src/RedactoNoticeAssisted/injectStyles.ts +0 -251
  33. package/src/RedactoNoticeAssisted/styles.ts +0 -730
  34. package/src/RedactoNoticeAssisted/types.ts +0 -26
  35. package/src/RedactoNoticeAssisted/useMediaQuery.ts +0 -36
  36. package/src/RedactoNoticeConsent/RedactoNoticeConsent.test.tsx +0 -1152
  37. package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +0 -4308
  38. package/src/RedactoNoticeConsent/api/index.ts +0 -542
  39. package/src/RedactoNoticeConsent/api/sandbox.ts +0 -150
  40. package/src/RedactoNoticeConsent/api/types.ts +0 -515
  41. package/src/RedactoNoticeConsent/assets/redacto-logo.png +0 -0
  42. package/src/RedactoNoticeConsent/components/DigiLockerCallback.tsx +0 -602
  43. package/src/RedactoNoticeConsent/components/index.ts +0 -7
  44. package/src/RedactoNoticeConsent/constants.ts +0 -20
  45. package/src/RedactoNoticeConsent/index.ts +0 -1
  46. package/src/RedactoNoticeConsent/injectStyles.ts +0 -151
  47. package/src/RedactoNoticeConsent/language-codes.ts +0 -95
  48. package/src/RedactoNoticeConsent/services/storage.ts +0 -122
  49. package/src/RedactoNoticeConsent/styles.ts +0 -409
  50. package/src/RedactoNoticeConsent/types.ts +0 -80
  51. package/src/RedactoNoticeConsent/useMediaQuery.ts +0 -36
  52. package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.test.tsx +0 -369
  53. package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.tsx +0 -687
  54. package/src/RedactoNoticeConsentInline/api/index.ts +0 -106
  55. package/src/RedactoNoticeConsentInline/api/types.ts +0 -183
  56. package/src/RedactoNoticeConsentInline/assets/redacto-logo.png +0 -0
  57. package/src/RedactoNoticeConsentInline/index.ts +0 -1
  58. package/src/RedactoNoticeConsentInline/injectStyles.ts +0 -40
  59. package/src/RedactoNoticeConsentInline/styles.ts +0 -397
  60. package/src/RedactoNoticeConsentInline/types.ts +0 -51
  61. package/src/RedactoNoticeConsentInline/useMediaQuery.ts +0 -36
  62. package/src/RedactoPrivacyCenter/NotificationsPage.tsx +0 -182
  63. package/src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx +0 -19
  64. package/src/RedactoPrivacyCenter/PrivacyCenterCaseDetailsPage.tsx +0 -156
  65. package/src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx +0 -17
  66. package/src/RedactoPrivacyCenter/PrivacyCenterFormPage.tsx +0 -79
  67. package/src/RedactoPrivacyCenter/PrivacyCenterHomePage.tsx +0 -36
  68. package/src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx +0 -177
  69. package/src/RedactoPrivacyCenter/PrivacyCenterMyReceiptPage.tsx +0 -26
  70. package/src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx +0 -93
  71. package/src/RedactoPrivacyCenter/api/actions.ts +0 -695
  72. package/src/RedactoPrivacyCenter/api/client.ts +0 -1003
  73. package/src/RedactoPrivacyCenter/api/config.ts +0 -33
  74. package/src/RedactoPrivacyCenter/api/fetcher.ts +0 -275
  75. package/src/RedactoPrivacyCenter/api/orgBranding.ts +0 -16
  76. package/src/RedactoPrivacyCenter/api/upload.ts +0 -93
  77. package/src/RedactoPrivacyCenter/assets/character.svg +0 -31
  78. package/src/RedactoPrivacyCenter/assets/fileAttach.svg +0 -9
  79. package/src/RedactoPrivacyCenter/assets/greenTick.svg +0 -4
  80. package/src/RedactoPrivacyCenter/assets/mail.svg +0 -3
  81. package/src/RedactoPrivacyCenter/assets/poweredByRedacto.svg +0 -9
  82. package/src/RedactoPrivacyCenter/assets/sentImg.svg +0 -9
  83. package/src/RedactoPrivacyCenter/assets/uploadFileIcon.svg +0 -9
  84. package/src/RedactoPrivacyCenter/components/ActivitiesList.tsx +0 -252
  85. package/src/RedactoPrivacyCenter/components/ActivityTimeline.tsx +0 -239
  86. package/src/RedactoPrivacyCenter/components/AppShell/AppShell.tsx +0 -268
  87. package/src/RedactoPrivacyCenter/components/AppShell/MobileNavDrawer.tsx +0 -218
  88. package/src/RedactoPrivacyCenter/components/AppShell/NavItem.tsx +0 -205
  89. package/src/RedactoPrivacyCenter/components/AppShell/PageHeader.tsx +0 -107
  90. package/src/RedactoPrivacyCenter/components/AppShell/SidebarNav.tsx +0 -100
  91. package/src/RedactoPrivacyCenter/components/AppShell/TopAppBar.tsx +0 -339
  92. package/src/RedactoPrivacyCenter/components/AppShell/UserMenu.tsx +0 -245
  93. package/src/RedactoPrivacyCenter/components/AppShell/hooks/useIsTruncated.ts +0 -28
  94. package/src/RedactoPrivacyCenter/components/AppShell/hooks/useKeyboardShortcut.ts +0 -40
  95. package/src/RedactoPrivacyCenter/components/AppShell/hooks/useSidebarState.ts +0 -62
  96. package/src/RedactoPrivacyCenter/components/AppShell/usePrivacyCenterExitAction.ts +0 -36
  97. package/src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx +0 -38
  98. package/src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx +0 -31
  99. package/src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx +0 -79
  100. package/src/RedactoPrivacyCenter/components/CaseDetails/FinalizedTooltipWrapper.tsx +0 -25
  101. package/src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx +0 -96
  102. package/src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx +0 -97
  103. package/src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx +0 -156
  104. package/src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx +0 -171
  105. package/src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx +0 -23
  106. package/src/RedactoPrivacyCenter/components/CaseDetails/useFileUpload.ts +0 -116
  107. package/src/RedactoPrivacyCenter/components/CaseDetails/useMessagePolling.ts +0 -43
  108. package/src/RedactoPrivacyCenter/components/CaseDetails/utils.ts +0 -71
  109. package/src/RedactoPrivacyCenter/components/CaseDetailsModal.tsx +0 -469
  110. package/src/RedactoPrivacyCenter/components/CaseHistory.tsx +0 -426
  111. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +0 -1206
  112. package/src/RedactoPrivacyCenter/components/ConsentManagerCells.tsx +0 -218
  113. package/src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx +0 -138
  114. package/src/RedactoPrivacyCenter/components/ConsentManagerConstants.ts +0 -7
  115. package/src/RedactoPrivacyCenter/components/ConsentManagerExpandedRow.tsx +0 -179
  116. package/src/RedactoPrivacyCenter/components/ConsentManagerGroupedColumns.tsx +0 -318
  117. package/src/RedactoPrivacyCenter/components/ConsentManagerProductCards.tsx +0 -333
  118. package/src/RedactoPrivacyCenter/components/ConsentManagerPurposeCards.tsx +0 -102
  119. package/src/RedactoPrivacyCenter/components/ConsentManagerTableSkeleton.tsx +0 -159
  120. package/src/RedactoPrivacyCenter/components/DataRequest/CorrectionDataSection.tsx +0 -189
  121. package/src/RedactoPrivacyCenter/components/DataRequest/GrievanceDataSection.tsx +0 -118
  122. package/src/RedactoPrivacyCenter/components/DataRequest/NominationDataSection.tsx +0 -66
  123. package/src/RedactoPrivacyCenter/components/DataRequest/ProductSelectionSection.tsx +0 -222
  124. package/src/RedactoPrivacyCenter/components/DataRequest/PurposeSelectionSection.tsx +0 -331
  125. package/src/RedactoPrivacyCenter/components/Form.tsx +0 -1821
  126. package/src/RedactoPrivacyCenter/components/GrievanceTable.tsx +0 -174
  127. package/src/RedactoPrivacyCenter/components/GrievanceTablePagination.tsx +0 -337
  128. package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +0 -334
  129. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx +0 -173
  130. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx +0 -18
  131. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationDropdown.tsx +0 -54
  132. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationDropdownItem.tsx +0 -57
  133. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx +0 -19
  134. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationListPanel.tsx +0 -92
  135. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationRefreshButton.tsx +0 -20
  136. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx +0 -58
  137. package/src/RedactoPrivacyCenter/components/NotificationHub/StatCard.tsx +0 -10
  138. package/src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts +0 -112
  139. package/src/RedactoPrivacyCenter/components/NotificationHub/utils.ts +0 -27
  140. package/src/RedactoPrivacyCenter/components/Pagination.tsx +0 -140
  141. package/src/RedactoPrivacyCenter/components/PrivacyCenterEmptyState.tsx +0 -76
  142. package/src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx +0 -97
  143. package/src/RedactoPrivacyCenter/components/ReceiptsList.tsx +0 -454
  144. package/src/RedactoPrivacyCenter/components/RequestSubmit.tsx +0 -270
  145. package/src/RedactoPrivacyCenter/components/SelectUser.tsx +0 -95
  146. package/src/RedactoPrivacyCenter/components/SelectUserGate.tsx +0 -195
  147. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/constants.tsx +0 -25
  148. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/types.ts +0 -21
  149. package/src/RedactoPrivacyCenter/components/caseHistoryColumns.tsx +0 -159
  150. package/src/RedactoPrivacyCenter/components/constant.ts +0 -52
  151. package/src/RedactoPrivacyCenter/components/groupHelpers.ts +0 -155
  152. package/src/RedactoPrivacyCenter/components/receiptColumns.tsx +0 -203
  153. package/src/RedactoPrivacyCenter/components/types.ts +0 -123
  154. package/src/RedactoPrivacyCenter/components/utils.tsx +0 -10
  155. package/src/RedactoPrivacyCenter/config/routes.ts +0 -9
  156. package/src/RedactoPrivacyCenter/config/table.ts +0 -25
  157. package/src/RedactoPrivacyCenter/context/AuthContext.tsx +0 -252
  158. package/src/RedactoPrivacyCenter/context/BaseUrlContext.tsx +0 -47
  159. package/src/RedactoPrivacyCenter/context/BrandingContext.tsx +0 -52
  160. package/src/RedactoPrivacyCenter/context/DataAvailabilityContext.session-expired.test.tsx +0 -92
  161. package/src/RedactoPrivacyCenter/context/DataAvailabilityContext.tsx +0 -181
  162. package/src/RedactoPrivacyCenter/context/LocaleContext.tsx +0 -11
  163. package/src/RedactoPrivacyCenter/context/NavigationContext.tsx +0 -96
  164. package/src/RedactoPrivacyCenter/context/OrganizationContext.tsx +0 -30
  165. package/src/RedactoPrivacyCenter/context/PageChromeContext.tsx +0 -80
  166. package/src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx +0 -15
  167. package/src/RedactoPrivacyCenter/context/types.ts +0 -57
  168. package/src/RedactoPrivacyCenter/lib/api.ts +0 -759
  169. package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +0 -67
  170. package/src/RedactoPrivacyCenter/lib/constants.ts +0 -283
  171. package/src/RedactoPrivacyCenter/lib/i18n.ts +0 -81
  172. package/src/RedactoPrivacyCenter/lib/locales.ts +0 -102
  173. package/src/RedactoPrivacyCenter/lib/queries.ts +0 -141
  174. package/src/RedactoPrivacyCenter/lib/sandbox.ts +0 -104
  175. package/src/RedactoPrivacyCenter/lib/types.ts +0 -896
  176. package/src/RedactoPrivacyCenter/lib/useCurrentLanguage.ts +0 -37
  177. package/src/RedactoPrivacyCenter/lib/utils.refresh-circuit.test.ts +0 -127
  178. package/src/RedactoPrivacyCenter/lib/utils.refresh-storage.test.ts +0 -85
  179. package/src/RedactoPrivacyCenter/lib/utils.session-expired.test.ts +0 -109
  180. package/src/RedactoPrivacyCenter/lib/utils.ts +0 -798
  181. package/src/RedactoPrivacyCenter/locales/as/translation.json +0 -342
  182. package/src/RedactoPrivacyCenter/locales/bn/translation.json +0 -342
  183. package/src/RedactoPrivacyCenter/locales/brx/translation.json +0 -342
  184. package/src/RedactoPrivacyCenter/locales/doi/translation.json +0 -342
  185. package/src/RedactoPrivacyCenter/locales/en/translation.json +0 -357
  186. package/src/RedactoPrivacyCenter/locales/gom/translation.json +0 -342
  187. package/src/RedactoPrivacyCenter/locales/gu/translation.json +0 -342
  188. package/src/RedactoPrivacyCenter/locales/hi/translation.json +0 -345
  189. package/src/RedactoPrivacyCenter/locales/kn/translation.json +0 -342
  190. package/src/RedactoPrivacyCenter/locales/ks/translation.json +0 -342
  191. package/src/RedactoPrivacyCenter/locales/mai/translation.json +0 -342
  192. package/src/RedactoPrivacyCenter/locales/ml/translation.json +0 -342
  193. package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +0 -342
  194. package/src/RedactoPrivacyCenter/locales/mr/translation.json +0 -342
  195. package/src/RedactoPrivacyCenter/locales/ne/translation.json +0 -342
  196. package/src/RedactoPrivacyCenter/locales/or/translation.json +0 -342
  197. package/src/RedactoPrivacyCenter/locales/pa/translation.json +0 -342
  198. package/src/RedactoPrivacyCenter/locales/sa/translation.json +0 -342
  199. package/src/RedactoPrivacyCenter/locales/sat/translation.json +0 -342
  200. package/src/RedactoPrivacyCenter/locales/sd/translation.json +0 -342
  201. package/src/RedactoPrivacyCenter/locales/ta/translation.json +0 -342
  202. package/src/RedactoPrivacyCenter/locales/te/translation.json +0 -342
  203. package/src/RedactoPrivacyCenter/locales/ur/translation.json +0 -342
  204. package/src/RedactoPrivacyCenter/styles/applyBrandingTheme.ts +0 -66
  205. package/src/RedactoPrivacyCenter/styles/base.css +0 -117
  206. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +0 -3108
  207. package/src/RedactoPrivacyCenter/styles/pcStyles.ts +0 -831
  208. package/src/RedactoPrivacyCenter/styles/responsive.ts +0 -138
  209. package/src/RedactoPrivacyCenter/styles/variables.css +0 -96
  210. package/src/RedactoPrivacyCenter/table/AdvancedTable.tsx +0 -387
  211. package/src/RedactoPrivacyCenter/table/AdvancedTablePagination.tsx +0 -468
  212. package/src/RedactoPrivacyCenter/table/index.ts +0 -2
  213. package/src/RedactoPrivacyCenter/types/images.d.ts +0 -29
  214. package/src/RedactoPrivacyCenter/ui/Footer.tsx +0 -69
  215. package/src/RedactoPrivacyCenter/ui/FormBlockWrapper.tsx +0 -54
  216. package/src/RedactoPrivacyCenter/ui/PCAccordion.tsx +0 -93
  217. package/src/RedactoPrivacyCenter/ui/PCActionIcon.tsx +0 -47
  218. package/src/RedactoPrivacyCenter/ui/PCAvatar.test.tsx +0 -83
  219. package/src/RedactoPrivacyCenter/ui/PCAvatar.tsx +0 -93
  220. package/src/RedactoPrivacyCenter/ui/PCBadge.tsx +0 -48
  221. package/src/RedactoPrivacyCenter/ui/PCButton.tsx +0 -77
  222. package/src/RedactoPrivacyCenter/ui/PCCheckbox.tsx +0 -55
  223. package/src/RedactoPrivacyCenter/ui/PCCollapse.tsx +0 -107
  224. package/src/RedactoPrivacyCenter/ui/PCEmpty.tsx +0 -35
  225. package/src/RedactoPrivacyCenter/ui/PCInput.tsx +0 -132
  226. package/src/RedactoPrivacyCenter/ui/PCLoader.tsx +0 -31
  227. package/src/RedactoPrivacyCenter/ui/PCModal.tsx +0 -106
  228. package/src/RedactoPrivacyCenter/ui/PCPopover.tsx +0 -206
  229. package/src/RedactoPrivacyCenter/ui/PCSelect.tsx +0 -433
  230. package/src/RedactoPrivacyCenter/ui/PCTable.tsx +0 -149
  231. package/src/RedactoPrivacyCenter/ui/PCText.tsx +0 -41
  232. package/src/RedactoPrivacyCenter/ui/PCTextarea.tsx +0 -43
  233. package/src/RedactoPrivacyCenter/ui/PCTitle.tsx +0 -37
  234. package/src/RedactoPrivacyCenter/ui/PCTooltip.tsx +0 -121
  235. package/src/RedactoPrivacyCenter/ui/SimpleBar.tsx +0 -25
  236. package/src/RedactoPrivacyCenter/ui/StatusBadge.tsx +0 -53
  237. package/src/RedactoPrivacyCenter/ui/index.ts +0 -18
  238. package/src/RedactoPrivacyCenter/utils/cn.ts +0 -28
  239. package/src/RedactoPrivacyCenter/utils/date.ts +0 -48
  240. package/src/RedactoPrivacyCenter/utils/status.ts +0 -111
  241. package/src/RedactoPrivacyCenter/utils/toast.ts +0 -130
  242. package/src/index.ts +0 -19
  243. package/src/privacy-center.ts +0 -113
  244. package/src/shared/api-errors.ts +0 -180
  245. package/src/shared/notice-consent-status.ts +0 -190
  246. package/src/shared/sandbox.ts +0 -6
  247. package/src/types/css.d.ts +0 -4
  248. package/src/types/images.d.ts +0 -19
  249. package/src/types/react-jsx.d.ts +0 -26
  250. package/tests/DataAvailabilityContext.test.tsx +0 -123
  251. package/tests/Form.test.tsx +0 -1424
  252. package/tests/ManageConsentErrorMapping.test.tsx +0 -85
  253. package/tests/ProductSelectionSection.test.tsx +0 -328
  254. package/tests/RequestSubmit.test.tsx +0 -135
  255. package/tests/RevocablePurpose.test.tsx +0 -146
  256. package/tests/RevokeWarningMessage.test.tsx +0 -151
  257. package/tests/consentClient.test.ts +0 -217
  258. package/tests/manageConsentServer.test.ts +0 -38
  259. package/tests/mocks.ts +0 -257
  260. package/tests/resolveContactFromJwt.test.ts +0 -44
  261. package/tests/setup.ts +0 -16
  262. package/tsconfig.json +0 -16
  263. package/tsup.config.ts +0 -31
  264. package/vitest.config.ts +0 -16
@@ -1,102 +0,0 @@
1
- import { useTranslation } from 'react-i18next';
2
- import { PCEmpty, PCText } from '../ui';
3
- import type { ConsentModalRecord, DisplayPurposeRow } from '../lib/types';
4
- import {
5
- renderGivenDate,
6
- renderMethod,
7
- renderModifyButton,
8
- renderStatusBadge,
9
- renderValidTill,
10
- } from './ConsentManagerCells';
11
-
12
- type ConsentManagerPurposeCardsProps = {
13
- rows: DisplayPurposeRow[];
14
- onModify: (record: ConsentModalRecord) => void;
15
- };
16
-
17
- const toModalRecord = (row: DisplayPurposeRow): ConsentModalRecord => ({
18
- ...row,
19
- });
20
-
21
- export function ConsentManagerPurposeCards({
22
- rows,
23
- onModify,
24
- }: ConsentManagerPurposeCardsProps) {
25
- const { t } = useTranslation();
26
-
27
- if (rows.length === 0) {
28
- return (
29
- <div className="pc-consent-mobile-empty">
30
- <PCEmpty title={t('noData')} />
31
- </div>
32
- );
33
- }
34
-
35
- return (
36
- <div className="pc-consent-mobile-list">
37
- {rows.map((row) => (
38
- <article
39
- key={`${row.product_uuid}:${row.purpose_uuid}`}
40
- className="pc-consent-mobile-card"
41
- >
42
- <div className="pc-consent-mobile-purpose-head">
43
- <div style={{ minWidth: 0 }}>
44
- <PCText size="sm" weight="semibold">{row.name}</PCText>
45
- {row.description && (
46
- <PCText size="sm" color="secondary" className="pc-consent-mobile-subtle-text">
47
- {row.description}
48
- </PCText>
49
- )}
50
- </div>
51
- {renderStatusBadge(row.status, t)}
52
- </div>
53
-
54
- <div className="pc-consent-mobile-activity-row">
55
- <PCText size="sm" color="secondary" className="pc-consent-mobile-meta-label">
56
- {t('product')}
57
- </PCText>
58
- <PCText size="sm" weight="medium">{row.product_name || '-'}</PCText>
59
- </div>
60
-
61
- {row.nominator && (
62
- <div className="pc-consent-mobile-activity-row">
63
- <PCText size="sm" color="secondary" className="pc-consent-mobile-meta-label">
64
- {t('nominatedBy')}
65
- </PCText>
66
- <PCText size="sm" weight="medium">
67
- {row.nominator.name || row.nominator.email || row.nominator.org_user_id}
68
- </PCText>
69
- </div>
70
- )}
71
-
72
- <div className="pc-consent-mobile-meta-grid">
73
- <div>
74
- <PCText size="sm" color="secondary" className="pc-consent-mobile-meta-label">
75
- {t('givenDate')}
76
- </PCText>
77
- {renderGivenDate(row.given_date, { showTooltip: false })}
78
- </div>
79
- <div>
80
- <PCText size="sm" color="secondary" className="pc-consent-mobile-meta-label">
81
- {t('validTill')}
82
- </PCText>
83
- {renderValidTill(row, t)}
84
- </div>
85
- <div>
86
- <PCText size="sm" color="secondary" className="pc-consent-mobile-meta-label">
87
- {t('method')}
88
- </PCText>
89
- {renderMethod(row.method)}
90
- </div>
91
- <div className="pc-consent-mobile-action-cell">
92
- <PCText size="sm" color="secondary" className="pc-consent-mobile-meta-label">
93
- {t('action')}
94
- </PCText>
95
- {renderModifyButton(toModalRecord(row), onModify, t)}
96
- </div>
97
- </div>
98
- </article>
99
- ))}
100
- </div>
101
- );
102
- }
@@ -1,159 +0,0 @@
1
- import { SKELETON_ROW_COUNT } from './ConsentManagerConstants';
2
- import { pcStyles } from '../styles/pcStyles';
3
-
4
- const getVar = (varName: string): string => `var(${varName})`;
5
-
6
- export const ConsentManagerTableSkeleton = () => {
7
- return (
8
- <div style={{
9
- borderRadius: `${getVar('--pc-border-radius-lg')} ${getVar('--pc-border-radius-lg')} 0 0`,
10
- border: `1px solid ${getVar('--pc-border-color')}`,
11
- borderBottom: 'none',
12
- backgroundColor: getVar('--pc-bg-primary'),
13
- }}>
14
- {/* Table Header */}
15
- <div style={{
16
- borderBottom: `1px solid ${getVar('--pc-border-color')}`,
17
- backgroundColor: getVar('--pc-bg-secondary'),
18
- }}>
19
- <div style={{
20
- display: 'grid',
21
- gridTemplateColumns: 'repeat(7, 1fr)',
22
- gap: getVar('--pc-spacing-md'),
23
- paddingLeft: getVar('--pc-spacing-lg'),
24
- paddingRight: getVar('--pc-spacing-lg'),
25
- paddingTop: getVar('--pc-spacing-md'),
26
- paddingBottom: getVar('--pc-spacing-md'),
27
- }} className="pc-grid-responsive">
28
- {Array.from({ length: 7 }).map((_, i) => (
29
- <div
30
- key={i}
31
- style={{
32
- height: '1rem',
33
- width: '6rem',
34
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
35
- borderRadius: getVar('--pc-border-radius-md'),
36
- backgroundColor: getVar('--pc-bg-tertiary'),
37
- }}
38
- />
39
- ))}
40
- </div>
41
- </div>
42
-
43
- {/* Table Rows */}
44
- {Array.from({ length: SKELETON_ROW_COUNT }).map((_, index) => (
45
- <div
46
- key={index}
47
- style={{
48
- borderBottom:
49
- index === SKELETON_ROW_COUNT - 1
50
- ? 'none'
51
- : `1px solid ${getVar('--pc-border-color')}`,
52
- backgroundColor: getVar('--pc-bg-primary'),
53
- }}
54
- >
55
- <div style={{
56
- display: 'grid',
57
- gridTemplateColumns: 'repeat(7, 1fr)',
58
- gap: getVar('--pc-spacing-md'),
59
- paddingLeft: getVar('--pc-spacing-lg'),
60
- paddingRight: getVar('--pc-spacing-lg'),
61
- paddingTop: getVar('--pc-spacing-md'),
62
- paddingBottom: getVar('--pc-spacing-md'),
63
- }} className="pc-grid-responsive">
64
- {/* Purpose */}
65
- <div style={{ ...pcStyles.flex, ...pcStyles.flexCol, ...pcStyles.gapXs }}>
66
- <div style={{
67
- height: '1rem',
68
- width: '8rem',
69
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
70
- borderRadius: getVar('--pc-border-radius-md'),
71
- backgroundColor: getVar('--pc-bg-tertiary'),
72
- }} />
73
- <div style={{
74
- height: '0.75rem',
75
- width: '12rem',
76
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
77
- borderRadius: getVar('--pc-border-radius-md'),
78
- backgroundColor: getVar('--pc-bg-tertiary'),
79
- }} />
80
- </div>
81
-
82
- {/* Product */}
83
- <div style={{ ...pcStyles.flex, ...pcStyles.flexCol, ...pcStyles.gapXs }}>
84
- <div style={{
85
- height: '1rem',
86
- width: '6rem',
87
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
88
- borderRadius: getVar('--pc-border-radius-md'),
89
- backgroundColor: getVar('--pc-bg-tertiary'),
90
- }} />
91
- <div style={{
92
- height: '0.75rem',
93
- width: '8rem',
94
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
95
- borderRadius: getVar('--pc-border-radius-md'),
96
- backgroundColor: getVar('--pc-bg-tertiary'),
97
- }} />
98
- </div>
99
-
100
- {/* Status */}
101
- <div style={{ ...pcStyles.flex, ...pcStyles.itemsCenter }}>
102
- <div style={{
103
- height: '1.5rem',
104
- width: '5rem',
105
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
106
- borderRadius: '9999px',
107
- backgroundColor: getVar('--pc-bg-tertiary'),
108
- }} />
109
- </div>
110
-
111
- {/* Given Date */}
112
- <div style={{ ...pcStyles.flex, ...pcStyles.itemsCenter }}>
113
- <div style={{
114
- height: '1rem',
115
- width: '6rem',
116
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
117
- borderRadius: getVar('--pc-border-radius-md'),
118
- backgroundColor: getVar('--pc-bg-tertiary'),
119
- }} />
120
- </div>
121
-
122
- {/* Valid till */}
123
- <div style={{ ...pcStyles.flex, ...pcStyles.itemsCenter }}>
124
- <div style={{
125
- height: '1rem',
126
- width: '6rem',
127
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
128
- borderRadius: getVar('--pc-border-radius-md'),
129
- backgroundColor: getVar('--pc-bg-tertiary'),
130
- }} />
131
- </div>
132
-
133
- {/* Method */}
134
- <div style={{ ...pcStyles.flex, ...pcStyles.itemsCenter }}>
135
- <div style={{
136
- height: '1rem',
137
- width: '4rem',
138
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
139
- borderRadius: getVar('--pc-border-radius-md'),
140
- backgroundColor: getVar('--pc-bg-tertiary'),
141
- }} />
142
- </div>
143
-
144
- {/* Action */}
145
- <div style={{ ...pcStyles.flex, ...pcStyles.itemsCenter }}>
146
- <div style={{
147
- height: '1.5rem',
148
- width: '4rem',
149
- animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
150
- borderRadius: getVar('--pc-border-radius-md'),
151
- backgroundColor: getVar('--pc-bg-tertiary'),
152
- }} />
153
- </div>
154
- </div>
155
- </div>
156
- ))}
157
- </div>
158
- );
159
- };
@@ -1,189 +0,0 @@
1
- import { PCCheckbox, PCInput } from '../../ui';
2
- import { pcStyles } from '../../styles/pcStyles';
3
- import type { DataElement } from '../../lib/types';
4
- import { useTranslation } from 'react-i18next';
5
-
6
- const getVar = (varName: string): string => `var(${varName})`;
7
-
8
- export default function CorrectionDataSection({
9
- dataElements,
10
- selected,
11
- setSelected,
12
- correctionValues,
13
- setCorrectionValues,
14
- isTranslating = false,
15
- }: {
16
- dataElements: DataElement[];
17
- selected: string[];
18
- setSelected: (values: string[]) => void;
19
- correctionValues: Record<string, { current: string; updated: string }>;
20
- setCorrectionValues: (
21
- values: Record<string, { current: string; updated: string }>
22
- ) => void;
23
- isTranslating?: boolean;
24
- }) {
25
- const { t } = useTranslation();
26
-
27
- const handleSelectAll = (checked: boolean) => {
28
- setSelected(checked ? dataElements.map((el) => el.name) : []);
29
- };
30
-
31
- const handleToggle = (name: string, checked: boolean) => {
32
- setSelected(
33
- checked ? [...selected, name] : selected.filter((n) => n !== name)
34
- );
35
- };
36
-
37
- const getElementByName = (name: string) =>
38
- dataElements.find((el) => el.name === name);
39
-
40
- if (isTranslating) {
41
- return (
42
- <div>
43
- <div style={{ marginBottom: '0.375rem', paddingLeft: pcStyles.pxMd.paddingLeft, paddingRight: pcStyles.pxMd.paddingRight }}>
44
- <div style={{ height: '1rem', width: '10rem', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary'), marginBottom: '0.375rem' }}></div>
45
- <div style={{ height: '1rem', width: '6rem', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary'), marginBottom: '0.5rem' }}></div>
46
- </div>
47
- <div style={{
48
- backgroundColor: getVar('--pc-bg-secondary'),
49
- borderRadius: pcStyles.borderRadiusMd,
50
- padding: getVar('--pc-spacing-sm'),
51
- border: `1px solid ${getVar('--pc-border-color')}`,
52
- }}>
53
- {[1, 2, 3, 4].map((skeletonIndex) => (
54
- <div key={skeletonIndex} style={{ marginBottom: skeletonIndex < 4 ? getVar('--pc-spacing-xs') : 0, ...pcStyles.flex, ...pcStyles.itemsCenter, ...pcStyles.gapSm }}>
55
- <div style={{ height: '1rem', width: '1rem', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary') }}></div>
56
- <div style={{ height: '1rem', width: '8rem', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary') }}></div>
57
- </div>
58
- ))}
59
- </div>
60
- </div>
61
- );
62
- }
63
-
64
- return (
65
- <>
66
- <div style={{ ...pcStyles.flex, ...pcStyles.flexCol, gap: getVar('--pc-spacing-xs') }}>
67
- <p style={{
68
- margin: 0,
69
- fontSize: pcStyles.textXs.fontSize,
70
- color: getVar('--pc-text-secondary'),
71
- }}>
72
- {t('selectFieldsToUpdate')}
73
- </p>
74
- <div style={{
75
- backgroundColor: getVar('--pc-bg-secondary'),
76
- borderRadius: pcStyles.borderRadiusMd,
77
- padding: getVar('--pc-spacing-sm'),
78
- border: `1px solid ${getVar('--pc-border-color')}`,
79
- }}>
80
- <PCCheckbox
81
- label={t('selectAll')}
82
- size="sm"
83
- checked={
84
- dataElements.length > 0 && selected.length === dataElements.length
85
- }
86
- onChange={(e) => handleSelectAll(e.target.checked)}
87
- labelClassName="text-sm font-medium"
88
- style={{ marginBottom: getVar('--pc-spacing-xl') }}
89
- />
90
- <div style={{
91
- display: 'grid',
92
- gridTemplateColumns: 'repeat(auto-fill, minmax(200px, 1fr))',
93
- gap: getVar('--pc-spacing-md'),
94
- }}>
95
- {dataElements.map((element) => (
96
- <PCCheckbox
97
- key={element.uuid}
98
- label={element.name}
99
- size="sm"
100
- checked={selected.includes(element.name)}
101
- onChange={(e) => handleToggle(element.name, e.target.checked)}
102
- labelClassName="text-sm capitalize"
103
- />
104
- ))}
105
- </div>
106
- </div>
107
- </div>
108
- {selected.length > 0 && (
109
- <div style={{
110
- marginTop: getVar('--pc-spacing-md'),
111
- paddingTop: getVar('--pc-spacing-md'),
112
- borderTop: `1px solid ${getVar('--pc-border-color')}`,
113
- }}>
114
- <p style={{
115
- marginBottom: getVar('--pc-spacing-sm'),
116
- fontSize: pcStyles.textSm.fontSize,
117
- fontWeight: pcStyles.fontWeightMedium.fontWeight,
118
- color: getVar('--pc-text-primary'),
119
- }}>
120
- <span style={{ color: getVar('--pc-error') }}>*</span>{' '}
121
- {t('enterCorrectValue')}
122
- </p>
123
- <div style={{
124
- display: 'grid',
125
- gridTemplateColumns: 'repeat(1, 1fr)',
126
- gap: getVar('--pc-spacing-sm'),
127
- }}>
128
- {selected.map((name) => {
129
- const field = getElementByName(name);
130
- return (
131
- <div key={name} style={{
132
- padding: getVar('--pc-spacing-sm'),
133
- backgroundColor: getVar('--pc-bg-secondary'),
134
- borderRadius: pcStyles.borderRadiusSm,
135
- }}>
136
- <label style={{
137
- marginBottom: getVar('--pc-spacing-xs'),
138
- display: 'block',
139
- fontSize: pcStyles.textSm.fontSize,
140
- fontWeight: pcStyles.fontWeightMedium.fontWeight,
141
- color: getVar('--pc-text-primary'),
142
- }}>
143
- {field?.name}
144
- </label>
145
- <div style={{
146
- display: 'grid',
147
- gridTemplateColumns: 'repeat(1, 1fr)',
148
- gap: getVar('--pc-spacing-xs'),
149
- }}>
150
- <PCInput
151
- placeholder={t('currentValuePlaceholder')}
152
- size="sm"
153
- required
154
- value={correctionValues[name]?.current || ''}
155
- onChange={(e) =>
156
- setCorrectionValues({
157
- ...correctionValues,
158
- [name]: {
159
- ...correctionValues[name],
160
- current: e.target.value,
161
- },
162
- })
163
- }
164
- />
165
- <PCInput
166
- placeholder={t('updatedValuePlaceholder')}
167
- size="sm"
168
- required
169
- value={correctionValues[name]?.updated || ''}
170
- onChange={(e) =>
171
- setCorrectionValues({
172
- ...correctionValues,
173
- [name]: {
174
- ...correctionValues[name],
175
- updated: e.target.value,
176
- },
177
- })
178
- }
179
- />
180
- </div>
181
- </div>
182
- );
183
- })}
184
- </div>
185
- </div>
186
- )}
187
- </>
188
- );
189
- }
@@ -1,118 +0,0 @@
1
- import { useTranslation } from 'react-i18next';
2
- import { PCCheckbox } from '../../ui';
3
- import { pcStyles } from '../../styles/pcStyles';
4
- import type { GrievanceDataSectionProps } from '../../lib/types';
5
-
6
- const getVar = (varName: string): string => `var(${varName})`;
7
-
8
- export default function GrievanceDataSection({
9
- grievanceOptions,
10
- selectedGrievances,
11
- setSelectedGrievances,
12
- isTranslating = false,
13
- }: GrievanceDataSectionProps & { isTranslating?: boolean }) {
14
- const { t } = useTranslation();
15
-
16
- // Map grievance values to translation keys
17
- const getGrievanceTranslationKey = (value: string): string => {
18
- const mapping: Record<string, string> = {
19
- 'consent_violation': 'consentViolation',
20
- 'unlawful_processing': 'unlawfulProcessing',
21
- 'data_breach': 'dataBreach',
22
- };
23
- return mapping[value] || value;
24
- };
25
-
26
- const handleSelectAll = (checked: boolean) => {
27
- const updated: Record<string, boolean> = {};
28
- grievanceOptions.forEach((opt) => {
29
- updated[opt.value] = checked;
30
- });
31
- setSelectedGrievances(updated);
32
- };
33
-
34
- const handleGrievanceChange = (value: string, checked: boolean) => {
35
- setSelectedGrievances((prev) => ({
36
- ...prev,
37
- [value]: checked,
38
- }));
39
- };
40
-
41
- const isAllSelected =
42
- Object.keys(selectedGrievances).length > 0 &&
43
- Object.values(selectedGrievances).every(Boolean);
44
-
45
- if (isTranslating) {
46
- return (
47
- <div style={{ ...pcStyles.flex, ...pcStyles.flexCol, gap: getVar('--pc-spacing-sm') }}>
48
- <div style={{ marginBottom: '0.375rem' }}>
49
- <div style={{ height: '1rem', width: '8rem', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary') }}></div>
50
- </div>
51
- <div style={{
52
- backgroundColor: getVar('--pc-bg-secondary'),
53
- borderRadius: pcStyles.borderRadiusMd,
54
- padding: getVar('--pc-spacing-sm'),
55
- border: `1px solid ${getVar('--pc-border-color')}`,
56
- }}>
57
- {[1, 2, 3].map((skeletonIndex) => (
58
- <div key={skeletonIndex} style={{ marginBottom: skeletonIndex < 3 ? getVar('--pc-spacing-xs') : 0, ...pcStyles.flex, ...pcStyles.itemsCenter, ...pcStyles.gapSm }}>
59
- <div style={{ height: '1rem', width: '1rem', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary') }}></div>
60
- <div style={{ height: '1rem', width: '10rem', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary') }}></div>
61
- </div>
62
- ))}
63
- </div>
64
- </div>
65
- );
66
- }
67
-
68
- return (
69
- <div style={{ ...pcStyles.flex, ...pcStyles.flexCol, gap: getVar('--pc-spacing-xs') }}>
70
- <p style={{
71
- margin: 0,
72
- fontSize: pcStyles.textXs.fontSize,
73
- color: getVar('--pc-text-secondary'),
74
- }}>
75
- {t('selectGrievance')}
76
- </p>
77
- <div style={{
78
- backgroundColor: getVar('--pc-bg-secondary'),
79
- borderRadius: pcStyles.borderRadiusMd,
80
- padding: getVar('--pc-spacing-sm'),
81
- border: `1px solid ${getVar('--pc-border-color')}`,
82
- }}>
83
- <PCCheckbox
84
- label={t('selectAll')}
85
- size="sm"
86
- labelClassName="text-sm font-medium"
87
- style={{ marginBottom: getVar('--pc-spacing-sm') }}
88
- checked={isAllSelected}
89
- onChange={(e) => handleSelectAll(e.target.checked)}
90
- />
91
- <div style={{
92
- display: 'flex',
93
- flexDirection: 'column',
94
- gap: getVar('--pc-spacing-xs'),
95
- }}>
96
- {grievanceOptions.map((option) => {
97
- // Translate the label using i18next based on the value
98
- const translationKey = getGrievanceTranslationKey(option.value);
99
- const translatedLabel = t(translationKey);
100
-
101
- return (
102
- <PCCheckbox
103
- key={option.value}
104
- label={translatedLabel}
105
- size="sm"
106
- labelClassName="text-sm capitalize"
107
- checked={selectedGrievances[option.value]}
108
- onChange={(e) =>
109
- handleGrievanceChange(option.value, e.target.checked)
110
- }
111
- />
112
- );
113
- })}
114
- </div>
115
- </div>
116
- </div>
117
- );
118
- }
@@ -1,66 +0,0 @@
1
- import { useTranslation } from 'react-i18next';
2
- import { PCInput } from '../../ui';
3
- import { pcStyles } from '../../styles/pcStyles';
4
- import type { NominationDataSectionProps } from '../../lib/types';
5
-
6
- const getVar = (varName: string): string => `var(${varName})`;
7
-
8
- export default function NominationDataSection({
9
- nominationData,
10
- setNominationData,
11
- isTranslating = false,
12
- }: NominationDataSectionProps) {
13
- const { t } = useTranslation();
14
-
15
- if (isTranslating) {
16
- return (
17
- <div style={{ ...pcStyles.flex, ...pcStyles.flexCol, gap: getVar('--pc-spacing-sm') }}>
18
- {[1, 2].map((skeletonIndex) => (
19
- <div key={skeletonIndex} style={{ ...pcStyles.flex, ...pcStyles.flexCol, gap: getVar('--pc-spacing-xs') }}>
20
- <div style={{ height: '1rem', width: '8rem', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary') }}></div>
21
- <div style={{ height: '2.25rem', width: '100%', animation: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite', borderRadius: pcStyles.borderRadiusMd, backgroundColor: getVar('--pc-bg-tertiary') }}></div>
22
- </div>
23
- ))}
24
- </div>
25
- );
26
- }
27
-
28
- return (
29
- <div style={{ ...pcStyles.flex, ...pcStyles.flexCol, gap: getVar('--pc-spacing-sm') }}>
30
- <p style={{
31
- margin: 0,
32
- fontSize: pcStyles.textXs.fontSize,
33
- color: getVar('--pc-text-secondary'),
34
- }}>
35
- {t('enterNomineeDetails')}
36
- </p>
37
- <PCInput
38
- label={
39
- <span>
40
- {t('nomineeEmail')}
41
- <span style={{ color: getVar('--pc-error') }}>*</span>
42
- </span>
43
- }
44
- placeholder={t('nomineeEmailPlaceholder')}
45
- value={nominationData.nominee_email ?? ''}
46
- onChange={(e) =>
47
- setNominationData((prev) => ({
48
- ...prev,
49
- nominee_email: e.target.value,
50
- }))
51
- }
52
- />
53
- <PCInput
54
- label={t('nomineeMobile')}
55
- placeholder={t('nomineeMobilePlaceholder')}
56
- value={nominationData.nominee_mobile ?? ''}
57
- onChange={(e) =>
58
- setNominationData((prev) => ({
59
- ...prev,
60
- nominee_mobile: e.target.value,
61
- }))
62
- }
63
- />
64
- </div>
65
- );
66
- }