@redacto.io/consent-sdk-react 6.0.0 → 7.1.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 (29) hide show
  1. package/.turbo/turbo-build.log +25 -24
  2. package/CHANGELOG.md +23 -0
  3. package/dist/index.js +228 -166
  4. package/dist/index.mjs +228 -166
  5. package/dist/privacy-center.d.mts +2 -4
  6. package/dist/privacy-center.d.ts +2 -4
  7. package/dist/privacy-center.js +1876 -2079
  8. package/dist/privacy-center.mjs +1470 -1679
  9. package/package.json +1 -1
  10. package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +209 -155
  11. package/src/RedactoNoticeConsent/styles.ts +10 -1
  12. package/src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx +6 -10
  13. package/src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx +18 -17
  14. package/src/RedactoPrivacyCenter/api/orgBranding.ts +9 -0
  15. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +16 -14
  16. package/src/RedactoPrivacyCenter/components/Form.tsx +3 -3
  17. package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +1 -1
  18. package/src/RedactoPrivacyCenter/components/PrivacyCenterLayout.tsx +0 -4
  19. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideBarPC.tsx +16 -2
  20. package/src/RedactoPrivacyCenter/context/BrandingContext.tsx +44 -0
  21. package/src/RedactoPrivacyCenter/lib/types.ts +22 -0
  22. package/src/RedactoPrivacyCenter/styles/applyBrandingTheme.ts +66 -0
  23. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +3 -111
  24. package/src/RedactoPrivacyCenter/styles/pcStyles.ts +3 -2
  25. package/src/RedactoPrivacyCenter/styles/variables.css +1 -43
  26. package/src/RedactoPrivacyCenter/ui/Footer.tsx +4 -10
  27. package/src/RedactoPrivacyCenter/components/ThemeTransitionOverlay.tsx +0 -85
  28. package/src/RedactoPrivacyCenter/context/theme.tsx +0 -127
  29. package/src/RedactoPrivacyCenter/ui/ThemeToggle.tsx +0 -70
@@ -1,24 +1,25 @@
1
-
2
- > @redacto.io/consent-sdk-react@5.3.0 build /Users/sadanmianredacto/Developer/redacto/consent-sdk/packages/consent-sdk-react
3
- > tsup
4
-
5
- CLI Building entry: {"index":"src/index.ts","privacy-center":"src/privacy-center.ts"}
6
- CLI Using tsconfig: tsconfig.json
7
- CLI tsup v8.5.1
8
- CLI Using tsup config: /Users/sadanmianredacto/Developer/redacto/consent-sdk/packages/consent-sdk-react/tsup.config.ts
9
- CLI Target: es2019
10
- CLI Cleaning output folder
11
- ESM Build start
12
- CJS Build start
13
- ESM dist/index.mjs 225.25 KB
14
- ESM dist/privacy-center.mjs 1.98 MB
15
- ESM ⚡️ Build success in 67ms
16
- CJS dist/index.js 234.39 KB
17
- CJS dist/privacy-center.js 2.02 MB
18
- CJS ⚡️ Build success in 66ms
19
- DTS Build start
20
- DTS ⚡️ Build success in 2662ms
21
- DTS dist/index.d.mts 6.12 KB
22
- DTS dist/privacy-center.d.mts 27.06 KB
23
- DTS dist/index.d.ts 6.12 KB
24
- DTS dist/privacy-center.d.ts 27.06 KB
1
+
2
+ 
3
+ > @redacto.io/consent-sdk-react@7.0.0 build /Users/sadanmianredacto/Developer/redacto/consent-sdk/packages/consent-sdk-react
4
+ > tsup
5
+
6
+ CLI Building entry: {"index":"src/index.ts","privacy-center":"src/privacy-center.ts"}
7
+ CLI Using tsconfig: tsconfig.json
8
+ CLI tsup v8.5.1
9
+ CLI Using tsup config: /Users/sadanmianredacto/Developer/redacto/consent-sdk/packages/consent-sdk-react/tsup.config.ts
10
+ CLI Target: es2019
11
+ CLI Cleaning output folder
12
+ ESM Build start
13
+ CJS Build start
14
+ ESM dist/index.mjs 227.81 KB
15
+ ESM dist/privacy-center.mjs 1.99 MB
16
+ ESM ⚡️ Build success in 178ms
17
+ CJS dist/index.js 237.08 KB
18
+ CJS dist/privacy-center.js 2.02 MB
19
+ CJS ⚡️ Build success in 177ms
20
+ DTS Build start
21
+ DTS ⚡️ Build success in 3889ms
22
+ DTS dist/index.d.mts 6.12 KB
23
+ DTS dist/privacy-center.d.mts 28.46 KB
24
+ DTS dist/index.d.ts 6.12 KB
25
+ DTS dist/privacy-center.d.ts 28.46 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @redacto.io/consent-sdk-react
2
2
 
