@smileid/web-components 11.4.5 → 11.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/esm/DocumentCaptureScreens-DjSTdVP-.js +5398 -0
  2. package/dist/esm/DocumentCaptureScreens-DjSTdVP-.js.map +1 -0
  3. package/dist/esm/{Navigation-Bb7MPLE8.js → Navigation-6DH3vF4-.js} +28 -22
  4. package/dist/esm/Navigation-6DH3vF4-.js.map +1 -0
  5. package/dist/esm/{PoweredBySmileId-CxbaihMu.js → PoweredBySmileId-DoKwoPUd.js} +424 -6
  6. package/dist/esm/PoweredBySmileId-DoKwoPUd.js.map +1 -0
  7. package/dist/esm/SelfieCaptureScreens-CtX-4Tco.js +11470 -0
  8. package/dist/esm/SelfieCaptureScreens-CtX-4Tco.js.map +1 -0
  9. package/dist/esm/combobox.js +1 -1
  10. package/dist/esm/document.js +1 -1
  11. package/dist/esm/end-user-consent.js +713 -2
  12. package/dist/esm/end-user-consent.js.map +1 -1
  13. package/dist/esm/index-BqyuTk9f.js +1366 -0
  14. package/dist/esm/{index-C4RTMbgw.js.map → index-BqyuTk9f.js.map} +1 -1
  15. package/dist/esm/localisation.js +1 -1
  16. package/dist/esm/main.js +14 -14
  17. package/dist/esm/navigation.js +1 -1
  18. package/dist/esm/package-CjZI-cNQ.js +2540 -0
  19. package/dist/esm/package-CjZI-cNQ.js.map +1 -0
  20. package/dist/esm/selfie.js +1 -1
  21. package/dist/esm/smart-camera-web.js +81 -37
  22. package/dist/esm/smart-camera-web.js.map +1 -1
  23. package/dist/esm/totp-consent.js +731 -2
  24. package/dist/esm/totp-consent.js.map +1 -1
  25. package/dist/esm/validate.js +31 -0
  26. package/dist/esm/validate.js.map +1 -0
  27. package/dist/smart-camera-web.js +1513 -383
  28. package/dist/smart-camera-web.js.map +1 -1
  29. package/dist/types/main.d.ts +18 -1
  30. package/dist/types/validate.d.ts +21 -0
  31. package/lib/components/document/src/DocumentCaptureScreens.js +97 -18
  32. package/lib/components/document/src/assets/lottie.d.ts +12 -0
  33. package/lib/components/document/src/assets/svg-inline.d.ts +8 -0
  34. package/lib/components/document/src/document-auto-capture/DocumentAutoCapture.stories.js +75 -0
  35. package/lib/components/document/src/document-auto-capture/DocumentAutoCapture.tsx +1458 -0
  36. package/lib/components/document/src/document-auto-capture/README.md +73 -0
  37. package/lib/components/document/src/document-auto-capture/assets/Greenbook_Shimmer.svg +42 -0
  38. package/lib/components/document/src/document-auto-capture/assets/ID_Back_Shimmer.svg +8 -0
  39. package/lib/components/document/src/document-auto-capture/assets/ID_Front_Shimmer.svg +20 -0
  40. package/lib/components/document/src/document-auto-capture/assets/Passport-Shimmer.svg +143 -0
  41. package/lib/components/document/src/document-auto-capture/assets/shimmers.ts +21 -0
  42. package/lib/components/document/src/document-auto-capture/assets/svg-raw.d.ts +4 -0
  43. package/lib/components/document/src/document-auto-capture/components/CaptureButton.tsx +122 -0
  44. package/lib/components/document/src/document-auto-capture/components/Overlay.tsx +167 -0
  45. package/lib/components/document/src/document-auto-capture/components/TuningPanel.tsx +856 -0
  46. package/lib/components/document/src/document-auto-capture/constants/captureLayout.ts +58 -0
  47. package/lib/components/document/src/document-auto-capture/detection/cvErrorRecovery.ts +40 -0
  48. package/lib/components/document/src/document-auto-capture/detection/documentAspect.ts +20 -0
  49. package/lib/components/document/src/document-auto-capture/detection/qualityScoring.ts +35 -0
  50. package/lib/components/document/src/document-auto-capture/detection/seamRejection.ts +209 -0
  51. package/lib/components/document/src/document-auto-capture/detection/synthesisTiming.ts +10 -0
  52. package/lib/components/document/src/document-auto-capture/hooks/useCamera.ts +117 -0
  53. package/lib/components/document/src/document-auto-capture/hooks/useCardDetection.ts +3059 -0
  54. package/lib/components/document/src/document-auto-capture/index.ts +4 -0
  55. package/lib/components/document/src/document-auto-capture/theme.ts +40 -0
  56. package/lib/components/document/src/document-auto-capture/utils/debug.ts +25 -0
  57. package/lib/components/document/src/document-auto-capture/utils/opencvLoader.ts +86 -0
  58. package/lib/components/document/src/document-capture-instructions/DocumentCaptureInstructions.tsx +327 -244
  59. package/lib/components/document/src/document-capture-review/DocumentCaptureReview.js +153 -189
  60. package/lib/components/document/src/document-capture-submission/DocumentCaptureSubmission.tsx +432 -0
  61. package/lib/components/document/src/document-capture-submission/index.js +3 -0
  62. package/lib/components/navigation/src/Navigation.js +27 -8
  63. package/lib/components/selfie/README.md +13 -0
  64. package/lib/components/selfie/src/SelfieCaptureScreens.js +56 -8
  65. package/lib/components/selfie/src/enhanced-smartselfie-capture/EnhancedSmartSelfieCapture.tsx +684 -0
  66. package/lib/components/selfie/src/enhanced-smartselfie-capture/EnhancedSmartSelfieConsent.tsx +71 -0
  67. package/lib/components/selfie/src/enhanced-smartselfie-capture/EnhancedSmartSelfieSubmission.tsx +181 -0
  68. package/lib/components/selfie/src/enhanced-smartselfie-capture/OvalProgress.tsx +87 -0
  69. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/Icon.svg +8 -0
  70. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/accessories.svg +77 -0
  71. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/active_liveness_animation.lottie +0 -0
  72. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/device.svg +12 -0
  73. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/device_orientation.lottie +0 -0
  74. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/good.svg +52 -0
  75. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/id-card.svg +9 -0
  76. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/illustrations.tsx +852 -0
  77. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/instructions-img.svg +3 -0
  78. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/multiple-faces.svg +69 -0
  79. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/person.svg +6 -0
  80. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/phone.svg +8 -0
  81. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/poor-lighting.svg +53 -0
  82. package/lib/components/selfie/src/enhanced-smartselfie-capture/assets/too_dark_animation.lottie +0 -0
  83. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/ActiveLivenessOverlay.tsx +226 -0
  84. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/AlertDisplay.tsx +38 -0
  85. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/BackNavigation.tsx +45 -0
  86. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/CameraPreview.tsx +96 -0
  87. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/CaptureControls.tsx +97 -0
  88. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/CaptureGuidelines.tsx +374 -0
  89. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/ConsentView.tsx +460 -0
  90. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/SubmissionView.tsx +426 -0
  91. package/lib/components/selfie/src/enhanced-smartselfie-capture/components/index.ts +3 -0
  92. package/lib/components/selfie/src/enhanced-smartselfie-capture/constants.ts +23 -0
  93. package/lib/components/selfie/src/enhanced-smartselfie-capture/hooks/index.ts +2 -0
  94. package/lib/components/selfie/src/enhanced-smartselfie-capture/hooks/useCamera.ts +238 -0
  95. package/lib/components/selfie/src/enhanced-smartselfie-capture/hooks/useFaceCapture.ts +1075 -0
  96. package/lib/components/selfie/src/enhanced-smartselfie-capture/index.ts +1 -0
  97. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/alertMessages.ts +20 -0
  98. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/canvas.ts +108 -0
  99. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/faceDetection.ts +545 -0
  100. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/imageCapture.ts +66 -0
  101. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/imageQuality.ts +151 -0
  102. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/index.ts +5 -0
  103. package/lib/components/selfie/src/enhanced-smartselfie-capture/utils/mediapipeManager.ts +215 -0
  104. package/lib/components/selfie/src/selfie-capture-wrapper/SelfieCaptureWrapper.tsx +24 -1
  105. package/lib/components/selfie/src/smartselfie-capture/SmartSelfieCapture.tsx +2 -2
  106. package/lib/components/selfie/src/smartselfie-capture/hooks/useFaceCapture.ts +15 -7
  107. package/lib/components/selfie/src/smartselfie-capture/utils/canvas.ts +4 -6
  108. package/lib/components/signature-pad/package.json +1 -1
  109. package/lib/components/smart-camera-web/src/README.md +11 -0
  110. package/lib/components/smart-camera-web/src/SmartCameraWeb.js +89 -8
  111. package/lib/components/totp-consent/src/TotpConsent.js +1 -1
  112. package/lib/domain/localisation/index.js +2 -2
  113. package/package.json +9 -5
  114. package/dist/esm/DocumentCaptureScreens-D2G0NOQr.js +0 -4147
  115. package/dist/esm/DocumentCaptureScreens-D2G0NOQr.js.map +0 -1
  116. package/dist/esm/EndUserConsent-uHfA3txP.js +0 -717
  117. package/dist/esm/EndUserConsent-uHfA3txP.js.map +0 -1
  118. package/dist/esm/Navigation-Bb7MPLE8.js.map +0 -1
  119. package/dist/esm/PoweredBySmileId-CxbaihMu.js.map +0 -1
  120. package/dist/esm/SelfieCaptureScreens-Dr7VzON7.js +0 -7651
  121. package/dist/esm/SelfieCaptureScreens-Dr7VzON7.js.map +0 -1
  122. package/dist/esm/TotpConsent-Depzg0ti.js +0 -734
  123. package/dist/esm/TotpConsent-Depzg0ti.js.map +0 -1
  124. package/dist/esm/index-C4RTMbgw.js +0 -1360
  125. package/dist/esm/package-D6YrpMcO.js +0 -565
  126. package/dist/esm/package-D6YrpMcO.js.map +0 -1
  127. package/dist/esm/styles-BTEClL7R.js +0 -419
  128. package/dist/esm/styles-BTEClL7R.js.map +0 -1
  129. /package/lib/components/document/src/assets/lottie/{taking photo of green book passport.lottie → greenbook.lottie} +0 -0
  130. /package/lib/components/document/src/assets/lottie/{taking photo of ID FLIP 2D.lottie → id-card-flip.lottie} +0 -0
  131. /package/lib/components/document/src/assets/lottie/{taking photo of ID.lottie → id-card.lottie} +0 -0
  132. /package/lib/components/document/src/assets/lottie/{taking photo of passport 2.lottie → passport.lottie} +0 -0
