@redacto.io/consent-sdk-react 5.3.0 → 6.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 (57) hide show
  1. package/.turbo/turbo-build.log +24 -0
  2. package/CHANGELOG.md +6 -0
  3. package/dist/privacy-center.d.mts +98 -38
  4. package/dist/privacy-center.d.ts +98 -38
  5. package/dist/privacy-center.js +3679 -1491
  6. package/dist/privacy-center.mjs +3614 -1423
  7. package/package.json +1 -1
  8. package/src/RedactoPrivacyCenter/api/actions.ts +52 -8
  9. package/src/RedactoPrivacyCenter/api/client.ts +58 -15
  10. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +722 -273
  11. package/src/RedactoPrivacyCenter/components/ConsentManagerCells.tsx +187 -0
  12. package/src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx +65 -165
  13. package/src/RedactoPrivacyCenter/components/ConsentManagerExpandedRow.tsx +179 -0
  14. package/src/RedactoPrivacyCenter/components/ConsentManagerGroupedColumns.tsx +318 -0
  15. package/src/RedactoPrivacyCenter/components/ConsentManagerProductCards.tsx +333 -0
  16. package/src/RedactoPrivacyCenter/components/ConsentManagerPurposeCards.tsx +102 -0
  17. package/src/RedactoPrivacyCenter/components/ConsentManagerTableSkeleton.tsx +6 -2
  18. package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +8 -5
  19. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx +1 -1
  20. package/src/RedactoPrivacyCenter/components/PrivacyCenterLayout.tsx +102 -53
  21. package/src/RedactoPrivacyCenter/components/types.ts +2 -5
  22. package/src/RedactoPrivacyCenter/context/PageChromeContext.tsx +21 -1
  23. package/src/RedactoPrivacyCenter/lib/api.ts +70 -28
  24. package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +4 -2
  25. package/src/RedactoPrivacyCenter/lib/types.ts +57 -36
  26. package/src/RedactoPrivacyCenter/locales/as/translation.json +12 -1
  27. package/src/RedactoPrivacyCenter/locales/bho/translation.json +12 -1
  28. package/src/RedactoPrivacyCenter/locales/bn/translation.json +12 -1
  29. package/src/RedactoPrivacyCenter/locales/brx/translation.json +12 -1
  30. package/src/RedactoPrivacyCenter/locales/doi/translation.json +12 -1
  31. package/src/RedactoPrivacyCenter/locales/en/translation.json +16 -1
  32. package/src/RedactoPrivacyCenter/locales/gom/translation.json +12 -1
  33. package/src/RedactoPrivacyCenter/locales/gu/translation.json +12 -1
  34. package/src/RedactoPrivacyCenter/locales/hi/translation.json +15 -1
  35. package/src/RedactoPrivacyCenter/locales/kn/translation.json +12 -1
  36. package/src/RedactoPrivacyCenter/locales/ks/translation.json +12 -1
  37. package/src/RedactoPrivacyCenter/locales/mai/translation.json +12 -1
  38. package/src/RedactoPrivacyCenter/locales/ml/translation.json +12 -1
  39. package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +12 -1
  40. package/src/RedactoPrivacyCenter/locales/mr/translation.json +12 -1
  41. package/src/RedactoPrivacyCenter/locales/ne/translation.json +12 -1
  42. package/src/RedactoPrivacyCenter/locales/or/translation.json +12 -1
  43. package/src/RedactoPrivacyCenter/locales/pa/translation.json +12 -1
  44. package/src/RedactoPrivacyCenter/locales/sa/translation.json +12 -1
  45. package/src/RedactoPrivacyCenter/locales/sat/translation.json +12 -1
  46. package/src/RedactoPrivacyCenter/locales/sd/translation.json +12 -1
  47. package/src/RedactoPrivacyCenter/locales/ta/translation.json +12 -1
  48. package/src/RedactoPrivacyCenter/locales/te/translation.json +12 -1
  49. package/src/RedactoPrivacyCenter/locales/ur/translation.json +12 -1
  50. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +527 -5
  51. package/src/RedactoPrivacyCenter/styles/variables.css +5 -0
  52. package/src/RedactoPrivacyCenter/table/AdvancedTable.tsx +36 -16
  53. package/src/RedactoPrivacyCenter/table/AdvancedTablePagination.tsx +4 -12
  54. package/src/RedactoPrivacyCenter/ui/PCInput.tsx +1 -1
  55. package/src/RedactoPrivacyCenter/ui/PCSelect.tsx +51 -5
  56. package/src/RedactoPrivacyCenter/ui/ThemeToggle.tsx +2 -4
  57. package/src/privacy-center.ts +7 -3