3
+ ## 7.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - update responsivenss
8
+
9
+ ## 7.0.0
10
+
11
+ ### Major Changes
12
+
13
+ - configurable privacy center SDK
14
+ - 331cbad: Apply org-level branding in `RedactoPrivacyCenter`. The privacy center now fetches `/user/api/0/public/org-branding/by-slug/{slug}` on mount and uses the response to:
15
+ - Swap the sidebar header avatar for the org's `icon_url` (collapsed) or wide `logo_url` (expanded).
16
+ - Show `brand_name` as the sidebar title.
17
+ - Hide the "Powered by Redacto" footer when `hide_platform_branding` is `true`.
18
+ - Apply the org's `theme` colors at runtime as `--pc-*` CSS custom-property overrides on `document.documentElement`. Primary/secondary hover and active variants are auto-derived. Cleared on unmount so the host page reverts to defaults.
19
+
20
+ **Breaking changes:**
21
+ - Removed dark mode from the privacy center. `ThemeProvider`, `useTheme`, `ThemeToggle`, and `ThemeTransitionOverlay` are deleted, the `[data-theme="dark"]` CSS block is gone, and the moon/sun toggle no longer appears in the navbar.
22
+ - Removed the `theme` prop from `RedactoPrivacyCenter`. The privacy center is now light-only; org-branding theme colors are applied on top.
23
+
24
+ Falls back to the previous initials avatar, slug-derived name, and SDK default colors when the branding response is unavailable.
25
+
3
26
  ## 6.0.0
4
27
 
5
28
  ### Major Changes
