@redacto.io/consent-sdk-react 9.3.0-beta.1 → 9.4.0-beta.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.
- package/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +17 -0
- package/README.md +93 -12
- package/dist/index.d.mts +39 -1
- package/dist/index.d.ts +39 -1
- package/dist/index.js +4454 -334
- package/dist/index.mjs +4454 -335
- package/dist/privacy-center.d.mts +4 -1
- package/dist/privacy-center.d.ts +4 -1
- package/dist/privacy-center.js +3905 -3660
- package/dist/privacy-center.mjs +4172 -3921
- package/package.json +1 -1
- package/src/RedactoNoticeAssisted/RedactoNoticeAssisted.test.tsx +847 -0
- package/src/RedactoNoticeAssisted/RedactoNoticeAssisted.tsx +2133 -0
- package/src/RedactoNoticeAssisted/api/index.ts +269 -0
- package/src/RedactoNoticeAssisted/api/types.ts +180 -0
- package/src/RedactoNoticeAssisted/assets/redacto-logo.png +0 -0
- package/src/RedactoNoticeAssisted/constants.ts +51 -0
- package/src/RedactoNoticeAssisted/i18n.ts +1463 -0
- package/src/RedactoNoticeAssisted/index.ts +1 -0
- package/src/RedactoNoticeAssisted/injectStyles.ts +251 -0
- package/src/RedactoNoticeAssisted/styles.ts +730 -0
- package/src/RedactoNoticeAssisted/types.ts +24 -0
- package/src/RedactoNoticeAssisted/useMediaQuery.ts +36 -0
- package/src/RedactoPrivacyCenter/NotificationsPage.tsx +8 -0
- package/src/RedactoPrivacyCenter/api/actions.ts +6 -11
- package/src/RedactoPrivacyCenter/api/client.ts +15 -3
- package/src/RedactoPrivacyCenter/api/fetcher.ts +80 -1
- package/src/RedactoPrivacyCenter/components/ActivitiesList.tsx +193 -213
- package/src/RedactoPrivacyCenter/components/ActivityTimeline.tsx +239 -0
- package/src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx +3 -1
- package/src/RedactoPrivacyCenter/components/CaseDetails/useMessagePolling.ts +8 -1
- package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +23 -17
- package/src/RedactoPrivacyCenter/components/ConsentManagerCells.tsx +24 -10
- package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx +16 -3
- package/src/RedactoPrivacyCenter/components/constant.ts +25 -0
- package/src/RedactoPrivacyCenter/components/types.ts +32 -1
- package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +25 -23
- package/src/RedactoPrivacyCenter/lib/constants.ts +23 -10
- package/src/RedactoPrivacyCenter/lib/queries.ts +9 -2
- package/src/RedactoPrivacyCenter/lib/utils.refresh-circuit.test.ts +127 -0
- package/src/RedactoPrivacyCenter/lib/utils.refresh-storage.test.ts +85 -0
- package/src/RedactoPrivacyCenter/lib/utils.ts +213 -63
- package/src/RedactoPrivacyCenter/locales/en/translation.json +3 -0
- package/src/RedactoPrivacyCenter/styles/injectStyles.ts +16 -0
- package/src/index.ts +2 -0
- package/src/shared/api-errors.ts +9 -0
- package/src/RedactoPrivacyCenter/components/activitiesColumns.tsx +0 -141
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { RedactoNoticeAssisted as default } from "./RedactoNoticeAssisted";
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
// CSS injection utility for the RedactoNoticeAssisted SDK.
|
|
2
|
+
//
|
|
3
|
+
// Mirrors RedactoNoticeConsent's injectStyles approach (large + small checkbox
|
|
4
|
+
// normalization with a CSS checkmark, focus rings, spinner/fade keyframes) but
|
|
5
|
+
// with an assisted-specific STYLE_ID and `redacto-assisted-*` class prefix so it
|
|
6
|
+
// can coexist with NoticeConsent on the same page. Adds focus styling for the OTP
|
|
7
|
+
// entry boxes.
|
|
8
|
+
let stylesInjected = false;
|
|
9
|
+
|
|
10
|
+
export const injectAssistedStyles = () => {
|
|
11
|
+
if (stylesInjected || typeof document === "undefined") {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const STYLE_ID = "redacto-assisted-styles";
|
|
16
|
+
|
|
17
|
+
// Check if styles are already injected
|
|
18
|
+
if (document.getElementById(STYLE_ID)) {
|
|
19
|
+
stylesInjected = true;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const style = document.createElement("style");
|
|
24
|
+
style.id = STYLE_ID;
|
|
25
|
+
style.textContent = `
|
|
26
|
+
/* Redacto Notice Assisted — checkbox styles (purpose = large, element = small) */
|
|
27
|
+
.redacto-assisted-checkbox-large {
|
|
28
|
+
appearance: none !important;
|
|
29
|
+
-webkit-appearance: none !important;
|
|
30
|
+
-moz-appearance: none !important;
|
|
31
|
+
height: 20px !important;
|
|
32
|
+
width: 20px !important;
|
|
33
|
+
border: 2px solid #d0d5dd !important;
|
|
34
|
+
border-radius: 5px !important;
|
|
35
|
+
background-color: transparent !important;
|
|
36
|
+
cursor: pointer !important;
|
|
37
|
+
position: relative !important;
|
|
38
|
+
box-sizing: border-box !important;
|
|
39
|
+
margin: 0 !important;
|
|
40
|
+
padding: 4px !important;
|
|
41
|
+
flex-shrink: 0 !important;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.redacto-assisted-checkbox-small {
|
|
45
|
+
appearance: none !important;
|
|
46
|
+
-webkit-appearance: none !important;
|
|
47
|
+
-moz-appearance: none !important;
|
|
48
|
+
height: 16px !important;
|
|
49
|
+
width: 16px !important;
|
|
50
|
+
border: 2px solid #d0d5dd !important;
|
|
51
|
+
border-radius: 5px !important;
|
|
52
|
+
background-color: transparent !important;
|
|
53
|
+
cursor: pointer !important;
|
|
54
|
+
position: relative !important;
|
|
55
|
+
box-sizing: border-box !important;
|
|
56
|
+
margin: 0 !important;
|
|
57
|
+
padding: 4px !important;
|
|
58
|
+
flex-shrink: 0 !important;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.redacto-assisted-checkbox-large:checked,
|
|
62
|
+
.redacto-assisted-checkbox-small:checked {
|
|
63
|
+
background-color: #4f87ff !important;
|
|
64
|
+
border-color: #4f87ff !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.redacto-assisted-checkbox-large:checked::after {
|
|
68
|
+
content: '' !important;
|
|
69
|
+
position: absolute !important;
|
|
70
|
+
left: 50% !important;
|
|
71
|
+
top: 50% !important;
|
|
72
|
+
transform: translate(-50%, -50%) rotate(45deg) !important;
|
|
73
|
+
width: 4px !important;
|
|
74
|
+
height: 8px !important;
|
|
75
|
+
border: solid white !important;
|
|
76
|
+
border-width: 0 2px 2px 0 !important;
|
|
77
|
+
box-sizing: border-box !important;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.redacto-assisted-checkbox-small:checked::after {
|
|
81
|
+
content: '' !important;
|
|
82
|
+
position: absolute !important;
|
|
83
|
+
left: 50% !important;
|
|
84
|
+
top: 50% !important;
|
|
85
|
+
transform: translate(-50%, -50%) rotate(45deg) !important;
|
|
86
|
+
width: 3px !important;
|
|
87
|
+
height: 6px !important;
|
|
88
|
+
border: solid white !important;
|
|
89
|
+
border-width: 0 1.5px 1.5px 0 !important;
|
|
90
|
+
box-sizing: border-box !important;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.redacto-assisted-checkbox-large:focus-visible,
|
|
94
|
+
.redacto-assisted-checkbox-small:focus-visible {
|
|
95
|
+
outline: 2px solid #4f87ff !important;
|
|
96
|
+
outline-offset: 2px !important;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* TTS Highlight Styles - Visible highlighting without layout shift */
|
|
100
|
+
.redacto-tts-highlight {
|
|
101
|
+
position: relative !important;
|
|
102
|
+
transition: background-color 0.3s ease, outline 0.3s ease !important;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Block-level elements - headings */
|
|
106
|
+
h2.redacto-tts-highlight,
|
|
107
|
+
h3.redacto-tts-highlight {
|
|
108
|
+
background-color: #FFF9C4 !important;
|
|
109
|
+
border-radius: 3px !important;
|
|
110
|
+
padding: 2px 4px !important;
|
|
111
|
+
margin: -2px -4px !important;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Inline elements - spans, links */
|
|
115
|
+
span.redacto-tts-highlight,
|
|
116
|
+
a.redacto-tts-highlight {
|
|
117
|
+
background-color: #FFF9C4 !important;
|
|
118
|
+
border-radius: 3px !important;
|
|
119
|
+
padding: 2px 4px !important;
|
|
120
|
+
margin: -2px -4px !important;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* Paragraphs - handle carefully to avoid layout shift */
|
|
124
|
+
p.redacto-tts-highlight {
|
|
125
|
+
background-color: #FFF9C4 !important;
|
|
126
|
+
border-radius: 3px !important;
|
|
127
|
+
padding: 2px 4px !important;
|
|
128
|
+
margin: -2px -4px !important;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* Buttons - use outline to keep button styles intact */
|
|
132
|
+
button.redacto-tts-highlight {
|
|
133
|
+
outline: 3px solid #FFF9C4 !important;
|
|
134
|
+
outline-offset: 2px !important;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* OTP entry boxes */
|
|
138
|
+
.redacto-assisted-otp-input {
|
|
139
|
+
appearance: none !important;
|
|
140
|
+
-webkit-appearance: none !important;
|
|
141
|
+
-moz-appearance: none !important;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.redacto-assisted-otp-input::-webkit-outer-spin-button,
|
|
145
|
+
.redacto-assisted-otp-input::-webkit-inner-spin-button {
|
|
146
|
+
-webkit-appearance: none !important;
|
|
147
|
+
margin: 0 !important;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.redacto-assisted-otp-input:focus {
|
|
151
|
+
outline: none !important;
|
|
152
|
+
border-color: var(--ra-accent, #4f87ff) !important;
|
|
153
|
+
box-shadow: 0 0 0 3px var(--ra-accent-soft, rgba(79, 135, 255, 0.18)) !important;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* OTP entry — error state: red border + a quick shake to make it felt */
|
|
157
|
+
.redacto-assisted-otp-input.redacto-assisted-otp-error {
|
|
158
|
+
border-color: #d92d20 !important;
|
|
159
|
+
box-shadow: 0 0 0 3px rgba(217, 45, 32, 0.14) !important;
|
|
160
|
+
animation: redactoAssistedShake 0.4s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Mobile-number phone field — focus ring on the whole group */
|
|
164
|
+
.redacto-assisted-phone-field:focus-within {
|
|
165
|
+
border-color: var(--ra-accent, #4f87ff) !important;
|
|
166
|
+
box-shadow: 0 0 0 3px var(--ra-accent-soft, rgba(79, 135, 255, 0.18)) !important;
|
|
167
|
+
}
|
|
168
|
+
.redacto-assisted-phone-input:focus {
|
|
169
|
+
outline: none !important;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/* Verification-method switch link ("Use email / mobile instead") */
|
|
173
|
+
.redacto-assisted-switch-link {
|
|
174
|
+
-webkit-appearance: none !important;
|
|
175
|
+
appearance: none !important;
|
|
176
|
+
}
|
|
177
|
+
.redacto-assisted-switch-link:hover:not(:disabled) {
|
|
178
|
+
text-decoration: underline !important;
|
|
179
|
+
}
|
|
180
|
+
.redacto-assisted-switch-link:focus-visible {
|
|
181
|
+
outline: 2px solid var(--ra-accent, #4f87ff) !important;
|
|
182
|
+
outline-offset: 2px !important;
|
|
183
|
+
border-radius: 4px !important;
|
|
184
|
+
}
|
|
185
|
+
.redacto-assisted-switch-link:disabled {
|
|
186
|
+
cursor: not-allowed !important;
|
|
187
|
+
opacity: 0.6 !important;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* Primary button hover — darken whatever the themed background is */
|
|
191
|
+
.redacto-assisted-primary-btn:hover:not(:disabled) {
|
|
192
|
+
filter: brightness(0.92) !important;
|
|
193
|
+
}
|
|
194
|
+
.redacto-assisted-primary-btn:disabled {
|
|
195
|
+
background-color: #eaecf0 !important;
|
|
196
|
+
color: #98a2b3 !important;
|
|
197
|
+
box-shadow: none !important;
|
|
198
|
+
cursor: not-allowed !important;
|
|
199
|
+
}
|
|
200
|
+
.redacto-assisted-secondary-btn:hover {
|
|
201
|
+
background-color: #f9fafb !important;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* Animations */
|
|
205
|
+
@keyframes redactoAssistedOverlayFadeIn {
|
|
206
|
+
from { opacity: 0; }
|
|
207
|
+
to { opacity: 1; }
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
@keyframes redactoAssistedSpin {
|
|
211
|
+
from { transform: rotate(0deg); }
|
|
212
|
+
to { transform: rotate(360deg); }
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
@keyframes redactoAssistedPop {
|
|
216
|
+
0% { transform: scale(0.6); opacity: 0; }
|
|
217
|
+
60% { transform: scale(1.08); opacity: 1; }
|
|
218
|
+
100% { transform: scale(1); opacity: 1; }
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
@keyframes redactoAssistedShake {
|
|
222
|
+
0%, 100% { transform: translateX(0); }
|
|
223
|
+
20% { transform: translateX(-5px); }
|
|
224
|
+
40% { transform: translateX(5px); }
|
|
225
|
+
60% { transform: translateX(-3px); }
|
|
226
|
+
80% { transform: translateX(3px); }
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/* Inline verify panel reveal — a soft slide-down + fade as it mounts. */
|
|
230
|
+
@keyframes redactoAssistedReveal {
|
|
231
|
+
from { opacity: 0; transform: translateY(-8px); }
|
|
232
|
+
to { opacity: 1; transform: translateY(0); }
|
|
233
|
+
}
|
|
234
|
+
.redacto-assisted-reveal {
|
|
235
|
+
animation: redactoAssistedReveal 0.28s cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* Respect users who prefer reduced motion — drop the error shake + reveal. */
|
|
239
|
+
@media (prefers-reduced-motion: reduce) {
|
|
240
|
+
.redacto-assisted-otp-input.redacto-assisted-otp-error {
|
|
241
|
+
animation: none !important;
|
|
242
|
+
}
|
|
243
|
+
.redacto-assisted-reveal {
|
|
244
|
+
animation: none !important;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
`;
|
|
248
|
+
|
|
249
|
+
document.head.appendChild(style);
|
|
250
|
+
stylesInjected = true;
|
|
251
|
+
};
|