@redacto.io/consent-sdk-react 10.0.0 → 10.1.0-beta.1

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/dist/index.mjs CHANGED
@@ -9,9 +9,12 @@ import {
9
9
  NOTICE_FONT_FACE_STYLE_ID_PREFIX,
10
10
  NOTICE_FONT_LOAD_ERROR_MESSAGE,
11
11
  NOTICE_FONT_ROOT_PROPS,
12
+ REQUIRED_MARKER_ARIA_LABEL,
13
+ REQUIRED_MARKER_GLYPH,
14
+ REQUIRED_MARKER_STYLE,
12
15
  injectNoticeFontStyles,
13
16
  resolveNoticeFontFamily
14
- } from "./chunk-FEGTW73Q.mjs";
17
+ } from "./chunk-FT5G2PXK.mjs";
15
18
 
16
19
  // src/RedactoNoticeConsent/RedactoNoticeConsent.tsx
17
20
  import { useCallback, useEffect as useEffect2, useMemo as useMemo2, useRef, useState } from "react";
@@ -558,6 +561,15 @@ var redacto_logo_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATkAAA
558
561
 
559
562
  // src/RedactoNoticeConsent/constants.ts
560
563
  var DEFAULT_LOGO_POSITION = "left";
564
+ var DEFAULT_PURPOSE_PRESELECTION = "NONE";
565
+ var PURPOSE_STATUS_INACTIVE = "INACTIVE";
566
+ var DEFAULT_ACCEPT_ALL_BUTTON_TEXT = "Accept All";
567
+ var DEFAULT_ACCEPT_SELECTED_BUTTON_TEXT = "Accept Selected";
568
+ var DEFAULT_DECLINE_BUTTON_TEXT = "Decline";
569
+ var ACCEPT_ALL_BUTTON_ID = "accept-all-button-text";
570
+ var ACCEPT_SELECTED_BUTTON_ID = "confirm-button-text";
571
+ var DECLINE_BUTTON_ID = "decline-button-text";
572
+ var SUBMITTING_BUTTON_TEXT = "Processing...";
561
573
  var LOGO_POSITION_JUSTIFY = {
562
574
  left: "flex-start",
563
575
  center: "center",
@@ -565,357 +577,24 @@ var LOGO_POSITION_JUSTIFY = {
565
577
  };
566
578
  var DPO_AUDIO_ELEMENT_MAP = [
567
579
  { audioKey: "grievance_text_audio_url", elementId: "dpo-grievance-text" },
568
- { audioKey: "grievance_anchor_text_audio_url", elementId: "dpo-grievance-link" },
569
- { audioKey: "grievance_email_connector_text_audio_url", elementId: "dpo-grievance-email-connector" },
580
+ {
581
+ audioKey: "grievance_anchor_text_audio_url",
582
+ elementId: "dpo-grievance-link"
583
+ },
584
+ {
585
+ audioKey: "grievance_email_connector_text_audio_url",
586
+ elementId: "dpo-grievance-email-connector"
587
+ },
570
588
  { audioKey: "grievance_email_audio_url", elementId: "dpo-grievance-email" },
571
589
  { audioKey: "dp_board_text_audio_url", elementId: "dpo-dp-board-text" },
572
- { audioKey: "dp_board_anchor_text_audio_url", elementId: "dpo-dp-board-link" },
590
+ {
591
+ audioKey: "dp_board_anchor_text_audio_url",
592
+ elementId: "dpo-dp-board-link"
593
+ },
573
594
  { audioKey: "dpo_text_audio_url", elementId: "dpo-dpo-text" },
574
595
  { audioKey: "dpo_anchor_text_audio_url", elementId: "dpo-dpo-link" }
575
596
  ];
576
597
 
577
- // src/RedactoNoticeConsent/layout.ts
578
- var resolveLogoPosition = (raw) => raw === "center" || raw === "right" ? raw : DEFAULT_LOGO_POSITION;
579
- var logoRowJustify = (position) => LOGO_POSITION_JUSTIFY[position];
580
-
581
- // src/RedactoNoticeConsent/language-codes.ts
582
- var LANGUAGE_NATIVE_LABELS = {
583
- English: "English",
584
- Assamese: "\u0985\u09B8\u09AE\u09C0\u09AF\u09BC\u09BE (Assamese)",
585
- Bengali: "\u09AC\u09BE\u0982\u09B2\u09BE (Bengali)",
586
- Bodo: "\u092C\u0921\u093C\u094B (Bodo)",
587
- Dogri: "\u0921\u094B\u0917\u0930\u0940 (Dogri)",
588
- Gujarati: "\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0 (Gujarati)",
589
- Hindi: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)",
590
- Kannada: "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1 (Kannada)",
591
- Kashmiri: "\u0643\u0672\u0634\u064F\u0631 (Kashmiri)",
592
- "Goan Konkani": "\u0915\u094B\u0902\u0915\u0923\u0940 (Goan Konkani)",
593
- Maithili: "\u092E\u0948\u0925\u093F\u0932\u0940 (Maithili)",
594
- Malayalam: "\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02 (Malayalam)",
595
- Manipuri: "\uABC3\uABE9\uABC7\uABE9\uABC2\uABE3\uABDF (Manipuri)",
596
- Marathi: "\u092E\u0930\u093E\u0920\u0940 (Marathi)",
597
- Nepali: "\u0928\u0947\u092A\u093E\u0932\u0940 (Nepali)",
598
- Odia: "\u0B13\u0B21\u0B3C\u0B3F\u0B06 (Odia)",
599
- Punjabi: "\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40 (Punjabi)",
600
- Sanskrit: "\u0938\u0902\u0938\u094D\u0915\u0943\u0924\u092E\u094D (Sanskrit)",
601
- Santali: "\u1C65\u1C5F\u1C71\u1C5B\u1C5F\u1C72\u1C64 (Santali)",
602
- Sindhi: "\u0633\u0646\u068C\u064A (Sindhi)",
603
- Tamil: "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD (Tamil)",
604
- Telugu: "\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41 (Telugu)",
605
- Urdu: "\u0627\u0631\u062F\u0648 (Urdu)"
606
- };
607
- var toNativeLabel = (name) => {
608
- var _a;
609
- return (_a = LANGUAGE_NATIVE_LABELS[name]) != null ? _a : name;
610
- };
611
- var LANGUAGE_NAME_TO_BCP47 = {
612
- English: "en",
613
- Assamese: "as",
614
- Bengali: "bn",
615
- Bodo: "brx",
616
- Dogri: "doi",
617
- Gujarati: "gu",
618
- Hindi: "hi",
619
- Kannada: "kn",
620
- Kashmiri: "ks",
621
- "Goan Konkani": "gom",
622
- Maithili: "mai",
623
- Malayalam: "ml",
624
- Manipuri: "mni-Mtei",
625
- Marathi: "mr",
626
- Nepali: "ne",
627
- Odia: "or",
628
- Punjabi: "pa",
629
- Sanskrit: "sa",
630
- Santali: "sat",
631
- Sindhi: "sd",
632
- Tamil: "ta",
633
- Telugu: "te",
634
- Urdu: "ur"
635
- };
636
- var KNOWN_BCP47_CODES = new Set(Object.values(LANGUAGE_NAME_TO_BCP47));
637
- var toBcp47Code = (language) => {
638
- if (LANGUAGE_NAME_TO_BCP47[language]) {
639
- return LANGUAGE_NAME_TO_BCP47[language];
640
- }
641
- if (KNOWN_BCP47_CODES.has(language)) {
642
- return language;
643
- }
644
- const lower = language.toLowerCase();
645
- for (const [name, code] of Object.entries(LANGUAGE_NAME_TO_BCP47)) {
646
- if (name.toLowerCase() === lower) {
647
- return code;
648
- }
649
- }
650
- if (/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/.test(language)) {
651
- return language;
652
- }
653
- return "en";
654
- };
655
-
656
- // src/RedactoNoticeConsent/injectStyles.ts
657
- var stylesInjected = false;
658
- var injectCheckboxStyles = () => {
659
- if (stylesInjected || typeof document === "undefined") {
660
- return;
661
- }
662
- const STYLE_ID = "redacto-consent-checkbox-styles";
663
- if (document.getElementById(STYLE_ID)) {
664
- stylesInjected = true;
665
- return;
666
- }
667
- const style = document.createElement("style");
668
- style.id = STYLE_ID;
669
- style.textContent = `
670
- /* Redacto Consent SDK Checkbox Styles */
671
- .redacto-checkbox-large {
672
- appearance: none !important;
673
- -webkit-appearance: none !important;
674
- -moz-appearance: none !important;
675
- height: 20px !important;
676
- width: 20px !important;
677
- border: 2px solid #d0d5dd !important;
678
- border-radius: 5px !important;
679
- background-color: transparent !important;
680
- cursor: pointer !important;
681
- position: relative !important;
682
- box-sizing: border-box !important;
683
- margin: 0 !important;
684
- padding: 4px !important;
685
- }
686
-
687
- .redacto-checkbox-small {
688
- appearance: none !important;
689
- -webkit-appearance: none !important;
690
- -moz-appearance: none !important;
691
- height: 16px !important;
692
- width: 16px !important;
693
- border: 2px solid #d0d5dd !important;
694
- border-radius: 5px !important;
695
- background-color: transparent !important;
696
- cursor: pointer !important;
697
- position: relative !important;
698
- box-sizing: border-box !important;
699
- margin: 0 !important;
700
- padding: 4px !important;
701
- }
702
-
703
- .redacto-checkbox-large:checked {
704
- background-color: #4f87ff !important;
705
- border-color: #4f87ff !important;
706
- }
707
-
708
- .redacto-checkbox-small:checked {
709
- background-color: #4f87ff !important;
710
- border-color: #4f87ff !important;
711
- }
712
-
713
- .redacto-checkbox-large:checked::after {
714
- content: '' !important;
715
- position: absolute !important;
716
- left: 50% !important;
717
- top: 50% !important;
718
- transform: translate(-50%, -50%) rotate(45deg) !important;
719
- width: 4px !important;
720
- height: 8px !important;
721
- border: solid white !important;
722
- border-width: 0 2px 2px 0 !important;
723
- box-sizing: border-box !important;
724
- }
725
-
726
- .redacto-checkbox-small:checked::after {
727
- content: '' !important;
728
- position: absolute !important;
729
- left: 50% !important;
730
- top: 50% !important;
731
- transform: translate(-50%, -50%) rotate(45deg) !important;
732
- width: 3px !important;
733
- height: 6px !important;
734
- border: solid white !important;
735
- border-width: 0 1.5px 1.5px 0 !important;
736
- box-sizing: border-box !important;
737
- }
738
-
739
- .redacto-checkbox-large:focus {
740
- outline: 2px solid #4f87ff !important;
741
- outline-offset: 2px !important;
742
- }
743
-
744
- .redacto-checkbox-small:focus {
745
- outline: 2px solid #4f87ff !important;
746
- outline-offset: 2px !important;
747
- }
748
-
749
- /* TTS Highlight Styles - Visible highlighting without layout shift */
750
- .redacto-tts-highlight {
751
- position: relative !important;
752
- transition: background-color 0.3s ease, outline 0.3s ease !important;
753
- }
754
-
755
- /* Block-level elements - headings */
756
- h2.redacto-tts-highlight,
757
- h3.redacto-tts-highlight {
758
- background-color: #FFF9C4 !important;
759
- border-radius: 3px !important;
760
- padding: 2px 4px !important;
761
- margin: -2px -4px !important;
762
- }
763
-
764
- /* Inline elements - spans, links */
765
- span.redacto-tts-highlight,
766
- a.redacto-tts-highlight {
767
- background-color: #FFF9C4 !important;
768
- border-radius: 3px !important;
769
- padding: 2px 4px !important;
770
- margin: -2px -4px !important;
771
- }
772
-
773
- /* Paragraphs - handle carefully to avoid layout shift */
774
- p.redacto-tts-highlight {
775
- background-color: #FFF9C4 !important;
776
- border-radius: 3px !important;
777
- padding: 2px 4px !important;
778
- margin: -2px -4px !important;
779
- }
780
-
781
- /* Buttons - use outline to keep button styles intact */
782
- button.redacto-tts-highlight {
783
- outline: 3px solid #FFF9C4 !important;
784
- outline-offset: 2px !important;
785
- }
786
-
787
- /* Spinner animation for verification screens */
788
- @keyframes spin {
789
- from { transform: rotate(0deg); }
790
- to { transform: rotate(360deg); }
791
- }
792
-
793
- /* DigiLocker callback retry button hover */
794
- .redacto-dl-retry-btn:hover {
795
- background-color: #2563eb !important;
796
- }
797
- `;
798
- document.head.appendChild(style);
799
- stylesInjected = true;
800
- };
801
-
802
- // src/shared/useNoticeFont.ts
803
- import { useEffect, useMemo } from "react";
804
-
805
- // src/shared/fonts/font-sources.generated.ts
806
- var NOTICE_FONT_SOURCE_IMPORTS = {
807
- "montserrat": () => import("./montserrat.generated-NBTECYRW.mjs")
808
- };
809
-
810
- // src/shared/notice-webfont.ts
811
- var noticeFontOptions = {};
812
- var configureNoticeFonts = (options) => {
813
- noticeFontOptions = { ...noticeFontOptions, ...options };
814
- };
815
- var toFamilyTokens = (value) => value.split(FONT_FAMILY_SEPARATOR).map(
816
- (token) => token.trim().replace(FONT_NAME_QUOTE_CHARACTERS, "").toLowerCase()
817
- );
818
- var findNoticeFontEntry = (value) => {
819
- const id = toFamilyTokens(value).find(
820
- (token) => Boolean(NOTICE_FONT_ENTRY_BY_ID[token])
821
- );
822
- if (!id) {
823
- return void 0;
824
- }
825
- return NOTICE_FONT_ENTRY_BY_ID[id];
826
- };
827
- var toFontFaceCss = (entry, sources) => sources.map(
828
- ({ weight, url }) => [
829
- "@font-face {",
830
- ` font-family: "${entry.cssFamily}";`,
831
- " font-style: normal;",
832
- ` font-weight: ${weight};`,
833
- // `swap`, never the `auto` default: auto gives most browsers a ~3s block
834
- // period with INVISIBLE text, which is unacceptable for a consent notice.
835
- " font-display: swap;",
836
- // `local()` still leads: the bundled copy is Latin + Latin-Extended only,
837
- // so a visitor's own installation covers more scripts than ours does.
838
- ` src: local("${entry.cssFamily}"),`,
839
- // Quoted url(): a data URI carries `,` and `;`, which are hostile to an
840
- // unquoted url token. Base64 never contains a double quote.
841
- ` url("${url}") format("woff2");`,
842
- "}"
843
- ].join("\n")
844
- ).join("\n\n");
845
- var fontSourceLoads = /* @__PURE__ */ new Map();
846
- var loadFontSources = (entry, importSources) => {
847
- const pending = fontSourceLoads.get(entry.id);
848
- if (pending) {
849
- return pending;
850
- }
851
- const load = importSources().then((module) => module.NOTICE_FONT_SOURCES).catch((error) => {
852
- fontSourceLoads.delete(entry.id);
853
- throw error;
854
- });
855
- fontSourceLoads.set(entry.id, load);
856
- return load;
857
- };
858
- var injectedFontFaceIds = /* @__PURE__ */ new Set();
859
- var injectFontFace = (entry, sources) => {
860
- if (injectedFontFaceIds.has(entry.id)) {
861
- return;
862
- }
863
- injectedFontFaceIds.add(entry.id);
864
- const styleId = `${NOTICE_FONT_FACE_STYLE_ID_PREFIX}${entry.slug}`;
865
- if (document.getElementById(styleId)) {
866
- return;
867
- }
868
- const style = document.createElement("style");
869
- style.id = styleId;
870
- style.textContent = toFontFaceCss(entry, sources);
871
- document.head.appendChild(style);
872
- };
873
- var loadNoticeWebfont = async (value, signal) => {
874
- if (typeof document === "undefined" || noticeFontOptions.disabled) {
875
- return;
876
- }
877
- if (signal == null ? void 0 : signal.aborted) {
878
- return;
879
- }
880
- const entry = findNoticeFontEntry(value);
881
- if (!entry || entry.source !== "webfont" || injectedFontFaceIds.has(entry.id)) {
882
- return;
883
- }
884
- const importSources = NOTICE_FONT_SOURCE_IMPORTS[entry.slug];
885
- if (!importSources) {
886
- return;
887
- }
888
- try {
889
- const sources = await loadFontSources(entry, importSources);
890
- if (signal == null ? void 0 : signal.aborted) {
891
- return;
892
- }
893
- injectFontFace(entry, sources);
894
- } catch (error) {
895
- console.error(NOTICE_FONT_LOAD_ERROR_MESSAGE, error);
896
- }
897
- };
898
-
899
- // src/shared/useNoticeFont.ts
900
- var useNoticeFont = ({
901
- hostFont,
902
- noticeFont
903
- }) => {
904
- const fontFamily = useMemo(
905
- () => resolveNoticeFontFamily({ hostFont, noticeFont }),
906
- [hostFont, noticeFont]
907
- );
908
- useEffect(() => {
909
- injectNoticeFontStyles();
910
- }, []);
911
- useEffect(() => {
912
- const controller = new AbortController();
913
- void loadNoticeWebfont(fontFamily, controller.signal);
914
- return () => controller.abort();
915
- }, [fontFamily]);
916
- return fontFamily;
917
- };
918
-
919
598
  // src/RedactoNoticeConsent/styles.ts