package/dist/index.js CHANGED
@@ -712,7 +712,8 @@ var styles = {
712
712
  topSection: {
713
713
  display: "flex",
714
714
  justifyContent: "space-between",
715
- alignItems: "center",
715
+ alignItems: "flex-start",
716
+ gap: "10px",
716
717
  paddingBottom: "15px",
717
718
  borderBottom: "none",
718
719
  backgroundColor: "#ffffff",
@@ -724,6 +725,8 @@ var styles = {
724
725
  display: "flex",
725
726
  alignItems: "center",
726
727
  gap: "10px",
728
+ flex: "1 1 0",
729
+ minWidth: 0,
727
730
  margin: 0,
728
731
  padding: 0,
729
732
  boxSizing: "border-box"
@@ -731,7 +734,9 @@ var styles = {
731
734
  logo: {
732
735
  height: "32px",
733
736
  width: "auto",
737
+ maxWidth: "140px",
734
738
  objectFit: "contain",
739
+ flexShrink: 0,
735
740
  margin: 0,
736
741
  padding: 0,
737
742
  display: "block"
@@ -743,6 +748,10 @@ var styles = {
743
748
  letterSpacing: "0.2px",
744
749
  verticalAlign: "middle",
745
750
  color: "#101828",
751
+ flex: "1 1 auto",
752
+ minWidth: 0,
753
+ wordBreak: "normal",
754
+ overflowWrap: "anywhere",
746
755
  margin: 0,
747
756
  padding: 0,
748
757
  textAlign: "left"
@@ -2297,7 +2306,7 @@ var RedactoNoticeConsent = ({
2297
2306
  includeFullyConsentedData = false,
2298
2307
  reviewModeButtonText = "Continue"
2299
2308
  }) => {
2300
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w;
2309
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
2301
2310
  const propValidationError = (0, import_react2.useMemo)(() => {
2302
2311
  if (!(noticeId == null ? void 0 : noticeId.trim())) {
2303
2312
  return "RedactoNoticeConsent: 'noticeId' prop is required and cannot be empty";
@@ -2444,6 +2453,15 @@ var RedactoNoticeConsent = ({
2444
2453
  height: isMobile ? "auto" : void 0,
2445
2454
  width: isMobile ? "auto" : void 0
2446
2455
  },
2456
+ topSection: {
2457
+ flexDirection: isMobile ? "column" : "row",
2458
+ alignItems: isMobile ? "stretch" : "flex-start",
2459
+ gap: isMobile ? "12px" : "10px"
2460
+ },
2461
+ logo: {
2462
+ maxWidth: isMobile ? "96px" : "140px",
2463
+ maxHeight: isMobile ? "28px" : "32px"
2464
+ },
2447
2465
  languageItem: {
2448
2466
  fontSize: isMobile ? "11px" : "12px",
2449
2467
  padding: isMobile ? "6px 10px" : "8px 12px"
@@ -4066,174 +4084,218 @@ var RedactoNoticeConsent = ({
4066
4084
  ]
4067
4085
  }
4068
4086
  ),
4069
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { ...styles.topSection, ...sectionStyle }, children: [
4070
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: styles.topLeft, children: [
4071
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4072
- "img",
4073
- {
4074
- style: styles.logo,
4075
- src: (content == null ? void 0 : content.logo_url) || redacto_logo_default,
4076
- alt: "Redacto Logo"
4077
- }
4078
- ),
4079
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4080
- "h2",
4081
- {
4082
- id: "privacy-notice-title",
4083
- style: {
4084
- ...styles.title,
4085
- ...responsiveStyles.title,
4086
- ...componentHeadingStyle
4087
- },
4088
- children: getTranslatedText(
4089
- "notice_banner_heading",
4090
- (content == null ? void 0 : content.notice_banner_heading) || "Privacy Notice"
4091
- )
4092
- },
4093
- `privacy-notice-title-${selectedLanguage}`
4094
- )
4095
- ] }),
4096
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: styles.languageSelectorContainer, children: [
4097
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4098
- "div",
4099
- {
4100
- style: {
4101
- display: "flex",
4102
- alignItems: "center",
4103
- gap: "8px"
4087
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4088
+ "div",
4089
+ {
4090
+ style: {
4091
+ ...styles.topSection,
4092
+ ...responsiveStyles.topSection,
4093
+ ...sectionStyle
4094
+ },
4095
+ children: (() => {
4096
+ var _a2, _b2, _c2, _d2, _e2, _f2;
4097
+ const logoNode = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4098
+ "img",
4099
+ {
4100
+ style: { ...styles.logo, ...responsiveStyles.logo },
4101
+ src: (content == null ? void 0 : content.logo_url) || redacto_logo_default,
4102
+ alt: "Redacto Logo"
4103
+ }
4104
+ );
4105
+ const titleNode = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4106
+ "h2",
4107
+ {
4108
+ id: "privacy-notice-title",
4109
+ style: {
4110
+ ...styles.title,
4111
+ ...responsiveStyles.title,
4112
+ ...componentHeadingStyle
4113
+ },
4114
+ children: getTranslatedText(
4115
+ "notice_banner_heading",
4116
+ (content == null ? void 0 : content.notice_banner_heading) || "Privacy Notice"
4117
+ )
4104
4118
  },
4105
- children: [
4106
- isTTSAvailable && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4107
- "button",
4108
- {
4109
- onClick: toggleAudio,
4110
- style: {
4111
- ...styles.topRight,
4112
- ...responsiveStyles.topRight,
4113
- ...languageSelectorStyle,
4114
- padding: "3px 9px",
4115
- display: "flex",
4116
- alignItems: "center",
4117
- justifyContent: "center"
4118
- },
4119
- "aria-label": isPlaying && !isPaused ? "Pause audio playback" : isPaused ? "Resume audio playback" : "Start audio playback",
4120
- title: isPlaying && !isPaused ? "Pause Talkback" : isPaused ? "Resume Talkback" : "Start Talkback",
4121
- children: isPlaying && !isPaused ? (
4122
- // Pause icon
4123
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4124
- "svg",
4125
- {
4126
- xmlns: "http://www.w3.org/2000/svg",
4127
- width: "16",
4128
- height: "16",
4129
- viewBox: "0 0 24 24",
4130
- fill: "none",
4131
- stroke: ((_r = (_q = settings == null ? void 0 : settings.button) == null ? void 0 : _q.language) == null ? void 0 : _r.textColor) || "currentColor",
4132
- strokeWidth: "2",
4133
- strokeLinecap: "round",
4134
- strokeLinejoin: "round",
4135
- "aria-hidden": "true",
4136
- children: [
4137
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "6", y: "4", width: "4", height: "16" }),
4138
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "14", y: "4", width: "4", height: "16" })
4139
- ]
4140
- }
4141
- )
4142
- ) : (
4143
- // Play/Sound icon
4144
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4145
- "svg",
4146
- {
4147
- xmlns: "http://www.w3.org/2000/svg",
4148
- width: "16",
4149
- height: "16",
4150
- viewBox: "0 0 24 24",
4151
- fill: "none",
4152
- stroke: ((_t = (_s = settings == null ? void 0 : settings.button) == null ? void 0 : _s.language) == null ? void 0 : _t.textColor) || "currentColor",
4153
- strokeWidth: "2",
4154
- strokeLinecap: "round",
4155
- strokeLinejoin: "round",
4156
- "aria-hidden": "true",
4157
- children: [
4158
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", { points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5" }),
4159
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07" })
4160
- ]
4161
- }
4162
- )
4163
- )
4164
- }
4165
- ),
4166
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4167
- "button",
4168
- {
4169
- ref: firstFocusableRef,
4170
- style: {
4171
- ...styles.topRight,
4172
- ...responsiveStyles.topRight,
4173
- ...languageSelectorStyle
4119
+ `privacy-notice-title-${selectedLanguage}`
4120
+ );
4121
+ const controlsBlock = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: styles.languageSelectorContainer, children: [
4122
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4123
+ "div",
4124
+ {
4125
+ style: {
4126
+ display: "flex",
4127
+ alignItems: "center",
4128
+ gap: "8px"
4129
+ },
4130
+ children: [
4131
+ isTTSAvailable && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4132
+ "button",
4133
+ {
4134
+ onClick: toggleAudio,
4135
+ style: {
4136
+ ...styles.topRight,
4137
+ ...responsiveStyles.topRight,
4138
+ ...languageSelectorStyle,
4139
+ padding: "3px 9px",
4140
+ display: "flex",
4141
+ alignItems: "center",
4142
+ justifyContent: "center"
4143
+ },
4144
+ "aria-label": isPlaying && !isPaused ? "Pause audio playback" : isPaused ? "Resume audio playback" : "Start audio playback",
4145
+ title: isPlaying && !isPaused ? "Pause Talkback" : isPaused ? "Resume Talkback" : "Start Talkback",
4146
+ children: isPlaying && !isPaused ? (
4147
+ // Pause icon
4148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4149
+ "svg",
4150
+ {
4151
+ xmlns: "http://www.w3.org/2000/svg",
4152
+ width: "16",
4153
+ height: "16",
4154
+ viewBox: "0 0 24 24",
4155
+ fill: "none",
4156
+ stroke: ((_b2 = (_a2 = settings == null ? void 0 : settings.button) == null ? void 0 : _a2.language) == null ? void 0 : _b2.textColor) || "currentColor",
4157
+ strokeWidth: "2",
4158
+ strokeLinecap: "round",
4159
+ strokeLinejoin: "round",
4160
+ "aria-hidden": "true",
4161
+ children: [
4162
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "6", y: "4", width: "4", height: "16" }),
4163
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { x: "14", y: "4", width: "4", height: "16" })
4164
+ ]
4165
+ }
4166
+ )
4167
+ ) : (
4168
+ // Play/Sound icon
4169
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4170
+ "svg",
4171
+ {
4172
+ xmlns: "http://www.w3.org/2000/svg",
4173
+ width: "16",
4174
+ height: "16",
4175
+ viewBox: "0 0 24 24",
4176
+ fill: "none",
4177
+ stroke: ((_d2 = (_c2 = settings == null ? void 0 : settings.button) == null ? void 0 : _c2.language) == null ? void 0 : _d2.textColor) || "currentColor",
4178
+ strokeWidth: "2",
4179
+ strokeLinecap: "round",
4180
+ strokeLinejoin: "round",
4181
+ "aria-hidden": "true",
4182
+ children: [
4183
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("polygon", { points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5" }),
4184
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07" })
4185
+ ]
4186
+ }
4187
+ )
4188
+ )
4189
+ }
4190
+ ),
4191
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4192
+ "button",
4193
+ {
4194
+ ref: firstFocusableRef,
4195
+ style: {
4196
+ ...styles.topRight,
4197
+ ...responsiveStyles.topRight,
4198
+ ...languageSelectorStyle
4199
+ },
4200
+ onClick: toggleLanguageDropdown,
4201
+ "aria-expanded": isLanguageDropdownOpen,
4202
+ "aria-haspopup": "listbox",
4203
+ "aria-controls": "language-listbox",
4204
+ "aria-label": `Select language. Current language: ${toNativeLabel(selectedLanguage)}`,
4205
+ children: [
4206
+ toNativeLabel(selectedLanguage),
4207
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4208
+ "svg",
4209
+ {
4210
+ xmlns: "http://www.w3.org/2000/svg",
4211
+ width: "16",
4212
+ height: "16",
4213
+ viewBox: "0 0 16 16",
4214
+ fill: "none",
4215
+ stroke: ((_f2 = (_e2 = settings == null ? void 0 : settings.button) == null ? void 0 : _e2.language) == null ? void 0 : _f2.textColor) || "currentColor",
4216
+ strokeWidth: "2",
4217
+ strokeLinecap: "round",
4218
+ strokeLinejoin: "round",
4219
+ style: { flexShrink: 0, marginLeft: "4px" },
4220
+ "aria-hidden": "true",
4221
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M4 6l4 4 4-4" })
4222
+ }
4223
+ )
4224
+ ]
4225
+ }
4226
+ ) })
4227
+ ]
4228
+ }
4229
+ ),
4230
+ isLanguageDropdownOpen && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4231
+ "ul",
4232
+ {
4233
+ id: "language-listbox",
4234
+ style: {
4235
+ ...styles.languageDropdown,
4236
+ ...languageSelectorStyle
4237
+ },
4238
+ role: "listbox",
4239
+ "aria-label": "Select language",
4240
+ children: availableLanguages.map((lang) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4241
+ "li",
4242
+ {
4243
+ style: {
4244
+ ...styles.languageItem,
4245
+ ...responsiveStyles.languageItem,
4246
+ ...selectedLanguage === lang ? selectedLanguageItemStyle : languageSelectorStyle,
4247
+ listStyle: "none"
4248
+ },
4249
+ onClick: () => handleLanguageSelect(lang),
4250
+ role: "option",
4251
+ "aria-selected": selectedLanguage === lang,
4252
+ tabIndex: 0,
4253
+ "aria-label": `Select ${toNativeLabel(lang)} language`,
4254
+ children: toNativeLabel(lang)
4174
4255
  },
4175
- onClick: toggleLanguageDropdown,
4176
- "aria-expanded": isLanguageDropdownOpen,
4177
- "aria-haspopup": "listbox",
4178
- "aria-controls": "language-listbox",
4179
- "aria-label": `Select language. Current language: ${toNativeLabel(selectedLanguage)}`,
4180
- children: [
4181
- toNativeLabel(selectedLanguage),
4182
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4183
- "svg",
4184
- {
4185
- xmlns: "http://www.w3.org/2000/svg",
4186
- width: "16",
4187
- height: "16",
4188
- viewBox: "0 0 16 16",
4189
- fill: "none",
4190
- stroke: ((_v = (_u = settings == null ? void 0 : settings.button) == null ? void 0 : _u.language) == null ? void 0 : _v.textColor) || "currentColor",
4191
- strokeWidth: "2",
4192
- strokeLinecap: "round",
4193
- strokeLinejoin: "round",
4194
- style: { flexShrink: 0, marginLeft: "4px" },
4195
- "aria-hidden": "true",
4196
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M4 6l4 4 4-4" })
4197
- }
4198
- )
4199
- ]
4200
- }
4201
- ) })
4202
- ]
4203
- }
4204
- ),
4205
- isLanguageDropdownOpen && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4206
- "ul",
4207
- {
4208
- id: "language-listbox",
4209
- style: {
4210
- ...styles.languageDropdown,
4211
- ...languageSelectorStyle
4212
- },
4213
- role: "listbox",
4214
- "aria-label": "Select language",
4215
- children: availableLanguages.map((lang) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4216
- "li",
4256
+ lang
4257
+ ))
4258
+ }
4259
+ )
4260
+ ] });
4261
+ return isMobile ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
4262
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4263
+ "div",
4217
4264
  {
4218
4265
  style: {
4219
- ...styles.languageItem,
4220
- ...responsiveStyles.languageItem,
4221
- ...selectedLanguage === lang ? selectedLanguageItemStyle : languageSelectorStyle,
4222
- listStyle: "none"
4266
+ display: "flex",
4267
+ alignItems: "center",
4268
+ gap: "10px",
4269
+ width: "100%"
4223
4270
  },
4224
- onClick: () => handleLanguageSelect(lang),
4225
- role: "option",
4226
- "aria-selected": selectedLanguage === lang,
4227
- tabIndex: 0,
4228
- "aria-label": `Select ${toNativeLabel(lang)} language`,
4229
- children: toNativeLabel(lang)
4230
- },
4231
- lang
4232
- ))
4233
- }
4234
- )
4235
- ] })
4236
- ] }),
4271
+ children: [
4272
+ logoNode,
4273
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4274
+ "div",
4275
+ {
4276
+ style: {
4277
+ marginLeft: "auto",
4278
+ display: "flex",
4279
+ alignItems: "center",
4280
+ flexShrink: 0
4281
+ },
4282
+ children: controlsBlock
4283
+ }
4284
+ )
4285
+ ]
4286
+ }
4287
+ ),
4288
+ titleNode
4289
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
4290
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: styles.topLeft, children: [
4291
+ logoNode,
4292
+ titleNode
4293
+ ] }),
4294
+ controlsBlock
4295
+ ] });
4296
+ })()
4297
+ }
4298
+ ),
4237
4299
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
4238
4300
  "div",
4239
4301
  {
@@ -4353,7 +4415,7 @@ var RedactoNoticeConsent = ({
4353
4415
  ))
4354
4416
  ] }) : (
4355
4417
  /* Regular consent UI */
4356
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: styles.optionsContainer, children: (_w = content == null ? void 0 : content.purposes) == null ? void 0 : _w.map((purpose) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4418
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: styles.optionsContainer, children: (_q = content == null ? void 0 : content.purposes) == null ? void 0 : _q.map((purpose) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4357
4419
  PurposeItem,
4358
4420
  {
4359
4421
  purpose,