@@ -0,0 +1,852 @@
1
+ // Hand-converted Preact components for the four instruction-card
2
+ // illustrations. They replace the previous `.svg?raw` +
3
+ // `dangerouslySetInnerHTML` setup so the themed brand-pill colour can be
4
+ // passed in as a real prop instead of a runtime string replace, and the
5
+ // card markup stays inside Preact's normal reconciliation pass.
6
+ //
7
+ // Each component preserves the original SVG layout (47×79 viewBox, drop
8
+ // shadow, rounded border, badge pill at the bottom). Only the "Good"
9
+ // variant actually uses `themeColor`; the other three are intentionally
10
+ // muted (grey pill, red disc) because they're the "bad" examples. They
11
+ // still accept the prop for a consistent call-site API.
12
+ import type { FunctionComponent } from 'preact';
13
+
14
+ interface IllustrationProps {
15
+ themeColor: string;
16
+ }
17
+
18
+ const CardFrame: FunctionComponent<{ filterId: string }> = ({
19
+ filterId,
20
+ children,
21
+ }) => (
22
+ <>
23
+ <g filter={`url(#${filterId})`}>
24
+ <g clip-path={`url(#clip-${filterId})`}>
25
+ <path
26
+ d="M7 75C4.79086 75 3 73.2091 3 71L3 6C3 3.79086 4.79086 2 7 2H40C42.2091 2 44 3.79086 44 6V71C44 73.2091 42.2091 75 40 75H7Z"
27
+ fill="white"
28
+ fill-opacity="0.01"
29
+ shape-rendering="crispEdges"
30
+ />
31
+ {children}
32
+ </g>
33
+ <path
34
+ d="M3.5 71L3.5 6C3.5 4.06701 5.067 2.5 7 2.5H40C41.933 2.5 43.5 4.06701 43.5 6V71C43.5 72.933 41.933 74.5 40 74.5H7C5.067 74.5 3.5 72.933 3.5 71Z"
35
+ stroke="#E2E8F0"
36
+ shape-rendering="crispEdges"
37
+ />
38
+ </g>
39
+ <defs>
40
+ <filter
41
+ id={filterId}
42
+ x="0"
43
+ y="0"
44
+ width="47"
45
+ height="79"
46
+ filterUnits="userSpaceOnUse"
47
+ color-interpolation-filters="sRGB"
48
+ >
49
+ <feFlood flood-opacity="0" result="BackgroundImageFix" />
50
+ <feColorMatrix
51
+ in="SourceAlpha"
52
+ type="matrix"
53
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
54
+ result="hardAlpha"
55
+ />
56
+ <feOffset dy="1" />
57
+ <feGaussianBlur stdDeviation="1" />
58
+ <feComposite in2="hardAlpha" operator="out" />
59
+ <feColorMatrix
60
+ type="matrix"
61
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"
62
+ />
63
+ <feBlend
64
+ mode="normal"
65
+ in2="BackgroundImageFix"
66
+ result={`effect1_${filterId}`}
67
+ />
68
+ <feColorMatrix
69
+ in="SourceAlpha"
70
+ type="matrix"
71
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
72
+ result="hardAlpha"
73
+ />
74
+ <feOffset dy="1" />
75
+ <feGaussianBlur stdDeviation="1.5" />
76
+ <feComposite in2="hardAlpha" operator="out" />
77
+ <feColorMatrix
78
+ type="matrix"
79
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"
80
+ result="effect2"
81
+ />
82
+ <feBlend
83
+ mode="normal"
84
+ in2={`effect1_${filterId}`}
85
+ result={`effect2_${filterId}`}
86
+ />
87
+ <feBlend
88
+ mode="normal"
89
+ in="SourceGraphic"
90
+ in2={`effect2_${filterId}`}
91
+ result="shape"
92
+ />
93
+ </filter>
94
+ <clipPath id={`clip-${filterId}`}>
95
+ <path
96
+ d="M7 75C4.79086 75 3 73.2091 3 71L3 6C3 3.79086 4.79086 2 7 2H40C42.2091 2 44 3.79086 44 6V71C44 73.2091 42.2091 75 40 75H7Z"
97
+ fill="white"
98
+ />
99
+ </clipPath>
100
+ <clipPath id={`inner-${filterId}`}>
101
+ <rect
102
+ width="73"
103
+ height="41"
104
+ fill="white"
105
+ transform="matrix(0 -1 1 0 3 75)"
106
+ />
107
+ </clipPath>
108
+ </defs>
109
+ </>
110
+ );
111
+
112
+ export const GoodIllustration: FunctionComponent<IllustrationProps> = ({
113
+ themeColor,
114
+ }) => {
115
+ const filterId = 'illus-good';
116
+ return (
117
+ <svg
118
+ width="47"
119
+ height="79"
120
+ viewBox="0 0 47 79"
121
+ fill="none"
122
+ xmlns="http://www.w3.org/2000/svg"
123
+ aria-hidden="true"
124
+ >
125
+ <CardFrame filterId={filterId}>
126
+ <g clip-path={`url(#inner-${filterId})`}>
127
+ <rect
128
+ width="73"
129
+ height="41"
130
+ transform="matrix(0 -1 1 0 3 75)"
131
+ fill="white"
132
+ />
133
+ <rect x="11" y="63" width="25" height="6" rx="3" fill={themeColor} />
134
+ </g>
135
+ <path
136
+ d="M13.1627 34.2082C11.7528 33.7797 9.7785 34.5992 10.0317 37.3067C10.2437 39.5746 11.2385 41.636 13.674 41.0316C14.8844 40.7312 14.5892 39.4034 14.4749 37.6975C14.3606 35.9916 14.5726 34.6366 13.1627 34.2082Z"
137
+ fill="#2D2A29"
138
+ />
139
+ <path
140
+ d="M13.1627 34.2082C11.7528 33.7797 9.7785 34.5992 10.0317 37.3067C10.2437 39.5746 11.2385 41.636 13.674 41.0316"
141
+ fill="white"
142
+ />
143
+ <path
144
+ d="M13.1627 34.2082C11.7528 33.7797 9.7785 34.5992 10.0317 37.3067C10.2437 39.5746 11.2385 41.636 13.674 41.0316"
145
+ stroke="#1F1C1C"
146
+ stroke-width="0.5"
147
+ stroke-linecap="round"
148
+ stroke-linejoin="round"
149
+ />
150
+ <path
151
+ d="M34.0715 34.1352C35.4783 33.6969 37.4583 34.5025 37.224 37.2118C37.0278 39.481 36.0474 41.5494 33.6078 40.962C32.3953 40.6701 32.6813 39.3402 32.7836 37.6335C32.886 35.9269 32.6646 34.5734 34.0715 34.1352Z"
152
+ fill="#2D2A29"
153
+ />
154
+ <path
155
+ d="M34.0715 34.1352C35.4783 33.6969 37.4583 34.5025 37.224 37.2118C37.0278 39.481 36.0474 41.5494 33.6078 40.962"
156
+ fill="white"
157
+ />
158
+ <path
159
+ d="M34.0715 34.1352C35.4783 33.6969 37.4583 34.5025 37.224 37.2118C37.0278 39.481 36.0474 41.5494 33.6078 40.962"
160
+ stroke="#1F1C1C"
161
+ stroke-width="0.5"
162
+ stroke-linecap="round"
163
+ stroke-linejoin="round"
164
+ />
165
+ <path
166
+ d="M23.4663 21.0379C11.0066 21.0268 12.8912 33.0461 13.0652 36.3497C13.2392 39.6534 14.8428 50.5533 23.2995 50.8312C32.2383 51.125 33.9327 39.9604 34.1366 36.2762C34.3404 32.592 35.8168 21.0489 23.4663 21.0379Z"
167
+ fill="white"
168
+ />
169
+ <path
170
+ d="M23.4663 21.0379C11.0066 21.0268 12.8912 33.0461 13.0652 36.3497C13.2392 39.6534 14.8428 50.5533 23.2995 50.8312C32.2383 51.125 33.9327 39.9604 34.1366 36.2762C34.3404 32.592 35.8168 21.0489 23.4663 21.0379Z"
171
+ stroke="#1F1C1C"
172
+ stroke-width="0.5"
173
+ />
174
+ <path
175
+ d="M18.9219 34.4335C19.4824 34.4316 19.9396 35.0307 19.9422 35.7706C19.9448 36.5105 19.4918 37.1129 18.9313 37.1148C18.3707 37.1168 17.9135 36.5176 17.9109 35.7777C17.9083 35.0378 18.3614 34.4355 18.9219 34.4335Z"
176
+ fill="#1F1C1C"
177
+ />
178
+ <path
179
+ d="M28.4014 34.4002C28.9619 34.3982 29.4191 34.9974 29.4217 35.7373C29.4243 36.4772 28.9713 37.0796 28.4108 37.0815C27.8502 37.0835 27.393 36.4843 27.3904 35.7444C27.3878 35.0045 27.8409 34.4022 28.4014 34.4002Z"
180
+ fill="#1F1C1C"
181
+ />
182
+ <path
183
+ d="M17.1864 33.6408C17.7256 32.8805 19.2007 32.618 19.824 32.7241"
184
+ stroke="#1F1C1C"
185
+ stroke-width="0.5"
186
+ stroke-linecap="round"
187
+ stroke-linejoin="round"
188
+ />
189
+ <path
190
+ d="M30.0238 33.5958C29.4792 32.8393 28.0023 32.5871 27.3798 32.6976"
191
+ stroke="#1F1C1C"
192
+ stroke-width="0.5"
193
+ stroke-linecap="round"
194
+ stroke-linejoin="round"
195
+ />
196
+ <path
197
+ d="M24.2757 35.6876C24.2757 35.6876 24.3958 39.0457 24.208 39.5609C24.0202 40.0762 23.2895 40.2412 23.1541 40.2417"
198
+ stroke="#1F1C1C"
199
+ stroke-width="0.5"
200
+ stroke-linecap="round"
201
+ stroke-linejoin="round"
202
+ />
203
+ <path
204
+ d="M22.6777 44.9406C23.0693 45.0812 24.1131 45.0812 24.5348 44.9406"
205
+ stroke="#1F1C1C"
206
+ stroke-width="0.5"
207
+ stroke-linecap="round"
208
+ stroke-linejoin="round"
209
+ />
210
+ <path
211
+ d="M20.8545 43.285C20.8545 43.285 21.432 43.5445 23.511 43.5352C25.7796 43.5252 26.5584 43.292 26.5584 43.292C26.5584 43.292 25.3932 43.4648 23.511 43.4751C21.8646 43.4838 20.8545 43.285 20.8545 43.285Z"
212
+ fill="white"
213
+ />
214
+ <path
215
+ d="M20.8545 43.285C20.8545 43.285 21.432 43.5445 23.511 43.5352C25.7796 43.5252 26.5584 43.292 26.5584 43.292C26.5584 43.292 25.3932 43.4648 23.511 43.4751C21.8646 43.4838 20.8545 43.285 20.8545 43.285Z"
216
+ stroke="#1F1C1C"
217
+ stroke-width="0.5"
218
+ stroke-linecap="round"
219
+ stroke-linejoin="round"
220
+ />
221
+ </CardFrame>
222
+ </svg>
223
+ );
224
+ };
225
+
226
+ // The "bad" cards intentionally ignore `themeColor` — the pill stays muted
227
+ // grey and a red ring crosses out the example. The prop is kept on the
228
+ // interface so the call site is uniform.
229
+ export const AccessoriesIllustration: FunctionComponent<
230
+ IllustrationProps
231
+ > = () => {
232
+ const filterId = 'illus-accessories';
233
+ return (
234
+ <svg
235
+ width="47"
236
+ height="79"
237
+ viewBox="0 0 47 79"
238
+ fill="none"
239
+ xmlns="http://www.w3.org/2000/svg"
240
+ aria-hidden="true"
241
+ >
242
+ <CardFrame filterId={filterId}>
243
+ <g clip-path={`url(#inner-${filterId})`}>
244
+ <rect
245
+ width="73"
246
+ height="41"
247
+ transform="matrix(0 -1 1 0 3 75)"
248
+ fill="white"
249
+ />
250
+ </g>
251
+ <rect x="11" y="63" width="25" height="6" rx="3" fill="#848282" />
252
+ <mask
253
+ id={`acc-mask-0`}
254
+ style={{ maskType: 'luminance' }}
255
+ maskUnits="userSpaceOnUse"
256
+ x="-4"
257
+ y="8"
258
+ width="56"
259
+ height="54"
260
+ >
261
+ <path
262
+ d="M51.0264 8.25V61.6221H-3.75V8.25H51.0264Z"
263
+ fill="white"
264
+ stroke="white"
265
+ stroke-width="0.5"
266
+ />
267
+ </mask>
268
+ <g mask={`url(#acc-mask-0)`}>
269
+ <path
270
+ d="M23.5338 13.3046C32.3117 13.3046 39.4387 22.9976 39.4387 34.9359C39.4387 46.8743 32.3117 56.5673 23.5338 56.5673C14.7559 56.5673 7.62891 46.8743 7.62891 34.9359C7.62891 22.9976 14.7559 13.3046 23.5338 13.3046Z"
271
+ stroke="#EF4343"
272
+ stroke-width="0.5"
273
+ />
274
+ </g>
275
+ <mask
276
+ id={`acc-mask-1`}
277
+ style={{ maskType: 'luminance' }}
278
+ maskUnits="userSpaceOnUse"
279
+ x="3"
280
+ y="9"
281
+ width="41"
282
+ height="52"
283
+ >
284
+ <path d="M44 8.99994H3V60.8159H44V8.99994Z" fill="white" />
285
+ </mask>
286
+ <g mask={`url(#acc-mask-1)`}>
287
+ <path
288
+ d="M12.8166 32.7658C11.4254 32.3431 9.47724 33.1516 9.72709 35.8233C9.93631 38.0612 10.9179 40.0953 13.3212 39.499C14.5155 39.2025 14.2242 37.8923 14.1115 36.2089C13.9987 34.5256 14.2078 33.1886 12.8166 32.7658Z"
289
+ fill="#2D2A29"
290
+ />
291
+ <path
292
+ d="M12.8166 32.7658C11.4254 32.3431 9.47724 33.1516 9.72709 35.8233C9.93631 38.0612 10.9179 40.0953 13.3212 39.499"
293
+ fill="white"
294
+ />
295
+ <path
296
+ d="M12.8166 32.7658C11.4254 32.3431 9.47724 33.1516 9.72709 35.8233C9.93631 38.0612 10.9179 40.0953 13.3212 39.499"
297
+ stroke="#1F1C1C"
298
+ stroke-width="0.5"
299
+ stroke-linecap="round"
300
+ stroke-linejoin="round"
301
+ />
302
+ <path
303
+ d="M33.4488 32.694C34.837 32.2616 36.7908 33.0565 36.5596 35.7299C36.366 37.9691 35.3986 40.0101 32.9912 39.4305C31.7949 39.1424 32.077 37.8302 32.178 36.1461C32.279 34.462 32.0606 33.1265 33.4488 32.694Z"
304
+ fill="#2D2A29"
305
+ />
306
+ <path
307
+ d="M33.4488 32.694C34.837 32.2616 36.7908 33.0565 36.5596 35.7299C36.366 37.9691 35.3986 40.0101 32.9912 39.4305"
308
+ fill="white"
309
+ />
310
+ <path
311
+ d="M33.4488 32.694C34.837 32.2616 36.7908 33.0565 36.5596 35.7299C36.366 37.9691 35.3986 40.0101 32.9912 39.4305"
312
+ stroke="#1F1C1C"
313
+ stroke-width="0.5"
314
+ stroke-linecap="round"
315
+ stroke-linejoin="round"
316
+ />
317
+ <path
318
+ d="M22.9836 19.7699C10.6889 19.759 12.5485 31.6191 12.7202 34.8791C12.892 38.139 14.4742 48.8946 22.819 49.1688C31.6395 49.4587 33.3115 38.4419 33.5126 34.8065C33.7137 31.1711 35.1706 19.7808 22.9836 19.7699Z"
319
+ fill="white"
320
+ />
321
+ <path
322
+ d="M22.9836 19.7699C10.6889 19.759 12.5485 31.6191 12.7202 34.8791C12.892 38.139 14.4742 48.8946 22.819 49.1688C31.6395 49.4587 33.3115 38.4419 33.5126 34.8065C33.7137 31.1711 35.1706 19.7808 22.9836 19.7699Z"
323
+ stroke="#1F1C1C"
324
+ stroke-width="0.5"
325
+ />
326
+ <path
327
+ d="M18.5002 32.9882C19.0534 32.9863 19.5045 33.5775 19.5071 34.3076C19.5096 35.0377 19.0626 35.6321 18.5095 35.634C17.9564 35.6359 17.5052 35.0447 17.5027 34.3146C17.5001 33.5845 17.9471 32.9901 18.5002 32.9882Z"
328
+ fill="#1F1C1C"
329
+ />
330
+ <path
331
+ d="M27.8543 32.9556C28.4074 32.9537 28.8585 33.5449 28.8611 34.275C28.8636 35.0051 28.4166 35.5995 27.8635 35.6014C27.3104 35.6034 26.8592 35.0121 26.8567 34.282C26.8541 33.5519 27.3011 32.9575 27.8543 32.9556Z"
332
+ fill="#1F1C1C"
333
+ />
334
+ <path
335
+ d="M16.7869 32.2059C17.319 31.4557 18.7745 31.1967 19.3896 31.3014"
336
+ stroke="#1F1C1C"
337
+ stroke-width="0.5"
338
+ stroke-linecap="round"
339
+ stroke-linejoin="round"
340
+ />
341
+ <path
342
+ d="M29.4544 32.1618C28.917 31.4153 27.4597 31.1664 26.8454 31.2755"
343
+ stroke="#1F1C1C"
344
+ stroke-width="0.5"
345
+ stroke-linecap="round"
346
+ stroke-linejoin="round"
347
+ />
348
+ <path
349
+ d="M23.7821 34.2257C23.7821 34.2257 23.9006 37.5393 23.7153 38.0477C23.53 38.5561 22.809 38.719 22.6753 38.7195"
350
+ stroke="#1F1C1C"
351
+ stroke-width="0.5"
352
+ stroke-linecap="round"
353
+ stroke-linejoin="round"
354
+ />
355
+ <path
356
+ d="M22.2061 43.3561C22.5924 43.495 23.6224 43.495 24.0386 43.3561"
357
+ stroke="#1F1C1C"
358
+ stroke-width="0.5"
359
+ stroke-linecap="round"
360
+ stroke-linejoin="round"
361
+ />
362
+ <path
363
+ d="M20.4067 41.7226C20.4067 41.7226 20.9766 41.9787 23.0281 41.9695C25.2666 41.9597 26.0352 41.7296 26.0352 41.7296C26.0352 41.7296 24.8853 41.9001 23.0281 41.9102C21.4035 41.9188 20.4067 41.7226 20.4067 41.7226Z"
364
+ fill="white"
365
+ />
366
+ <path
367
+ d="M20.4067 41.7226C20.4067 41.7226 20.9766 41.9787 23.0281 41.9695C25.2666 41.9597 26.0352 41.7296 26.0352 41.7296C26.0352 41.7296 24.8853 41.9001 23.0281 41.9102C21.4035 41.9188 20.4067 41.7226 20.4067 41.7226Z"
368
+ stroke="#1F1C1C"
369
+ stroke-width="0.5"
370
+ stroke-linecap="round"
371
+ stroke-linejoin="round"
372
+ />
373
+ <path
374
+ d="M14.7529 37.8635C14.7529 37.8635 13.7216 37.769 12.1802 31.7942"
375
+ stroke="#1F1C1C"
376
+ stroke-width="0.5"
377
+ stroke-linecap="round"
378
+ stroke-linejoin="round"
379
+ />
380
+ <path
381
+ d="M31.9355 37.8037C31.9355 37.8037 33.1531 35.1909 34.0523 31.9394"
382
+ stroke="#1F1C1C"
383
+ stroke-width="0.5"
384
+ stroke-linecap="round"
385
+ stroke-linejoin="round"
386
+ />
387
+ <path
388
+ d="M30.1131 44.7719C32.8699 42.1709 32.6121 41.0965 33.3281 39.0691"
389
+ stroke="#1F1C1C"
390
+ stroke-width="0.5"
391
+ stroke-linecap="round"
392
+ stroke-linejoin="round"
393
+ />
394
+ <path
395
+ d="M15.9583 44.3053C12.9669 41.7936 13.5822 41.0725 12.9102 39.1367"
396
+ stroke="#1F1C1C"
397
+ stroke-width="0.5"
398
+ stroke-linecap="round"
399
+ stroke-linejoin="round"
400
+ />
401
+ <path
402
+ d="M23.5395 35.7791C22.209 35.8127 20.8818 36.8009 19.8988 36.9489C18.9158 37.097 14.2002 36.9399 14.2002 36.9399C14.2002 36.9399 14.8418 38.8845 14.5395 43.456C14.947 44.1777 18.2676 49.5368 23.7893 49.3449C29.3426 49.1519 30.0401 45.5982 31.7525 43.445C31.4236 40.033 32.4235 36.7895 32.4235 36.7895C32.4235 36.7895 27.9696 37.0075 27.1879 36.8367C26.4063 36.6659 24.87 35.7456 23.5395 35.7791Z"
403
+ fill="#8C8686"
404
+ />
405
+ <path
406
+ d="M23.5395 35.7791C22.209 35.8127 20.8818 36.8009 19.8988 36.9489C18.9158 37.097 14.2002 36.9399 14.2002 36.9399C14.2002 36.9399 14.8418 38.8845 14.5395 43.456C14.947 44.1777 18.2676 49.5368 23.7893 49.3449C29.3426 49.1519 30.0401 45.5982 31.7525 43.445C31.4236 40.033 32.4235 36.7895 32.4235 36.7895C32.4235 36.7895 27.9696 37.0075 27.1879 36.8367C26.4063 36.6659 24.87 35.7456 23.5395 35.7791Z"
407
+ stroke="#1F1C1C"
408
+ stroke-width="0.5"
409
+ stroke-linecap="round"
410
+ stroke-linejoin="round"
411
+ />
412
+ <path
413
+ d="M15.9506 41.186C15.9506 41.186 20.9811 40.4164 23.2088 40.4954C25.2934 40.5693 28.8217 40.8229 30.0955 41.1077"
414
+ stroke="#1F1C1C"
415
+ stroke-width="0.5"
416
+ stroke-linecap="round"
417
+ stroke-linejoin="round"
418
+ />
419
+ <path
420
+ d="M16.7091 43.0347C16.7091 43.0347 20.4734 44.1497 23.1346 44.1114C25.2202 44.0815 28.5125 43.4274 29.5233 42.961"
421
+ stroke="#1F1C1C"
422
+ stroke-width="0.5"
423
+ stroke-linecap="round"
424
+ stroke-linejoin="round"
425
+ />
426
+ <path
427
+ d="M16.8896 44.9433C16.8896 44.9433 20.1057 46.4363 23.2297 46.3964C25.3155 46.3699 28.3463 45.424 29.3571 44.9576"
428
+ stroke="#1F1C1C"
429
+ stroke-width="0.5"
430
+ stroke-linecap="round"
431
+ stroke-linejoin="round"
432
+ />
433
+ <path
434
+ d="M24.4977 33.6644C23.735 33.2493 22.1671 33.3089 21.8622 33.6667"
435
+ stroke="#1F1C1C"
436
+ stroke-width="0.5"
437
+ />
438
+ <path
439
+ d="M20.3603 31.5591C19.1688 31.1374 15.5236 31.2855 13.8285 31.6531C13.3137 31.7646 12.2788 32.0196 12.2788 32.0196C12.2788 32.0196 12.1192 32.3118 12.3143 32.4721C12.5095 32.6324 12.9966 32.9201 13.0624 33.0813C13.1282 33.2426 13.2715 35.2465 13.3093 36.0224C13.347 36.7983 13.9747 38.7019 17.3064 38.808C22.1564 38.9624 21.9392 34.8696 21.9937 33.9244C22.0514 32.9215 21.1222 31.8285 20.3603 31.5591Z"
440
+ fill="#1F1C1C"
441
+ />
442
+ <path
443
+ d="M20.3603 31.5591C19.1688 31.1374 15.5236 31.2855 13.8285 31.6531C13.3137 31.7646 12.2788 32.0196 12.2788 32.0196C12.2788 32.0196 12.1192 32.3118 12.3143 32.4721C12.5095 32.6324 12.9966 32.9201 13.0624 33.0813C13.1282 33.2426 13.2715 35.2465 13.3093 36.0224C13.347 36.7983 13.9747 38.7019 17.3064 38.808C22.1564 38.9624 21.9392 34.8696 21.9937 33.9244C22.0514 32.9215 21.1222 31.8285 20.3603 31.5591Z"
444
+ stroke="#1F1C1C"
445
+ stroke-width="0.5"
446
+ />
447
+ <path
448
+ d="M25.8574 31.5207C27.0429 31.0824 30.6898 31.1796 32.3898 31.5235C32.9062 31.6277 33.9445 31.8683 33.9445 31.8683C33.9445 31.8683 34.1082 32.1582 33.9153 32.3213C33.7224 32.4843 33.2394 32.7787 33.1759 32.9409C33.1123 33.103 32.997 35.1088 32.9701 35.8851C32.9431 36.6614 32.342 38.5736 29.0122 38.7262C24.1648 38.9484 24.3248 34.853 24.2572 33.9086C24.1855 32.9066 25.0993 31.8007 25.8574 31.5207Z"
449
+ fill="#1F1C1C"
450
+ />
451
+ <path
452
+ d="M25.8574 31.5207C27.0429 31.0824 30.6898 31.1796 32.3898 31.5235C32.9062 31.6277 33.9445 31.8683 33.9445 31.8683C33.9445 31.8683 34.1082 32.1582 33.9153 32.3213C33.7224 32.4843 33.2394 32.7787 33.1759 32.9409C33.1123 33.103 32.997 35.1088 32.9701 35.8851C32.9431 36.6614 32.342 38.5736 29.0122 38.7262C24.1648 38.9484 24.3248 34.853 24.2572 33.9086C24.1855 32.9066 25.0993 31.8007 25.8574 31.5207Z"
453
+ stroke="#1F1C1C"
454
+ stroke-width="0.5"
455
+ />
456
+ </g>
457
+ </CardFrame>
458
+ </svg>
459
+ );
460
+ };
461
+
462
+ export const MultipleFacesIllustration: FunctionComponent<
463
+ IllustrationProps
464
+ > = () => {
465
+ const filterId = 'illus-multiple';
466
+ return (
467
+ <svg
468
+ width="47"
469
+ height="79"
470
+ viewBox="0 0 47 79"
471
+ fill="none"
472
+ xmlns="http://www.w3.org/2000/svg"
473
+ aria-hidden="true"
474
+ >
475
+ <CardFrame filterId={filterId}>
476
+ <g clip-path={`url(#inner-${filterId})`}>
477
+ <rect
478
+ width="73"
479
+ height="41"
480
+ transform="matrix(0 -1 1 0 3 75)"
481
+ fill="white"
482
+ />
483
+ <rect x="11" y="63" width="25" height="6" rx="3" fill="#848282" />
484
+ <path
485
+ d="M23.5338 13.3046C32.3117 13.3046 39.4387 22.9976 39.4387 34.9359C39.4387 46.8743 32.3117 56.5673 23.5338 56.5673C14.7559 56.5673 7.62891 46.8743 7.62891 34.9359C7.62891 22.9976 14.7559 13.3046 23.5338 13.3046Z"
486
+ stroke="#EF4343"
487
+ stroke-width="0.5"
488
+ />
489
+ <path
490
+ d="M26.1612 35.0191C25.5397 34.8303 24.6695 35.1915 24.7811 36.3849C24.8745 37.3846 25.313 38.2932 26.3866 38.0268C26.9201 37.8944 26.79 37.3091 26.7396 36.5572C26.6892 35.8052 26.7826 35.208 26.1612 35.0191Z"
491
+ fill="#2D2A29"
492
+ />
493
+ <path
494
+ d="M26.1612 35.0191C25.5397 34.8303 24.6695 35.1915 24.7811 36.3849C24.8745 37.3846 25.313 38.2932 26.3866 38.0268"
495
+ fill="white"
496
+ />
497
+ <path
498
+ d="M26.1612 35.0191C25.5397 34.8303 24.6695 35.1915 24.7811 36.3849C24.8745 37.3846 25.313 38.2932 26.3866 38.0268"
499
+ stroke="#1F1C1C"
500
+ stroke-width="0.5"
501
+ stroke-linecap="round"
502
+ stroke-linejoin="round"
503
+ />
504
+ <path
505
+ d="M35.3777 34.987C35.9979 34.7938 36.8706 35.1489 36.7673 36.3431C36.6809 37.3434 36.2487 38.2551 35.1734 37.9962C34.6389 37.8675 34.765 37.2813 34.8101 36.529C34.8552 35.7768 34.7576 35.1802 35.3777 34.987Z"
506
+ fill="#2D2A29"
507
+ />
508
+ <path
509
+ d="M35.3777 34.987C35.9979 34.7938 36.8706 35.1489 36.7673 36.3431C36.6809 37.3434 36.2487 38.2551 35.1734 37.9962"
510
+ fill="white"
511
+ />
512
+ <path
513
+ d="M35.3777 34.987C35.9979 34.7938 36.8706 35.1489 36.7673 36.3431C36.6809 37.3434 36.2487 38.2551 35.1734 37.9962"
514
+ stroke="#1F1C1C"
515
+ stroke-width="0.5"
516
+ stroke-linecap="round"
517
+ stroke-linejoin="round"
518
+ />
519
+ <path
520
+ d="M30.7029 29.2139C25.2108 29.209 26.0415 34.507 26.1182 35.9632C26.1949 37.4194 26.9017 42.2239 30.6294 42.3465C34.5695 42.476 35.3164 37.5547 35.4062 35.9308C35.4961 34.3068 36.1469 29.2187 30.7029 29.2139Z"
521
+ fill="white"
522
+ />
523
+ <path
524
+ d="M30.7029 29.2139C25.2108 29.209 26.0415 34.507 26.1182 35.9632C26.1949 37.4194 26.9017 42.2239 30.6294 42.3465C34.5695 42.476 35.3164 37.5547 35.4062 35.9308C35.4961 34.3068 36.1469 29.2187 30.7029 29.2139Z"
525
+ stroke="#1F1C1C"
526
+ stroke-width="0.5"
527
+ />
528
+ <path
529
+ d="M28.7001 35.1184C28.9472 35.1176 29.1487 35.3817 29.1499 35.7078C29.151 36.034 28.9513 36.2995 28.7043 36.3003C28.4572 36.3012 28.2556 36.0371 28.2545 35.7109C28.2534 35.3848 28.4531 35.1193 28.7001 35.1184Z"
530
+ fill="#1F1C1C"
531
+ />
532
+ <path
533
+ d="M32.8784 35.1038C33.1254 35.103 33.327 35.3671 33.3281 35.6932C33.3292 36.0194 33.1296 36.2849 32.8825 36.2857C32.6354 36.2866 32.4339 36.0225 32.4327 35.6964C32.4316 35.3702 32.6313 35.1047 32.8784 35.1038Z"
534
+ fill="#1F1C1C"
535
+ />
536
+ <path
537
+ d="M27.9345 34.769C28.1722 34.4339 28.8224 34.3181 29.0972 34.3649"
538
+ stroke="#1F1C1C"
539
+ stroke-width="0.5"
540
+ stroke-linecap="round"
541
+ stroke-linejoin="round"
542
+ />
543
+ <path
544
+ d="M33.5932 34.7492C33.3532 34.4158 32.7022 34.3046 32.4278 34.3533"
545
+ stroke="#1F1C1C"
546
+ stroke-width="0.5"
547
+ stroke-linecap="round"
548
+ stroke-linejoin="round"
549
+ />
550
+ <path
551
+ d="M31.0595 35.6713C31.0595 35.6713 31.1124 37.1515 31.0297 37.3786C30.9469 37.6057 30.6248 37.6785 30.5651 37.6787"
552
+ stroke="#1F1C1C"
553
+ stroke-width="0.5"
554
+ stroke-linecap="round"
555
+ stroke-linejoin="round"
556
+ />
557
+ <path
558
+ d="M30.3555 39.7499C30.528 39.8119 30.9882 39.8119 31.1741 39.7499"
559
+ stroke="#1F1C1C"
560
+ stroke-width="0.5"
561
+ stroke-linecap="round"
562
+ stroke-linejoin="round"
563
+ />
564
+ <path
565
+ d="M29.5518 39.0201C29.5518 39.0201 29.8063 39.1345 30.7227 39.1304C31.7227 39.126 32.066 39.0233 32.066 39.0233C32.066 39.0233 31.5524 39.0994 30.7227 39.104C29.997 39.1078 29.5518 39.0201 29.5518 39.0201Z"
566
+ fill="white"
567
+ />
568
+ <path
569
+ d="M29.5518 39.0201C29.5518 39.0201 29.8063 39.1345 30.7227 39.1304C31.7227 39.126 32.066 39.0233 32.066 39.0233C32.066 39.0233 31.5524 39.0994 30.7227 39.104C29.997 39.1078 29.5518 39.0201 29.5518 39.0201Z"
570
+ stroke="#1F1C1C"
571
+ stroke-width="0.5"
572
+ stroke-linecap="round"
573
+ stroke-linejoin="round"
574
+ />
575
+ <path
576
+ d="M13.2099 37.2291C12.2247 36.9297 10.8452 37.5023 11.0222 39.3941C11.1703 40.9788 11.8654 42.4192 13.5672 41.9969C14.4129 41.787 14.2067 40.8592 14.1268 39.6672C14.0469 38.4752 14.195 37.5284 13.2099 37.2291Z"
577
+ fill="#2D2A29"
578
+ />
579
+ <path
580
+ d="M13.2099 37.2291C12.2247 36.9297 10.8452 37.5023 11.0222 39.3941C11.1703 40.9788 11.8654 42.4192 13.5672 41.9969"
581
+ fill="white"
582
+ />
583
+ <path
584
+ d="M13.2099 37.2291C12.2247 36.9297 10.8452 37.5023 11.0222 39.3941C11.1703 40.9788 11.8654 42.4192 13.5672 41.9969"
585
+ stroke="#1F1C1C"
586
+ stroke-width="0.5"
587
+ stroke-linecap="round"
588
+ stroke-linejoin="round"
589
+ />
590
+ <path
591
+ d="M27.8199 37.1781C28.803 36.8719 30.1865 37.4348 30.0227 39.3278C29.8857 40.9135 29.2006 42.3587 27.496 41.9483C26.6488 41.7443 26.8485 40.8151 26.9201 39.6225C26.9916 38.43 26.8369 37.4843 27.8199 37.1781Z"
592
+ fill="#2D2A29"
593
+ />
594
+ <path
595
+ d="M27.8199 37.1781C28.803 36.8719 30.1865 37.4348 30.0227 39.3278C29.8857 40.9135 29.2006 42.3587 27.496 41.9483"
596
+ fill="white"
597
+ />
598
+ <path
599
+ d="M27.8199 37.1781C28.803 36.8719 30.1865 37.4348 30.0227 39.3278C29.8857 40.9135 29.2006 42.3587 27.496 41.9483"
600
+ stroke="#1F1C1C"
601
+ stroke-width="0.5"
602
+ stroke-linecap="round"
603
+ stroke-linejoin="round"
604
+ />
605
+ <path
606
+ d="M20.4093 28.0265C11.7033 28.0187 13.0201 36.4171 13.1417 38.7255C13.2633 41.0339 14.3837 48.65 20.2927 48.8442C26.5387 49.0495 27.7226 41.2484 27.865 38.6741C28.0075 36.0998 29.0391 28.0342 20.4093 28.0265Z"
607
+ fill="white"
608
+ />
609
+ <path
610
+ d="M20.4093 28.0265C11.7033 28.0187 13.0201 36.4171 13.1417 38.7255C13.2633 41.0339 14.3837 48.65 20.2927 48.8442C26.5387 49.0495 27.7226 41.2484 27.865 38.6741C28.0075 36.0998 29.0391 28.0342 20.4093 28.0265Z"
611
+ stroke="#1F1C1C"
612
+ stroke-width="0.5"
613
+ />
614
+ <path
615
+ d="M17.2341 37.3864C17.6258 37.3851 17.9452 37.8037 17.947 38.3207C17.9488 38.8377 17.6323 39.2586 17.2406 39.26C16.849 39.2613 16.5295 38.8427 16.5277 38.3257C16.5259 37.8087 16.8424 37.3878 17.2341 37.3864Z"
616
+ fill="#1F1C1C"
617
+ />
618
+ <path
619
+ d="M23.8576 37.3633C24.2493 37.3619 24.5688 37.7806 24.5706 38.2976C24.5724 38.8146 24.2558 39.2355 23.8642 39.2368C23.4725 39.2382 23.153 38.8196 23.1512 38.3026C23.1494 37.7855 23.466 37.3647 23.8576 37.3633Z"
620
+ fill="#1F1C1C"
621
+ />
622
+ <path
623
+ d="M16.0213 36.8325C16.3981 36.3013 17.4288 36.1178 17.8643 36.192"
624
+ stroke="#1F1C1C"
625
+ stroke-width="0.5"
626
+ stroke-linecap="round"
627
+ stroke-linejoin="round"
628
+ />
629
+ <path
630
+ d="M24.9915 36.8012C24.611 36.2726 23.5791 36.0964 23.1441 36.1736"
631
+ stroke="#1F1C1C"
632
+ stroke-width="0.5"
633
+ stroke-linecap="round"
634
+ stroke-linejoin="round"
635
+ />
636
+ <path
637
+ d="M20.975 38.2628C20.975 38.2628 21.0589 40.6092 20.9277 40.9692C20.7965 41.3292 20.2859 41.4446 20.1913 41.4449"
638
+ stroke="#1F1C1C"
639
+ stroke-width="0.5"
640
+ stroke-linecap="round"
641
+ stroke-linejoin="round"
642
+ />
643
+ <path
644
+ d="M19.8584 44.7282C20.132 44.8265 20.8614 44.8265 21.156 44.7282"
645
+ stroke="#1F1C1C"
646
+ stroke-width="0.5"
647
+ stroke-linecap="round"
648
+ stroke-linejoin="round"
649
+ />
650
+ <path
651
+ d="M18.5845 43.5715C18.5845 43.5715 18.988 43.7528 20.4407 43.7463C22.0258 43.7393 22.57 43.5764 22.57 43.5764C22.57 43.5764 21.7558 43.6972 20.4407 43.7043C19.2903 43.7104 18.5845 43.5715 18.5845 43.5715Z"
652
+ fill="white"
653
+ />
654
+ <path
655
+ d="M18.5845 43.5715C18.5845 43.5715 18.988 43.7528 20.4407 43.7463C22.0258 43.7393 22.57 43.5764 22.57 43.5764C22.57 43.5764 21.7558 43.6972 20.4407 43.7043C19.2903 43.7104 18.5845 43.5715 18.5845 43.5715Z"
656
+ stroke="#1F1C1C"
657
+ stroke-width="0.5"
658
+ stroke-linecap="round"
659
+ stroke-linejoin="round"
660
+ />
661
+ </g>
662
+ </CardFrame>
663
+ </svg>
664
+ );
665
+ };
666
+
667
+ export const PoorLightingIllustration: FunctionComponent<
668
+ IllustrationProps
669
+ > = () => {
670
+ const filterId = 'illus-poor';
671
+ return (
672
+ <svg
673
+ width="47"
674
+ height="79"
675
+ viewBox="0 0 47 79"
676
+ fill="none"
677
+ xmlns="http://www.w3.org/2000/svg"
678
+ aria-hidden="true"
679
+ >
680
+ <CardFrame filterId={filterId}>
681
+ <g clip-path={`url(#inner-${filterId})`}>
682
+ <rect
683
+ width="73"
684
+ height="41"
685
+ transform="matrix(0 -1 1 0 3 75)"
686
+ fill="white"
687
+ />
688
+ <path
689
+ d="M13.1627 34.2082C11.7528 33.7797 9.7785 34.5992 10.0317 37.3067C10.2437 39.5746 11.2385 41.636 13.674 41.0316C14.8844 40.7312 14.5892 39.4034 14.4749 37.6975C14.3606 35.9916 14.5726 34.6366 13.1627 34.2082Z"
690
+ fill="#2D2A29"
691
+ />
692
+ <path
693
+ d="M13.1627 34.2082C11.7528 33.7797 9.7785 34.5992 10.0317 37.3067C10.2437 39.5746 11.2385 41.636 13.674 41.0316"
694
+ fill="white"
695
+ />
696
+ <path
697
+ d="M13.1627 34.2082C11.7528 33.7797 9.7785 34.5992 10.0317 37.3067C10.2437 39.5746 11.2385 41.636 13.674 41.0316"
698
+ stroke="#1F1C1C"
699
+ stroke-width="0.5"
700
+ stroke-linecap="round"
701
+ stroke-linejoin="round"
702
+ />
703
+ <path
704
+ d="M34.0715 34.1352C35.4783 33.6969 37.4583 34.5025 37.224 37.2118C37.0278 39.481 36.0474 41.5494 33.6078 40.962C32.3953 40.6701 32.6813 39.3402 32.7836 37.6335C32.886 35.9269 32.6646 34.5734 34.0715 34.1352Z"
705
+ fill="#2D2A29"
706
+ />
707
+ <path
708
+ d="M34.0715 34.1352C35.4783 33.6969 37.4583 34.5025 37.224 37.2118C37.0278 39.481 36.0474 41.5494 33.6078 40.962"
709
+ fill="white"
710
+ />
711
+ <path
712
+ d="M34.0715 34.1352C35.4783 33.6969 37.4583 34.5025 37.224 37.2118C37.0278 39.481 36.0474 41.5494 33.6078 40.962"
713
+ stroke="#1F1C1C"
714
+ stroke-width="0.5"
715
+ stroke-linecap="round"
716
+ stroke-linejoin="round"
717
+ />
718
+ <path
719
+ d="M23.4663 21.0379C11.0066 21.0268 12.8912 33.0461 13.0652 36.3497C13.2392 39.6534 14.8428 50.5533 23.2995 50.8312C32.2383 51.125 33.9327 39.9604 34.1366 36.2762C34.3404 32.592 35.8168 21.0489 23.4663 21.0379Z"
720
+ fill="white"
721
+ />
722
+ <path
723
+ d="M23.4663 21.0379C11.0066 21.0268 12.8912 33.0461 13.0652 36.3497C13.2392 39.6534 14.8428 50.5533 23.2995 50.8312C32.2383 51.125 33.9327 39.9604 34.1366 36.2762C34.3404 32.592 35.8168 21.0489 23.4663 21.0379Z"
724
+ stroke="#1F1C1C"
725
+ stroke-width="0.5"
726
+ />
727
+ <path
728
+ d="M18.9219 34.4335C19.4824 34.4316 19.9396 35.0307 19.9422 35.7706C19.9448 36.5105 19.4918 37.1129 18.9313 37.1148C18.3707 37.1168 17.9135 36.5176 17.9109 35.7777C17.9083 35.0378 18.3614 34.4355 18.9219 34.4335Z"
729
+ fill="#1F1C1C"
730
+ />
731
+ <path
732
+ d="M28.4014 34.4002C28.9619 34.3982 29.4191 34.9974 29.4217 35.7373C29.4243 36.4772 28.9713 37.0796 28.4108 37.0815C27.8502 37.0835 27.393 36.4843 27.3904 35.7444C27.3878 35.0045 27.8409 34.4022 28.4014 34.4002Z"
733
+ fill="#1F1C1C"
734
+ />
735
+ <path
736
+ d="M17.1864 33.6408C17.7256 32.8805 19.2007 32.618 19.824 32.7241"
737
+ stroke="#1F1C1C"
738
+ stroke-width="0.5"
739
+ stroke-linecap="round"
740
+ stroke-linejoin="round"
741
+ />
742
+ <path
743
+ d="M30.0238 33.5958C29.4792 32.8393 28.0023 32.5871 27.3798 32.6976"
744
+ stroke="#1F1C1C"
745
+ stroke-width="0.5"
746
+ stroke-linecap="round"
747
+ stroke-linejoin="round"
748
+ />
749
+ <path
750
+ d="M24.2757 35.6876C24.2757 35.6876 24.3958 39.0457 24.208 39.5609C24.0202 40.0762 23.2895 40.2412 23.1541 40.2417"
751
+ stroke="#1F1C1C"
752
+ stroke-width="0.5"
753
+ stroke-linecap="round"
754
+ stroke-linejoin="round"
755
+ />
756
+ <path
757
+ d="M22.6777 44.9406C23.0693 45.0812 24.1131 45.0812 24.5348 44.9406"
758
+ stroke="#1F1C1C"
759
+ stroke-width="0.5"
760
+ stroke-linecap="round"
761
+ stroke-linejoin="round"
762
+ />
763
+ <path
764
+ d="M20.8545 43.285C20.8545 43.285 21.432 43.5445 23.511 43.5352C25.7796 43.5252 26.5584 43.292 26.5584 43.292C26.5584 43.292 25.3932 43.4648 23.511 43.4751C21.8646 43.4838 20.8545 43.285 20.8545 43.285Z"
765
+ fill="white"
766
+ />
767
+ <path
768
+ d="M20.8545 43.285C20.8545 43.285 21.432 43.5445 23.511 43.5352C25.7796 43.5252 26.5584 43.292 26.5584 43.292C26.5584 43.292 25.3932 43.4648 23.511 43.4751C21.8646 43.4838 20.8545 43.285 20.8545 43.285Z"
769
+ stroke="#1F1C1C"
770
+ stroke-width="0.5"
771
+ stroke-linecap="round"
772
+ stroke-linejoin="round"
773
+ />
774
+ <path
775
+ d="M23.9049 13C32.6828 13 39.8098 22.693 39.8098 34.6314C39.8098 46.5697 32.6828 56.2627 23.9049 56.2627C15.127 56.2627 8 46.5697 8 34.6314C8 22.693 15.127 13 23.9049 13Z"
776
+ fill="#0D0D0D"
777
+ fill-opacity="0.7"
778
+ stroke="#EF4343"
779
+ stroke-width="0.5"
780
+ />
781
+ </g>
782
+ <rect x="11" y="63" width="25" height="6" rx="3" fill="#848282" />
783
+ </CardFrame>
784
+ </svg>
785
+ );
786
+ };
787
+
788
+ // ─── Inline glyphs used by ConsentView ────────────────────────────────────
789
+ //
790
+ // Kept here (rather than as separate `.svg` URL imports) because they need
791
+ // to live inside Preact's reconciliation tree — the parent wrapper handles
792
+ // state-driven styling (checked tick, rotated chevron) and we want a single
793
+ // place to audit any branded artwork.
794
+
795
+ /**
796
+ * Official Smile ID brand mark — blue square with the orange accent.
797
+ * Static; size matches the 40×40 logo lockup used in the consent header.
798
+ */
799
+ export const SmileIdLogo: FunctionComponent = () => (
800
+ <svg
801
+ viewBox="48 0 8 8"
802
+ width="40"
803
+ height="40"
804
+ fill="none"
805
+ xmlns="http://www.w3.org/2000/svg"
806
+ aria-hidden="true"
807
+ >
808
+ <path d="M52.2123 3.88737H48V7.86846H52.2123V3.88737Z" fill="#001096" />
809
+ <path
810
+ d="M53.2359 0C53.2165 0 53.1975 0.00201727 53.1786 0.00252159C53.1591 0.00252159 53.1402 0 53.1207 0C52.0457 0 51.0869 0.708567 51.0869 2.27044V3.8888H55.2882V2.27044C55.2882 0.708567 54.3174 0 53.2359 0Z"
811
+ fill="#FF9B00"
812
+ />
813
+ </svg>
814
+ );
815
+
816
+ /** Checkbox tick. Wrapper supplies the background/colour transitions. */
817
+ export const CheckIcon: FunctionComponent = () => (
818
+ <svg
819
+ width="14"
820
+ height="14"
821
+ viewBox="0 0 24 24"
822
+ fill="none"
823
+ aria-hidden="true"
824
+ >
825
+ <polyline
826
+ points="20 6 9 17 4 12"
827
+ stroke="#F9F0E7"
828
+ stroke-width="3"
829
+ stroke-linecap="round"
830
+ stroke-linejoin="round"
831
+ />
832
+ </svg>
833
+ );
834
+
835
+ /** Downward chevron. Rotation is applied by the parent's `data-open`. */
836
+ export const ChevronDownIcon: FunctionComponent = () => (
837
+ <svg
838
+ width="20"
839
+ height="20"
840
+ viewBox="0 0 24 24"
841
+ fill="none"
842
+ aria-hidden="true"
843
+ >
844
+ <polyline
845
+ points="6 9 12 15 18 9"
846
+ stroke="#F9F0E7"
847
+ stroke-width="2.5"
848
+ stroke-linecap="round"
849
+ stroke-linejoin="round"
850
+ />
851
+ </svg>
852
+ );