@@ -4,6 +4,7 @@ import {
4
4
  fetchCaseHistoryServer,
5
5
  fetchProductsServer,
6
6
  fetchUserConsentsServer,
7
+ fetchGroupPurposesServer,
7
8
  getFormDataServer,
8
9
  manageConsentServer,
9
10
  getCaseMessagesServer,
@@ -34,6 +35,7 @@ import type {
34
35
  UploadDocumentResponse,
35
36
  UserConsentDetail,
36
37
  UserDataRequest,
38
+ GroupPurposesOut,
37
39
  } from './types';
38
40
  import { ensureValidToken } from './utils';
39
41
 
@@ -260,37 +262,35 @@ export const fetchProducts = async (
260
262
  }
261
263
  };
262
264
 
265
+ export type FetchUserConsentsParams = {
266
+ organizationId: string;
267
+ workspaceId: string;
268
+ offset?: number;
269
+ limit?: number;
270
+ nominatedOffset?: number;
271
+ nominatedLimit?: number;
272
+ search?: string;
273
+ status?: string;
274
+ product_uuid?: string;
275
+ language?: string;
276
+ authContext?: AuthContext;
277
+ consentClient?: BaseUrlContextValue['consentClient'];
278
+ };
279
+
263
280
  export const fetchUserConsents = async (
264
- organizationId: string,
265
- workspaceId: string,
266
- contact: string,
267
- offset?: number,
268
- limit?: number,
269
- search?: string,
270
- status?: string,
271
- product_uuid?: string,
272
- authContext?: AuthContext,
273
- consentClient?: BaseUrlContextValue['consentClient'],
274
- language?: string
281
+ params: FetchUserConsentsParams
275
282
  ): Promise<UserConsentDetail | null> => {
283
+ const { organizationId, workspaceId, authContext, consentClient, ...rest } = params;
276
284
  try {
277
- // Ensure we have a valid token before making the API call
278
285
  const accessToken = await ensureValidToken(organizationId, workspaceId, undefined, authContext, consentClient);
279
286
  if (!accessToken) {
280
- // ensureValidToken already handled sign out and redirect
281
287
  return null;
282
288
  }
283
289
 
284
290
  const result = await fetchUserConsentsServer({
285
291
  organizationId,
286
292
  workspaceId,
287
- contact,
288
- offset,
289
- limit,
290
- search,
291
- status,
292
- product_uuid,
293
- language,
293
+ ...rest,
294
294
  authToken: accessToken,
295
295
  consentClient,
296
296
  });
@@ -298,18 +298,11 @@ export const fetchUserConsents = async (
298
298
  } catch (error: any) {
299
299
  const shouldRetry = await handleClientAuthError(error, organizationId, workspaceId, authContext, consentClient);
300
300
  if (shouldRetry) {
301
- // Read from sessionStorage first (synchronously updated) then fall back to context
302
301
  const newAccessToken = sessionStorage.getItem('access_token') || authContext?.accessToken || '';
303
302
  return await fetchUserConsentsServer({
304
303
  organizationId,
305
304
  workspaceId,
306
- contact,
307
- offset,
308
- limit,
309
- search,
310
- status,
311
- product_uuid,
312
- language,
305
+ ...rest,
313
306
  authToken: newAccessToken || undefined,
314
307
  consentClient,
315
308
  });
@@ -319,6 +312,55 @@ export const fetchUserConsents = async (
319
312
  }
320
313
  };
321
314
 
315
+ export type FetchGroupPurposesParams = {
316
+ organizationId: string;
317
+ workspaceId: string;
318
+ productUuid: string;
319
+ offset?: number;
320
+ limit?: number;
321
+ status?: string;
322
+ search?: string;
323
+ language?: string;
324
+ nominatorUuid?: string;
325
+ authContext?: AuthContext;
326
+ consentClient?: BaseUrlContextValue['consentClient'];
327
+ };
328
+
329
+ export const fetchGroupPurposes = async (
330
+ params: FetchGroupPurposesParams
331
+ ): Promise<GroupPurposesOut | null> => {
332
+ const { organizationId, workspaceId, authContext, consentClient, ...rest } = params;
333
+ try {
334
+ const accessToken = await ensureValidToken(organizationId, workspaceId, undefined, authContext, consentClient);
335
+ if (!accessToken) {
336
+ return null;
337
+ }
338
+
339
+ const result = await fetchGroupPurposesServer({
340
+ organizationId,
341
+ workspaceId,
342
+ ...rest,
343
+ authToken: accessToken,
344
+ consentClient,
345
+ });
346
+ return result;
347
+ } catch (error: any) {
348
+ const shouldRetry = await handleClientAuthError(error, organizationId, workspaceId, authContext, consentClient);
349
+ if (shouldRetry) {
350
+ const newAccessToken = sessionStorage.getItem('access_token') || authContext?.accessToken || '';
351
+ return await fetchGroupPurposesServer({
352
+ organizationId,
353
+ workspaceId,
354
+ ...rest,
355
+ authToken: newAccessToken || undefined,
356
+ consentClient,
357
+ });
358
+ }
359
+ console.error('Error fetching group purposes:', error);
360
+ return null;
361
+ }
362
+ };
363
+
322
364
  export const manageConsent = async ({
323
365
  organizationId,
324
366
  workspaceId,
@@ -1,7 +1,9 @@
1
1
  import { useMemo } from 'react';
2
2
  import { useTranslation } from 'react-i18next';
3
3
  import { ConsentStatusEnum } from '../types';
4
- import type { UserConsent } from '../types';
4
+ import type { PurposeItem } from '../types';
5
+
6
+ type CsvRow = Partial<PurposeItem> & Record<string, unknown>;
5
7
  import { formatDateTime as formatDateTimeShared } from '../../utils/date';
6
8
 
7
9
  // Re-export shared date formatting
@@ -20,7 +22,7 @@ export const useStatusOptions = () => {
20
22
  );
21
23
  };
22
24
 
23
- export const exportTableToCSV = (rows: UserConsent[]) => {
25
+ export const exportTableToCSV = (rows: CsvRow[]) => {
24
26
  if (!rows || rows.length === 0) {
25
27
  console.warn('No data to export');
26
28
  return;
@@ -180,21 +180,6 @@ export type ConsentDataElement = {
180
180
  selected: boolean;
181
181
  };
182
182
 
183
- export type UserConsent = {
184
- purpose_uuid?: string;
185
- purpose: string;
186
- purpose_description: string;
187
- status: ConsentStatusEnum;
188
- given_date: string;
189
- valid_till: string;
190
- method: string;
191
- data_elements: ConsentDataElement[];
192
- product_uuid?: string;
193
- product_name?: string;
194
- product_description?: string | null;
195
- nominator_info?: NominatorInfo;
196
- };
197
-
198
183
  export type NominatorInfo = {
199
184
  org_user_id: string;
200
185
  name: string | null;
@@ -202,44 +187,79 @@ export type NominatorInfo = {
202
187
  email: string | null;
203
188
  };
204
189
 
190
+ export type PurposeItem = {
191
+ purpose_uuid: string;
192
+ name: string;
193
+ description: string | null;
194
+ status: ConsentStatusEnum | string;
195
+ given_date: string | null;
196
+ valid_till: string | null;
197
+ method: string;
198
+ data_elements: ConsentDataElement[];
199
+ link_reason: string | null;
200
+ };
201
+
202
+ export type ConsentGroup = {
203
+ product_uuid: string;
204
+ product_name: string;
205
+ product_description: string | null;
206
+ nominator: NominatorInfo | null;
207
+ total_purposes: number;
208
+ active_purposes: number;
209
+ purposes: PurposeItem[];
210
+ has_more_purposes: boolean;
211
+ };
212
+
213
+ export type PaginationMeta = {
214
+ total_count: number;
215
+ offset: number;
216
+ limit: number;
217
+ };
218
+
219
+ export type Pagination = PaginationMeta;
220
+
205
221
  export type ConsentHistoryStatusSummary = {
206
222
  total_purposes: number;
207
223
  direct_purposes: number;
208
224
  nominated_purposes: number;
209
- nominee_purposes?: number;
210
225
  active_purposes: number;
211
226
  inactive_purposes: number;
212
227
  };
213
228
 
214
- export type ProductConsentHistoryGroup = {
229
+ export type DisplayProductGroup = ConsentGroup & {
230
+ withdrawn_purposes: number;
231
+ expired_purposes: number;
232
+ declined_purposes: number;
233
+ latest_given_date: string | null;
234
+ };
235
+
236
+ export type DisplayPurposeRow = PurposeItem & {
215
237
  product_uuid: string;
216
238
  product_name: string;
217
239
  product_description: string | null;
218
- purposes: UserConsent[];
219
- total_purposes: number;
220
- active_purposes: number;
240
+ nominator: NominatorInfo | null;
221
241
  };
222
242
 
223
- export type NominatedPurposesGroup = {
224
- nominator_info: NominatorInfo;
225
- product_groups: ProductConsentHistoryGroup[];
243
+ export type ConsentModalRecord = PurposeItem & {
244
+ product_uuid: string;
245
+ product_name: string;
246
+ product_description: string | null;
247
+ nominator: NominatorInfo | null;
226
248
  };
227
249
 
228
- export type Pagination = {
229
- total_count: number;
230
- offset: number;
231
- limit: number;
250
+ export type UserConsentDetail = {
251
+ direct: ConsentGroup[];
252
+ direct_pagination: PaginationMeta;
253
+ nominated: ConsentGroup[];
254
+ nominated_pagination: PaginationMeta;
255
+ user_status: 'ACTIVE' | 'TRANSFERRED' | null;
256
+ nominators: NominatorInfo[];
257
+ status_summary: ConsentHistoryStatusSummary;
232
258
  };
233
259
 
234
- export type UserConsentDetail = {
235
- data?: UserConsent[];
236
- product_purpose_groups?: ProductConsentHistoryGroup[];
237
- pagination: Pagination;
238
- direct_product_groups?: ProductConsentHistoryGroup[];
239
- user_status?: 'ACTIVE' | 'TRANSFERRED' | null;
240
- nominated_purposes?: NominatedPurposesGroup[];
241
- nominators?: NominatorInfo[];
242
- status_summary?: ConsentHistoryStatusSummary | null;
260
+ export type GroupPurposesOut = {
261
+ purposes: PurposeItem[];
262
+ pagination: PaginationMeta;
243
263
  };
244
264
 
245
265
  export type UserConsentResponse = {
@@ -251,6 +271,7 @@ export type UserConsentResponse = {
251
271
  export enum ConsentStatusEnum {
252
272
  ACTIVE = 'ACTIVE',
253
273
  WITHDRAWN = 'WITHDRAW',
274
+ REVOKED = 'REVOKED',
254
275
  EXPIRED = 'EXPIRED',
255
276
  DECLINED = 'DECLINED',
256
277
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "সংলগ্ন আঁতৰাওক",
277
277
  "document": "নথি",
278
278
  "downloadAttachment": "{{fileName}} ডাউনলোড কৰক",
279
- "sortByColumn": "স্তম্ভ অনুসৰি সজাওক"
279
+ "sortByColumn": "স্তম্ভ অনুসৰি সজাওক",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "संलग्नक हटाईं",
277
277
  "document": "दस्तावेज",
278
278
  "downloadAttachment": "{{fileName}} डाउनलोड करीं",
279
- "sortByColumn": "कॉलम अनुसार क्रमबद्ध करीं"
279
+ "sortByColumn": "कॉलम अनुसार क्रमबद्ध करीं",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "সংযুক্তি সরান",
277
277
  "document": "নথি",
278
278
  "downloadAttachment": "{{fileName}} ডাউনলোড করুন",
279
- "sortByColumn": "কলাম অনুসারে সাজান"
279
+ "sortByColumn": "কলাম অনুসারে সাজান",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "लाफाबनाय बोखार",
277
277
  "document": "फोरमान",
278
278
  "downloadAttachment": "{{fileName}} डाउनलड हो",
279
- "sortByColumn": "कलम बायदिजों दाय हो"
279
+ "sortByColumn": "कलम बायदिजों दाय हो",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "संलग्नक हटाओ",
277
277
  "document": "दस्तावेज़",
278
278
  "downloadAttachment": "{{fileName}} डाउनलोड करो",
279
- "sortByColumn": "कॉलम अनुसार क्रमबद्ध करो"
279
+ "sortByColumn": "कॉलम अनुसार क्रमबद्ध करो",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -85,6 +85,7 @@
85
85
  "manageConsentSubtitle": "Explore and manage all your consents in one place",
86
86
  "export": "Export",
87
87
  "search": "Search",
88
+ "searchConsentsProductsPurposes": "Search consents, products, purposes...",
88
89
  "status": "Status",
89
90
  "product": "Product",
90
91
  "exportConsentData": "Export consent data",
@@ -111,6 +112,7 @@
111
112
  "modifyButton": "Modify",
112
113
  "statusActive": "Active",
113
114
  "statusWithdrawn": "Withdrawn",
115
+ "statusRevoked": "Revoked",
114
116
  "statusExpired": "Expired",
115
117
  "statusDeclined": "Declined",
116
118
  "modifyConsent": "Modify Consent",
@@ -190,6 +192,8 @@
190
192
  "managing": "Managing",
191
193
  "consentVisibility": "Consent visibility",
192
194
  "managingConsentsFor": "Managing consents for:",
195
+ "nominatedBy": "Nominated by",
196
+ "loadMorePurposes": "Load more purposes",
193
197
  "statusTransferred": "Transferred",
194
198
  "nomination": "Nomination",
195
199
  "enterNomineeDetails": "Enter the nominee details",
@@ -277,5 +281,16 @@
277
281
  "total": "Total",
278
282
  "unread": "Unread",
279
283
  "viewAllNotifications": "View all notifications",
280
- "weeksAgo": "{{count}}w ago"
284
+ "weeksAgo": "{{count}}w ago",
285
+ "manage": "Manage",
286
+ "consents": "Consents",
287
+ "consentCount_one": "{{count}} consent",
288
+ "consentCount_other": "{{count}} consents",
289
+ "purposes": "Purposes",
290
+ "latestActivity": "Latest activity",
291
+ "activeWithCount": "{{count}} active",
292
+ "withdrawnWithCount": "{{count}} withdrawn",
293
+ "expiredWithCount": "{{count}} expired",
294
+ "declinedWithCount": "{{count}} declined",
295
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
281
296
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "जोडणी काडात",
277
277
  "document": "दस्तावेज",
278
278
  "downloadAttachment": "{{fileName}} डावनलोड करात",
279
- "sortByColumn": "स्तंभाप्रमाण क्रमबद्ध करात"
279
+ "sortByColumn": "स्तंभाप्रमाण क्रमबद्ध करात",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "જોડાણ દૂર કરો",
277
277
  "document": "દસ્તાવેજ",
278
278
  "downloadAttachment": "{{fileName}} ડાઉનલોડ કરો",
279
- "sortByColumn": "કૉલમ દ્વારા સૉર્ટ કરો"
279
+ "sortByColumn": "કૉલમ દ્વારા સૉર્ટ કરો",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -84,8 +84,11 @@
84
84
  "manageConsentSubtitle": "एक ही स्थान पर अपनी सभी सहमतियों को देखें और प्रबंधित करें",
85
85
  "export": "निर्यात",
86
86
  "search": "खोजें",
87
+ "searchConsentsProductsPurposes": "सहमतियां, उत्पाद, उद्देश्य खोजें...",
87
88
  "status": "स्थिति",
88
89
  "product": "उत्पाद",
90
+ "allStatus": "सभी स्थितियां",
91
+ "allProducts": "सभी उत्पाद",
89
92
  "exportConsentData": "सहमति डेटा निर्यात करें",
90
93
  "exportConsentDataSubtitle": "यह वर्तमान में दिखाई देने वाली पंक्तियों को CSV फाइल के रूप में डाउनलोड करेगा।",
91
94
  "exportingIncludesFilters": "निर्यात में इस तालिका दृश्य में लागू फ़िल्टर और खोज शामिल हैं।",
@@ -276,5 +279,16 @@
276
279
  "removeAttachment": "संलग्नक हटाएं",
277
280
  "document": "दस्तावेज़",
278
281
  "downloadAttachment": "{{fileName}} डाउनलोड करें",
279
- "sortByColumn": "कॉलम के अनुसार क्रमबद्ध करें"
282
+ "sortByColumn": "कॉलम के अनुसार क्रमबद्ध करें",
283
+ "manage": "प्रबंधित करें",
284
+ "consents": "सहमतियां",
285
+ "consentCount_one": "{{count}} सहमति",
286
+ "consentCount_other": "{{count}} सहमतियां",
287
+ "purposes": "उद्देश्य",
288
+ "latestActivity": "हाल की गतिविधि",
289
+ "activeWithCount": "{{count}} सक्रिय",
290
+ "withdrawnWithCount": "{{count}} वापस लिया गया",
291
+ "expiredWithCount": "{{count}} समाप्त",
292
+ "declinedWithCount": "{{count}} अस्वीकृत",
293
+ "productsAndConsentsSummary": "{{products}} उत्पाद, {{consents}} सहमतियां"
280
294
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "ಲಗತ್ತನ್ನು ತೆಗೆದುಹಾಕಿ",
277
277
  "document": "ಡಾಕ್ಯುಮೆಂಟ್",
278
278
  "downloadAttachment": "{{fileName}} ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ",
279
- "sortByColumn": "ಕಾಲಮ್ ಪ್ರಕಾರ ವಿಂಗಡಿಸಿ"
279
+ "sortByColumn": "ಕಾಲಮ್ ಪ್ರಕಾರ ವಿಂಗಡಿಸಿ",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "منسلکٕ ہٹاوِو",
277
277
  "document": "دستاویز",
278
278
  "downloadAttachment": "{{fileName}} ڈاونلوڈ کرِو",
279
- "sortByColumn": "کالم مطابق ترتیب"
279
+ "sortByColumn": "کالم مطابق ترتیب",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "संलग्नक हटाउ",
277
277
  "document": "दस्तावेज",
278
278
  "downloadAttachment": "{{fileName}} डाउनलोड करू",
279
- "sortByColumn": "कॉलम अनुसार क्रमबद्ध करू"
279
+ "sortByColumn": "कॉलम अनुसार क्रमबद्ध करू",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "അറ്റാച്ച്‌മെന്റ് നീക്കം ചെയ്യുക",
277
277
  "document": "രേഖ",
278
278
  "downloadAttachment": "{{fileName}} ഡൗൺലോഡ് ചെയ്യുക",
279
- "sortByColumn": "കോളം അനുസരിച്ച് അടുക്കുക"
279
+ "sortByColumn": "കോളം അനുസരിച്ച് അടുക്കുക",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "ꯑꯦꯇꯦꯆꯃꯦꯟꯇ ꯂꯧꯊꯣꯛꯄ",
277
277
  "document": "ꯗꯣꯀꯨꯃꯦꯟꯇ",
278
278
  "downloadAttachment": "{{fileName}} ꯗꯥꯎꯅꯂꯣꯗ ꯇꯧꯕ",
279
- "sortByColumn": "ꯀꯣꯂꯝ ꯅ ꯁꯣꯔꯠ ꯇꯧꯕ"
279
+ "sortByColumn": "ꯀꯣꯂꯝ ꯅ ꯁꯣꯔꯠ ꯇꯧꯕ",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "संलग्नक काढा",
277
277
  "document": "दस्तऐवज",
278
278
  "downloadAttachment": "{{fileName}} डाउनलोड करा",
279
- "sortByColumn": "स्तंभानुसार क्रमवारी लावा"
279
+ "sortByColumn": "स्तंभानुसार क्रमवारी लावा",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "संलग्न हटाउनुहोस्",
277
277
  "document": "कागजात",
278
278
  "downloadAttachment": "{{fileName}} डाउनलोड गर्नुहोस्",
279
- "sortByColumn": "स्तम्भ अनुसार क्रमबद्ध गर्नुहोस्"
279
+ "sortByColumn": "स्तम्भ अनुसार क्रमबद्ध गर्नुहोस्",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }
@@ -276,5 +276,16 @@
276
276
  "removeAttachment": "ସଂଲଗ୍ନ ହଟାନ୍ତୁ",
277
277
  "document": "ଦଲିଲ",
278
278
  "downloadAttachment": "{{fileName}} ଡାଉନଲୋଡ୍ କରନ୍ତୁ",
279
- "sortByColumn": "ସ୍ତମ୍ଭ ଅନୁସାରେ ସଜାନ୍ତୁ"
279
+ "sortByColumn": "ସ୍ତମ୍ଭ ଅନୁସାରେ ସଜାନ୍ତୁ",
280
+ "manage": "Manage",
281
+ "consents": "Consents",
282
+ "consentCount_one": "{{count}} consent",
283
+ "consentCount_other": "{{count}} consents",
284
+ "purposes": "Purposes",
285
+ "latestActivity": "Latest activity",
286
+ "activeWithCount": "{{count}} active",
287
+ "withdrawnWithCount": "{{count}} withdrawn",
288
+ "expiredWithCount": "{{count}} expired",
289
+ "declinedWithCount": "{{count}} declined",
290
+ "productsAndConsentsSummary": "{{products}} products, {{consents}} consents"
280
291
  }