920
599
  var styles = {
921
600
  overlay: {
@@ -1228,6 +907,33 @@ var styles = {
1228
907
  margin: 0,
1229
908
  boxSizing: "border-box"
1230
909
  },
910
+ /**
911
+ * The main notice footer. Wide: one row with decline pushed to the left and
912
+ * the two accepts grouped right (see `declineSpacer`). Narrow: a full-width
913
+ * stack. The guardian-verification and age-gate sub-flows keep using
914
+ * `bottomSection` — they have their own two-button layout.
915
+ */
916
+ actionButtonRow: {
917
+ display: "flex",
918
+ flexDirection: "row",
919
+ alignItems: "center",
920
+ gap: "12px",
921
+ paddingTop: "15px",
922
+ borderTop: "none",
923
+ backgroundColor: "#ffffff",
924
+ margin: 0,
925
+ boxSizing: "border-box"
926
+ },
927
+ actionButtonStack: {
928
+ display: "flex",
929
+ flexDirection: "column",
930
+ gap: "12px",
931
+ paddingTop: "15px",
932
+ borderTop: "none",
933
+ backgroundColor: "#ffffff",
934
+ margin: 0,
935
+ boxSizing: "border-box"
936
+ },
1231
937
  button: {
1232
938
  width: "100%",
1233
939
  borderRadius: "8px",
@@ -1247,6 +953,44 @@ var styles = {
1247
953
  border: "none",
1248
954
  color: "#ffffff"
1249
955
  },
956
+ /**
957
+ * The accept-all shortcut. Tinted rather than filled so the primary
958
+ * "accept selected" action stays visually dominant, and outlined-but-coloured
959
+ * so it still reads as an accept next to the neutral decline button.
960
+ */
961
+ acceptSecondaryButton: {
962
+ backgroundColor: "#ffffff",
963
+ border: "1px solid #4f87ff",
964
+ color: "#4f87ff"
965
+ },
966
+ /**
967
+ * Three buttons share the footer width, so the single-button horizontal
968
+ * padding would clip long translated labels. Let them wrap instead.
969
+ *
970
+ * `width: auto` undoes `button`'s `width: 100%` — in the wide row each button
971
+ * must size to its own label, or all three stretch equally and the
972
+ * left/right split disappears.
973
+ */
974
+ rowButton: {
975
+ width: "auto",
976
+ padding: "9px 20px",
977
+ whiteSpace: "normal",
978
+ wordBreak: "break-word"
979
+ },
980
+ /** In the narrow stack every button spans the full width. */
981
+ stackButton: {
982
+ width: "100%",
983
+ padding: "9px 20px",
984
+ whiteSpace: "normal",
985
+ wordBreak: "break-word"
986
+ },
987
+ /**
988
+ * Pushes everything after decline to the right edge, which is the whole of
989
+ * the wide layout: `[Decline] <-- gap --> [Accept Selected] [Accept All]`.
990
+ */
991
+ declineSpacer: {
992
+ marginRight: "auto"
993
+ },
1250
994
  cancelButton: {
1251
995
  border: "1px solid #d0d5dd",
1252
996
  backgroundColor: "#ffffff",
@@ -1315,6 +1059,495 @@ var styles = {
1315
1059
  }
1316
1060
  };
1317
1061
 
1062
+ // src/RedactoNoticeConsent/components/NoticeFooter.tsx
1063
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
1064
+ var DISABLED_OPACITY = 0.5;
1065
+ var NoticeFooter = ({
1066
+ labels,
1067
+ acceptSelectedDisabled,
1068
+ isSubmittingAccept,
1069
+ isSubmittingDecline,
1070
+ isMobile,
1071
+ responsiveButtonStyle,
1072
+ acceptAllButtonStyle,
1073
+ acceptSelectedButtonStyle,
1074
+ declineButtonStyle,
1075
+ lastFocusableRef,
1076
+ onAcceptAll,
1077
+ onAcceptSelected,
1078
+ onDecline
1079
+ }) => {
1080
+ const isSubmitting = isSubmittingAccept || isSubmittingDecline;
1081
+ const baseButtonStyle = {
1082
+ ...styles.button,
1083
+ ...responsiveButtonStyle,
1084
+ ...isMobile ? styles.stackButton : styles.rowButton
1085
+ };
1086
+ const acceptAllButton = /* @__PURE__ */ jsx(
1087
+ "button",
1088
+ {
1089
+ type: "button",
1090
+ id: ACCEPT_ALL_BUTTON_ID,
1091
+ style: {
1092
+ ...baseButtonStyle,
1093
+ ...styles.acceptButton,
1094
+ ...acceptAllButtonStyle,
1095
+ opacity: isSubmitting ? DISABLED_OPACITY : 1
1096
+ },
1097
+ onClick: onAcceptAll,
1098
+ disabled: isSubmitting,
1099
+ "aria-label": labels.acceptAll,
1100
+ children: isSubmittingAccept ? SUBMITTING_BUTTON_TEXT : labels.acceptAll
1101
+ }
1102
+ );
1103
+ const acceptSelectedButton = /* @__PURE__ */ jsx(
1104
+ "button",
1105
+ {
1106
+ type: "button",
1107
+ ref: lastFocusableRef,
1108
+ id: ACCEPT_SELECTED_BUTTON_ID,
1109
+ style: {
1110
+ ...baseButtonStyle,
1111
+ ...styles.acceptSecondaryButton,
1112
+ ...acceptSelectedButtonStyle,
1113
+ opacity: acceptSelectedDisabled ? DISABLED_OPACITY : 1
1114
+ },
1115
+ onClick: onAcceptSelected,
1116
+ disabled: acceptSelectedDisabled || isSubmittingDecline,
1117
+ "aria-label": labels.acceptSelected,
1118
+ children: isSubmittingAccept ? SUBMITTING_BUTTON_TEXT : labels.acceptSelected
1119
+ }
1120
+ );
1121
+ const declineButton = /* @__PURE__ */ jsx(
1122
+ "button",
1123
+ {
1124
+ type: "button",
1125
+ id: DECLINE_BUTTON_ID,
1126
+ style: {
1127
+ ...baseButtonStyle,
1128
+ ...styles.cancelButton,
1129
+ ...declineButtonStyle,
1130
+ // Only the wide row needs the spacer that pushes the accepts right.
1131
+ ...isMobile ? {} : styles.declineSpacer,
1132
+ opacity: isSubmittingAccept ? DISABLED_OPACITY : 1
1133
+ },
1134
+ onClick: onDecline,
1135
+ disabled: isSubmitting,
1136
+ "aria-label": labels.decline,
1137
+ children: isSubmittingDecline ? SUBMITTING_BUTTON_TEXT : labels.decline
1138
+ }
1139
+ );
1140
+ if (isMobile) {
1141
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1142
+ acceptAllButton,
1143
+ acceptSelectedButton,
1144
+ declineButton
1145
+ ] });
1146
+ }
1147
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
1148
+ declineButton,
1149
+ acceptSelectedButton,
1150
+ acceptAllButton
1151
+ ] });
1152
+ };
1153
+
1154
+ // src/RedactoNoticeConsent/utils/consentSelection.ts
1155
+ var dataElementKey = (purposeUuid, elementUuid) => `${purposeUuid}-${elementUuid}`;
1156
+ var buildSelectionForMode = (purposes, mode, current) => {
1157
+ if (mode === "selected") {
1158
+ return current;
1159
+ }
1160
+ const selectedPurposes = {};
1161
+ const selectedDataElements = {};
1162
+ purposes.forEach((purpose) => {
1163
+ selectedPurposes[purpose.uuid] = true;
1164
+ purpose.data_elements.forEach((element) => {
1165
+ selectedDataElements[dataElementKey(purpose.uuid, element.uuid)] = element.enabled;
1166
+ });
1167
+ });
1168
+ return { selectedPurposes, selectedDataElements };
1169
+ };
1170
+ var resolvePurposePreselection = (raw) => raw === "MANDATORY" || raw === "ALL" ? raw : DEFAULT_PURPOSE_PRESELECTION;
1171
+ var hasRecordedPurposeState = (selection) => {
1172
+ var _a;
1173
+ if (!selection) {
1174
+ return false;
1175
+ }
1176
+ if (selection.status && selection.status !== PURPOSE_STATUS_INACTIVE) {
1177
+ return true;
1178
+ }
1179
+ return Object.keys((_a = selection.data_elements) != null ? _a : {}).length > 0;
1180
+ };
1181
+ var buildPreselection = (purposes, mode) => {
1182
+ const selectedPurposes = {};
1183
+ const selectedDataElements = {};
1184
+ if (mode === "ALL") {
1185
+ return buildSelectionForMode(purposes, "all", {
1186
+ selectedPurposes,
1187
+ selectedDataElements
1188
+ });
1189
+ }
1190
+ purposes.forEach((purpose) => {
1191
+ let hasPreselectedElement = false;
1192
+ purpose.data_elements.forEach((element) => {
1193
+ const isPreselected = mode === "MANDATORY" && element.required && element.enabled;
1194
+ selectedDataElements[dataElementKey(purpose.uuid, element.uuid)] = isPreselected;
1195
+ hasPreselectedElement = hasPreselectedElement || isPreselected;
1196
+ });
1197
+ selectedPurposes[purpose.uuid] = hasPreselectedElement;
1198
+ });
1199
+ return { selectedPurposes, selectedDataElements };
1200
+ };
1201
+ var hasRequiredDataElement = (purpose) => purpose.data_elements.some((element) => element.required);
1202
+
1203
+ // src/RedactoNoticeConsent/layout.ts
1204
+ var resolveLogoPosition = (raw) => raw === "center" || raw === "right" ? raw : DEFAULT_LOGO_POSITION;
1205
+ var logoRowJustify = (position) => LOGO_POSITION_JUSTIFY[position];
1206
+
1207
+ // src/RedactoNoticeConsent/language-codes.ts
1208
+ var LANGUAGE_NATIVE_LABELS = {
1209
+ English: "English",
1210
+ Assamese: "\u0985\u09B8\u09AE\u09C0\u09AF\u09BC\u09BE (Assamese)",
1211
+ Bengali: "\u09AC\u09BE\u0982\u09B2\u09BE (Bengali)",
1212
+ Bodo: "\u092C\u0921\u093C\u094B (Bodo)",
1213
+ Dogri: "\u0921\u094B\u0917\u0930\u0940 (Dogri)",
1214
+ Gujarati: "\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0 (Gujarati)",
1215
+ Hindi: "\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)",
1216
+ Kannada: "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1 (Kannada)",
1217
+ Kashmiri: "\u0643\u0672\u0634\u064F\u0631 (Kashmiri)",
1218
+ "Goan Konkani": "\u0915\u094B\u0902\u0915\u0923\u0940 (Goan Konkani)",
1219
+ Maithili: "\u092E\u0948\u0925\u093F\u0932\u0940 (Maithili)",
1220
+ Malayalam: "\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02 (Malayalam)",
1221
+ Manipuri: "\uABC3\uABE9\uABC7\uABE9\uABC2\uABE3\uABDF (Manipuri)",
1222
+ Marathi: "\u092E\u0930\u093E\u0920\u0940 (Marathi)",
1223
+ Nepali: "\u0928\u0947\u092A\u093E\u0932\u0940 (Nepali)",
1224
+ Odia: "\u0B13\u0B21\u0B3C\u0B3F\u0B06 (Odia)",
1225
+ Punjabi: "\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40 (Punjabi)",
1226
+ Sanskrit: "\u0938\u0902\u0938\u094D\u0915\u0943\u0924\u092E\u094D (Sanskrit)",
1227
+ Santali: "\u1C65\u1C5F\u1C71\u1C5B\u1C5F\u1C72\u1C64 (Santali)",
1228
+ Sindhi: "\u0633\u0646\u068C\u064A (Sindhi)",
1229
+ Tamil: "\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD (Tamil)",
1230
+ Telugu: "\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41 (Telugu)",
1231
+ Urdu: "\u0627\u0631\u062F\u0648 (Urdu)"
1232
+ };
1233
+ var toNativeLabel = (name) => {
1234
+ var _a;
1235
+ return (_a = LANGUAGE_NATIVE_LABELS[name]) != null ? _a : name;
1236
+ };
1237
+ var LANGUAGE_NAME_TO_BCP47 = {
1238
+ English: "en",
1239
+ Assamese: "as",
1240
+ Bengali: "bn",
1241
+ Bodo: "brx",
1242
+ Dogri: "doi",
1243
+ Gujarati: "gu",
1244
+ Hindi: "hi",
1245
+ Kannada: "kn",
1246
+ Kashmiri: "ks",
1247
+ "Goan Konkani": "gom",
1248
+ Maithili: "mai",
1249
+ Malayalam: "ml",
1250
+ Manipuri: "mni-Mtei",
1251
+ Marathi: "mr",
1252
+ Nepali: "ne",
1253
+ Odia: "or",
1254
+ Punjabi: "pa",
1255
+ Sanskrit: "sa",
1256
+ Santali: "sat",
1257
+ Sindhi: "sd",
1258
+ Tamil: "ta",
1259
+ Telugu: "te",
1260
+ Urdu: "ur"
1261
+ };
1262
+ var KNOWN_BCP47_CODES = new Set(Object.values(LANGUAGE_NAME_TO_BCP47));
1263
+ var toBcp47Code = (language) => {
1264
+ if (LANGUAGE_NAME_TO_BCP47[language]) {
1265
+ return LANGUAGE_NAME_TO_BCP47[language];
1266
+ }
1267
+ if (KNOWN_BCP47_CODES.has(language)) {
1268
+ return language;
1269
+ }
1270
+ const lower = language.toLowerCase();
1271
+ for (const [name, code] of Object.entries(LANGUAGE_NAME_TO_BCP47)) {
1272
+ if (name.toLowerCase() === lower) {
1273
+ return code;
1274
+ }
1275
+ }
1276
+ if (/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/.test(language)) {
1277
+ return language;
1278
+ }
1279
+ return "en";
1280
+ };
1281
+
1282
+ // src/RedactoNoticeConsent/injectStyles.ts
1283
+ var stylesInjected = false;
1284
+ var injectCheckboxStyles = () => {
1285
+ if (stylesInjected || typeof document === "undefined") {
1286
+ return;
1287
+ }
1288
+ const STYLE_ID = "redacto-consent-checkbox-styles";
1289
+ if (document.getElementById(STYLE_ID)) {
1290
+ stylesInjected = true;
1291
+ return;
1292
+ }
1293
+ const style = document.createElement("style");
1294
+ style.id = STYLE_ID;
1295
+ style.textContent = `
1296
+ /* Redacto Consent SDK Checkbox Styles */
1297
+ .redacto-checkbox-large {
1298
+ appearance: none !important;
1299
+ -webkit-appearance: none !important;
1300
+ -moz-appearance: none !important;
1301
+ height: 20px !important;
1302
+ width: 20px !important;
1303
+ border: 2px solid #d0d5dd !important;
1304
+ border-radius: 5px !important;
1305
+ background-color: transparent !important;
1306
+ cursor: pointer !important;
1307
+ position: relative !important;
1308
+ box-sizing: border-box !important;
1309
+ margin: 0 !important;
1310
+ padding: 4px !important;
1311
+ }
1312
+
1313
+ .redacto-checkbox-small {
1314
+ appearance: none !important;
1315
+ -webkit-appearance: none !important;
1316
+ -moz-appearance: none !important;
1317
+ height: 16px !important;
1318
+ width: 16px !important;
1319
+ border: 2px solid #d0d5dd !important;
1320
+ border-radius: 5px !important;
1321
+ background-color: transparent !important;
1322
+ cursor: pointer !important;
1323
+ position: relative !important;
1324
+ box-sizing: border-box !important;
1325
+ margin: 0 !important;
1326
+ padding: 4px !important;
1327
+ }
1328
+
1329
+ .redacto-checkbox-large:checked {
1330
+ background-color: #4f87ff !important;
1331
+ border-color: #4f87ff !important;
1332
+ }
1333
+
1334
+ .redacto-checkbox-small:checked {
1335
+ background-color: #4f87ff !important;
1336
+ border-color: #4f87ff !important;
1337
+ }
1338
+
1339
+ .redacto-checkbox-large:checked::after {
1340
+ content: '' !important;
1341
+ position: absolute !important;
1342
+ left: 50% !important;
1343
+ top: 50% !important;
1344
+ transform: translate(-50%, -50%) rotate(45deg) !important;
1345
+ width: 4px !important;
1346
+ height: 8px !important;
1347
+ border: solid white !important;
1348
+ border-width: 0 2px 2px 0 !important;
1349
+ box-sizing: border-box !important;
1350
+ }
1351
+
1352
+ .redacto-checkbox-small:checked::after {
1353
+ content: '' !important;
1354
+ position: absolute !important;
1355
+ left: 50% !important;
1356
+ top: 50% !important;
1357
+ transform: translate(-50%, -50%) rotate(45deg) !important;
1358
+ width: 3px !important;
1359
+ height: 6px !important;
1360
+ border: solid white !important;
1361
+ border-width: 0 1.5px 1.5px 0 !important;
1362
+ box-sizing: border-box !important;
1363
+ }
1364
+
1365
+ .redacto-checkbox-large:focus {
1366
+ outline: 2px solid #4f87ff !important;
1367
+ outline-offset: 2px !important;
1368
+ }
1369
+
1370
+ .redacto-checkbox-small:focus {
1371
+ outline: 2px solid #4f87ff !important;
1372
+ outline-offset: 2px !important;
1373
+ }
1374
+
1375
+ /* TTS Highlight Styles - Visible highlighting without layout shift */
1376
+ .redacto-tts-highlight {
1377
+ position: relative !important;
1378
+ transition: background-color 0.3s ease, outline 0.3s ease !important;
1379
+ }
1380
+
1381
+ /* Block-level elements - headings */
1382
+ h2.redacto-tts-highlight,
1383
+ h3.redacto-tts-highlight {
1384
+ background-color: #FFF9C4 !important;
1385
+ border-radius: 3px !important;
1386
+ padding: 2px 4px !important;
1387
+ margin: -2px -4px !important;
1388
+ }
1389
+
1390
+ /* Inline elements - spans, links */
1391
+ span.redacto-tts-highlight,
1392
+ a.redacto-tts-highlight {
1393
+ background-color: #FFF9C4 !important;
1394
+ border-radius: 3px !important;
1395
+ padding: 2px 4px !important;
1396
+ margin: -2px -4px !important;
1397
+ }
1398
+
1399
+ /* Paragraphs - handle carefully to avoid layout shift */
1400
+ p.redacto-tts-highlight {
1401
+ background-color: #FFF9C4 !important;
1402
+ border-radius: 3px !important;
1403
+ padding: 2px 4px !important;
1404
+ margin: -2px -4px !important;
1405
+ }
1406
+
1407
+ /* Buttons - use outline to keep button styles intact */
1408
+ button.redacto-tts-highlight {
1409
+ outline: 3px solid #FFF9C4 !important;
1410
+ outline-offset: 2px !important;
1411
+ }
1412
+
1413
+ /* Spinner animation for verification screens */
1414
+ @keyframes spin {
1415
+ from { transform: rotate(0deg); }
1416
+ to { transform: rotate(360deg); }
1417
+ }
1418
+
1419
+ /* DigiLocker callback retry button hover */
1420
+ .redacto-dl-retry-btn:hover {
1421
+ background-color: #2563eb !important;
1422
+ }
1423
+ `;
1424
+ document.head.appendChild(style);
1425
+ stylesInjected = true;
1426
+ };
1427
+
1428
+ // src/shared/RequiredMarker.tsx
1429
+ import { jsx as jsx2 } from "react/jsx-runtime";
1430
+ var RequiredMarker = ({
1431
+ label = REQUIRED_MARKER_ARIA_LABEL
1432
+ }) => /* @__PURE__ */ jsx2("span", { style: REQUIRED_MARKER_STYLE, "aria-label": label, children: REQUIRED_MARKER_GLYPH });
1433
+
1434
+ // src/shared/useNoticeFont.ts
1435
+ import { useEffect, useMemo } from "react";
1436
+
1437
+ // src/shared/fonts/font-sources.generated.ts
1438
+ var NOTICE_FONT_SOURCE_IMPORTS = {
1439
+ "montserrat": () => import("./montserrat.generated-NBTECYRW.mjs")
1440
+ };
1441
+
1442
+ // src/shared/notice-webfont.ts
1443
+ var noticeFontOptions = {};
1444
+ var configureNoticeFonts = (options) => {
1445
+ noticeFontOptions = { ...noticeFontOptions, ...options };
1446
+ };
1447
+ var toFamilyTokens = (value) => value.split(FONT_FAMILY_SEPARATOR).map(
1448
+ (token) => token.trim().replace(FONT_NAME_QUOTE_CHARACTERS, "").toLowerCase()
1449
+ );
1450
+ var findNoticeFontEntry = (value) => {
1451
+ const id = toFamilyTokens(value).find(
1452
+ (token) => Boolean(NOTICE_FONT_ENTRY_BY_ID[token])
1453
+ );
1454
+ if (!id) {
1455
+ return void 0;
1456
+ }
1457
+ return NOTICE_FONT_ENTRY_BY_ID[id];
1458
+ };
1459
+ var toFontFaceCss = (entry, sources) => sources.map(
1460
+ ({ weight, url }) => [
1461
+ "@font-face {",
1462
+ ` font-family: "${entry.cssFamily}";`,
1463
+ " font-style: normal;",
1464
+ ` font-weight: ${weight};`,
1465
+ // `swap`, never the `auto` default: auto gives most browsers a ~3s block
1466
+ // period with INVISIBLE text, which is unacceptable for a consent notice.
1467
+ " font-display: swap;",
1468
+ // `local()` still leads: the bundled copy is Latin + Latin-Extended only,
1469
+ // so a visitor's own installation covers more scripts than ours does.
1470
+ ` src: local("${entry.cssFamily}"),`,
1471
+ // Quoted url(): a data URI carries `,` and `;`, which are hostile to an
1472
+ // unquoted url token. Base64 never contains a double quote.
1473
+ ` url("${url}") format("woff2");`,
1474
+ "}"
1475
+ ].join("\n")
1476
+ ).join("\n\n");
1477
+ var fontSourceLoads = /* @__PURE__ */ new Map();
1478
+ var loadFontSources = (entry, importSources) => {
1479
+ const pending = fontSourceLoads.get(entry.id);
1480
+ if (pending) {
1481
+ return pending;
1482
+ }
1483
+ const load = importSources().then((module) => module.NOTICE_FONT_SOURCES).catch((error) => {
1484
+ fontSourceLoads.delete(entry.id);
1485
+ throw error;
1486
+ });
1487
+ fontSourceLoads.set(entry.id, load);
1488
+ return load;
1489
+ };
1490
+ var injectedFontFaceIds = /* @__PURE__ */ new Set();
1491
+ var injectFontFace = (entry, sources) => {
1492
+ if (injectedFontFaceIds.has(entry.id)) {
1493
+ return;
1494
+ }
1495
+ injectedFontFaceIds.add(entry.id);
1496
+ const styleId = `${NOTICE_FONT_FACE_STYLE_ID_PREFIX}${entry.slug}`;
1497
+ if (document.getElementById(styleId)) {
1498
+ return;
1499
+ }
1500
+ const style = document.createElement("style");
1501
+ style.id = styleId;
1502
+ style.textContent = toFontFaceCss(entry, sources);
1503
+ document.head.appendChild(style);
1504
+ };
1505
+ var loadNoticeWebfont = async (value, signal) => {
1506
+ if (typeof document === "undefined" || noticeFontOptions.disabled) {
1507
+ return;
1508
+ }
1509
+ if (signal == null ? void 0 : signal.aborted) {
1510
+ return;
1511
+ }
1512
+ const entry = findNoticeFontEntry(value);
1513
+ if (!entry || entry.source !== "webfont" || injectedFontFaceIds.has(entry.id)) {
1514
+ return;
1515
+ }
1516
+ const importSources = NOTICE_FONT_SOURCE_IMPORTS[entry.slug];
1517
+ if (!importSources) {
1518
+ return;
1519
+ }
1520
+ try {
1521
+ const sources = await loadFontSources(entry, importSources);
1522
+ if (signal == null ? void 0 : signal.aborted) {
1523
+ return;
1524
+ }
1525
+ injectFontFace(entry, sources);
1526
+ } catch (error) {
1527
+ console.error(NOTICE_FONT_LOAD_ERROR_MESSAGE, error);
1528
+ }
1529
+ };
1530
+
1531
+ // src/shared/useNoticeFont.ts
1532
+ var useNoticeFont = ({
1533
+ hostFont,
1534
+ noticeFont
1535
+ }) => {
1536
+ const fontFamily = useMemo(
1537
+ () => resolveNoticeFontFamily({ hostFont, noticeFont }),
1538
+ [hostFont, noticeFont]
1539
+ );
1540
+ useEffect(() => {
1541
+ injectNoticeFontStyles();
1542
+ }, []);
1543
+ useEffect(() => {
1544
+ const controller = new AbortController();
1545
+ void loadNoticeWebfont(fontFamily, controller.signal);
1546
+ return () => controller.abort();
1547
+ }, [fontFamily]);
1548
+ return fontFamily;
1549
+ };
1550
+
1318
1551
  // src/RedactoNoticeConsent/services/storage.ts
1319
1552
  var STORAGE_KEY = "redacto_consent_sdk_state";
1320
1553
  var STATE_EXPIRY_MS = 30 * 60 * 1e3;
@@ -1379,7 +1612,7 @@ var updateConsentState = (updates) => {
1379
1612
  };
1380
1613
 
1381
1614
  // src/RedactoNoticeConsent/RedactoNoticeConsent.tsx
1382
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
1615
+ import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1383
1616
  var PurposeItem = ({
1384
1617
  purpose,
1385
1618
  selectedPurposes,
@@ -1408,9 +1641,9 @@ var PurposeItem = ({
1408
1641
  }),
1409
1642
  [settings == null ? void 0 : settings.textColor]
1410
1643
  );
1411
- return /* @__PURE__ */ jsxs("div", { children: [
1412
- /* @__PURE__ */ jsxs("div", { style: styles4.optionItem, children: [
1413
- /* @__PURE__ */ jsxs(
1644
+ return /* @__PURE__ */ jsxs2("div", { children: [
1645
+ /* @__PURE__ */ jsxs2("div", { style: styles4.optionItem, children: [
1646
+ /* @__PURE__ */ jsxs2(
1414
1647
  "div",
1415
1648
  {
1416
1649
  style: styles4.optionLeft,
@@ -1431,7 +1664,7 @@ var PurposeItem = ({
1431
1664
  }
1432
1665
  },
1433
1666
  children: [
1434
- /* @__PURE__ */ jsx(
1667
+ /* @__PURE__ */ jsx3(
1435
1668
  "div",
1436
1669
  {
1437
1670
  style: {
@@ -1440,7 +1673,7 @@ var PurposeItem = ({
1440
1673
  justifyContent: "center",
1441
1674
  marginLeft: "5px"
1442
1675
  },
1443
- children: /* @__PURE__ */ jsx(
1676
+ children: /* @__PURE__ */ jsx3(
1444
1677
  "svg",
1445
1678
  {
1446
1679
  width: "7",
@@ -1457,13 +1690,13 @@ var PurposeItem = ({
1457
1690
  transition: "transform 0.3s ease"
1458
1691
  },
1459
1692
  "aria-hidden": "true",
1460
- children: /* @__PURE__ */ jsx("path", { d: "M1 1L6 6L1 11" })
1693
+ children: /* @__PURE__ */ jsx3("path", { d: "M1 1L6 6L1 11" })
1461
1694
  }
1462
1695
  )
1463
1696
  }
1464
1697
  ),
1465
- /* @__PURE__ */ jsxs("div", { style: styles4.optionTextContainer, children: [
1466
- /* @__PURE__ */ jsx(
1698
+ /* @__PURE__ */ jsxs2("div", { style: styles4.optionTextContainer, children: [
1699
+ /* @__PURE__ */ jsxs2(
1467
1700
  "h2",
1468
1701
  {
1469
1702
  id: `purpose-name-${purpose.uuid}`,
@@ -1472,11 +1705,14 @@ var PurposeItem = ({
1472
1705
  ...responsiveStyles.optionTitle,
1473
1706
  ...headingStyle
1474
1707
  },
1475
- children: getTranslatedText(`purposes.name`, purpose.name, purpose.uuid)
1708
+ children: [
1709
+ getTranslatedText(`purposes.name`, purpose.name, purpose.uuid),
1710
+ hasRequiredDataElement(purpose) && /* @__PURE__ */ jsx3(RequiredMarker, {})
1711
+ ]
1476
1712
  },
1477
1713
  `purpose-name-${purpose.uuid}-${selectedLanguage}`
1478
1714
  ),
1479
- /* @__PURE__ */ jsx(
1715
+ /* @__PURE__ */ jsx3(
1480
1716
  "h3",
1481
1717
  {
1482
1718
  id: `purpose-description-${purpose.uuid}`,
@@ -1497,7 +1733,7 @@ var PurposeItem = ({
1497
1733
  ]
1498
1734
  }
1499
1735
  ),
1500
- !isAlreadyConsented && /* @__PURE__ */ jsx(
1736
+ !isAlreadyConsented && /* @__PURE__ */ jsx3(
1501
1737
  "input",
1502
1738
  {
1503
1739
  className: "redacto-checkbox-large",
@@ -1511,7 +1747,7 @@ var PurposeItem = ({
1511
1747
  )}`
1512
1748
  }
1513
1749
  ),
1514
- isAlreadyConsented && /* @__PURE__ */ jsx(
1750
+ isAlreadyConsented && /* @__PURE__ */ jsx3(
1515
1751
  "div",
1516
1752
  {
1517
1753
  style: {
@@ -1529,7 +1765,7 @@ var PurposeItem = ({
1529
1765
  purpose.name,
1530
1766
  purpose.uuid
1531
1767
  )}`,
1532
- children: /* @__PURE__ */ jsx(
1768
+ children: /* @__PURE__ */ jsx3(
1533
1769
  "svg",
1534
1770
  {
1535
1771
  width: "12",
@@ -1538,7 +1774,7 @@ var PurposeItem = ({
1538
1774
  fill: "none",
1539
1775
  xmlns: "http://www.w3.org/2000/svg",
1540
1776
  "aria-hidden": "true",
1541
- children: /* @__PURE__ */ jsx(
1777
+ children: /* @__PURE__ */ jsx3(
1542
1778
  "path",
1543
1779
  {
1544
1780
  d: "M4 6L5.5 7.5L8.5 4.5",
@@ -1553,17 +1789,17 @@ var PurposeItem = ({
1553
1789
  }
1554
1790
  )
1555
1791
  ] }),
1556
- !collapsedPurposes[purpose.uuid] && purpose.data_elements && purpose.data_elements.length > 0 && /* @__PURE__ */ jsx(
1792
+ !collapsedPurposes[purpose.uuid] && purpose.data_elements && purpose.data_elements.length > 0 && /* @__PURE__ */ jsx3(
1557
1793
  "div",
1558
1794
  {
1559
1795
  id: `purpose-${purpose.uuid}`,
1560
1796
  style: styles4.dataElementsContainer,
1561
- children: purpose.data_elements.map((dataElement) => /* @__PURE__ */ jsxs(
1797
+ children: purpose.data_elements.map((dataElement) => /* @__PURE__ */ jsxs2(
1562
1798
  "div",
1563
1799
  {
1564
1800
  style: styles4.dataElementItem,
1565
1801
  children: [
1566
- /* @__PURE__ */ jsxs(
1802
+ /* @__PURE__ */ jsxs2(
1567
1803
  "span",
1568
1804
  {
1569
1805
  id: `data-element-${purpose.uuid}-${dataElement.uuid}`,
@@ -1578,22 +1814,12 @@ var PurposeItem = ({
1578
1814
  dataElement.name,
1579
1815
  dataElement.uuid
1580
1816
  ),
1581
- dataElement.required && /* @__PURE__ */ jsx(
1582
- "span",
1583
- {
1584
- style: {
1585
- color: "red",
1586
- marginLeft: "4px"
1587
- },
1588
- "aria-label": "required",
1589
- children: "*"
1590
- }
1591
- )
1817
+ dataElement.required && /* @__PURE__ */ jsx3(RequiredMarker, {})
1592
1818
  ]
1593
1819
  },
1594
1820
  `data-element-${purpose.uuid}-${dataElement.uuid}-${selectedLanguage}`
1595
1821
  ),
1596
- !isAlreadyConsented && /* @__PURE__ */ jsx(
1822
+ !isAlreadyConsented && /* @__PURE__ */ jsx3(
1597
1823
  "input",
1598
1824
  {
1599
1825
  className: "redacto-checkbox-small",
@@ -1607,11 +1833,11 @@ var PurposeItem = ({
1607
1833
  )}${dataElement.required ? " (required)" : ""}`
1608
1834
  }
1609
1835
  ),
1610
- isAlreadyConsented && /* @__PURE__ */ jsx(Fragment, { children: (() => {
1836
+ isAlreadyConsented && /* @__PURE__ */ jsx3(Fragment2, { children: (() => {
1611
1837
  const combinedId = `${purpose.uuid}-${dataElement.uuid}`;
1612
1838
  const wasOriginallySelected = initialDataElementSelections[combinedId] || false;
1613
1839
  if (wasOriginallySelected) {
1614
- return /* @__PURE__ */ jsx(
1840
+ return /* @__PURE__ */ jsx3(
1615
1841
  "div",
1616
1842
  {
1617
1843
  style: {
@@ -1628,7 +1854,7 @@ var PurposeItem = ({
1628
1854
  dataElement.name,
1629
1855
  dataElement.uuid
1630
1856
  )}`,
1631
- children: /* @__PURE__ */ jsx(
1857
+ children: /* @__PURE__ */ jsx3(
1632
1858
  "svg",
1633
1859
  {
1634
1860
  width: "10",
@@ -1637,7 +1863,7 @@ var PurposeItem = ({
1637
1863
  fill: "none",
1638
1864
  xmlns: "http://www.w3.org/2000/svg",
1639
1865
  "aria-hidden": "true",
1640
- children: /* @__PURE__ */ jsx(
1866
+ children: /* @__PURE__ */ jsx3(
1641
1867
  "path",
1642
1868
  {
1643
1869
  d: "M3 5L4.5 6.5L7.5 3.5",
@@ -1652,7 +1878,7 @@ var PurposeItem = ({
1652
1878
  }
1653
1879
  );
1654
1880
  } else {
1655
- return /* @__PURE__ */ jsx(
1881
+ return /* @__PURE__ */ jsx3(
1656
1882
  "div",
1657
1883
  {
1658
1884
  style: {
@@ -1822,10 +2048,10 @@ var GuardianForm = ({
1822
2048
  };
1823
2049
  const selectedLabel = (_a = RELATIONSHIP_OPTIONS.find((o) => o.value === formData.guardianRelationship)) == null ? void 0 : _a.label;
1824
2050
  const hasError = Boolean(errors.guardianRelationship);
1825
- return /* @__PURE__ */ jsxs(Fragment, { children: [
1826
- /* @__PURE__ */ jsx("div", { style: { ...styles4.topSection, ...componentTextStyle }, children: /* @__PURE__ */ jsxs("div", { style: styles4.topLeft, children: [
1827
- /* @__PURE__ */ jsx("img", { style: styles4.logo, src: logoUrl, alt: "Logo" }),
1828
- /* @__PURE__ */ jsx(
2051
+ return /* @__PURE__ */ jsxs2(Fragment2, { children: [
2052
+ /* @__PURE__ */ jsx3("div", { style: { ...styles4.topSection, ...componentTextStyle }, children: /* @__PURE__ */ jsxs2("div", { style: styles4.topLeft, children: [
2053
+ /* @__PURE__ */ jsx3("img", { style: styles4.logo, src: logoUrl, alt: "Logo" }),
2054
+ /* @__PURE__ */ jsx3(
1829
2055
  "h2",
1830
2056
  {
1831
2057
  id: "guardian-form-title",
@@ -1840,7 +2066,7 @@ var GuardianForm = ({
1840
2066
  }
1841
2067
  )
1842
2068
  ] }) }),
1843
- /* @__PURE__ */ jsxs(
2069
+ /* @__PURE__ */ jsxs2(
1844
2070
  "div",
1845
2071
  {
1846
2072
  style: {
@@ -1849,7 +2075,7 @@ var GuardianForm = ({
1849
2075
  ...componentTextStyle
1850
2076
  },
1851
2077
  children: [
1852
- /* @__PURE__ */ jsx(
2078
+ /* @__PURE__ */ jsx3(
1853
2079
  "p",
1854
2080
  {
1855
2081
  style: {
@@ -1863,8 +2089,8 @@ var GuardianForm = ({
1863
2089
  children: "Since you are under the age of consent, a legal guardian must verify their identity via DigiLocker before you can proceed."
1864
2090
  }
1865
2091
  ),
1866
- /* @__PURE__ */ jsxs("div", { style: infoBannerStyle, children: [
1867
- /* @__PURE__ */ jsxs(
2092
+ /* @__PURE__ */ jsxs2("div", { style: infoBannerStyle, children: [
2093
+ /* @__PURE__ */ jsxs2(
1868
2094
  "svg",
1869
2095
  {
1870
2096
  width: "16",
@@ -1877,15 +2103,15 @@ var GuardianForm = ({
1877
2103
  strokeLinejoin: "round",
1878
2104
  style: { flexShrink: 0, marginTop: "1px" },
1879
2105
  children: [
1880
- /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
1881
- /* @__PURE__ */ jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
1882
- /* @__PURE__ */ jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
2106
+ /* @__PURE__ */ jsx3("circle", { cx: "12", cy: "12", r: "10" }),
2107
+ /* @__PURE__ */ jsx3("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
2108
+ /* @__PURE__ */ jsx3("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
1883
2109
  ]
1884
2110
  }
1885
2111
  ),
1886
- /* @__PURE__ */ jsx("span", { children: "The guardian's name will be matched against their DigiLocker identity document (e.g. Aadhaar). Please enter the name exactly as it appears on the document." })
2112
+ /* @__PURE__ */ jsx3("span", { children: "The guardian's name will be matched against their DigiLocker identity document (e.g. Aadhaar). Please enter the name exactly as it appears on the document." })
1887
2113
  ] }),
1888
- /* @__PURE__ */ jsxs(
2114
+ /* @__PURE__ */ jsxs2(
1889
2115
  "div",
1890
2116
  {
1891
2117
  style: {
@@ -1894,12 +2120,12 @@ var GuardianForm = ({
1894
2120
  gap: "14px"
1895
2121
  },
1896
2122
  children: [
1897
- /* @__PURE__ */ jsxs("div", { children: [
1898
- /* @__PURE__ */ jsxs("label", { htmlFor: "guardianName", style: labelStyle, children: [
2123
+ /* @__PURE__ */ jsxs2("div", { children: [
2124
+ /* @__PURE__ */ jsxs2("label", { htmlFor: "guardianName", style: labelStyle, children: [
1899
2125
  "Guardian's Full Name ",
1900
- /* @__PURE__ */ jsx("span", { style: { color: "#DC2626" }, children: "*" })
2126
+ /* @__PURE__ */ jsx3("span", { style: { color: "#DC2626" }, children: "*" })
1901
2127
  ] }),
1902
- /* @__PURE__ */ jsx(
2128
+ /* @__PURE__ */ jsx3(
1903
2129
  "input",
1904
2130
  {
1905
2131
  id: "guardianName",
@@ -1915,15 +2141,15 @@ var GuardianForm = ({
1915
2141
  "aria-describedby": "guardianName-hint"
1916
2142
  }
1917
2143
  ),
1918
- /* @__PURE__ */ jsx("p", { id: "guardianName-hint", style: hintStyle, children: "Enter the full name as per government ID (Aadhaar, PAN, etc.)" }),
1919
- errors.guardianName && /* @__PURE__ */ jsx("div", { style: errorStyle, role: "alert", children: errors.guardianName })
2144
+ /* @__PURE__ */ jsx3("p", { id: "guardianName-hint", style: hintStyle, children: "Enter the full name as per government ID (Aadhaar, PAN, etc.)" }),
2145
+ errors.guardianName && /* @__PURE__ */ jsx3("div", { style: errorStyle, role: "alert", children: errors.guardianName })
1920
2146
  ] }),
1921
- /* @__PURE__ */ jsxs("div", { children: [
1922
- /* @__PURE__ */ jsxs("label", { htmlFor: "guardianContact", style: labelStyle, children: [
2147
+ /* @__PURE__ */ jsxs2("div", { children: [
2148
+ /* @__PURE__ */ jsxs2("label", { htmlFor: "guardianContact", style: labelStyle, children: [
1923
2149
  "Guardian's Phone Number ",
1924
- /* @__PURE__ */ jsx("span", { style: { color: "#DC2626" }, children: "*" })
2150
+ /* @__PURE__ */ jsx3("span", { style: { color: "#DC2626" }, children: "*" })
1925
2151
  ] }),
1926
- /* @__PURE__ */ jsx(
2152
+ /* @__PURE__ */ jsx3(
1927
2153
  "input",
1928
2154
  {
1929
2155
  id: "guardianContact",
@@ -1940,15 +2166,15 @@ var GuardianForm = ({
1940
2166
  "aria-describedby": "guardianContact-hint"
1941
2167
  }
1942
2168
  ),
1943
- /* @__PURE__ */ jsx("p", { id: "guardianContact-hint", style: hintStyle, children: "Mobile number linked to guardian's Aadhaar" }),
1944
- errors.guardianContact && /* @__PURE__ */ jsx("div", { style: errorStyle, role: "alert", children: errors.guardianContact })
2169
+ /* @__PURE__ */ jsx3("p", { id: "guardianContact-hint", style: hintStyle, children: "Mobile number linked to guardian's Aadhaar" }),
2170
+ errors.guardianContact && /* @__PURE__ */ jsx3("div", { style: errorStyle, role: "alert", children: errors.guardianContact })
1945
2171
  ] }),
1946
- /* @__PURE__ */ jsxs("div", { ref: dropdownRef, style: { position: "relative" }, children: [
1947
- /* @__PURE__ */ jsxs("label", { id: "guardianRelationship-label", style: labelStyle, children: [
2172
+ /* @__PURE__ */ jsxs2("div", { ref: dropdownRef, style: { position: "relative" }, children: [
2173
+ /* @__PURE__ */ jsxs2("label", { id: "guardianRelationship-label", style: labelStyle, children: [
1948
2174
  "Relationship ",
1949
- /* @__PURE__ */ jsx("span", { style: { color: "#DC2626" }, children: "*" })
2175
+ /* @__PURE__ */ jsx3("span", { style: { color: "#DC2626" }, children: "*" })
1950
2176
  ] }),
1951
- /* @__PURE__ */ jsxs(
2177
+ /* @__PURE__ */ jsxs2(
1952
2178
  "div",
1953
2179
  {
1954
2180
  role: "combobox",
@@ -1976,8 +2202,8 @@ var GuardianForm = ({
1976
2202
  transition: "border-color 0.15s, box-shadow 0.15s"
1977
2203
  },
1978
2204
  children: [
1979
- /* @__PURE__ */ jsx("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: selectedLabel || "Select relationship" }),
1980
- /* @__PURE__ */ jsx(
2205
+ /* @__PURE__ */ jsx3("span", { style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: selectedLabel || "Select relationship" }),
2206
+ /* @__PURE__ */ jsx3(
1981
2207
  "svg",
1982
2208
  {
1983
2209
  width: "14",
@@ -1994,13 +2220,13 @@ var GuardianForm = ({
1994
2220
  transform: isDropdownOpen ? "rotate(180deg)" : "rotate(0deg)",
1995
2221
  transition: "transform 0.2s"
1996
2222
  },
1997
- children: /* @__PURE__ */ jsx("polyline", { points: "6 9 12 15 18 9" })
2223
+ children: /* @__PURE__ */ jsx3("polyline", { points: "6 9 12 15 18 9" })
1998
2224
  }
1999
2225
  )
2000
2226
  ]
2001
2227
  }
2002
2228
  ),
2003
- isDropdownOpen && /* @__PURE__ */ jsx(
2229
+ isDropdownOpen && /* @__PURE__ */ jsx3(
2004
2230
  "div",
2005
2231
  {
2006
2232
  ref: optionsRef,
@@ -2027,7 +2253,7 @@ var GuardianForm = ({
2027
2253
  const isSelected = formData.guardianRelationship === option.value;
2028
2254
  const isFocused = focusedIndex === index;
2029
2255
  const accentColor = ((_b2 = (_a2 = settings == null ? void 0 : settings.button) == null ? void 0 : _a2.accept) == null ? void 0 : _b2.backgroundColor) || "#3b82f6";
2030
- return /* @__PURE__ */ jsxs(
2256
+ return /* @__PURE__ */ jsxs2(
2031
2257
  "div",
2032
2258
  {
2033
2259
  id: `guardianRelationship-option-${index}`,
@@ -2047,8 +2273,8 @@ var GuardianForm = ({
2047
2273
  transition: "background-color 0.1s"
2048
2274
  },
2049
2275
  children: [
2050
- /* @__PURE__ */ jsx("span", { children: option.label }),
2051
- isSelected && /* @__PURE__ */ jsx(
2276
+ /* @__PURE__ */ jsx3("span", { children: option.label }),
2277
+ isSelected && /* @__PURE__ */ jsx3(
2052
2278
  "svg",
2053
2279
  {
2054
2280
  width: "14",
@@ -2060,7 +2286,7 @@ var GuardianForm = ({
2060
2286
  strokeLinecap: "round",
2061
2287
  strokeLinejoin: "round",
2062
2288
  style: { flexShrink: 0 },
2063
- children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" })
2289
+ children: /* @__PURE__ */ jsx3("polyline", { points: "20 6 9 17 4 12" })
2064
2290
  }
2065
2291
  )
2066
2292
  ]
@@ -2070,12 +2296,12 @@ var GuardianForm = ({
2070
2296
  })
2071
2297
  }
2072
2298
  ),
2073
- errors.guardianRelationship && /* @__PURE__ */ jsx("div", { style: errorStyle, role: "alert", children: errors.guardianRelationship })
2299
+ errors.guardianRelationship && /* @__PURE__ */ jsx3("div", { style: errorStyle, role: "alert", children: errors.guardianRelationship })
2074
2300
  ] })
2075
2301
  ]
2076
2302
  }
2077
2303
  ),
2078
- errors.general && /* @__PURE__ */ jsx(
2304
+ errors.general && /* @__PURE__ */ jsx3(
2079
2305
  "div",
2080
2306
  {
2081
2307
  role: "alert",
@@ -2095,7 +2321,7 @@ var GuardianForm = ({
2095
2321
  ]
2096
2322
  }
2097
2323
  ),
2098
- /* @__PURE__ */ jsxs(
2324
+ /* @__PURE__ */ jsxs2(
2099
2325
  "div",
2100
2326
  {
2101
2327
  style: {
@@ -2105,7 +2331,7 @@ var GuardianForm = ({
2105
2331
  paddingTop: "12px"
2106
2332
  },
2107
2333
  children: [
2108
- /* @__PURE__ */ jsx(
2334
+ /* @__PURE__ */ jsx3(
2109
2335
  "button",
2110
2336
  {
2111
2337
  style: {
@@ -2121,7 +2347,7 @@ var GuardianForm = ({
2121
2347
  children: isSubmitting ? "Verifying..." : "Verify via DigiLocker"
2122
2348
  }
2123
2349
  ),
2124
- /* @__PURE__ */ jsx(
2350
+ /* @__PURE__ */ jsx3(
2125
2351
  "button",
2126
2352
  {
2127
2353
  style: {
@@ -2190,10 +2416,10 @@ var VerificationScreen = ({
2190
2416
  animation: "spin 1s linear infinite",
2191
2417
  margin: "24px auto"
2192
2418
  };
2193
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2194
- /* @__PURE__ */ jsx("div", { style: { ...styles4.topSection, ...componentTextStyle }, children: /* @__PURE__ */ jsxs("div", { style: styles4.topLeft, children: [
2195
- /* @__PURE__ */ jsx("img", { style: styles4.logo, src: logoUrl, alt: "Logo" }),
2196
- /* @__PURE__ */ jsx(
2419
+ return /* @__PURE__ */ jsxs2(Fragment2, { children: [
2420
+ /* @__PURE__ */ jsx3("div", { style: { ...styles4.topSection, ...componentTextStyle }, children: /* @__PURE__ */ jsxs2("div", { style: styles4.topLeft, children: [
2421
+ /* @__PURE__ */ jsx3("img", { style: styles4.logo, src: logoUrl, alt: "Logo" }),
2422
+ /* @__PURE__ */ jsx3(
2197
2423
  "h2",
2198
2424
  {
2199
2425
  id: "verification-title",
@@ -2208,7 +2434,7 @@ var VerificationScreen = ({
2208
2434
  }
2209
2435
  )
2210
2436
  ] }) }),
2211
- /* @__PURE__ */ jsxs(
2437
+ /* @__PURE__ */ jsxs2(
2212
2438
  "div",
2213
2439
  {
2214
2440
  style: {
@@ -2218,7 +2444,7 @@ var VerificationScreen = ({
2218
2444
  textAlign: "center"
2219
2445
  },
2220
2446
  children: [
2221
- isVerificationComplete && !error ? /* @__PURE__ */ jsxs(
2447
+ isVerificationComplete && !error ? /* @__PURE__ */ jsxs2(
2222
2448
  "div",
2223
2449
  {
2224
2450
  style: {
@@ -2229,7 +2455,7 @@ var VerificationScreen = ({
2229
2455
  flex: 1
2230
2456
  },
2231
2457
  children: [
2232
- /* @__PURE__ */ jsx(
2458
+ /* @__PURE__ */ jsx3(
2233
2459
  "div",
2234
2460
  {
2235
2461
  style: {
@@ -2241,7 +2467,7 @@ var VerificationScreen = ({
2241
2467
  alignItems: "center",
2242
2468
  justifyContent: "center"
2243
2469
  },
2244
- children: /* @__PURE__ */ jsx(
2470
+ children: /* @__PURE__ */ jsx3(
2245
2471
  "svg",
2246
2472
  {
2247
2473
  width: "32",
@@ -2252,12 +2478,12 @@ var VerificationScreen = ({
2252
2478
  strokeWidth: "2",
2253
2479
  strokeLinecap: "round",
2254
2480
  strokeLinejoin: "round",
2255
- children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" })
2481
+ children: /* @__PURE__ */ jsx3("polyline", { points: "20 6 9 17 4 12" })
2256
2482
  }
2257
2483
  )
2258
2484
  }
2259
2485
  ),
2260
- /* @__PURE__ */ jsx(
2486
+ /* @__PURE__ */ jsx3(
2261
2487
  "p",
2262
2488
  {
2263
2489
  style: {
@@ -2273,12 +2499,12 @@ var VerificationScreen = ({
2273
2499
  )
2274
2500
  ]
2275
2501
  }
2276
- ) : (isInitiating || isPolling) && !error ? /* @__PURE__ */ jsxs(Fragment, { children: [
2277
- /* @__PURE__ */ jsx("div", { style: spinnerStyle }),
2278
- /* @__PURE__ */ jsx("div", { style: statusStyle, children: isInitiating ? "Opening DigiLocker in a new tab..." : "Please complete the verification in the DigiLocker tab. This page will update automatically when verification is complete." })
2502
+ ) : (isInitiating || isPolling) && !error ? /* @__PURE__ */ jsxs2(Fragment2, { children: [
2503
+ /* @__PURE__ */ jsx3("div", { style: spinnerStyle }),
2504
+ /* @__PURE__ */ jsx3("div", { style: statusStyle, children: isInitiating ? "Opening DigiLocker in a new tab..." : "Please complete the verification in the DigiLocker tab. This page will update automatically when verification is complete." })
2279
2505
  ] }) : null,
2280
- error && /* @__PURE__ */ jsxs(Fragment, { children: [
2281
- /* @__PURE__ */ jsx(
2506
+ error && /* @__PURE__ */ jsxs2(Fragment2, { children: [
2507
+ /* @__PURE__ */ jsx3(
2282
2508
  "div",
2283
2509
  {
2284
2510
  style: {
@@ -2291,7 +2517,7 @@ var VerificationScreen = ({
2291
2517
  justifyContent: "center",
2292
2518
  margin: "24px auto"
2293
2519
  },
2294
- children: /* @__PURE__ */ jsxs(
2520
+ children: /* @__PURE__ */ jsxs2(
2295
2521
  "svg",
2296
2522
  {
2297
2523
  width: "32",
@@ -2303,14 +2529,14 @@ var VerificationScreen = ({
2303
2529
  strokeLinecap: "round",
2304
2530
  strokeLinejoin: "round",
2305
2531
  children: [
2306
- /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
2307
- /* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
2532
+ /* @__PURE__ */ jsx3("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
2533
+ /* @__PURE__ */ jsx3("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
2308
2534
  ]
2309
2535
  }
2310
2536
  )
2311
2537
  }
2312
2538
  ),
2313
- /* @__PURE__ */ jsx(
2539
+ /* @__PURE__ */ jsx3(
2314
2540
  "p",
2315
2541
  {
2316
2542
  style: {
@@ -2324,12 +2550,12 @@ var VerificationScreen = ({
2324
2550
  children: "Verification failed"
2325
2551
  }
2326
2552
  ),
2327
- /* @__PURE__ */ jsx("div", { style: errorStyle, children: error })
2553
+ /* @__PURE__ */ jsx3("div", { style: errorStyle, children: error })
2328
2554
  ] })
2329
2555
  ]
2330
2556
  }
2331
2557
  ),
2332
- isAutoTransitioning ? null : /* @__PURE__ */ jsx(
2558
+ isAutoTransitioning ? null : /* @__PURE__ */ jsx3(
2333
2559
  "div",
2334
2560
  {
2335
2561
  style: {
@@ -2341,7 +2567,7 @@ var VerificationScreen = ({
2341
2567
  gap: "12px",
2342
2568
  justifyContent: "center"
2343
2569
  },
2344
- children: isVerificationComplete && !error ? /* @__PURE__ */ jsx(
2570
+ children: isVerificationComplete && !error ? /* @__PURE__ */ jsx3(
2345
2571
  "button",
2346
2572
  {
2347
2573
  style: {
@@ -2354,7 +2580,7 @@ var VerificationScreen = ({
2354
2580
  "aria-label": "Continue to consent form",
2355
2581
  children: "Continue"
2356
2582
  }
2357
- ) : error && canRetry ? /* @__PURE__ */ jsx(
2583
+ ) : error && canRetry ? /* @__PURE__ */ jsx3(
2358
2584
  "button",
2359
2585
  {
2360
2586
  style: {
@@ -2368,7 +2594,7 @@ var VerificationScreen = ({
2368
2594
  "aria-label": errorCode === "GUARDIAN_UNDER_18" ? "Change guardian details" : "Try verification again",
2369
2595
  children: errorCode === "GUARDIAN_UNDER_18" ? "Change Guardian" : "Try Again"
2370
2596
  }
2371
- ) : error ? /* @__PURE__ */ jsx(
2597
+ ) : error ? /* @__PURE__ */ jsx3(
2372
2598
  "button",
2373
2599
  {
2374
2600
  style: {
@@ -2382,7 +2608,7 @@ var VerificationScreen = ({
2382
2608
  "aria-label": "Go back",
2383
2609
  children: "Go Back"
2384
2610
  }
2385
- ) : /* @__PURE__ */ jsx(
2611
+ ) : /* @__PURE__ */ jsx3(
2386
2612
  "button",
2387
2613
  {
2388
2614
  style: {
@@ -2414,11 +2640,11 @@ var AgeVerification = ({
2414
2640
  logoUrl,
2415
2641
  isMobile
2416
2642
  }) => {
2417
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2418
- /* @__PURE__ */ jsxs("div", { style: { ...styles4.topSection, ...componentTextStyle }, children: [
2419
- /* @__PURE__ */ jsxs("div", { style: styles4.topLeft, children: [
2420
- /* @__PURE__ */ jsx("img", { style: styles4.logo, src: logoUrl, alt: "Redacto Logo" }),
2421
- /* @__PURE__ */ jsx(
2643
+ return /* @__PURE__ */ jsxs2(Fragment2, { children: [
2644
+ /* @__PURE__ */ jsxs2("div", { style: { ...styles4.topSection, ...componentTextStyle }, children: [
2645
+ /* @__PURE__ */ jsxs2("div", { style: styles4.topLeft, children: [
2646
+ /* @__PURE__ */ jsx3("img", { style: styles4.logo, src: logoUrl, alt: "Redacto Logo" }),
2647
+ /* @__PURE__ */ jsx3(
2422
2648
  "h2",
2423
2649
  {
2424
2650
  id: "age-verification-title",
@@ -2431,7 +2657,7 @@ var AgeVerification = ({
2431
2657
  }
2432
2658
  )
2433
2659
  ] }),
2434
- /* @__PURE__ */ jsx(
2660
+ /* @__PURE__ */ jsx3(
2435
2661
  "button",
2436
2662
  {
2437
2663
  onClick: onClose,
@@ -2446,7 +2672,7 @@ var AgeVerification = ({
2446
2672
  justifyContent: "center"
2447
2673
  },
2448
2674
  "aria-label": "Close modal",
2449
- children: /* @__PURE__ */ jsx(
2675
+ children: /* @__PURE__ */ jsx3(
2450
2676
  "svg",
2451
2677
  {
2452
2678
  width: isMobile ? "18" : "20",
@@ -2455,7 +2681,7 @@ var AgeVerification = ({
2455
2681
  fill: "none",
2456
2682
  xmlns: "http://www.w3.org/2000/svg",
2457
2683
  "aria-hidden": "true",
2458
- children: /* @__PURE__ */ jsx(
2684
+ children: /* @__PURE__ */ jsx3(
2459
2685
  "path",
2460
2686
  {
2461
2687
  d: "M15 5L5 15M5 5L15 15",
@@ -2470,7 +2696,7 @@ var AgeVerification = ({
2470
2696
  }
2471
2697
  )
2472
2698
  ] }),
2473
- /* @__PURE__ */ jsxs(
2699
+ /* @__PURE__ */ jsxs2(
2474
2700
  "div",
2475
2701
  {
2476
2702
  style: {
@@ -2479,7 +2705,7 @@ var AgeVerification = ({
2479
2705
  ...componentTextStyle
2480
2706
  },
2481
2707
  children: [
2482
- /* @__PURE__ */ jsx(
2708
+ /* @__PURE__ */ jsx3(
2483
2709
  "p",
2484
2710
  {
2485
2711
  style: {
@@ -2491,7 +2717,7 @@ var AgeVerification = ({
2491
2717
  children: "To proceed with this consent form, we need to verify your age."
2492
2718
  }
2493
2719
  ),
2494
- /* @__PURE__ */ jsx(
2720
+ /* @__PURE__ */ jsx3(
2495
2721
  "p",
2496
2722
  {
2497
2723
  style: {
@@ -2506,7 +2732,7 @@ var AgeVerification = ({
2506
2732
  ]
2507
2733
  }
2508
2734
  ),
2509
- /* @__PURE__ */ jsxs(
2735
+ /* @__PURE__ */ jsxs2(
2510
2736
  "div",
2511
2737
  {
2512
2738
  style: {
@@ -2515,7 +2741,7 @@ var AgeVerification = ({
2515
2741
  ...componentTextStyle
2516
2742
  },
2517
2743
  children: [
2518
- /* @__PURE__ */ jsx(
2744
+ /* @__PURE__ */ jsx3(
2519
2745
  "button",
2520
2746
  {
2521
2747
  style: {
@@ -2530,7 +2756,7 @@ var AgeVerification = ({
2530
2756
  children: "Yes, I am 18 or older"
2531
2757
  }
2532
2758
  ),
2533
- /* @__PURE__ */ jsx(
2759
+ /* @__PURE__ */ jsx3(
2534
2760
  "button",
2535
2761
  {
2536
2762
  style: {
@@ -2577,7 +2803,7 @@ var RedactoNoticeConsent = ({
2577
2803
  includeFullyConsentedData = false,
2578
2804
  reviewModeButtonText = "Continue"
2579
2805
  }) => {
2580
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
2806
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
2581
2807
  const sandboxParams = useMemo2(
2582
2808
  () => ({
2583
2809
  token,
@@ -2616,7 +2842,7 @@ var RedactoNoticeConsent = ({
2616
2842
  ucic
2617
2843
  ]);
2618
2844
  if (propValidationError) {
2619
- return /* @__PURE__ */ jsxs(
2845
+ return /* @__PURE__ */ jsxs2(
2620
2846
  "div",
2621
2847
  {
2622
2848
  style: {
@@ -2627,9 +2853,9 @@ var RedactoNoticeConsent = ({
2627
2853
  color: "#c33"
2628
2854
  },
2629
2855
  children: [
2630
- /* @__PURE__ */ jsx("h3", { children: "Configuration Error" }),
2631
- /* @__PURE__ */ jsx("p", { children: propValidationError }),
2632
- /* @__PURE__ */ jsx("p", { children: "Please check your component props and try again." })
2856
+ /* @__PURE__ */ jsx3("h3", { children: "Configuration Error" }),
2857
+ /* @__PURE__ */ jsx3("p", { children: propValidationError }),
2858
+ /* @__PURE__ */ jsx3("p", { children: "Please check your component props and try again." })
2633
2859
  ]
2634
2860
  }
2635
2861
  );
@@ -2806,7 +3032,7 @@ var RedactoNoticeConsent = ({
2806
3032
  if (!content) return false;
2807
3033
  return content.purposes.every((purpose) => {
2808
3034
  const requiredElements = purpose.data_elements.filter(
2809
- (element) => element.required
3035
+ (element) => element.required && element.enabled
2810
3036
  );
2811
3037
  return requiredElements.every(
2812
3038
  (element) => selectedDataElements[`${purpose.uuid}-${element.uuid}`]
@@ -3010,12 +3236,18 @@ var RedactoNoticeConsent = ({
3010
3236
  )
3011
3237
  } : null;
3012
3238
  setCategorizedPurposes(newCategorizedPurposes);
3239
+ const preselection = buildPreselection(
3240
+ activeConfig.purposes,
3241
+ resolvePurposePreselection(activeConfig.purpose_preselection)
3242
+ );
3013
3243
  const initialPurposeState = activeConfig.purposes.reduce(
3014
3244
  (acc, purpose) => {
3015
- if (purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]) {
3016
- acc[purpose.uuid] = purposeSelections[purpose.uuid].selected;
3245
+ var _a3;
3246
+ const recorded = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid];
3247
+ if (hasRecordedPurposeState(recorded)) {
3248
+ acc[purpose.uuid] = recorded.selected;
3017
3249
  } else {
3018
- acc[purpose.uuid] = false;
3250
+ acc[purpose.uuid] = (_a3 = preselection.selectedPurposes[purpose.uuid]) != null ? _a3 : false;
3019
3251
  }
3020
3252
  return acc;
3021
3253
  },
@@ -3024,13 +3256,18 @@ var RedactoNoticeConsent = ({
3024
3256
  setSelectedPurposes(initialPurposeState);
3025
3257
  const initialDataElementState = activeConfig.purposes.reduce(
3026
3258
  (acc, purpose) => {
3259
+ const hasRecordedSelection = hasRecordedPurposeState(
3260
+ purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]
3261
+ );
3027
3262
  purpose.data_elements.forEach((element) => {
3028
- var _a3, _b2;
3263
+ var _a3, _b2, _c2;
3029
3264
  const combinedId = `${purpose.uuid}-${element.uuid}`;
3030
3265
  if ((_b2 = (_a3 = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]) == null ? void 0 : _a3.data_elements) == null ? void 0 : _b2[element.uuid]) {
3031
3266
  acc[combinedId] = purposeSelections[purpose.uuid].data_elements[element.uuid].selected;
3032
- } else {
3267
+ } else if (hasRecordedSelection) {
3033
3268
  acc[combinedId] = false;
3269
+ } else {
3270
+ acc[combinedId] = (_c2 = preselection.selectedDataElements[combinedId]) != null ? _c2 : false;
3034
3271
  }
3035
3272
  });
3036
3273
  return acc;
@@ -3188,7 +3425,7 @@ var RedactoNoticeConsent = ({
3188
3425
  return newState;
3189
3426
  });
3190
3427
  };
3191
- const handleAccept = async () => {
3428
+ const handleAccept = async (mode = "selected") => {
3192
3429
  const submitController = new AbortController();
3193
3430
  try {
3194
3431
  if (isMinorFlow && !verificationReference) {
@@ -3199,6 +3436,14 @@ var RedactoNoticeConsent = ({
3199
3436
  setIsSubmitting(true);
3200
3437
  setErrorMessage(null);
3201
3438
  if (content) {
3439
+ const selection = buildSelectionForMode(content.purposes, mode, {
3440
+ selectedPurposes,
3441
+ selectedDataElements
3442
+ });
3443
+ if (mode !== "selected") {
3444
+ setSelectedPurposes(selection.selectedPurposes);
3445
+ setSelectedDataElements(selection.selectedDataElements);
3446
+ }
3202
3447
  await submitConsentEvent({
3203
3448
  accessToken,
3204
3449
  baseUrl,
@@ -3208,11 +3453,11 @@ var RedactoNoticeConsent = ({
3208
3453
  const isAlreadyConsented = (categorizedPurposes == null ? void 0 : categorizedPurposes.alreadyConsented.some(
3209
3454
  (p) => p.uuid === purpose.uuid
3210
3455
  )) || false;
3211
- let purposeSelected = selectedPurposes[purpose.uuid] || false;
3212
- if (isAlreadyConsented) {
3456
+ let purposeSelected = selection.selectedPurposes[purpose.uuid] || false;
3457
+ if (mode === "selected" && isAlreadyConsented) {
3213
3458
  const wasModified = purpose.data_elements.some((element) => {
3214
3459
  const combinedId = `${purpose.uuid}-${element.uuid}`;
3215
- const currentSelection = selectedDataElements[combinedId] || false;
3460
+ const currentSelection = selection.selectedDataElements[combinedId] || false;
3216
3461
  const initialSelection = initialDataElementSelections[combinedId] || false;
3217
3462
  return currentSelection !== initialSelection;
3218
3463
  });
@@ -3225,7 +3470,7 @@ var RedactoNoticeConsent = ({
3225
3470
  selected: purposeSelected,
3226
3471
  data_elements: purpose.data_elements.map((element) => ({
3227
3472
  ...element,
3228
- selected: element.required ? true : selectedDataElements[`${purpose.uuid}-${element.uuid}`] || false
3473
+ selected: element.required ? true : selection.selectedDataElements[`${purpose.uuid}-${element.uuid}`] || false
3229
3474
  }))
3230
3475
  };
3231
3476
  }),
@@ -3743,6 +3988,9 @@ var RedactoNoticeConsent = ({
3743
3988
  }
3744
3989
  });
3745
3990
  }
3991
+ if (ttsAudioUrls.accept_all_button_text_audio_url) {
3992
+ sequence.push(ttsAudioUrls.accept_all_button_text_audio_url);
3993
+ }
3746
3994
  if (ttsAudioUrls.confirm_button_text_audio_url) {
3747
3995
  sequence.push(ttsAudioUrls.confirm_button_text_audio_url);
3748
3996
  }
@@ -3804,11 +4052,14 @@ var RedactoNoticeConsent = ({
3804
4052
  }
3805
4053
  });
3806
4054
  }
4055
+ if (ttsAudioUrls.accept_all_button_text_audio_url) {
4056
+ elementIds.push(ACCEPT_ALL_BUTTON_ID);
4057
+ }
3807
4058
  if (ttsAudioUrls.confirm_button_text_audio_url) {
3808
- elementIds.push("confirm-button-text");
4059
+ elementIds.push(ACCEPT_SELECTED_BUTTON_ID);
3809
4060
  }
3810
4061
  if (ttsAudioUrls.decline_button_text_audio_url) {
3811
- elementIds.push("decline-button-text");
4062
+ elementIds.push(DECLINE_BUTTON_ID);
3812
4063
  }
3813
4064
  return elementIds;
3814
4065
  }, [ttsAudioUrls, content, categorizedPurposes]);
@@ -3992,30 +4243,52 @@ var RedactoNoticeConsent = ({
3992
4243
  const buttonStyle = {
3993
4244
  borderRadius: (settings == null ? void 0 : settings.borderRadius) || "8px"
3994
4245
  };
3995
- const acceptButtonStyle = {
4246
+ const acceptAllButtonStyle = {
4247
+ ...buttonStyle,
4248
+ backgroundColor: ((_b = (_a = settings == null ? void 0 : settings.button) == null ? void 0 : _a.acceptAll) == null ? void 0 : _b.backgroundColor) || ((_d = (_c = settings == null ? void 0 : settings.button) == null ? void 0 : _c.accept) == null ? void 0 : _d.backgroundColor) || (content == null ? void 0 : content.primary_color) || "#4f87ff",
4249
+ color: ((_f = (_e = settings == null ? void 0 : settings.button) == null ? void 0 : _e.acceptAll) == null ? void 0 : _f.textColor) || ((_h = (_g = settings == null ? void 0 : settings.button) == null ? void 0 : _g.accept) == null ? void 0 : _h.textColor) || "#ffffff"
4250
+ };
4251
+ const acceptSelectedButtonStyle = {
3996
4252
  ...buttonStyle,
3997
- backgroundColor: ((_b = (_a = settings == null ? void 0 : settings.button) == null ? void 0 : _a.accept) == null ? void 0 : _b.backgroundColor) || (content == null ? void 0 : content.primary_color) || "#4f87ff",
3998
- color: ((_d = (_c = settings == null ? void 0 : settings.button) == null ? void 0 : _c.accept) == null ? void 0 : _d.textColor) || "#ffffff"
4253
+ backgroundColor: "#ffffff",
4254
+ color: ((_j = (_i = settings == null ? void 0 : settings.button) == null ? void 0 : _i.accept) == null ? void 0 : _j.backgroundColor) || (content == null ? void 0 : content.primary_color) || "#4f87ff",
4255
+ borderColor: ((_l = (_k = settings == null ? void 0 : settings.button) == null ? void 0 : _k.accept) == null ? void 0 : _l.backgroundColor) || (content == null ? void 0 : content.primary_color) || "#4f87ff"
3999
4256
  };
4000
4257
  const declineButtonStyle = {
4001
4258
  ...buttonStyle,
4002
- backgroundColor: ((_f = (_e = settings == null ? void 0 : settings.button) == null ? void 0 : _e.decline) == null ? void 0 : _f.backgroundColor) || "#ffffff",
4003
- color: ((_h = (_g = settings == null ? void 0 : settings.button) == null ? void 0 : _g.decline) == null ? void 0 : _h.textColor) || "#000000",
4259
+ backgroundColor: ((_n = (_m = settings == null ? void 0 : settings.button) == null ? void 0 : _m.decline) == null ? void 0 : _n.backgroundColor) || "#ffffff",
4260
+ color: ((_p = (_o = settings == null ? void 0 : settings.button) == null ? void 0 : _o.decline) == null ? void 0 : _p.textColor) || "#000000",
4004
4261
  borderColor: (settings == null ? void 0 : settings.borderColor) || "#d0d5dd"
4005
4262
  };
4263
+ const actionLabels = {
4264
+ acceptAll: getTranslatedText(
4265
+ "accept_all_button_text",
4266
+ (content == null ? void 0 : content.accept_all_button_text) || DEFAULT_ACCEPT_ALL_BUTTON_TEXT
4267
+ ),
4268
+ acceptSelected: getTranslatedText(
4269
+ "confirm_button_text",
4270
+ (content == null ? void 0 : content.confirm_button_text) || DEFAULT_ACCEPT_SELECTED_BUTTON_TEXT
4271
+ ),
4272
+ decline: getTranslatedText(
4273
+ "decline_button_text",
4274
+ (content == null ? void 0 : content.decline_button_text) || DEFAULT_DECLINE_BUTTON_TEXT
4275
+ )
4276
+ };
4277
+ const handleAcceptAll = () => handleAccept("all");
4278
+ const handleAcceptSelected = () => handleAccept("selected");
4006
4279
  const linkStyle = {
4007
4280
  color: (settings == null ? void 0 : settings.link) || (content == null ? void 0 : content.secondary_color) || "#4f87ff"
4008
4281
  };
4009
4282
  const languageSelectorStyle = {
4010
4283
  borderRadius: (settings == null ? void 0 : settings.borderRadius) || "8px",
4011
4284
  borderColor: (settings == null ? void 0 : settings.borderColor) || "#d0d5dd",
4012
- backgroundColor: ((_j = (_i = settings == null ? void 0 : settings.button) == null ? void 0 : _i.language) == null ? void 0 : _j.backgroundColor) || "#ffffff",
4013
- color: ((_l = (_k = settings == null ? void 0 : settings.button) == null ? void 0 : _k.language) == null ? void 0 : _l.textColor) || "#344054"
4285
+ backgroundColor: ((_r = (_q = settings == null ? void 0 : settings.button) == null ? void 0 : _q.language) == null ? void 0 : _r.backgroundColor) || "#ffffff",
4286
+ color: ((_t = (_s = settings == null ? void 0 : settings.button) == null ? void 0 : _s.language) == null ? void 0 : _t.textColor) || "#344054"
4014
4287
  };
4015
4288
  const selectedLanguageItemStyle = {
4016
4289
  ...languageSelectorStyle,
4017
- backgroundColor: ((_n = (_m = settings == null ? void 0 : settings.button) == null ? void 0 : _m.language) == null ? void 0 : _n.selectedBackgroundColor) || "#f3f4f6",
4018
- color: ((_p = (_o = settings == null ? void 0 : settings.button) == null ? void 0 : _o.language) == null ? void 0 : _p.selectedTextColor) || "#344054",
4290
+ backgroundColor: ((_v = (_u = settings == null ? void 0 : settings.button) == null ? void 0 : _u.language) == null ? void 0 : _v.selectedBackgroundColor) || "#f3f4f6",
4291
+ color: ((_x = (_w = settings == null ? void 0 : settings.button) == null ? void 0 : _w.language) == null ? void 0 : _x.selectedTextColor) || "#344054",
4019
4292
  fontWeight: 600
4020
4293
  };
4021
4294
  const handleCloseError = () => {
@@ -4129,8 +4402,8 @@ var RedactoNoticeConsent = ({
4129
4402
  clearConsentState();
4130
4403
  }
4131
4404
  }, [startStatusPolling, noticeId]);
4132
- return /* @__PURE__ */ jsx(Fragment, { children: hasAlreadyConsented ? null : /* @__PURE__ */ jsxs(Fragment, { children: [
4133
- blockUI && /* @__PURE__ */ jsx(
4405
+ return /* @__PURE__ */ jsx3(Fragment2, { children: hasAlreadyConsented ? null : /* @__PURE__ */ jsxs2(Fragment2, { children: [
4406
+ blockUI && /* @__PURE__ */ jsx3(
4134
4407
  "div",
4135
4408
  {
4136
4409
  style: styles.overlay,
@@ -4138,7 +4411,7 @@ var RedactoNoticeConsent = ({
4138
4411
  role: "presentation"
4139
4412
  }
4140
4413
  ),
4141
- /* @__PURE__ */ jsx(
4414
+ /* @__PURE__ */ jsx3(
4142
4415
  "div",
4143
4416
  {
4144
4417
  ref: modalRef,
@@ -4153,7 +4426,7 @@ var RedactoNoticeConsent = ({
4153
4426
  "aria-labelledby": "privacy-notice-title",
4154
4427
  "aria-describedby": "privacy-notice-description",
4155
4428
  tabIndex: -1,
4156
- children: isLoading ? /* @__PURE__ */ jsxs(
4429
+ children: isLoading ? /* @__PURE__ */ jsxs2(
4157
4430
  "div",
4158
4431
  {
4159
4432
  role: "status",
@@ -4161,11 +4434,11 @@ var RedactoNoticeConsent = ({
4161
4434
  "aria-label": "Loading consent notice",
4162
4435
  style: styles.loadingContainer,
4163
4436
  children: [
4164
- /* @__PURE__ */ jsx("div", { style: styles.loadingSpinner, "aria-hidden": "true" }),
4165
- /* @__PURE__ */ jsx("p", { style: { ...styles.privacyText, ...componentTextStyle }, children: "Loading..." })
4437
+ /* @__PURE__ */ jsx3("div", { style: styles.loadingSpinner, "aria-hidden": "true" }),
4438
+ /* @__PURE__ */ jsx3("p", { style: { ...styles.privacyText, ...componentTextStyle }, children: "Loading..." })
4166
4439
  ]
4167
4440
  }
4168
- ) : fetchError ? /* @__PURE__ */ jsx(
4441
+ ) : fetchError ? /* @__PURE__ */ jsx3(
4169
4442
  "div",
4170
4443
  {
4171
4444
  role: "alert",
@@ -4181,7 +4454,7 @@ var RedactoNoticeConsent = ({
4181
4454
  textAlign: "center",
4182
4455
  padding: "40px 20px"
4183
4456
  },
4184
- children: /* @__PURE__ */ jsxs(
4457
+ children: /* @__PURE__ */ jsxs2(
4185
4458
  "div",
4186
4459
  {
4187
4460
  style: {
@@ -4194,7 +4467,7 @@ var RedactoNoticeConsent = ({
4194
4467
  position: "relative"
4195
4468
  },
4196
4469
  children: [
4197
- /* @__PURE__ */ jsx(
4470
+ /* @__PURE__ */ jsx3(
4198
4471
  "button",
4199
4472
  {
4200
4473
  onClick: handleDecline,
@@ -4212,7 +4485,7 @@ var RedactoNoticeConsent = ({
4212
4485
  justifyContent: "center"
4213
4486
  },
4214
4487
  "aria-label": "Close error message",
4215
- children: /* @__PURE__ */ jsx(
4488
+ children: /* @__PURE__ */ jsx3(
4216
4489
  "svg",
4217
4490
  {
4218
4491
  width: isMobile ? "14" : "16",
@@ -4221,7 +4494,7 @@ var RedactoNoticeConsent = ({
4221
4494
  fill: "none",
4222
4495
  xmlns: "http://www.w3.org/2000/svg",
4223
4496
  "aria-hidden": "true",
4224
- children: /* @__PURE__ */ jsx(
4497
+ children: /* @__PURE__ */ jsx3(
4225
4498
  "path",
4226
4499
  {
4227
4500
  d: "M12 4L4 12M4 4L12 12",
@@ -4235,7 +4508,7 @@ var RedactoNoticeConsent = ({
4235
4508
  )
4236
4509
  }
4237
4510
  ),
4238
- /* @__PURE__ */ jsx(
4511
+ /* @__PURE__ */ jsx3(
4239
4512
  "h3",
4240
4513
  {
4241
4514
  style: {
@@ -4246,7 +4519,7 @@ var RedactoNoticeConsent = ({
4246
4519
  children: "Error Loading Consent Notice"
4247
4520
  }
4248
4521
  ),
4249
- /* @__PURE__ */ jsx(
4522
+ /* @__PURE__ */ jsx3(
4250
4523
  "p",
4251
4524
  {
4252
4525
  style: {
@@ -4257,7 +4530,7 @@ var RedactoNoticeConsent = ({
4257
4530
  children: fetchError.message || "Failed to load consent notice. Please try again."
4258
4531
  }
4259
4532
  ),
4260
- /* @__PURE__ */ jsx(
4533
+ /* @__PURE__ */ jsx3(
4261
4534
  "button",
4262
4535
  {
4263
4536
  onClick: fetchNotice,
@@ -4282,7 +4555,7 @@ var RedactoNoticeConsent = ({
4282
4555
  }
4283
4556
  )
4284
4557
  }
4285
- ) : showAgeVerification ? /* @__PURE__ */ jsx("div", { style: { ...styles.content, ...responsiveStyles.content }, children: /* @__PURE__ */ jsx(
4558
+ ) : showAgeVerification ? /* @__PURE__ */ jsx3("div", { style: { ...styles.content, ...responsiveStyles.content }, children: /* @__PURE__ */ jsx3(
4286
4559
  AgeVerification,
4287
4560
  {
4288
4561
  onYes: handleAgeVerificationYes,
@@ -4292,12 +4565,12 @@ var RedactoNoticeConsent = ({
4292
4565
  responsiveStyles,
4293
4566
  componentHeadingStyle,
4294
4567
  componentTextStyle,
4295
- acceptButtonStyle,
4568
+ acceptButtonStyle: acceptAllButtonStyle,
4296
4569
  declineButtonStyle,
4297
4570
  logoUrl: (content == null ? void 0 : content.logo_url) || redacto_logo_default,
4298
4571
  isMobile
4299
4572
  }
4300
- ) }) : showGuardianForm ? /* @__PURE__ */ jsx("div", { style: { ...styles.content, ...responsiveStyles.content }, children: /* @__PURE__ */ jsx(
4573
+ ) }) : showGuardianForm ? /* @__PURE__ */ jsx3("div", { style: { ...styles.content, ...responsiveStyles.content }, children: /* @__PURE__ */ jsx3(
4301
4574
  GuardianForm,
4302
4575
  {
4303
4576
  formData: guardianFormData,
@@ -4311,11 +4584,11 @@ var RedactoNoticeConsent = ({
4311
4584
  settings,
4312
4585
  componentHeadingStyle,
4313
4586
  componentTextStyle,
4314
- acceptButtonStyle,
4587
+ acceptButtonStyle: acceptAllButtonStyle,
4315
4588
  declineButtonStyle,
4316
4589
  logoUrl: (content == null ? void 0 : content.logo_url) || redacto_logo_default
4317
4590
  }
4318
- ) }) : showVerificationScreen ? /* @__PURE__ */ jsx("div", { style: { ...styles.content, ...responsiveStyles.content }, children: /* @__PURE__ */ jsx(
4591
+ ) }) : showVerificationScreen ? /* @__PURE__ */ jsx3("div", { style: { ...styles.content, ...responsiveStyles.content }, children: /* @__PURE__ */ jsx3(
4319
4592
  VerificationScreen,
4320
4593
  {
4321
4594
  onBack: handleBackToGuardianForm,
@@ -4332,12 +4605,12 @@ var RedactoNoticeConsent = ({
4332
4605
  settings,
4333
4606
  componentHeadingStyle,
4334
4607
  componentTextStyle,
4335
- acceptButtonStyle,
4608
+ acceptButtonStyle: acceptAllButtonStyle,
4336
4609
  declineButtonStyle,
4337
4610
  logoUrl: (content == null ? void 0 : content.logo_url) || redacto_logo_default
4338
4611
  }
4339
- ) }) : /* @__PURE__ */ jsxs("div", { style: { ...styles.content, ...responsiveStyles.content }, children: [
4340
- errorMessage && /* @__PURE__ */ jsxs(
4612
+ ) }) : /* @__PURE__ */ jsxs2("div", { style: { ...styles.content, ...responsiveStyles.content }, children: [
4613
+ errorMessage && /* @__PURE__ */ jsxs2(
4341
4614
  "div",
4342
4615
  {
4343
4616
  role: "alert",
@@ -4355,8 +4628,8 @@ var RedactoNoticeConsent = ({
4355
4628
  justifyContent: "space-between"
4356
4629
  },
4357
4630
  children: [
4358
- /* @__PURE__ */ jsx("span", { children: errorMessage }),
4359
- /* @__PURE__ */ jsx(
4631
+ /* @__PURE__ */ jsx3("span", { children: errorMessage }),
4632
+ /* @__PURE__ */ jsx3(
4360
4633
  "button",
4361
4634
  {
4362
4635
  type: "button",
@@ -4373,7 +4646,7 @@ var RedactoNoticeConsent = ({
4373
4646
  justifyContent: "center"
4374
4647
  },
4375
4648
  "aria-label": "Close error message",
4376
- children: /* @__PURE__ */ jsx(
4649
+ children: /* @__PURE__ */ jsx3(
4377
4650
  "svg",
4378
4651
  {
4379
4652
  width: "16",
@@ -4382,7 +4655,7 @@ var RedactoNoticeConsent = ({
4382
4655
  fill: "none",
4383
4656
  xmlns: "http://www.w3.org/2000/svg",
4384
4657
  "aria-hidden": "true",
4385
- children: /* @__PURE__ */ jsx(
4658
+ children: /* @__PURE__ */ jsx3(
4386
4659
  "path",
4387
4660
  {
4388
4661
  d: "M12 4L4 12M4 4L12 12",
@@ -4399,7 +4672,7 @@ var RedactoNoticeConsent = ({
4399
4672
  ]
4400
4673
  }
4401
4674
  ),
4402
- /* @__PURE__ */ jsx(
4675
+ /* @__PURE__ */ jsx3(
4403
4676
  "div",
4404
4677
  {
4405
4678
  style: {
@@ -4409,7 +4682,7 @@ var RedactoNoticeConsent = ({
4409
4682
  },
4410
4683
  children: (() => {
4411
4684
  var _a2, _b2, _c2, _d2, _e2, _f2;
4412
- const logoNode = /* @__PURE__ */ jsx(
4685
+ const logoNode = /* @__PURE__ */ jsx3(
4413
4686
  "img",
4414
4687
  {
4415
4688
  style: { ...styles.logo, ...responsiveStyles.logo },
@@ -4417,7 +4690,7 @@ var RedactoNoticeConsent = ({
4417
4690
  alt: "Redacto Logo"
4418
4691
  }
4419
4692
  );
4420
- const titleNode = /* @__PURE__ */ jsx(
4693
+ const titleNode = /* @__PURE__ */ jsx3(
4421
4694
  "h2",
4422
4695
  {
4423
4696
  id: "privacy-notice-title",
@@ -4433,8 +4706,8 @@ var RedactoNoticeConsent = ({
4433
4706
  },
4434
4707
  `privacy-notice-title-${selectedLanguage}`
4435
4708
  );
4436
- const controlsBlock = /* @__PURE__ */ jsxs("div", { style: styles.languageSelectorContainer, children: [
4437
- /* @__PURE__ */ jsxs(
4709
+ const controlsBlock = /* @__PURE__ */ jsxs2("div", { style: styles.languageSelectorContainer, children: [
4710
+ /* @__PURE__ */ jsxs2(
4438
4711
  "div",
4439
4712
  {
4440
4713
  style: {
@@ -4443,7 +4716,7 @@ var RedactoNoticeConsent = ({
4443
4716
  gap: "8px"
4444
4717
  },
4445
4718
  children: [
4446
- isTTSAvailable && /* @__PURE__ */ jsx(
4719
+ isTTSAvailable && /* @__PURE__ */ jsx3(
4447
4720
  "button",
4448
4721
  {
4449
4722
  onClick: toggleAudio,
@@ -4460,7 +4733,7 @@ var RedactoNoticeConsent = ({
4460
4733
  title: isPlaying && !isPaused ? "Pause Talkback" : isPaused ? "Resume Talkback" : "Start Talkback",
4461
4734
  children: isPlaying && !isPaused ? (
4462
4735
  // Pause icon
4463
- /* @__PURE__ */ jsxs(
4736
+ /* @__PURE__ */ jsxs2(
4464
4737
  "svg",
4465
4738
  {
4466
4739
  xmlns: "http://www.w3.org/2000/svg",
@@ -4474,14 +4747,14 @@ var RedactoNoticeConsent = ({
4474
4747
  strokeLinejoin: "round",
4475
4748
  "aria-hidden": "true",
4476
4749
  children: [
4477
- /* @__PURE__ */ jsx("rect", { x: "6", y: "4", width: "4", height: "16" }),
4478
- /* @__PURE__ */ jsx("rect", { x: "14", y: "4", width: "4", height: "16" })
4750
+ /* @__PURE__ */ jsx3("rect", { x: "6", y: "4", width: "4", height: "16" }),
4751
+ /* @__PURE__ */ jsx3("rect", { x: "14", y: "4", width: "4", height: "16" })
4479
4752
  ]
4480
4753
  }
4481
4754
  )
4482
4755
  ) : (
4483
4756
  // Play/Sound icon
4484
- /* @__PURE__ */ jsxs(
4757
+ /* @__PURE__ */ jsxs2(
4485
4758
  "svg",
4486
4759
  {
4487
4760
  xmlns: "http://www.w3.org/2000/svg",
@@ -4495,15 +4768,15 @@ var RedactoNoticeConsent = ({
4495
4768
  strokeLinejoin: "round",
4496
4769
  "aria-hidden": "true",
4497
4770
  children: [
4498
- /* @__PURE__ */ jsx("polygon", { points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5" }),
4499
- /* @__PURE__ */ jsx("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07" })
4771
+ /* @__PURE__ */ jsx3("polygon", { points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5" }),
4772
+ /* @__PURE__ */ jsx3("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07" })
4500
4773
  ]
4501
4774
  }
4502
4775
  )
4503
4776
  )
4504
4777
  }
4505
4778
  ),
4506
- /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(
4779
+ /* @__PURE__ */ jsx3("div", { children: /* @__PURE__ */ jsxs2(
4507
4780
  "button",
4508
4781
  {
4509
4782
  ref: firstFocusableRef,
@@ -4519,7 +4792,7 @@ var RedactoNoticeConsent = ({
4519
4792
  "aria-label": `Select language. Current language: ${toNativeLabel(selectedLanguage)}`,
4520
4793
  children: [
4521
4794
  toNativeLabel(selectedLanguage),
4522
- /* @__PURE__ */ jsx(
4795
+ /* @__PURE__ */ jsx3(
4523
4796
  "svg",
4524
4797
  {
4525
4798
  xmlns: "http://www.w3.org/2000/svg",
@@ -4533,7 +4806,7 @@ var RedactoNoticeConsent = ({
4533
4806
  strokeLinejoin: "round",
4534
4807
  style: { flexShrink: 0, marginLeft: "4px" },
4535
4808
  "aria-hidden": "true",
4536
- children: /* @__PURE__ */ jsx("path", { d: "M4 6l4 4 4-4" })
4809
+ children: /* @__PURE__ */ jsx3("path", { d: "M4 6l4 4 4-4" })
4537
4810
  }
4538
4811
  )
4539
4812
  ]
@@ -4542,7 +4815,7 @@ var RedactoNoticeConsent = ({
4542
4815
  ]
4543
4816
  }
4544
4817
  ),
4545
- isLanguageDropdownOpen && /* @__PURE__ */ jsx(
4818
+ isLanguageDropdownOpen && /* @__PURE__ */ jsx3(
4546
4819
  "ul",
4547
4820
  {
4548
4821
  id: "language-listbox",
@@ -4552,7 +4825,7 @@ var RedactoNoticeConsent = ({
4552
4825
  },
4553
4826
  role: "listbox",
4554
4827
  "aria-label": "Select language",
4555
- children: availableLanguages.map((lang) => /* @__PURE__ */ jsx(
4828
+ children: availableLanguages.map((lang) => /* @__PURE__ */ jsx3(
4556
4829
  "li",
4557
4830
  {
4558
4831
  style: {
@@ -4573,9 +4846,9 @@ var RedactoNoticeConsent = ({
4573
4846
  }
4574
4847
  )
4575
4848
  ] });
4576
- return /* @__PURE__ */ jsxs(Fragment, { children: [
4577
- /* @__PURE__ */ jsx("div", { style: logoRowStyle, children: logoNode }),
4578
- /* @__PURE__ */ jsxs("div", { style: styles.headerRow, children: [
4849
+ return /* @__PURE__ */ jsxs2(Fragment2, { children: [
4850
+ /* @__PURE__ */ jsx3("div", { style: logoRowStyle, children: logoNode }),
4851
+ /* @__PURE__ */ jsxs2("div", { style: styles.headerRow, children: [
4579
4852
  titleNode,
4580
4853
  controlsBlock
4581
4854
  ] })
@@ -4583,7 +4856,7 @@ var RedactoNoticeConsent = ({
4583
4856
  })()
4584
4857
  }
4585
4858
  ),
4586
- /* @__PURE__ */ jsxs(
4859
+ /* @__PURE__ */ jsxs2(
4587
4860
  "div",
4588
4861
  {
4589
4862
  id: "privacy-notice-description",
@@ -4593,7 +4866,7 @@ var RedactoNoticeConsent = ({
4593
4866
  ...sectionStyle
4594
4867
  },
4595
4868
  children: [
4596
- /* @__PURE__ */ jsxs(
4869
+ /* @__PURE__ */ jsxs2(
4597
4870
  "p",
4598
4871
  {
4599
4872
  style: {
@@ -4602,7 +4875,7 @@ var RedactoNoticeConsent = ({
4602
4875
  ...componentTextStyle
4603
4876
  },
4604
4877
  children: [
4605
- /* @__PURE__ */ jsx(
4878
+ /* @__PURE__ */ jsx3(
4606
4879
  "span",
4607
4880
  {
4608
4881
  id: "privacy-notice-text",
@@ -4610,8 +4883,8 @@ var RedactoNoticeConsent = ({
4610
4883
  },
4611
4884
  `privacy-notice-text-${selectedLanguage}`
4612
4885
  ),
4613
- /* @__PURE__ */ jsx("br", {}),
4614
- /* @__PURE__ */ jsxs(
4886
+ /* @__PURE__ */ jsx3("br", {}),
4887
+ /* @__PURE__ */ jsxs2(
4615
4888
  "span",
4616
4889
  {
4617
4890
  id: "privacy-policy-text",
@@ -4621,7 +4894,7 @@ var RedactoNoticeConsent = ({
4621
4894
  (content == null ? void 0 : content.privacy_policy_prefix_text) || ""
4622
4895
  ),
4623
4896
  " ",
4624
- /* @__PURE__ */ jsx(
4897
+ /* @__PURE__ */ jsx3(
4625
4898
  "a",
4626
4899
  {
4627
4900
  id: "privacy-policy-link",
@@ -4644,7 +4917,7 @@ var RedactoNoticeConsent = ({
4644
4917
  },
4645
4918
  `privacy-text-${selectedLanguage}`
4646
4919
  ),
4647
- /* @__PURE__ */ jsx(
4920
+ /* @__PURE__ */ jsx3(
4648
4921
  "h2",
4649
4922
  {
4650
4923
  id: "purpose-section-heading",
@@ -4660,8 +4933,8 @@ var RedactoNoticeConsent = ({
4660
4933
  },
4661
4934
  `purpose-section-heading-${selectedLanguage}`
4662
4935
  ),
4663
- categorizedPurposes ? /* @__PURE__ */ jsxs("div", { style: styles.optionsContainer, children: [
4664
- categorizedPurposes.alreadyConsented.map((purpose) => /* @__PURE__ */ jsx(
4936
+ categorizedPurposes ? /* @__PURE__ */ jsxs2("div", { style: styles.optionsContainer, children: [
4937
+ categorizedPurposes.alreadyConsented.map((purpose) => /* @__PURE__ */ jsx3(
4665
4938
  PurposeItem,
4666
4939
  {
4667
4940
  purpose,
@@ -4681,7 +4954,7 @@ var RedactoNoticeConsent = ({
4681
4954
  },
4682
4955
  `${purpose.uuid}-${selectedLanguage}`
4683
4956
  )),
4684
- categorizedPurposes.needsConsent.map((purpose) => /* @__PURE__ */ jsx(
4957
+ categorizedPurposes.needsConsent.map((purpose) => /* @__PURE__ */ jsx3(
4685
4958
  PurposeItem,
4686
4959
  {
4687
4960
  purpose,
@@ -4702,7 +4975,7 @@ var RedactoNoticeConsent = ({
4702
4975
  ))
4703
4976
  ] }) : (
4704
4977
  /* Regular consent UI */
4705
- /* @__PURE__ */ jsx("div", { style: styles.optionsContainer, children: (_q = content == null ? void 0 : content.purposes) == null ? void 0 : _q.map((purpose) => /* @__PURE__ */ jsx(
4978
+ /* @__PURE__ */ jsx3("div", { style: styles.optionsContainer, children: (_y = content == null ? void 0 : content.purposes) == null ? void 0 : _y.map((purpose) => /* @__PURE__ */ jsx3(
4706
4979
  PurposeItem,
4707
4980
  {
4708
4981
  purpose,
@@ -4723,7 +4996,7 @@ var RedactoNoticeConsent = ({
4723
4996
  `${purpose.uuid}-${selectedLanguage}`
4724
4997
  )) })
4725
4998
  ),
4726
- ((content == null ? void 0 : content.privacy_center_url) || (content == null ? void 0 : content.dpo_info)) && /* @__PURE__ */ jsx(
4999
+ ((content == null ? void 0 : content.privacy_center_url) || (content == null ? void 0 : content.dpo_info)) && /* @__PURE__ */ jsx3(
4727
5000
  "div",
4728
5001
  {
4729
5002
  style: {
@@ -4736,14 +5009,14 @@ var RedactoNoticeConsent = ({
4736
5009
  paddingTop: "12px",
4737
5010
  marginTop: "12px"
4738
5011
  },
4739
- children: /* @__PURE__ */ jsxs("p", { style: { margin: 0, opacity: 0.6 }, children: [
4740
- content.privacy_center_url && /* @__PURE__ */ jsxs(Fragment, { children: [
4741
- content.additional_text && /* @__PURE__ */ jsx("span", { id: "additional-text", children: getTranslatedText(
5012
+ children: /* @__PURE__ */ jsxs2("p", { style: { margin: 0, opacity: 0.6 }, children: [
5013
+ content.privacy_center_url && /* @__PURE__ */ jsxs2(Fragment2, { children: [
5014
+ content.additional_text && /* @__PURE__ */ jsx3("span", { id: "additional-text", children: getTranslatedText(
4742
5015
  "additional_text",
4743
5016
  content.additional_text
4744
5017
  ) }),
4745
5018
  " ",
4746
- /* @__PURE__ */ jsx(
5019
+ /* @__PURE__ */ jsx3(
4747
5020
  "a",
4748
5021
  {
4749
5022
  id: "privacy-center-link",
@@ -4759,14 +5032,14 @@ var RedactoNoticeConsent = ({
4759
5032
  ),
4760
5033
  "."
4761
5034
  ] }),
4762
- content.dpo_info && /* @__PURE__ */ jsxs(Fragment, { children: [
4763
- content.privacy_center_url && /* @__PURE__ */ jsx("br", {}),
4764
- /* @__PURE__ */ jsx("span", { id: "dpo-grievance-text", children: getTranslatedDpoText(
5035
+ content.dpo_info && /* @__PURE__ */ jsxs2(Fragment2, { children: [
5036
+ content.privacy_center_url && /* @__PURE__ */ jsx3("br", {}),
5037
+ /* @__PURE__ */ jsx3("span", { id: "dpo-grievance-text", children: getTranslatedDpoText(
4765
5038
  "grievance_text",
4766
5039
  content.dpo_info.grievance_text || ""
4767
5040
  ) }),
4768
5041
  " ",
4769
- content.dpo_info.grievance_url && /* @__PURE__ */ jsx(
5042
+ content.dpo_info.grievance_url && /* @__PURE__ */ jsx3(
4770
5043
  "a",
4771
5044
  {
4772
5045
  id: "dpo-grievance-link",
@@ -4780,14 +5053,14 @@ var RedactoNoticeConsent = ({
4780
5053
  )
4781
5054
  }
4782
5055
  ),
4783
- content.dpo_info.grievance_email && /* @__PURE__ */ jsxs(Fragment, { children: [
5056
+ content.dpo_info.grievance_email && /* @__PURE__ */ jsxs2(Fragment2, { children: [
4784
5057
  " ",
4785
- /* @__PURE__ */ jsx("span", { id: "dpo-grievance-email-connector", children: getTranslatedDpoText(
5058
+ /* @__PURE__ */ jsx3("span", { id: "dpo-grievance-email-connector", children: getTranslatedDpoText(
4786
5059
  "grievance_email_connector_text",
4787
5060
  content.dpo_info.grievance_email_connector_text || "or email to"
4788
5061
  ) }),
4789
5062
  " ",
4790
- /* @__PURE__ */ jsx(
5063
+ /* @__PURE__ */ jsx3(
4791
5064
  "a",
4792
5065
  {
4793
5066
  id: "dpo-grievance-email",
@@ -4797,13 +5070,13 @@ var RedactoNoticeConsent = ({
4797
5070
  }
4798
5071
  )
4799
5072
  ] }),
4800
- /* @__PURE__ */ jsx("br", {}),
4801
- /* @__PURE__ */ jsx("span", { id: "dpo-dp-board-text", children: getTranslatedDpoText(
5073
+ /* @__PURE__ */ jsx3("br", {}),
5074
+ /* @__PURE__ */ jsx3("span", { id: "dpo-dp-board-text", children: getTranslatedDpoText(
4802
5075
  "dp_board_text",
4803
5076
  content.dpo_info.dp_board_text || ""
4804
5077
  ) }),
4805
5078
  " ",
4806
- content.dpo_info.dp_board_url && /* @__PURE__ */ jsx(
5079
+ content.dpo_info.dp_board_url && /* @__PURE__ */ jsx3(
4807
5080
  "a",
4808
5081
  {
4809
5082
  id: "dpo-dp-board-link",
@@ -4817,13 +5090,13 @@ var RedactoNoticeConsent = ({
4817
5090
  )
4818
5091
  }
4819
5092
  ),
4820
- /* @__PURE__ */ jsx("br", {}),
4821
- /* @__PURE__ */ jsx("span", { id: "dpo-dpo-text", children: getTranslatedDpoText(
5093
+ /* @__PURE__ */ jsx3("br", {}),
5094
+ /* @__PURE__ */ jsx3("span", { id: "dpo-dpo-text", children: getTranslatedDpoText(
4822
5095
  "dpo_text",
4823
5096
  content.dpo_info.dpo_text || ""
4824
5097
  ) }),
4825
5098
  " ",
4826
- content.dpo_info.dpo_email && /* @__PURE__ */ jsx(
5099
+ content.dpo_info.dpo_email && /* @__PURE__ */ jsx3(
4827
5100
  "a",
4828
5101
  {
4829
5102
  id: "dpo-dpo-link",
@@ -4842,15 +5115,17 @@ var RedactoNoticeConsent = ({
4842
5115
  ]
4843
5116
  }
4844
5117
  ),
4845
- /* @__PURE__ */ jsx(
5118
+ /* @__PURE__ */ jsx3(
4846
5119
  "div",
4847
5120
  {
4848
5121
  style: {
4849
- ...styles.bottomSection,
4850
- ...responsiveStyles.bottomSection,
5122
+ ...isFullyConsentedReviewMode ? {
5123
+ ...styles.bottomSection,
5124
+ ...responsiveStyles.bottomSection
5125
+ } : isMobile ? styles.actionButtonStack : styles.actionButtonRow,
4851
5126
  ...sectionStyle
4852
5127
  },
4853
- children: isFullyConsentedReviewMode ? /* @__PURE__ */ jsx(
5128
+ children: isFullyConsentedReviewMode ? /* @__PURE__ */ jsx3(
4854
5129
  "button",
4855
5130
  {
4856
5131
  ref: lastFocusableRef,
@@ -4859,61 +5134,30 @@ var RedactoNoticeConsent = ({
4859
5134
  ...styles.button,
4860
5135
  ...responsiveStyles.button,
4861
5136
  ...styles.acceptButton,
4862
- ...acceptButtonStyle
5137
+ ...acceptAllButtonStyle
4863
5138
  },
4864
5139
  onClick: () => onAccept == null ? void 0 : onAccept(),
4865
5140
  "aria-label": reviewModeButtonText,
4866
5141
  children: reviewModeButtonText
4867
5142
  }
4868
- ) : /* @__PURE__ */ jsxs(Fragment, { children: [
4869
- /* @__PURE__ */ jsx(
4870
- "button",
4871
- {
4872
- ref: lastFocusableRef,
4873
- id: "confirm-button-text",
4874
- style: {
4875
- ...styles.button,
4876
- ...responsiveStyles.button,
4877
- ...styles.acceptButton,
4878
- ...acceptButtonStyle,
4879
- opacity: acceptDisabled ? 0.5 : 1
4880
- },
4881
- onClick: handleAccept,
4882
- disabled: acceptDisabled || isSubmittingDecline,
4883
- "aria-label": getTranslatedText(
4884
- "confirm_button_text",
4885
- (content == null ? void 0 : content.confirm_button_text) || "Accept"
4886
- ),
4887
- children: isSubmittingAccept ? "Processing..." : getTranslatedText(
4888
- "confirm_button_text",
4889
- (content == null ? void 0 : content.confirm_button_text) || "Accept"
4890
- )
4891
- }
4892
- ),
4893
- /* @__PURE__ */ jsx(
4894
- "button",
4895
- {
4896
- id: "decline-button-text",
4897
- style: {
4898
- ...styles.button,
4899
- ...responsiveStyles.button,
4900
- ...styles.cancelButton,
4901
- ...declineButtonStyle,
4902
- opacity: isSubmittingAccept ? 0.5 : 1
4903
- },
4904
- onClick: handleDecline,
4905
- disabled: isSubmittingDecline || isSubmittingAccept,
4906
- "aria-label": getTranslatedText(
4907
- "decline_button_text",
4908
- (content == null ? void 0 : content.decline_button_text) || "Decline"
4909
- ),
4910
- children: isSubmittingDecline ? "Processing..." : getTranslatedText(
4911
- "decline_button_text",
4912
- (content == null ? void 0 : content.decline_button_text) || "Decline"
4913
- )
4914
- }
4915
- )
4916
- ] })
5143
+ ) : /* @__PURE__ */ jsx3(
5144
+ NoticeFooter,
5145
+ {
5146
+ labels: actionLabels,
5147
+ acceptSelectedDisabled: acceptDisabled,
5148
+ isSubmittingAccept,
5149
+ isSubmittingDecline,
5150
+ isMobile,
5151
+ responsiveButtonStyle: responsiveStyles.button,
5152
+ acceptAllButtonStyle,
5153
+ acceptSelectedButtonStyle,
5154
+ declineButtonStyle,
5155
+ lastFocusableRef,
5156
+ onAcceptAll: handleAcceptAll,
5157
+ onAcceptSelected: handleAcceptSelected,
5158
+ onDecline: handleDecline
5159
+ }
5160
+ )
4917
5161
  }
4918
5162
  )
4919
5163
  ] })
@@ -5427,7 +5671,7 @@ var injectSpinnerAnimation = () => {
5427
5671
  };
5428
5672
 
5429
5673
  // src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.tsx
5430
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
5674
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
5431
5675
  var RedactoConsentInlineComponent = ({
5432
5676
  org_uuid,
5433
5677
  workspace_uuid,
@@ -5483,7 +5727,7 @@ var RedactoConsentInlineComponent = ({
5483
5727
  if (!content) return false;
5484
5728
  return content.purposes.every((purpose) => {
5485
5729
  const requiredElements = purpose.data_elements.filter(
5486
- (element) => element.required
5730
+ (element) => element.required && element.enabled
5487
5731
  );
5488
5732
  return requiredElements.every(
5489
5733
  (element) => selectedDataElements[`${purpose.uuid}-${element.uuid}`]
@@ -5566,27 +5810,12 @@ var RedactoConsentInlineComponent = ({
5566
5810
  {}
5567
5811
  );
5568
5812
  setCollapsedPurposes(initialCollapsedState);
5569
- const initialDataElementState = activeConfig.purposes.reduce(
5570
- (acc, purpose) => {
5571
- purpose.data_elements.forEach((element) => {
5572
- const combinedId = `${purpose.uuid}-${element.uuid}`;
5573
- acc[combinedId] = false;
5574
- });
5575
- return acc;
5576
- },
5577
- {}
5578
- );
5579
- setSelectedDataElements(initialDataElementState);
5580
- const initialPurposeState = activeConfig.purposes.reduce(
5581
- (acc, purpose) => {
5582
- return {
5583
- ...acc,
5584
- [purpose.uuid]: false
5585
- };
5586
- },
5587
- {}
5813
+ const preselection = buildPreselection(
5814
+ activeConfig.purposes,
5815
+ resolvePurposePreselection(activeConfig.purpose_preselection)
5588
5816
  );
5589
- setSelectedPurposes(initialPurposeState);
5817
+ setSelectedDataElements(preselection.selectedDataElements);
5818
+ setSelectedPurposes(preselection.selectedPurposes);
5590
5819
  } catch (err) {
5591
5820
  if ((signal == null ? void 0 : signal.aborted) || err instanceof Error && err.name === "AbortError") {
5592
5821
  return;
@@ -5610,7 +5839,14 @@ var RedactoConsentInlineComponent = ({
5610
5839
  return () => {
5611
5840
  controller.abort();
5612
5841
  };
5613
- }, [org_uuid, workspace_uuid, notice_uuid, language, applicationId, accessToken]);
5842
+ }, [
5843
+ org_uuid,
5844
+ workspace_uuid,
5845
+ notice_uuid,
5846
+ language,
5847
+ applicationId,
5848
+ accessToken
5849
+ ]);
5614
5850
  useEffect4(() => {
5615
5851
  if (!ledgerBaseUrl || applicationId) {
5616
5852
  return;
@@ -5811,16 +6047,16 @@ var RedactoConsentInlineComponent = ({
5811
6047
  return null;
5812
6048
  }
5813
6049
  if (isLoading) {
5814
- return /* @__PURE__ */ jsxs2("div", { ...NOTICE_FONT_ROOT_PROPS, style: loadingRootStyle, children: [
5815
- /* @__PURE__ */ jsx2("div", { style: styles2.loadingSpinner }),
5816
- /* @__PURE__ */ jsx2("p", { style: { ...styles2.privacyText, ...textStyle }, children: "Loading..." })
6050
+ return /* @__PURE__ */ jsxs3("div", { ...NOTICE_FONT_ROOT_PROPS, style: loadingRootStyle, children: [
6051
+ /* @__PURE__ */ jsx4("div", { style: styles2.loadingSpinner }),
6052
+ /* @__PURE__ */ jsx4("p", { style: { ...styles2.privacyText, ...textStyle }, children: "Loading..." })
5817
6053
  ] });
5818
6054
  }
5819
6055
  if (!content) {
5820
6056
  return null;
5821
6057
  }
5822
- return /* @__PURE__ */ jsxs2("div", { ...NOTICE_FONT_ROOT_PROPS, style: rootStyle, children: [
5823
- errorMessage && /* @__PURE__ */ jsx2(
6058
+ return /* @__PURE__ */ jsxs3("div", { ...NOTICE_FONT_ROOT_PROPS, style: rootStyle, children: [
6059
+ errorMessage && /* @__PURE__ */ jsx4(
5824
6060
  "div",
5825
6061
  {
5826
6062
  role: "alert",
@@ -5835,9 +6071,9 @@ var RedactoConsentInlineComponent = ({
5835
6071
  children: errorMessage
5836
6072
  }
5837
6073
  ),
5838
- (_a = content == null ? void 0 : content.purposes) == null ? void 0 : _a.map((purpose) => /* @__PURE__ */ jsxs2("div", { children: [
5839
- /* @__PURE__ */ jsxs2("div", { style: styles2.optionItem, children: [
5840
- /* @__PURE__ */ jsxs2(
6074
+ (_a = content == null ? void 0 : content.purposes) == null ? void 0 : _a.map((purpose) => /* @__PURE__ */ jsxs3("div", { children: [
6075
+ /* @__PURE__ */ jsxs3("div", { style: styles2.optionItem, children: [
6076
+ /* @__PURE__ */ jsxs3(
5841
6077
  "div",
5842
6078
  {
5843
6079
  style: styles2.optionLeft,
@@ -5858,7 +6094,7 @@ var RedactoConsentInlineComponent = ({
5858
6094
  }
5859
6095
  },
5860
6096
  children: [
5861
- /* @__PURE__ */ jsx2(
6097
+ /* @__PURE__ */ jsx4(
5862
6098
  "div",
5863
6099
  {
5864
6100
  style: {
@@ -5867,7 +6103,7 @@ var RedactoConsentInlineComponent = ({
5867
6103
  justifyContent: "center",
5868
6104
  marginLeft: "5px"
5869
6105
  },
5870
- children: /* @__PURE__ */ jsx2(
6106
+ children: /* @__PURE__ */ jsx4(
5871
6107
  "svg",
5872
6108
  {
5873
6109
  width: "7",
@@ -5884,13 +6120,13 @@ var RedactoConsentInlineComponent = ({
5884
6120
  transition: "transform 0.3s ease"
5885
6121
  },
5886
6122
  "aria-hidden": "true",
5887
- children: /* @__PURE__ */ jsx2("path", { d: "M1 1L6 6L1 11" })
6123
+ children: /* @__PURE__ */ jsx4("path", { d: "M1 1L6 6L1 11" })
5888
6124
  }
5889
6125
  )
5890
6126
  }
5891
6127
  ),
5892
- /* @__PURE__ */ jsxs2("div", { style: styles2.optionTextContainer, children: [
5893
- /* @__PURE__ */ jsx2(
6128
+ /* @__PURE__ */ jsxs3("div", { style: styles2.optionTextContainer, children: [
6129
+ /* @__PURE__ */ jsxs3(
5894
6130
  "h2",
5895
6131
  {
5896
6132
  style: {
@@ -5898,14 +6134,17 @@ var RedactoConsentInlineComponent = ({
5898
6134
  ...responsiveStyles.optionTitle,
5899
6135
  ...headingStyle
5900
6136
  },
5901
- children: getTranslatedText(
5902
- `purposes.name`,
5903
- purpose.name,
5904
- purpose.uuid
5905
- )
6137
+ children: [
6138
+ getTranslatedText(
6139
+ `purposes.name`,
6140
+ purpose.name,
6141
+ purpose.uuid
6142
+ ),
6143
+ hasRequiredDataElement(purpose) && /* @__PURE__ */ jsx4(RequiredMarker, {})
6144
+ ]
5906
6145
  }
5907
6146
  ),
5908
- /* @__PURE__ */ jsx2(
6147
+ /* @__PURE__ */ jsx4(
5909
6148
  "h3",
5910
6149
  {
5911
6150
  style: {
@@ -5924,7 +6163,7 @@ var RedactoConsentInlineComponent = ({
5924
6163
  ]
5925
6164
  }
5926
6165
  ),
5927
- /* @__PURE__ */ jsx2(
6166
+ /* @__PURE__ */ jsx4(
5928
6167
  "input",
5929
6168
  {
5930
6169
  type: "checkbox",
@@ -5938,13 +6177,13 @@ var RedactoConsentInlineComponent = ({
5938
6177
  }
5939
6178
  )
5940
6179
  ] }),
5941
- !collapsedPurposes[purpose.uuid] && purpose.data_elements && purpose.data_elements.length > 0 && /* @__PURE__ */ jsx2(
6180
+ !collapsedPurposes[purpose.uuid] && purpose.data_elements && purpose.data_elements.length > 0 && /* @__PURE__ */ jsx4(
5942
6181
  "div",
5943
6182
  {
5944
6183
  id: `purpose-${purpose.uuid}`,
5945
6184
  style: styles2.dataElementsContainer,
5946
- children: purpose.data_elements.map((dataElement) => /* @__PURE__ */ jsxs2("div", { style: styles2.dataElementItem, children: [
5947
- /* @__PURE__ */ jsxs2(
6185
+ children: purpose.data_elements.map((dataElement) => /* @__PURE__ */ jsxs3("div", { style: styles2.dataElementItem, children: [
6186
+ /* @__PURE__ */ jsxs3(
5948
6187
  "span",
5949
6188
  {
5950
6189
  style: {
@@ -5958,21 +6197,11 @@ var RedactoConsentInlineComponent = ({
5958
6197
  dataElement.name,
5959
6198
  dataElement.uuid
5960
6199
  ),
5961
- dataElement.required && /* @__PURE__ */ jsx2(
5962
- "span",
5963
- {
5964
- style: {
5965
- color: "red",
5966
- marginLeft: "4px"
5967
- },
5968
- "aria-label": "required",
5969
- children: "*"
5970
- }
5971
- )
6200
+ dataElement.required && /* @__PURE__ */ jsx4(RequiredMarker, {})
5972
6201
  ]
5973
6202
  }
5974
6203
  ),
5975
- /* @__PURE__ */ jsx2(
6204
+ /* @__PURE__ */ jsx4(
5976
6205
  "input",
5977
6206
  {
5978
6207
  type: "checkbox",
@@ -6600,6 +6829,48 @@ var styles3 = {
6600
6829
  margin: 0,
6601
6830
  boxSizing: "border-box"
6602
6831
  },
6832
+ /**
6833
+ * The notice step's three actions. Wide: one row with decline pushed left
6834
+ * and the accepts grouped right. Narrow: a full-width stack. The verify step
6835
+ * keeps `bottomSection` — it collapses back to the progressing primary CTA
6836
+ * plus decline.
6837
+ */
6838
+ actionButtonRow: {
6839
+ display: "flex",
6840
+ flexDirection: "row",
6841
+ alignItems: "center",
6842
+ gap: "12px",
6843
+ paddingTop: "15px",
6844
+ borderTop: "none",
6845
+ backgroundColor: "#ffffff",
6846
+ margin: 0,
6847
+ boxSizing: "border-box"
6848
+ },
6849
+ actionButtonStack: {
6850
+ display: "flex",
6851
+ flexDirection: "column",
6852
+ gap: "12px",
6853
+ paddingTop: "15px",
6854
+ borderTop: "none",
6855
+ backgroundColor: "#ffffff",
6856
+ margin: 0,
6857
+ boxSizing: "border-box"
6858
+ },
6859
+ /** `width: auto` undoes `button`'s `width: 100%` for the wide row. */
6860
+ rowButton: {
6861
+ width: "auto",
6862
+ whiteSpace: "normal",
6863
+ wordBreak: "break-word"
6864
+ },
6865
+ stackButton: {
6866
+ width: "100%",
6867
+ whiteSpace: "normal",
6868
+ wordBreak: "break-word"
6869
+ },
6870
+ /** Pushes everything after decline to the right edge in the wide row. */
6871
+ declineSpacer: {
6872
+ marginRight: "auto"
6873
+ },
6603
6874
  button: {
6604
6875
  width: "100%",
6605
6876
  borderRadius: "8px",
@@ -8357,7 +8628,7 @@ var makeStaticT = (langCode) => (key, vars) => {
8357
8628
  var redacto_logo_default2 = "data:image/png;base64,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";
8358
8629
 
8359
8630
  // src/RedactoNoticeAssisted/RedactoNoticeAssisted.tsx
8360
- import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
8631
+ import { Fragment as Fragment3, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
8361
8632
  var PurposeItem2 = ({
8362
8633
  purpose,
8363
8634
  selectedPurposes,
@@ -8381,9 +8652,10 @@ var PurposeItem2 = ({
8381
8652
  const dataElements = purpose.data_elements.filter(
8382
8653
  (el) => el.enabled !== false
8383
8654
  );
8384
- return /* @__PURE__ */ jsxs3("div", { children: [
8385
- /* @__PURE__ */ jsxs3("div", { style: styles3.optionItem, children: [
8386
- /* @__PURE__ */ jsxs3(
8655
+ const hasRequired = hasRequiredDataElement(purpose);
8656
+ return /* @__PURE__ */ jsxs4("div", { children: [
8657
+ /* @__PURE__ */ jsxs4("div", { style: styles3.optionItem, children: [
8658
+ /* @__PURE__ */ jsxs4(
8387
8659
  "div",
8388
8660
  {
8389
8661
  style: styles3.optionLeft,
@@ -8400,7 +8672,7 @@ var PurposeItem2 = ({
8400
8672
  }
8401
8673
  },
8402
8674
  children: [
8403
- /* @__PURE__ */ jsx3(
8675
+ /* @__PURE__ */ jsx5(
8404
8676
  "div",
8405
8677
  {
8406
8678
  style: {
@@ -8409,7 +8681,7 @@ var PurposeItem2 = ({
8409
8681
  justifyContent: "center",
8410
8682
  marginLeft: "5px"
8411
8683
  },
8412
- children: /* @__PURE__ */ jsx3(
8684
+ children: /* @__PURE__ */ jsx5(
8413
8685
  "svg",
8414
8686
  {
8415
8687
  width: "7",
@@ -8426,21 +8698,24 @@ var PurposeItem2 = ({
8426
8698
  transition: "transform 0.3s ease"
8427
8699
  },
8428
8700
  "aria-hidden": "true",
8429
- children: /* @__PURE__ */ jsx3("path", { d: "M1 1L6 6L1 11" })
8701
+ children: /* @__PURE__ */ jsx5("path", { d: "M1 1L6 6L1 11" })
8430
8702
  }
8431
8703
  )
8432
8704
  }
8433
8705
  ),
8434
- /* @__PURE__ */ jsxs3("div", { style: styles3.optionTextContainer, children: [
8435
- /* @__PURE__ */ jsx3(
8706
+ /* @__PURE__ */ jsxs4("div", { style: styles3.optionTextContainer, children: [
8707
+ /* @__PURE__ */ jsxs4(
8436
8708
  "h2",
8437
8709
  {
8438
8710
  id: `purpose-name-${purpose.uuid}`,
8439
8711
  style: { ...styles3.optionTitle, ...responsive.optionTitle },
8440
- children: name
8712
+ children: [
8713
+ name,
8714
+ hasRequired && /* @__PURE__ */ jsx5(RequiredMarker, { label: ts("required") })
8715
+ ]
8441
8716
  }
8442
8717
  ),
8443
- description && /* @__PURE__ */ jsx3(
8718
+ description && /* @__PURE__ */ jsx5(
8444
8719
  "h3",
8445
8720
  {
8446
8721
  id: `purpose-description-${purpose.uuid}`,
@@ -8455,7 +8730,7 @@ var PurposeItem2 = ({
8455
8730
  ]
8456
8731
  }
8457
8732
  ),
8458
- /* @__PURE__ */ jsx3(
8733
+ /* @__PURE__ */ jsx5(
8459
8734
  "input",
8460
8735
  {
8461
8736
  className: "redacto-assisted-checkbox-large",
@@ -8467,7 +8742,7 @@ var PurposeItem2 = ({
8467
8742
  }
8468
8743
  )
8469
8744
  ] }),
8470
- isExpanded && dataElements.length > 0 && /* @__PURE__ */ jsx3(
8745
+ isExpanded && dataElements.length > 0 && /* @__PURE__ */ jsx5(
8471
8746
  "div",
8472
8747
  {
8473
8748
  id: `redacto-assisted-purpose-${purpose.uuid}`,
@@ -8479,8 +8754,8 @@ var PurposeItem2 = ({
8479
8754
  dataElement.name,
8480
8755
  dataElement.uuid
8481
8756
  );
8482
- return /* @__PURE__ */ jsxs3("div", { style: styles3.dataElementItem, children: [
8483
- /* @__PURE__ */ jsxs3(
8757
+ return /* @__PURE__ */ jsxs4("div", { style: styles3.dataElementItem, children: [
8758
+ /* @__PURE__ */ jsxs4(
8484
8759
  "span",
8485
8760
  {
8486
8761
  id: `data-element-${combinedId}`,
@@ -8490,18 +8765,11 @@ var PurposeItem2 = ({
8490
8765
  },
8491
8766
  children: [
8492
8767
  elementName,
8493
- dataElement.required && /* @__PURE__ */ jsx3(
8494
- "span",
8495
- {
8496
- style: { color: "red", marginLeft: "4px" },
8497
- "aria-label": ts("required"),
8498
- children: "*"
8499
- }
8500
- )
8768
+ dataElement.required && /* @__PURE__ */ jsx5(RequiredMarker, { label: ts("required") })
8501
8769
  ]
8502
8770
  }
8503
8771
  ),
8504
- /* @__PURE__ */ jsx3(
8772
+ /* @__PURE__ */ jsx5(
8505
8773
  "input",
8506
8774
  {
8507
8775
  className: "redacto-assisted-checkbox-small",
@@ -8532,6 +8800,7 @@ var RedactoNoticeAssisted = ({
8532
8800
  const [isLoading, setIsLoading] = useState5(true);
8533
8801
  const [fetchError, setFetchError] = useState5(null);
8534
8802
  const [step, setStep] = useState5("notice");
8803
+ const [acceptMode, setAcceptMode] = useState5("selected");
8535
8804
  const [selectedPurposes, setSelectedPurposes] = useState5({});
8536
8805
  const [selectedDataElements, setSelectedDataElements] = useState5({});
8537
8806
  const [collapsedPurposes, setCollapsedPurposes] = useState5({});
@@ -8545,7 +8814,9 @@ var RedactoNoticeAssisted = ({
8545
8814
  const [currentAudioIndex, setCurrentAudioIndex] = useState5(0);
8546
8815
  const [highlightedElementId, setHighlightedElementId] = useState5(null);
8547
8816
  const currentAudioRef = useRef3(null);
8548
- const [verifyMethod, setVerifyMethod] = useState5("mobile");
8817
+ const [verifyMethod, setVerifyMethod] = useState5(
8818
+ "mobile"
8819
+ );
8549
8820
  const [mobile, setMobile] = useState5("");
8550
8821
  const mobileInputRef = useRef3(null);
8551
8822
  const [email, setEmail] = useState5("");
@@ -8583,18 +8854,16 @@ var RedactoNoticeAssisted = ({
8583
8854
  setSelectedLanguage(
8584
8855
  dl === "en" || dl === "EN" ? "English" : dl || "English"
8585
8856
  );
8586
- const purposeState = {};
8587
- const elementState = {};
8857
+ const preselection = buildPreselection(
8858
+ activeConfig.purposes,
8859
+ resolvePurposePreselection(activeConfig.purpose_preselection)
8860
+ );
8588
8861
  const collapsedState = {};
8589
8862
  activeConfig.purposes.forEach((p) => {
8590
- purposeState[p.uuid] = false;
8591
8863
  collapsedState[p.uuid] = true;
8592
- p.data_elements.forEach((el) => {
8593
- elementState[`${p.uuid}-${el.uuid}`] = false;
8594
- });
8595
8864
  });
8596
- setSelectedPurposes(purposeState);
8597
- setSelectedDataElements(elementState);
8865
+ setSelectedPurposes(preselection.selectedPurposes);
8866
+ setSelectedDataElements(preselection.selectedDataElements);
8598
8867
  setCollapsedPurposes(collapsedState);
8599
8868
  setIsLoading(false);
8600
8869
  }).catch((err) => {
@@ -9090,16 +9359,37 @@ var RedactoNoticeAssisted = ({
9090
9359
  removeAllHighlights();
9091
9360
  };
9092
9361
  }, [highlightedElementId, isPlaying]);
9093
- const handleConfirmStep = useCallback3(() => {
9094
- stopAudio();
9095
- setStep("verify");
9096
- setOtpSent(false);
9097
- window.setTimeout(() => {
9098
- var _a;
9099
- (_a = (verifyMethod === "email" ? emailInputRef : mobileInputRef).current) == null ? void 0 : _a.focus();
9100
- }, 80);
9101
- }, [verifyMethod, stopAudio]);
9362
+ const handleConfirmStep = useCallback3(
9363
+ (mode = "selected") => {
9364
+ if (mode !== "selected" && content) {
9365
+ const selection = buildSelectionForMode(content.purposes, mode, {
9366
+ selectedPurposes,
9367
+ selectedDataElements
9368
+ });
9369
+ setSelectedPurposes(selection.selectedPurposes);
9370
+ setSelectedDataElements(selection.selectedDataElements);
9371
+ }
9372
+ setAcceptMode(mode);
9373
+ stopAudio();
9374
+ setStep("verify");
9375
+ setOtpSent(false);
9376
+ window.setTimeout(() => {
9377
+ var _a;
9378
+ (_a = (verifyMethod === "email" ? emailInputRef : mobileInputRef).current) == null ? void 0 : _a.focus();
9379
+ }, 80);
9380
+ },
9381
+ [content, selectedPurposes, selectedDataElements, verifyMethod, stopAudio]
9382
+ );
9383
+ const handleAcceptAll = useCallback3(
9384
+ () => handleConfirmStep("all"),
9385
+ [handleConfirmStep]
9386
+ );
9387
+ const handleAcceptSelected = useCallback3(
9388
+ () => handleConfirmStep("selected"),
9389
+ [handleConfirmStep]
9390
+ );
9102
9391
  const handleEditSelections = useCallback3(() => {
9392
+ setAcceptMode("selected");
9103
9393
  setStep("notice");
9104
9394
  setOtpSent(false);
9105
9395
  setOtpUuid("");
@@ -9209,10 +9499,14 @@ var RedactoNoticeAssisted = ({
9209
9499
  (_a = otpInputRefs.current[focusIndex]) == null ? void 0 : _a.focus();
9210
9500
  }, []);
9211
9501
  const resetFlow = useCallback3(() => {
9502
+ var _a;
9212
9503
  setStep("notice");
9213
- setSelectedPurposes(
9214
- (prev) => Object.fromEntries(Object.keys(prev).map((k) => [k, false]))
9504
+ const preselection = buildPreselection(
9505
+ (_a = content == null ? void 0 : content.purposes) != null ? _a : [],
9506
+ resolvePurposePreselection(content == null ? void 0 : content.purpose_preselection)
9215
9507
  );
9508
+ setSelectedPurposes(preselection.selectedPurposes);
9509
+ setSelectedDataElements(preselection.selectedDataElements);
9216
9510
  setVerifyMethod("mobile");
9217
9511
  setMobile("");
9218
9512
  setEmail("");
@@ -9222,7 +9516,7 @@ var RedactoNoticeAssisted = ({
9222
9516
  setResendCountdown(0);
9223
9517
  setCreateError(null);
9224
9518
  setOtpError(null);
9225
- }, []);
9519
+ }, [content]);
9226
9520
  const handleSuccess = useCallback3(() => {
9227
9521
  if (onComplete) {
9228
9522
  onComplete();
@@ -9272,12 +9566,16 @@ var RedactoNoticeAssisted = ({
9272
9566
  return;
9273
9567
  }
9274
9568
  }
9569
+ const selection = buildSelectionForMode(content.purposes, acceptMode, {
9570
+ selectedPurposes,
9571
+ selectedDataElements
9572
+ });
9275
9573
  const submitPurposes = content.purposes.map((purpose) => ({
9276
9574
  ...purpose,
9277
- selected: selectedPurposes[purpose.uuid] || false,
9575
+ selected: selection.selectedPurposes[purpose.uuid] || false,
9278
9576
  data_elements: purpose.data_elements.map((element) => ({
9279
9577
  ...element,
9280
- selected: element.required ? true : selectedDataElements[`${purpose.uuid}-${element.uuid}`] || false
9578
+ selected: element.required ? true : selection.selectedDataElements[`${purpose.uuid}-${element.uuid}`] || false
9281
9579
  }))
9282
9580
  }));
9283
9581
  await submitAssistedConsent({
@@ -9329,7 +9627,7 @@ var RedactoNoticeAssisted = ({
9329
9627
  (content == null ? void 0 : content.notice_banner_heading) || "Privacy Notice"
9330
9628
  );
9331
9629
  const renderHeader = () => {
9332
- const logoNode = /* @__PURE__ */ jsx3(
9630
+ const logoNode = /* @__PURE__ */ jsx5(
9333
9631
  "img",
9334
9632
  {
9335
9633
  style: { ...styles3.logo, ...responsive.logo },
@@ -9337,7 +9635,7 @@ var RedactoNoticeAssisted = ({
9337
9635
  alt: ts("logoAlt")
9338
9636
  }
9339
9637
  );
9340
- const titleNode = /* @__PURE__ */ jsx3(
9638
+ const titleNode = /* @__PURE__ */ jsx5(
9341
9639
  "h2",
9342
9640
  {
9343
9641
  id: "privacy-notice-title",
@@ -9345,9 +9643,9 @@ var RedactoNoticeAssisted = ({
9345
9643
  children: noticeTitle
9346
9644
  }
9347
9645
  );
9348
- const controlsBlock = /* @__PURE__ */ jsxs3("div", { style: styles3.languageSelectorContainer, ref: languageContainerRef, children: [
9349
- /* @__PURE__ */ jsxs3("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
9350
- isTTSAvailable && step === "notice" && /* @__PURE__ */ jsx3(
9646
+ const controlsBlock = /* @__PURE__ */ jsxs4("div", { style: styles3.languageSelectorContainer, ref: languageContainerRef, children: [
9647
+ /* @__PURE__ */ jsxs4("div", { style: { display: "flex", alignItems: "center", gap: "8px" }, children: [
9648
+ isTTSAvailable && step === "notice" && /* @__PURE__ */ jsx5(
9351
9649
  "button",
9352
9650
  {
9353
9651
  type: "button",
@@ -9362,7 +9660,7 @@ var RedactoNoticeAssisted = ({
9362
9660
  },
9363
9661
  "aria-label": isPlaying && !isPaused ? ts("audioPause") : ts("audioStart"),
9364
9662
  title: isPlaying && !isPaused ? ts("talkbackPause") : ts("talkbackStart"),
9365
- children: isPlaying && !isPaused ? /* @__PURE__ */ jsxs3(
9663
+ children: isPlaying && !isPaused ? /* @__PURE__ */ jsxs4(
9366
9664
  "svg",
9367
9665
  {
9368
9666
  xmlns: "http://www.w3.org/2000/svg",
@@ -9376,11 +9674,11 @@ var RedactoNoticeAssisted = ({
9376
9674
  strokeLinejoin: "round",
9377
9675
  "aria-hidden": "true",
9378
9676
  children: [
9379
- /* @__PURE__ */ jsx3("rect", { x: "6", y: "4", width: "4", height: "16" }),
9380
- /* @__PURE__ */ jsx3("rect", { x: "14", y: "4", width: "4", height: "16" })
9677
+ /* @__PURE__ */ jsx5("rect", { x: "6", y: "4", width: "4", height: "16" }),
9678
+ /* @__PURE__ */ jsx5("rect", { x: "14", y: "4", width: "4", height: "16" })
9381
9679
  ]
9382
9680
  }
9383
- ) : /* @__PURE__ */ jsxs3(
9681
+ ) : /* @__PURE__ */ jsxs4(
9384
9682
  "svg",
9385
9683
  {
9386
9684
  xmlns: "http://www.w3.org/2000/svg",
@@ -9394,14 +9692,14 @@ var RedactoNoticeAssisted = ({
9394
9692
  strokeLinejoin: "round",
9395
9693
  "aria-hidden": "true",
9396
9694
  children: [
9397
- /* @__PURE__ */ jsx3("polygon", { points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5" }),
9398
- /* @__PURE__ */ jsx3("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07" })
9695
+ /* @__PURE__ */ jsx5("polygon", { points: "11 5 6 9 2 9 2 15 6 15 11 19 11 5" }),
9696
+ /* @__PURE__ */ jsx5("path", { d: "M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07" })
9399
9697
  ]
9400
9698
  }
9401
9699
  )
9402
9700
  }
9403
9701
  ),
9404
- /* @__PURE__ */ jsx3("div", { children: /* @__PURE__ */ jsxs3(
9702
+ /* @__PURE__ */ jsx5("div", { children: /* @__PURE__ */ jsxs4(
9405
9703
  "button",
9406
9704
  {
9407
9705
  type: "button",
@@ -9415,7 +9713,7 @@ var RedactoNoticeAssisted = ({
9415
9713
  }),
9416
9714
  children: [
9417
9715
  toNativeLabel(selectedLanguage),
9418
- /* @__PURE__ */ jsx3(
9716
+ /* @__PURE__ */ jsx5(
9419
9717
  "svg",
9420
9718
  {
9421
9719
  xmlns: "http://www.w3.org/2000/svg",
@@ -9429,21 +9727,21 @@ var RedactoNoticeAssisted = ({
9429
9727
  strokeLinejoin: "round",
9430
9728
  style: { flexShrink: 0, marginLeft: "4px" },
9431
9729
  "aria-hidden": "true",
9432
- children: /* @__PURE__ */ jsx3("path", { d: "M4 6l4 4 4-4" })
9730
+ children: /* @__PURE__ */ jsx5("path", { d: "M4 6l4 4 4-4" })
9433
9731
  }
9434
9732
  )
9435
9733
  ]
9436
9734
  }
9437
9735
  ) })
9438
9736
  ] }),
9439
- isLanguageDropdownOpen && /* @__PURE__ */ jsx3(
9737
+ isLanguageDropdownOpen && /* @__PURE__ */ jsx5(
9440
9738
  "ul",
9441
9739
  {
9442
9740
  id: "redacto-assisted-language-listbox",
9443
9741
  style: styles3.languageDropdown,
9444
9742
  role: "listbox",
9445
9743
  "aria-label": ts("selectLanguage"),
9446
- children: availableLanguages.map((lang) => /* @__PURE__ */ jsx3(
9744
+ children: availableLanguages.map((lang) => /* @__PURE__ */ jsx5(
9447
9745
  "li",
9448
9746
  {
9449
9747
  style: {
@@ -9463,8 +9761,8 @@ var RedactoNoticeAssisted = ({
9463
9761
  }
9464
9762
  )
9465
9763
  ] });
9466
- return /* @__PURE__ */ jsx3("div", { style: { ...styles3.topSection, ...responsive.topSection }, children: isMobile ? /* @__PURE__ */ jsxs3(Fragment2, { children: [
9467
- /* @__PURE__ */ jsxs3(
9764
+ return /* @__PURE__ */ jsx5("div", { style: { ...styles3.topSection, ...responsive.topSection }, children: isMobile ? /* @__PURE__ */ jsxs4(Fragment3, { children: [
9765
+ /* @__PURE__ */ jsxs4(
9468
9766
  "div",
9469
9767
  {
9470
9768
  style: {
@@ -9475,7 +9773,7 @@ var RedactoNoticeAssisted = ({
9475
9773
  },
9476
9774
  children: [
9477
9775
  logoNode,
9478
- /* @__PURE__ */ jsx3(
9776
+ /* @__PURE__ */ jsx5(
9479
9777
  "div",
9480
9778
  {
9481
9779
  style: {
@@ -9491,8 +9789,8 @@ var RedactoNoticeAssisted = ({
9491
9789
  }
9492
9790
  ),
9493
9791
  titleNode
9494
- ] }) : /* @__PURE__ */ jsxs3(Fragment2, { children: [
9495
- /* @__PURE__ */ jsxs3("div", { style: styles3.topLeft, children: [
9792
+ ] }) : /* @__PURE__ */ jsxs4(Fragment3, { children: [
9793
+ /* @__PURE__ */ jsxs4("div", { style: styles3.topLeft, children: [
9496
9794
  logoNode,
9497
9795
  titleNode
9498
9796
  ] }),
@@ -9503,7 +9801,7 @@ var RedactoNoticeAssisted = ({
9503
9801
  if (!content) return null;
9504
9802
  const dpoInfo = content.dpo_info;
9505
9803
  if (!content.privacy_center_url && !dpoInfo) return null;
9506
- return /* @__PURE__ */ jsx3(
9804
+ return /* @__PURE__ */ jsx5(
9507
9805
  "div",
9508
9806
  {
9509
9807
  style: {
@@ -9515,14 +9813,14 @@ var RedactoNoticeAssisted = ({
9515
9813
  paddingTop: "12px",
9516
9814
  marginTop: "12px"
9517
9815
  },
9518
- children: /* @__PURE__ */ jsxs3("p", { style: { margin: 0, opacity: 0.6 }, children: [
9519
- content.privacy_center_url && /* @__PURE__ */ jsxs3(Fragment2, { children: [
9520
- /* @__PURE__ */ jsx3("span", { id: "additional-text", children: getTranslatedText(
9816
+ children: /* @__PURE__ */ jsxs4("p", { style: { margin: 0, opacity: 0.6 }, children: [
9817
+ content.privacy_center_url && /* @__PURE__ */ jsxs4(Fragment3, { children: [
9818
+ /* @__PURE__ */ jsx5("span", { id: "additional-text", children: getTranslatedText(
9521
9819
  "additional_text",
9522
9820
  content.additional_text || "Manage or withdraw consent anytime at"
9523
9821
  ) }),
9524
9822
  " ",
9525
- /* @__PURE__ */ jsx3(
9823
+ /* @__PURE__ */ jsx5(
9526
9824
  "a",
9527
9825
  {
9528
9826
  id: "privacy-center-link",
@@ -9538,11 +9836,11 @@ var RedactoNoticeAssisted = ({
9538
9836
  ),
9539
9837
  "."
9540
9838
  ] }),
9541
- dpoInfo && /* @__PURE__ */ jsxs3(Fragment2, { children: [
9542
- content.privacy_center_url && /* @__PURE__ */ jsx3("br", {}),
9543
- /* @__PURE__ */ jsx3("span", { id: "dpo-grievance-text", children: getTranslatedDpoText("grievance_text", dpoInfo.grievance_text) }),
9839
+ dpoInfo && /* @__PURE__ */ jsxs4(Fragment3, { children: [
9840
+ content.privacy_center_url && /* @__PURE__ */ jsx5("br", {}),
9841
+ /* @__PURE__ */ jsx5("span", { id: "dpo-grievance-text", children: getTranslatedDpoText("grievance_text", dpoInfo.grievance_text) }),
9544
9842
  " ",
9545
- dpoInfo.grievance_url && /* @__PURE__ */ jsx3(
9843
+ dpoInfo.grievance_url && /* @__PURE__ */ jsx5(
9546
9844
  "a",
9547
9845
  {
9548
9846
  id: "dpo-grievance-link",
@@ -9557,13 +9855,13 @@ var RedactoNoticeAssisted = ({
9557
9855
  }
9558
9856
  ),
9559
9857
  " ",
9560
- dpoInfo.grievance_email && /* @__PURE__ */ jsxs3(Fragment2, { children: [
9561
- /* @__PURE__ */ jsx3("span", { id: "dpo-grievance-email-connector", children: getTranslatedDpoText(
9858
+ dpoInfo.grievance_email && /* @__PURE__ */ jsxs4(Fragment3, { children: [
9859
+ /* @__PURE__ */ jsx5("span", { id: "dpo-grievance-email-connector", children: getTranslatedDpoText(
9562
9860
  "grievance_email_connector_text",
9563
9861
  dpoInfo.grievance_email_connector_text || "or email to"
9564
9862
  ) }),
9565
9863
  " ",
9566
- /* @__PURE__ */ jsx3(
9864
+ /* @__PURE__ */ jsx5(
9567
9865
  "a",
9568
9866
  {
9569
9867
  id: "dpo-grievance-email",
@@ -9573,10 +9871,10 @@ var RedactoNoticeAssisted = ({
9573
9871
  }
9574
9872
  )
9575
9873
  ] }),
9576
- /* @__PURE__ */ jsx3("br", {}),
9577
- /* @__PURE__ */ jsx3("span", { id: "dpo-dp-board-text", children: getTranslatedDpoText("dp_board_text", dpoInfo.dp_board_text) }),
9874
+ /* @__PURE__ */ jsx5("br", {}),
9875
+ /* @__PURE__ */ jsx5("span", { id: "dpo-dp-board-text", children: getTranslatedDpoText("dp_board_text", dpoInfo.dp_board_text) }),
9578
9876
  " ",
9579
- dpoInfo.dp_board_url && /* @__PURE__ */ jsx3(
9877
+ dpoInfo.dp_board_url && /* @__PURE__ */ jsx5(
9580
9878
  "a",
9581
9879
  {
9582
9880
  id: "dpo-dp-board-link",
@@ -9590,10 +9888,10 @@ var RedactoNoticeAssisted = ({
9590
9888
  )
9591
9889
  }
9592
9890
  ),
9593
- /* @__PURE__ */ jsx3("br", {}),
9594
- /* @__PURE__ */ jsx3("span", { id: "dpo-dpo-text", children: getTranslatedDpoText("dpo_text", dpoInfo.dpo_text) }),
9891
+ /* @__PURE__ */ jsx5("br", {}),
9892
+ /* @__PURE__ */ jsx5("span", { id: "dpo-dpo-text", children: getTranslatedDpoText("dpo_text", dpoInfo.dpo_text) }),
9595
9893
  " ",
9596
- dpoInfo.dpo_email && /* @__PURE__ */ jsx3(
9894
+ dpoInfo.dpo_email && /* @__PURE__ */ jsx5(
9597
9895
  "a",
9598
9896
  {
9599
9897
  id: "dpo-dpo-link",
@@ -9612,17 +9910,17 @@ var RedactoNoticeAssisted = ({
9612
9910
  };
9613
9911
  const renderNoticeScreen = (locked) => {
9614
9912
  if (!content) return null;
9615
- return /* @__PURE__ */ jsxs3(Fragment2, { children: [
9616
- /* @__PURE__ */ jsxs3("p", { style: { ...styles3.privacyText, ...responsive.privacyText }, children: [
9617
- /* @__PURE__ */ jsx3("span", { id: "privacy-notice-text", children: getTranslatedText("notice_text", content.notice_text) }),
9618
- /* @__PURE__ */ jsx3("br", {}),
9619
- /* @__PURE__ */ jsxs3("span", { children: [
9620
- /* @__PURE__ */ jsx3("span", { id: "privacy-policy-text", children: getTranslatedText(
9913
+ return /* @__PURE__ */ jsxs4(Fragment3, { children: [
9914
+ /* @__PURE__ */ jsxs4("p", { style: { ...styles3.privacyText, ...responsive.privacyText }, children: [
9915
+ /* @__PURE__ */ jsx5("span", { id: "privacy-notice-text", children: getTranslatedText("notice_text", content.notice_text) }),
9916
+ /* @__PURE__ */ jsx5("br", {}),
9917
+ /* @__PURE__ */ jsxs4("span", { children: [
9918
+ /* @__PURE__ */ jsx5("span", { id: "privacy-policy-text", children: getTranslatedText(
9621
9919
  "privacy_policy_prefix_text",
9622
9920
  content.privacy_policy_prefix_text || ""
9623
9921
  ) }),
9624
9922
  " ",
9625
- /* @__PURE__ */ jsx3(
9923
+ /* @__PURE__ */ jsx5(
9626
9924
  "a",
9627
9925
  {
9628
9926
  id: "privacy-policy-link",
@@ -9642,7 +9940,7 @@ var RedactoNoticeAssisted = ({
9642
9940
  )
9643
9941
  ] })
9644
9942
  ] }),
9645
- /* @__PURE__ */ jsx3(
9943
+ /* @__PURE__ */ jsx5(
9646
9944
  "h2",
9647
9945
  {
9648
9946
  id: "purpose-section-heading",
@@ -9653,7 +9951,7 @@ var RedactoNoticeAssisted = ({
9653
9951
  )
9654
9952
  }
9655
9953
  ),
9656
- /* @__PURE__ */ jsx3(
9954
+ /* @__PURE__ */ jsx5(
9657
9955
  "div",
9658
9956
  {
9659
9957
  style: {
@@ -9661,7 +9959,7 @@ var RedactoNoticeAssisted = ({
9661
9959
  ...locked ? styles3.lockedOptions : null
9662
9960
  },
9663
9961
  "aria-disabled": locked || void 0,
9664
- children: content.purposes.map((purpose) => /* @__PURE__ */ jsx3(
9962
+ children: content.purposes.map((purpose) => /* @__PURE__ */ jsx5(
9665
9963
  PurposeItem2,
9666
9964
  {
9667
9965
  purpose,
@@ -9683,19 +9981,19 @@ var RedactoNoticeAssisted = ({
9683
9981
  renderDpoFooter()
9684
9982
  ] });
9685
9983
  };
9686
- const renderVerifyBlock = () => /* @__PURE__ */ jsxs3(
9984
+ const renderVerifyBlock = () => /* @__PURE__ */ jsxs4(
9687
9985
  "div",
9688
9986
  {
9689
9987
  ref: verifyBlockRef,
9690
9988
  className: "redacto-assisted-reveal",
9691
9989
  style: styles3.verifyPanel,
9692
9990
  children: [
9693
- /* @__PURE__ */ jsxs3("div", { style: styles3.verifyPanelHeader, children: [
9694
- /* @__PURE__ */ jsxs3("span", { style: styles3.verifyPanelTitle, children: [
9695
- /* @__PURE__ */ jsx3(LockIcon, { size: 15, color: primaryColor }),
9991
+ /* @__PURE__ */ jsxs4("div", { style: styles3.verifyPanelHeader, children: [
9992
+ /* @__PURE__ */ jsxs4("span", { style: styles3.verifyPanelTitle, children: [
9993
+ /* @__PURE__ */ jsx5(LockIcon, { size: 15, color: primaryColor }),
9696
9994
  ts("verifyWithOtp")
9697
9995
  ] }),
9698
- /* @__PURE__ */ jsx3(
9996
+ /* @__PURE__ */ jsx5(
9699
9997
  "button",
9700
9998
  {
9701
9999
  type: "button",
@@ -9706,42 +10004,44 @@ var RedactoNoticeAssisted = ({
9706
10004
  }
9707
10005
  )
9708
10006
  ] }),
9709
- /* @__PURE__ */ jsxs3("div", { style: styles3.phoneFieldWrap, children: [
9710
- /* @__PURE__ */ jsxs3("div", { style: styles3.fieldLabelRow, children: [
9711
- /* @__PURE__ */ jsxs3(
10007
+ /* @__PURE__ */ jsxs4("div", { style: styles3.phoneFieldWrap, children: [
10008
+ /* @__PURE__ */ jsxs4("div", { style: styles3.fieldLabelRow, children: [
10009
+ /* @__PURE__ */ jsxs4(
9712
10010
  "label",
9713
10011
  {
9714
10012
  htmlFor: verifyMethod === "email" ? "redacto-assisted-email" : "redacto-assisted-mobile",
9715
10013
  style: styles3.fieldLabelWithIcon,
9716
10014
  children: [
9717
- verifyMethod === "email" ? /* @__PURE__ */ jsx3(MailIcon, { size: 14, color: "#475467" }) : /* @__PURE__ */ jsx3(PhoneIcon, { size: 14, color: "#475467" }),
10015
+ verifyMethod === "email" ? /* @__PURE__ */ jsx5(MailIcon, { size: 14, color: "#475467" }) : /* @__PURE__ */ jsx5(PhoneIcon, { size: 14, color: "#475467" }),
9718
10016
  verifyMethod === "email" ? ts("emailAddress") : ts("mobileNumber")
9719
10017
  ]
9720
10018
  }
9721
10019
  ),
9722
- !otpSent && /* @__PURE__ */ jsxs3(
10020
+ !otpSent && /* @__PURE__ */ jsxs4(
9723
10021
  "button",
9724
10022
  {
9725
10023
  type: "button",
9726
10024
  className: "redacto-assisted-switch-link",
9727
10025
  style: { ...styles3.editLink, color: primaryColor },
9728
- onClick: () => handleSelectMethod(verifyMethod === "email" ? "mobile" : "email"),
10026
+ onClick: () => handleSelectMethod(
10027
+ verifyMethod === "email" ? "mobile" : "email"
10028
+ ),
9729
10029
  disabled: isSendingOtp,
9730
10030
  children: [
9731
- verifyMethod === "email" ? /* @__PURE__ */ jsx3(PhoneIcon, { size: 14, color: primaryColor }) : /* @__PURE__ */ jsx3(MailIcon, { size: 14, color: primaryColor }),
10031
+ verifyMethod === "email" ? /* @__PURE__ */ jsx5(PhoneIcon, { size: 14, color: primaryColor }) : /* @__PURE__ */ jsx5(MailIcon, { size: 14, color: primaryColor }),
9732
10032
  verifyMethod === "email" ? ts("useMobileInstead") : ts("useEmailInstead")
9733
10033
  ]
9734
10034
  }
9735
10035
  )
9736
10036
  ] }),
9737
- verifyMethod === "mobile" ? /* @__PURE__ */ jsxs3(
10037
+ verifyMethod === "mobile" ? /* @__PURE__ */ jsxs4(
9738
10038
  "div",
9739
10039
  {
9740
10040
  className: "redacto-assisted-phone-field",
9741
10041
  style: styles3.phoneField,
9742
10042
  children: [
9743
- /* @__PURE__ */ jsx3("span", { style: styles3.phonePrefix, children: ASSISTED_CONFIG.dialCode }),
9744
- /* @__PURE__ */ jsx3(
10043
+ /* @__PURE__ */ jsx5("span", { style: styles3.phonePrefix, children: ASSISTED_CONFIG.dialCode }),
10044
+ /* @__PURE__ */ jsx5(
9745
10045
  "input",
9746
10046
  {
9747
10047
  id: "redacto-assisted-mobile",
@@ -9759,12 +10059,12 @@ var RedactoNoticeAssisted = ({
9759
10059
  )
9760
10060
  ]
9761
10061
  }
9762
- ) : /* @__PURE__ */ jsx3(
10062
+ ) : /* @__PURE__ */ jsx5(
9763
10063
  "div",
9764
10064
  {
9765
10065
  className: "redacto-assisted-phone-field",
9766
10066
  style: styles3.phoneField,
9767
- children: /* @__PURE__ */ jsx3(
10067
+ children: /* @__PURE__ */ jsx5(
9768
10068
  "input",
9769
10069
  {
9770
10070
  id: "redacto-assisted-email",
@@ -9782,15 +10082,15 @@ var RedactoNoticeAssisted = ({
9782
10082
  )
9783
10083
  }
9784
10084
  ),
9785
- !otpSent ? /* @__PURE__ */ jsx3("p", { style: styles3.helperText, children: verifyMethod === "email" ? ts("otpHelperEmail") : ts("otpHelper") }) : /* @__PURE__ */ jsxs3("div", { style: styles3.otpStatusRow, children: [
9786
- /* @__PURE__ */ jsxs3("span", { style: styles3.otpSentText, children: [
9787
- /* @__PURE__ */ jsx3(CheckIcon, { size: 15, color: "#10B981" }),
10085
+ !otpSent ? /* @__PURE__ */ jsx5("p", { style: styles3.helperText, children: verifyMethod === "email" ? ts("otpHelperEmail") : ts("otpHelper") }) : /* @__PURE__ */ jsxs4("div", { style: styles3.otpStatusRow, children: [
10086
+ /* @__PURE__ */ jsxs4("span", { style: styles3.otpSentText, children: [
10087
+ /* @__PURE__ */ jsx5(CheckIcon, { size: 15, color: "#10B981" }),
9788
10088
  " ",
9789
10089
  ts("otpSentTo"),
9790
10090
  " ",
9791
10091
  verifyMethod === "email" ? email : `${ASSISTED_CONFIG.dialCode} ${mobile}`
9792
10092
  ] }),
9793
- /* @__PURE__ */ jsx3(
10093
+ /* @__PURE__ */ jsx5(
9794
10094
  "button",
9795
10095
  {
9796
10096
  type: "button",
@@ -9801,15 +10101,15 @@ var RedactoNoticeAssisted = ({
9801
10101
  }
9802
10102
  )
9803
10103
  ] }),
9804
- createError && /* @__PURE__ */ jsx3("p", { style: styles3.fieldError, role: "alert", children: createError }),
9805
- otpSent && /* @__PURE__ */ jsxs3(
10104
+ createError && /* @__PURE__ */ jsx5("p", { style: styles3.fieldError, role: "alert", children: createError }),
10105
+ otpSent && /* @__PURE__ */ jsxs4(
9806
10106
  "div",
9807
10107
  {
9808
10108
  ref: otpSectionRef,
9809
10109
  style: { display: "flex", flexDirection: "column", gap: "12px" },
9810
10110
  children: [
9811
- /* @__PURE__ */ jsx3("p", { style: styles3.centerLabel, children: ts("enterNDigitOtp", { count: ASSISTED_CONFIG.otpLength }) }),
9812
- /* @__PURE__ */ jsx3("div", { style: styles3.otpRow, children: otpDigits.map((digit, index) => /* @__PURE__ */ jsx3(
10111
+ /* @__PURE__ */ jsx5("p", { style: styles3.centerLabel, children: ts("enterNDigitOtp", { count: ASSISTED_CONFIG.otpLength }) }),
10112
+ /* @__PURE__ */ jsx5("div", { style: styles3.otpRow, children: otpDigits.map((digit, index) => /* @__PURE__ */ jsx5(
9813
10113
  "input",
9814
10114
  {
9815
10115
  ref: (el) => {
@@ -9839,11 +10139,11 @@ var RedactoNoticeAssisted = ({
9839
10139
  },
9840
10140
  index
9841
10141
  )) }),
9842
- otpError && /* @__PURE__ */ jsx3("p", { style: styles3.fieldError, role: "alert", children: otpError }),
9843
- /* @__PURE__ */ jsx3("p", { style: styles3.resendText, children: resendCountdown > 0 ? /* @__PURE__ */ jsxs3(Fragment2, { children: [
9844
- /* @__PURE__ */ jsx3(ClockIcon, {}),
10142
+ otpError && /* @__PURE__ */ jsx5("p", { style: styles3.fieldError, role: "alert", children: otpError }),
10143
+ /* @__PURE__ */ jsx5("p", { style: styles3.resendText, children: resendCountdown > 0 ? /* @__PURE__ */ jsxs4(Fragment3, { children: [
10144
+ /* @__PURE__ */ jsx5(ClockIcon, {}),
9845
10145
  ts("resendIn", { seconds: resendCountdown })
9846
- ] }) : /* @__PURE__ */ jsx3(
10146
+ ] }) : /* @__PURE__ */ jsx5(
9847
10147
  "button",
9848
10148
  {
9849
10149
  type: "button",
@@ -9863,15 +10163,15 @@ var RedactoNoticeAssisted = ({
9863
10163
  const renderFooter = () => {
9864
10164
  const declineLabel = getTranslatedText(
9865
10165
  "decline_button_text",
9866
- (content == null ? void 0 : content.decline_button_text) || "Decline"
10166
+ (content == null ? void 0 : content.decline_button_text) || DEFAULT_DECLINE_BUTTON_TEXT
9867
10167
  );
9868
10168
  const isVerify = step === "verify";
9869
10169
  let primaryLabel = getTranslatedText(
9870
10170
  "confirm_button_text",
9871
- (content == null ? void 0 : content.confirm_button_text) || "Confirm"
10171
+ (content == null ? void 0 : content.confirm_button_text) || DEFAULT_ACCEPT_SELECTED_BUTTON_TEXT
9872
10172
  );
9873
10173
  let primaryDisabled = !areAllRequiredElementsChecked;
9874
- let primaryOnClick = handleConfirmStep;
10174
+ let primaryOnClick = handleAcceptSelected;
9875
10175
  if (isVerify && !otpSent) {
9876
10176
  primaryLabel = isSendingOtp ? ts("sending") : ts("sendOtp");
9877
10177
  primaryDisabled = !isContactValid || isSendingOtp;
@@ -9881,50 +10181,92 @@ var RedactoNoticeAssisted = ({
9881
10181
  primaryDisabled = !isOtpComplete || isVerifying;
9882
10182
  primaryOnClick = handleConfirm;
9883
10183
  }
9884
- return /* @__PURE__ */ jsxs3("div", { style: { ...styles3.bottomSection, ...responsive.bottomSection }, children: [
9885
- /* @__PURE__ */ jsx3(
9886
- "button",
9887
- {
9888
- type: "button",
9889
- id: "confirm-button-text",
9890
- className: "redacto-assisted-primary-btn",
9891
- style: {
9892
- ...styles3.button,
9893
- ...responsive.button,
9894
- ...styles3.acceptButton,
9895
- backgroundColor: primaryColor
9896
- },
9897
- disabled: primaryDisabled,
9898
- onClick: primaryOnClick,
9899
- children: primaryLabel
9900
- }
9901
- ),
9902
- /* @__PURE__ */ jsx3(
9903
- "button",
9904
- {
9905
- type: "button",
9906
- id: "decline-button-text",
9907
- className: "redacto-assisted-secondary-btn",
9908
- style: {
9909
- ...styles3.button,
9910
- ...responsive.button,
9911
- ...styles3.cancelButton
9912
- },
9913
- onClick: handleDecline,
9914
- children: declineLabel
9915
- }
9916
- )
9917
- ] });
10184
+ const widthStyle = isMobile ? styles3.stackButton : styles3.rowButton;
10185
+ const shortcutStyle = {
10186
+ ...styles3.button,
10187
+ ...responsive.button,
10188
+ ...styles3.acceptButton,
10189
+ ...isVerify ? {} : widthStyle,
10190
+ backgroundColor: primaryColor
10191
+ };
10192
+ const acceptAllButton = /* @__PURE__ */ jsx5(
10193
+ "button",
10194
+ {
10195
+ type: "button",
10196
+ id: "accept-all-button-text",
10197
+ className: "redacto-assisted-secondary-btn",
10198
+ style: shortcutStyle,
10199
+ onClick: handleAcceptAll,
10200
+ children: getTranslatedText(
10201
+ "accept_all_button_text",
10202
+ (content == null ? void 0 : content.accept_all_button_text) || DEFAULT_ACCEPT_ALL_BUTTON_TEXT
10203
+ )
10204
+ }
10205
+ );
10206
+ const primaryButton = /* @__PURE__ */ jsx5(
10207
+ "button",
10208
+ {
10209
+ type: "button",
10210
+ id: "confirm-button-text",
10211
+ className: "redacto-assisted-primary-btn",
10212
+ style: {
10213
+ ...styles3.button,
10214
+ ...responsive.button,
10215
+ ...isVerify ? { ...styles3.acceptButton, backgroundColor: primaryColor } : {
10216
+ ...styles3.cancelButton,
10217
+ ...widthStyle,
10218
+ color: primaryColor,
10219
+ borderColor: primaryColor
10220
+ }
10221
+ },
10222
+ disabled: primaryDisabled,
10223
+ onClick: primaryOnClick,
10224
+ children: primaryLabel
10225
+ }
10226
+ );
10227
+ const declineButton = /* @__PURE__ */ jsx5(
10228
+ "button",
10229
+ {
10230
+ type: "button",
10231
+ id: "decline-button-text",
10232
+ className: "redacto-assisted-secondary-btn",
10233
+ style: {
10234
+ ...styles3.button,
10235
+ ...responsive.button,
10236
+ ...styles3.cancelButton,
10237
+ ...isVerify ? {} : widthStyle,
10238
+ // Only the wide notice-step row needs the push-right spacer.
10239
+ ...isVerify || isMobile ? {} : styles3.declineSpacer
10240
+ },
10241
+ onClick: handleDecline,
10242
+ children: declineLabel
10243
+ }
10244
+ );
10245
+ if (isVerify) {
10246
+ return /* @__PURE__ */ jsxs4("div", { style: { ...styles3.bottomSection, ...responsive.bottomSection }, children: [
10247
+ primaryButton,
10248
+ declineButton
10249
+ ] });
10250
+ }
10251
+ return /* @__PURE__ */ jsx5("div", { style: isMobile ? styles3.actionButtonStack : styles3.actionButtonRow, children: isMobile ? /* @__PURE__ */ jsxs4(Fragment3, { children: [
10252
+ acceptAllButton,
10253
+ primaryButton,
10254
+ declineButton
10255
+ ] }) : /* @__PURE__ */ jsxs4(Fragment3, { children: [
10256
+ declineButton,
10257
+ primaryButton,
10258
+ acceptAllButton
10259
+ ] }) });
9918
10260
  };
9919
10261
  const renderBody = () => {
9920
10262
  if (isLoading) {
9921
- return /* @__PURE__ */ jsx3("div", { style: styles3.loadingWrap, children: /* @__PURE__ */ jsx3("div", { style: styles3.loadingSpinner, "aria-label": ts("loadingNotice") }) });
10263
+ return /* @__PURE__ */ jsx5("div", { style: styles3.loadingWrap, children: /* @__PURE__ */ jsx5("div", { style: styles3.loadingSpinner, "aria-label": ts("loadingNotice") }) });
9922
10264
  }
9923
10265
  if (fetchError || !content) {
9924
- return /* @__PURE__ */ jsxs3("div", { style: styles3.loadingWrap, children: [
9925
- /* @__PURE__ */ jsx3("p", { style: styles3.errorTitle, children: ts("loadFailedTitle") }),
9926
- /* @__PURE__ */ jsx3("p", { style: styles3.errorText, children: (fetchError == null ? void 0 : fetchError.message) || ts("tryAgain") }),
9927
- /* @__PURE__ */ jsx3(
10266
+ return /* @__PURE__ */ jsxs4("div", { style: styles3.loadingWrap, children: [
10267
+ /* @__PURE__ */ jsx5("p", { style: styles3.errorTitle, children: ts("loadFailedTitle") }),
10268
+ /* @__PURE__ */ jsx5("p", { style: styles3.errorText, children: (fetchError == null ? void 0 : fetchError.message) || ts("tryAgain") }),
10269
+ /* @__PURE__ */ jsx5(
9928
10270
  "button",
9929
10271
  {
9930
10272
  type: "button",
@@ -9936,16 +10278,16 @@ var RedactoNoticeAssisted = ({
9936
10278
  )
9937
10279
  ] });
9938
10280
  }
9939
- return /* @__PURE__ */ jsxs3(Fragment2, { children: [
10281
+ return /* @__PURE__ */ jsxs4(Fragment3, { children: [
9940
10282
  renderHeader(),
9941
- /* @__PURE__ */ jsxs3("div", { style: { ...styles3.middleSection, ...responsive.middleSection }, children: [
10283
+ /* @__PURE__ */ jsxs4("div", { style: { ...styles3.middleSection, ...responsive.middleSection }, children: [
9942
10284
  renderNoticeScreen(step === "verify"),
9943
10285
  step === "verify" && renderVerifyBlock()
9944
10286
  ] }),
9945
10287
  renderFooter()
9946
10288
  ] });
9947
10289
  };
9948
- return /* @__PURE__ */ jsx3("div", { style: styles3.overlay, children: /* @__PURE__ */ jsx3(
10290
+ return /* @__PURE__ */ jsx5("div", { style: styles3.overlay, children: /* @__PURE__ */ jsx5(
9949
10291
  "div",
9950
10292
  {
9951
10293
  ...NOTICE_FONT_ROOT_PROPS,
@@ -9958,7 +10300,7 @@ var RedactoNoticeAssisted = ({
9958
10300
  role: "dialog",
9959
10301
  "aria-modal": "true",
9960
10302
  "aria-label": noticeTitle,
9961
- children: /* @__PURE__ */ jsx3("div", { style: styles3.content, children: renderBody() })
10303
+ children: /* @__PURE__ */ jsx5("div", { style: styles3.content, children: renderBody() })
9962
10304
  }
9963
10305
  ) });
9964
10306
  };
@@ -9980,7 +10322,7 @@ var scrollIntoViewSoft = (el) => {
9980
10322
  var ClockIcon = ({
9981
10323
  size = 13,
9982
10324
  color = "#667085"
9983
- }) => /* @__PURE__ */ jsxs3(
10325
+ }) => /* @__PURE__ */ jsxs4(
9984
10326
  "svg",
9985
10327
  {
9986
10328
  width: size,
@@ -9994,15 +10336,15 @@ var ClockIcon = ({
9994
10336
  "aria-hidden": "true",
9995
10337
  style: { flexShrink: 0 },
9996
10338
  children: [
9997
- /* @__PURE__ */ jsx3("circle", { cx: "12", cy: "12", r: "9" }),
9998
- /* @__PURE__ */ jsx3("path", { d: "M12 7v5l3 2" })
10339
+ /* @__PURE__ */ jsx5("circle", { cx: "12", cy: "12", r: "9" }),
10340
+ /* @__PURE__ */ jsx5("path", { d: "M12 7v5l3 2" })
9999
10341
  ]
10000
10342
  }
10001
10343
  );
10002
10344
  var LockIcon = ({
10003
10345
  size = 15,
10004
10346
  color = "#475467"
10005
- }) => /* @__PURE__ */ jsxs3(
10347
+ }) => /* @__PURE__ */ jsxs4(
10006
10348
  "svg",
10007
10349
  {
10008
10350
  width: size,
@@ -10016,15 +10358,15 @@ var LockIcon = ({
10016
10358
  "aria-hidden": "true",
10017
10359
  style: { flexShrink: 0 },
10018
10360
  children: [
10019
- /* @__PURE__ */ jsx3("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2" }),
10020
- /* @__PURE__ */ jsx3("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
10361
+ /* @__PURE__ */ jsx5("rect", { x: "3", y: "11", width: "18", height: "11", rx: "2" }),
10362
+ /* @__PURE__ */ jsx5("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
10021
10363
  ]
10022
10364
  }
10023
10365
  );
10024
10366
  var CheckIcon = ({
10025
10367
  size = 16,
10026
10368
  color = "#10B981"
10027
- }) => /* @__PURE__ */ jsx3(
10369
+ }) => /* @__PURE__ */ jsx5(
10028
10370
  "svg",
10029
10371
  {
10030
10372
  width: size,
@@ -10037,13 +10379,13 @@ var CheckIcon = ({
10037
10379
  strokeLinejoin: "round",
10038
10380
  "aria-hidden": "true",
10039
10381
  style: { flexShrink: 0 },
10040
- children: /* @__PURE__ */ jsx3("path", { d: "M20 6 9 17l-5-5" })
10382
+ children: /* @__PURE__ */ jsx5("path", { d: "M20 6 9 17l-5-5" })
10041
10383
  }
10042
10384
  );
10043
10385
  var PhoneIcon = ({
10044
10386
  size = 14,
10045
10387
  color = "#475467"
10046
- }) => /* @__PURE__ */ jsx3(
10388
+ }) => /* @__PURE__ */ jsx5(
10047
10389
  "svg",
10048
10390
  {
10049
10391
  width: size,
@@ -10056,13 +10398,13 @@ var PhoneIcon = ({
10056
10398
  strokeLinejoin: "round",
10057
10399
  "aria-hidden": "true",
10058
10400
  style: { flexShrink: 0 },
10059
- children: /* @__PURE__ */ jsx3("path", { d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z" })
10401
+ children: /* @__PURE__ */ jsx5("path", { d: "M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z" })
10060
10402
  }
10061
10403
  );
10062
10404
  var MailIcon = ({
10063
10405
  size = 14,
10064
10406
  color = "#475467"
10065
- }) => /* @__PURE__ */ jsxs3(
10407
+ }) => /* @__PURE__ */ jsxs4(
10066
10408
  "svg",
10067
10409
  {
10068
10410
  width: size,
@@ -10076,15 +10418,15 @@ var MailIcon = ({
10076
10418
  "aria-hidden": "true",
10077
10419
  style: { flexShrink: 0 },
10078
10420
  children: [
10079
- /* @__PURE__ */ jsx3("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" }),
10080
- /* @__PURE__ */ jsx3("path", { d: "m22 7-10 5L2 7" })
10421
+ /* @__PURE__ */ jsx5("rect", { x: "2", y: "4", width: "20", height: "16", rx: "2" }),
10422
+ /* @__PURE__ */ jsx5("path", { d: "m22 7-10 5L2 7" })
10081
10423
  ]
10082
10424
  }
10083
10425
  );
10084
10426
 
10085
10427
  // src/RedactoNoticeConsent/components/DigiLockerCallback.tsx
10086
10428
  import { useCallback as useCallback4, useEffect as useEffect7, useRef as useRef4, useState as useState6 } from "react";
10087
- import { Fragment as Fragment3, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
10429
+ import { Fragment as Fragment4, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
10088
10430
  var DigiLockerCallback = ({
10089
10431
  accessToken: propAccessToken,
10090
10432
  baseUrl,
@@ -10482,25 +10824,25 @@ var DigiLockerCallback = ({
10482
10824
  transform: translateY(0);
10483
10825
  }
10484
10826
  `;
10485
- return /* @__PURE__ */ jsxs4(Fragment3, { children: [
10486
- /* @__PURE__ */ jsx4("style", { dangerouslySetInnerHTML: { __html: keyframesStyle } }),
10487
- /* @__PURE__ */ jsx4("div", { style: containerStyle, children: /* @__PURE__ */ jsxs4("div", { style: cardStyle, children: [
10488
- status === "processing" && /* @__PURE__ */ jsxs4(Fragment3, { children: [
10489
- /* @__PURE__ */ jsx4("div", { style: spinnerContainerStyle, children: /* @__PURE__ */ jsx4("div", { style: spinnerStyle }) }),
10490
- /* @__PURE__ */ jsx4("h2", { style: titleStyle, children: "Processing Verification" }),
10491
- /* @__PURE__ */ jsx4("p", { style: messageStyle, children: message }),
10492
- /* @__PURE__ */ jsx4("p", { style: subtextStyle, children: "Please wait while we verify your guardian's identity..." })
10827
+ return /* @__PURE__ */ jsxs5(Fragment4, { children: [
10828
+ /* @__PURE__ */ jsx6("style", { dangerouslySetInnerHTML: { __html: keyframesStyle } }),
10829
+ /* @__PURE__ */ jsx6("div", { style: containerStyle, children: /* @__PURE__ */ jsxs5("div", { style: cardStyle, children: [
10830
+ status === "processing" && /* @__PURE__ */ jsxs5(Fragment4, { children: [
10831
+ /* @__PURE__ */ jsx6("div", { style: spinnerContainerStyle, children: /* @__PURE__ */ jsx6("div", { style: spinnerStyle }) }),
10832
+ /* @__PURE__ */ jsx6("h2", { style: titleStyle, children: "Processing Verification" }),
10833
+ /* @__PURE__ */ jsx6("p", { style: messageStyle, children: message }),
10834
+ /* @__PURE__ */ jsx6("p", { style: subtextStyle, children: "Please wait while we verify your guardian's identity..." })
10493
10835
  ] }),
10494
- status === "success" && /* @__PURE__ */ jsxs4(Fragment3, { children: [
10495
- /* @__PURE__ */ jsxs4("div", { style: { position: "relative", width: "72px", height: "72px", margin: "0 auto 28px" }, children: [
10496
- /* @__PURE__ */ jsx4("div", { style: {
10836
+ status === "success" && /* @__PURE__ */ jsxs5(Fragment4, { children: [
10837
+ /* @__PURE__ */ jsxs5("div", { style: { position: "relative", width: "72px", height: "72px", margin: "0 auto 28px" }, children: [
10838
+ /* @__PURE__ */ jsx6("div", { style: {
10497
10839
  position: "absolute",
10498
10840
  inset: "-8px",
10499
10841
  borderRadius: "50%",
10500
10842
  border: "2px solid #d1fae5",
10501
10843
  animation: "redacto-dl-pulse 1.5s ease-out infinite"
10502
10844
  } }),
10503
- /* @__PURE__ */ jsx4("div", { style: successIconStyle, children: /* @__PURE__ */ jsx4(
10845
+ /* @__PURE__ */ jsx6("div", { style: successIconStyle, children: /* @__PURE__ */ jsx6(
10504
10846
  "svg",
10505
10847
  {
10506
10848
  width: "30",
@@ -10512,16 +10854,16 @@ var DigiLockerCallback = ({
10512
10854
  strokeLinecap: "round",
10513
10855
  strokeLinejoin: "round",
10514
10856
  style: { strokeDasharray: 24, animation: "redacto-dl-check 0.4s ease-out 0.3s forwards", strokeDashoffset: 24 },
10515
- children: /* @__PURE__ */ jsx4("polyline", { points: "20 6 9 17 4 12" })
10857
+ children: /* @__PURE__ */ jsx6("polyline", { points: "20 6 9 17 4 12" })
10516
10858
  }
10517
10859
  ) })
10518
10860
  ] }),
10519
- /* @__PURE__ */ jsx4("h2", { style: titleStyle, children: "Verification Successful" }),
10520
- /* @__PURE__ */ jsx4("p", { style: messageStyle, children: message }),
10521
- /* @__PURE__ */ jsx4("p", { style: subtextStyle, children: "You will be redirected automatically." })
10861
+ /* @__PURE__ */ jsx6("h2", { style: titleStyle, children: "Verification Successful" }),
10862
+ /* @__PURE__ */ jsx6("p", { style: messageStyle, children: message }),
10863
+ /* @__PURE__ */ jsx6("p", { style: subtextStyle, children: "You will be redirected automatically." })
10522
10864
  ] }),
10523
- status === "error" && /* @__PURE__ */ jsxs4(Fragment3, { children: [
10524
- /* @__PURE__ */ jsx4("div", { style: errorIconStyle, children: /* @__PURE__ */ jsxs4(
10865
+ status === "error" && /* @__PURE__ */ jsxs5(Fragment4, { children: [
10866
+ /* @__PURE__ */ jsx6("div", { style: errorIconStyle, children: /* @__PURE__ */ jsxs5(
10525
10867
  "svg",
10526
10868
  {
10527
10869
  width: "30",
@@ -10533,15 +10875,15 @@ var DigiLockerCallback = ({
10533
10875
  strokeLinecap: "round",
10534
10876
  strokeLinejoin: "round",
10535
10877
  children: [
10536
- /* @__PURE__ */ jsx4("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
10537
- /* @__PURE__ */ jsx4("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
10878
+ /* @__PURE__ */ jsx6("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
10879
+ /* @__PURE__ */ jsx6("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
10538
10880
  ]
10539
10881
  }
10540
10882
  ) }),
10541
- /* @__PURE__ */ jsx4("h2", { style: titleStyle, children: "Verification Failed" }),
10542
- /* @__PURE__ */ jsx4("p", { style: messageStyle, children: message }),
10543
- errorDetail && /* @__PURE__ */ jsx4("p", { style: errorDetailStyle, children: errorDetail }),
10544
- /* @__PURE__ */ jsx4(
10883
+ /* @__PURE__ */ jsx6("h2", { style: titleStyle, children: "Verification Failed" }),
10884
+ /* @__PURE__ */ jsx6("p", { style: messageStyle, children: message }),
10885
+ errorDetail && /* @__PURE__ */ jsx6("p", { style: errorDetailStyle, children: errorDetail }),
10886
+ /* @__PURE__ */ jsx6(
10545
10887
  "button",
10546
10888
  {
10547
10889
  className: "redacto-dl-retry-btn",