@thunderid/react 0.11.2 → 0.11.4

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 (652) hide show
  1. package/dist/ThunderIDReactClient.d.ts +0 -17
  2. package/dist/ThunderIDReactClient.d.ts.map +1 -1
  3. package/dist/ThunderIDReactClient.js +13 -7
  4. package/dist/ThunderIDReactClient.js.map +1 -1
  5. package/dist/api/getUsersMe.d.ts +0 -17
  6. package/dist/api/getUsersMe.d.ts.map +1 -1
  7. package/dist/api/getUsersMe.js.map +1 -1
  8. package/dist/api/updateMeProfile.d.ts +0 -17
  9. package/dist/api/updateMeProfile.d.ts.map +1 -1
  10. package/dist/api/updateMeProfile.js.map +1 -1
  11. package/dist/cjs/ThunderIDReactClient.cjs +12 -6
  12. package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
  13. package/dist/cjs/api/getUsersMe.cjs.map +1 -1
  14. package/dist/cjs/api/updateMeProfile.cjs.map +1 -1
  15. package/dist/cjs/components/actions/SignInButton/BaseSignInButton.cjs.map +1 -1
  16. package/dist/cjs/components/actions/SignInButton/SignInButton.cjs.map +1 -1
  17. package/dist/cjs/components/actions/SignOutButton/BaseSignOutButton.cjs.map +1 -1
  18. package/dist/cjs/components/actions/SignOutButton/SignOutButton.cjs.map +1 -1
  19. package/dist/cjs/components/actions/SignUpButton/BaseSignUpButton.cjs.map +1 -1
  20. package/dist/cjs/components/actions/SignUpButton/SignUpButton.cjs.map +1 -1
  21. package/dist/cjs/components/adapters/Consent.cjs.map +1 -1
  22. package/dist/cjs/components/adapters/ConsentCheckboxList.cjs.map +1 -1
  23. package/dist/cjs/components/adapters/ConsentCheckboxList.styles.cjs.map +1 -1
  24. package/dist/cjs/components/adapters/FacebookButton.cjs.map +1 -1
  25. package/dist/cjs/components/adapters/FlowTimer.cjs.map +1 -1
  26. package/dist/cjs/components/adapters/GitHubButton.cjs.map +1 -1
  27. package/dist/cjs/components/adapters/GoogleButton.cjs.map +1 -1
  28. package/dist/cjs/components/adapters/ImageComponent.cjs.map +1 -1
  29. package/dist/cjs/components/adapters/LinkedInButton.cjs.map +1 -1
  30. package/dist/cjs/components/adapters/MicrosoftButton.cjs.map +1 -1
  31. package/dist/cjs/components/adapters/SignInWithEthereumButton.cjs.map +1 -1
  32. package/dist/cjs/components/adapters/SmsOtpButton.cjs.map +1 -1
  33. package/dist/cjs/components/auth/Callback/Callback.cjs.map +1 -1
  34. package/dist/cjs/components/auth/Callback/OAuthCallback.cjs.map +1 -1
  35. package/dist/cjs/components/auth/Callback/TokenCallback.cjs.map +1 -1
  36. package/dist/cjs/components/control/Loading.cjs.map +1 -1
  37. package/dist/cjs/components/control/SignedIn.cjs.map +1 -1
  38. package/dist/cjs/components/control/SignedOut.cjs.map +1 -1
  39. package/dist/cjs/components/factories/FieldFactory.cjs.map +1 -1
  40. package/dist/cjs/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.cjs.map +1 -1
  41. package/dist/cjs/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.styles.cjs.map +1 -1
  42. package/dist/cjs/components/presentation/LanguageSwitcher/LanguageSwitcher.cjs.map +1 -1
  43. package/dist/cjs/components/presentation/User/BaseUser.cjs.map +1 -1
  44. package/dist/cjs/components/presentation/User/User.cjs.map +1 -1
  45. package/dist/cjs/components/presentation/UserAvatar/BaseUserAvatar.cjs.map +1 -1
  46. package/dist/cjs/components/presentation/UserAvatar/UserAvatar.cjs.map +1 -1
  47. package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs.map +1 -1
  48. package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.styles.cjs.map +1 -1
  49. package/dist/cjs/components/presentation/UserDropdown/UserDropdown.cjs.map +1 -1
  50. package/dist/cjs/components/presentation/UserProfile/BaseUserProfile.cjs.map +1 -1
  51. package/dist/cjs/components/presentation/UserProfile/BaseUserProfile.styles.cjs.map +1 -1
  52. package/dist/cjs/components/presentation/UserProfile/UserProfile.cjs.map +1 -1
  53. package/dist/cjs/components/presentation/auth/AcceptInvite/AcceptInvite.cjs +3 -4
  54. package/dist/cjs/components/presentation/auth/AcceptInvite/AcceptInvite.cjs.map +1 -1
  55. package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.cjs.map +1 -1
  56. package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.cjs.map +1 -1
  57. package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs.map +1 -1
  58. package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.cjs.map +1 -1
  59. package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.styles.cjs.map +1 -1
  60. package/dist/cjs/components/presentation/auth/InviteUser/InviteUser.cjs +4 -3
  61. package/dist/cjs/components/presentation/auth/InviteUser/InviteUser.cjs.map +1 -1
  62. package/dist/cjs/components/presentation/auth/Recovery/BaseRecovery.cjs.map +1 -1
  63. package/dist/cjs/components/presentation/auth/Recovery/Recovery.cjs.map +1 -1
  64. package/dist/cjs/components/presentation/auth/SignIn/BaseSignIn.cjs.map +1 -1
  65. package/dist/cjs/components/presentation/auth/SignIn/BaseSignIn.styles.cjs.map +1 -1
  66. package/dist/cjs/components/presentation/auth/SignIn/SignIn.cjs +10 -1
  67. package/dist/cjs/components/presentation/auth/SignIn/SignIn.cjs.map +1 -1
  68. package/dist/cjs/components/presentation/auth/SignUp/BaseSignUp.cjs.map +1 -1
  69. package/dist/cjs/components/presentation/auth/SignUp/BaseSignUp.styles.cjs.map +1 -1
  70. package/dist/cjs/components/presentation/auth/SignUp/SignUp.cjs.map +1 -1
  71. package/dist/cjs/components/primitives/AffixedField/AffixedField.cjs.map +1 -1
  72. package/dist/cjs/components/primitives/AffixedField/AffixedField.styles.cjs.map +1 -1
  73. package/dist/cjs/components/primitives/Alert/Alert.cjs.map +1 -1
  74. package/dist/cjs/components/primitives/Alert/Alert.styles.cjs.map +1 -1
  75. package/dist/cjs/components/primitives/Avatar/Avatar.cjs.map +1 -1
  76. package/dist/cjs/components/primitives/Avatar/Avatar.styles.cjs.map +1 -1
  77. package/dist/cjs/components/primitives/Button/Button.cjs.map +1 -1
  78. package/dist/cjs/components/primitives/Button/Button.styles.cjs.map +1 -1
  79. package/dist/cjs/components/primitives/Card/Card.cjs.map +1 -1
  80. package/dist/cjs/components/primitives/Card/Card.styles.cjs.map +1 -1
  81. package/dist/cjs/components/primitives/Checkbox/Checkbox.cjs.map +1 -1
  82. package/dist/cjs/components/primitives/Checkbox/Checkbox.styles.cjs.map +1 -1
  83. package/dist/cjs/components/primitives/CopyableText/CopyableText.cjs.map +1 -1
  84. package/dist/cjs/components/primitives/CopyableText/CopyableText.styles.cjs.map +1 -1
  85. package/dist/cjs/components/primitives/DatePicker/DatePicker.cjs.map +1 -1
  86. package/dist/cjs/components/primitives/DatePicker/DatePicker.styles.cjs.map +1 -1
  87. package/dist/cjs/components/primitives/Dialog/Dialog.cjs.map +1 -1
  88. package/dist/cjs/components/primitives/Dialog/Dialog.styles.cjs.map +1 -1
  89. package/dist/cjs/components/primitives/Divider/Divider.cjs.map +1 -1
  90. package/dist/cjs/components/primitives/Divider/Divider.styles.cjs.map +1 -1
  91. package/dist/cjs/components/primitives/FormControl/FormControl.cjs.map +1 -1
  92. package/dist/cjs/components/primitives/FormControl/FormControl.styles.cjs.map +1 -1
  93. package/dist/cjs/components/primitives/Icons/ArrowLeftRight.cjs.map +1 -1
  94. package/dist/cjs/components/primitives/Icons/ArrowRightLeft.cjs.map +1 -1
  95. package/dist/cjs/components/primitives/Icons/BuildingAlt.cjs.map +1 -1
  96. package/dist/cjs/components/primitives/Icons/Check.cjs.map +1 -1
  97. package/dist/cjs/components/primitives/Icons/ChevronDown.cjs.map +1 -1
  98. package/dist/cjs/components/primitives/Icons/CircleAlert.cjs.map +1 -1
  99. package/dist/cjs/components/primitives/Icons/CircleCheck.cjs.map +1 -1
  100. package/dist/cjs/components/primitives/Icons/Eye.cjs.map +1 -1
  101. package/dist/cjs/components/primitives/Icons/EyeOff.cjs.map +1 -1
  102. package/dist/cjs/components/primitives/Icons/Info.cjs.map +1 -1
  103. package/dist/cjs/components/primitives/Icons/LogOut.cjs.map +1 -1
  104. package/dist/cjs/components/primitives/Icons/Plus.cjs.map +1 -1
  105. package/dist/cjs/components/primitives/Icons/TriangleAlert.cjs.map +1 -1
  106. package/dist/cjs/components/primitives/Icons/User.cjs.map +1 -1
  107. package/dist/cjs/components/primitives/Icons/X.cjs.map +1 -1
  108. package/dist/cjs/components/primitives/Icons/flowIconRegistry.cjs.map +1 -1
  109. package/dist/cjs/components/primitives/InputLabel/InputLabel.cjs.map +1 -1
  110. package/dist/cjs/components/primitives/InputLabel/InputLabel.styles.cjs.map +1 -1
  111. package/dist/cjs/components/primitives/KeyValueInput/KeyValueInput.cjs.map +1 -1
  112. package/dist/cjs/components/primitives/KeyValueInput/KeyValueInput.styles.cjs.map +1 -1
  113. package/dist/cjs/components/primitives/Logo/Logo.cjs.map +1 -1
  114. package/dist/cjs/components/primitives/Logo/Logo.styles.cjs.map +1 -1
  115. package/dist/cjs/components/primitives/MultiInput/MultiInput.cjs.map +1 -1
  116. package/dist/cjs/components/primitives/MultiInput/MultiInput.styles.cjs.map +1 -1
  117. package/dist/cjs/components/primitives/OtpField/OtpField.cjs.map +1 -1
  118. package/dist/cjs/components/primitives/OtpField/OtpField.styles.cjs.map +1 -1
  119. package/dist/cjs/components/primitives/PasswordField/PasswordField.cjs.map +1 -1
  120. package/dist/cjs/components/primitives/PasswordField/PasswordField.styles.cjs.map +1 -1
  121. package/dist/cjs/components/primitives/Select/Select.cjs.map +1 -1
  122. package/dist/cjs/components/primitives/Select/Select.styles.cjs.map +1 -1
  123. package/dist/cjs/components/primitives/Spinner/Spinner.cjs.map +1 -1
  124. package/dist/cjs/components/primitives/Spinner/Spinner.styles.cjs.map +1 -1
  125. package/dist/cjs/components/primitives/TextField/TextField.cjs.map +1 -1
  126. package/dist/cjs/components/primitives/TextField/TextField.styles.cjs.map +1 -1
  127. package/dist/cjs/components/primitives/Toggle/Toggle.cjs.map +1 -1
  128. package/dist/cjs/components/primitives/Toggle/Toggle.styles.cjs.map +1 -1
  129. package/dist/cjs/components/primitives/Tooltip/Tooltip.cjs.map +1 -1
  130. package/dist/cjs/components/primitives/Tooltip/Tooltip.styles.cjs.map +1 -1
  131. package/dist/cjs/components/primitives/Typography/Typography.cjs.map +1 -1
  132. package/dist/cjs/components/primitives/Typography/Typography.styles.cjs.map +1 -1
  133. package/dist/cjs/contexts/ComponentRenderer/ComponentRendererContext.cjs.map +1 -1
  134. package/dist/cjs/contexts/ComponentRenderer/ComponentRendererProvider.cjs.map +1 -1
  135. package/dist/cjs/contexts/Flow/FlowContext.cjs.map +1 -1
  136. package/dist/cjs/contexts/Flow/FlowProvider.cjs.map +1 -1
  137. package/dist/cjs/contexts/Flow/useFlow.cjs.map +1 -1
  138. package/dist/cjs/contexts/FlowMeta/FlowMetaContext.cjs.map +1 -1
  139. package/dist/cjs/contexts/FlowMeta/FlowMetaProvider.cjs +5 -1
  140. package/dist/cjs/contexts/FlowMeta/FlowMetaProvider.cjs.map +1 -1
  141. package/dist/cjs/contexts/FlowMeta/useFlowMeta.cjs.map +1 -1
  142. package/dist/cjs/contexts/I18n/ComponentPreferencesContext.cjs.map +1 -1
  143. package/dist/cjs/contexts/I18n/I18nContext.cjs.map +1 -1
  144. package/dist/cjs/contexts/I18n/I18nProvider.cjs.map +1 -1
  145. package/dist/cjs/contexts/I18n/useI18n.cjs.map +1 -1
  146. package/dist/cjs/contexts/Theme/ThemeContext.cjs.map +1 -1
  147. package/dist/cjs/contexts/Theme/ThemeProvider.cjs.map +1 -1
  148. package/dist/cjs/contexts/Theme/useTheme.cjs.map +1 -1
  149. package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
  150. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +33 -17
  151. package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
  152. package/dist/cjs/contexts/ThunderID/useThunderID.cjs.map +1 -1
  153. package/dist/cjs/contexts/User/UserContext.cjs.map +1 -1
  154. package/dist/cjs/contexts/User/UserProvider.cjs.map +1 -1
  155. package/dist/cjs/contexts/User/useUser.cjs.map +1 -1
  156. package/dist/cjs/hooks/useBrowserUrl.cjs.map +1 -1
  157. package/dist/cjs/hooks/useForm.cjs.map +1 -1
  158. package/dist/cjs/hooks/useOAuthCallback.cjs.map +1 -1
  159. package/dist/cjs/hooks/useTranslation.cjs.map +1 -1
  160. package/dist/cjs/utils/applyThemeToDOM.cjs.map +1 -1
  161. package/dist/cjs/utils/buildThemeConfigFromFlowMeta.cjs.map +1 -1
  162. package/dist/cjs/utils/composeAffixedInputs.cjs.map +1 -1
  163. package/dist/cjs/utils/flowTransformer.cjs.map +1 -1
  164. package/dist/cjs/utils/getAuthComponentHeadings.cjs.map +1 -1
  165. package/dist/cjs/utils/getDisplayName.cjs.map +1 -1
  166. package/dist/cjs/utils/getMappedUserProfileValue.cjs.map +1 -1
  167. package/dist/cjs/utils/normalizeThemeConfig.cjs.map +1 -1
  168. package/dist/cjs/utils/oauth.cjs.map +1 -1
  169. package/dist/cjs/utils/passkey.cjs.map +1 -1
  170. package/dist/cjs/utils/resolveTranslationsInArray.cjs.map +1 -1
  171. package/dist/cjs/utils/resolveTranslationsInObject.cjs.map +1 -1
  172. package/dist/components/actions/SignInButton/BaseSignInButton.d.ts +0 -17
  173. package/dist/components/actions/SignInButton/BaseSignInButton.d.ts.map +1 -1
  174. package/dist/components/actions/SignInButton/BaseSignInButton.js.map +1 -1
  175. package/dist/components/actions/SignInButton/SignInButton.d.ts +0 -17
  176. package/dist/components/actions/SignInButton/SignInButton.d.ts.map +1 -1
  177. package/dist/components/actions/SignInButton/SignInButton.js.map +1 -1
  178. package/dist/components/actions/SignOutButton/BaseSignOutButton.d.ts +0 -17
  179. package/dist/components/actions/SignOutButton/BaseSignOutButton.d.ts.map +1 -1
  180. package/dist/components/actions/SignOutButton/BaseSignOutButton.js.map +1 -1
  181. package/dist/components/actions/SignOutButton/SignOutButton.d.ts +0 -17
  182. package/dist/components/actions/SignOutButton/SignOutButton.d.ts.map +1 -1
  183. package/dist/components/actions/SignOutButton/SignOutButton.js.map +1 -1
  184. package/dist/components/actions/SignUpButton/BaseSignUpButton.d.ts +0 -17
  185. package/dist/components/actions/SignUpButton/BaseSignUpButton.d.ts.map +1 -1
  186. package/dist/components/actions/SignUpButton/BaseSignUpButton.js.map +1 -1
  187. package/dist/components/actions/SignUpButton/SignUpButton.d.ts +0 -17
  188. package/dist/components/actions/SignUpButton/SignUpButton.d.ts.map +1 -1
  189. package/dist/components/actions/SignUpButton/SignUpButton.js.map +1 -1
  190. package/dist/components/adapters/Consent.d.ts +0 -17
  191. package/dist/components/adapters/Consent.d.ts.map +1 -1
  192. package/dist/components/adapters/Consent.js.map +1 -1
  193. package/dist/components/adapters/ConsentCheckboxList.d.ts +0 -17
  194. package/dist/components/adapters/ConsentCheckboxList.d.ts.map +1 -1
  195. package/dist/components/adapters/ConsentCheckboxList.js.map +1 -1
  196. package/dist/components/adapters/ConsentCheckboxList.styles.d.ts +0 -17
  197. package/dist/components/adapters/ConsentCheckboxList.styles.d.ts.map +1 -1
  198. package/dist/components/adapters/ConsentCheckboxList.styles.js.map +1 -1
  199. package/dist/components/adapters/FacebookButton.d.ts +0 -17
  200. package/dist/components/adapters/FacebookButton.d.ts.map +1 -1
  201. package/dist/components/adapters/FacebookButton.js.map +1 -1
  202. package/dist/components/adapters/FlowTimer.d.ts +0 -17
  203. package/dist/components/adapters/FlowTimer.d.ts.map +1 -1
  204. package/dist/components/adapters/FlowTimer.js.map +1 -1
  205. package/dist/components/adapters/GitHubButton.d.ts +0 -17
  206. package/dist/components/adapters/GitHubButton.d.ts.map +1 -1
  207. package/dist/components/adapters/GitHubButton.js.map +1 -1
  208. package/dist/components/adapters/GoogleButton.d.ts +0 -17
  209. package/dist/components/adapters/GoogleButton.d.ts.map +1 -1
  210. package/dist/components/adapters/GoogleButton.js.map +1 -1
  211. package/dist/components/adapters/ImageComponent.d.ts +0 -17
  212. package/dist/components/adapters/ImageComponent.d.ts.map +1 -1
  213. package/dist/components/adapters/ImageComponent.js.map +1 -1
  214. package/dist/components/adapters/LinkedInButton.d.ts +0 -17
  215. package/dist/components/adapters/LinkedInButton.d.ts.map +1 -1
  216. package/dist/components/adapters/LinkedInButton.js.map +1 -1
  217. package/dist/components/adapters/MicrosoftButton.d.ts +0 -17
  218. package/dist/components/adapters/MicrosoftButton.d.ts.map +1 -1
  219. package/dist/components/adapters/MicrosoftButton.js.map +1 -1
  220. package/dist/components/adapters/SignInWithEthereumButton.d.ts +0 -17
  221. package/dist/components/adapters/SignInWithEthereumButton.d.ts.map +1 -1
  222. package/dist/components/adapters/SignInWithEthereumButton.js.map +1 -1
  223. package/dist/components/adapters/SmsOtpButton.d.ts +0 -17
  224. package/dist/components/adapters/SmsOtpButton.d.ts.map +1 -1
  225. package/dist/components/adapters/SmsOtpButton.js.map +1 -1
  226. package/dist/components/auth/Callback/Callback.d.ts.map +1 -1
  227. package/dist/components/auth/Callback/Callback.js.map +1 -1
  228. package/dist/components/auth/Callback/OAuthCallback.d.ts +0 -17
  229. package/dist/components/auth/Callback/OAuthCallback.d.ts.map +1 -1
  230. package/dist/components/auth/Callback/OAuthCallback.js.map +1 -1
  231. package/dist/components/auth/Callback/TokenCallback.d.ts +0 -16
  232. package/dist/components/auth/Callback/TokenCallback.d.ts.map +1 -1
  233. package/dist/components/auth/Callback/TokenCallback.js.map +1 -1
  234. package/dist/components/control/Loading.d.ts +0 -17
  235. package/dist/components/control/Loading.d.ts.map +1 -1
  236. package/dist/components/control/Loading.js.map +1 -1
  237. package/dist/components/control/SignedIn.d.ts +0 -17
  238. package/dist/components/control/SignedIn.d.ts.map +1 -1
  239. package/dist/components/control/SignedIn.js.map +1 -1
  240. package/dist/components/control/SignedOut.d.ts +0 -17
  241. package/dist/components/control/SignedOut.d.ts.map +1 -1
  242. package/dist/components/control/SignedOut.js.map +1 -1
  243. package/dist/components/factories/FieldFactory.d.ts +0 -17
  244. package/dist/components/factories/FieldFactory.d.ts.map +1 -1
  245. package/dist/components/factories/FieldFactory.js.map +1 -1
  246. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.d.ts +0 -17
  247. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.d.ts.map +1 -1
  248. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.js.map +1 -1
  249. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.styles.d.ts +0 -17
  250. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.styles.d.ts.map +1 -1
  251. package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.styles.js.map +1 -1
  252. package/dist/components/presentation/LanguageSwitcher/LanguageSwitcher.d.ts +0 -17
  253. package/dist/components/presentation/LanguageSwitcher/LanguageSwitcher.d.ts.map +1 -1
  254. package/dist/components/presentation/LanguageSwitcher/LanguageSwitcher.js.map +1 -1
  255. package/dist/components/presentation/User/BaseUser.d.ts +0 -17
  256. package/dist/components/presentation/User/BaseUser.d.ts.map +1 -1
  257. package/dist/components/presentation/User/BaseUser.js.map +1 -1
  258. package/dist/components/presentation/User/User.d.ts +0 -17
  259. package/dist/components/presentation/User/User.d.ts.map +1 -1
  260. package/dist/components/presentation/User/User.js.map +1 -1
  261. package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts +0 -17
  262. package/dist/components/presentation/UserAvatar/BaseUserAvatar.d.ts.map +1 -1
  263. package/dist/components/presentation/UserAvatar/BaseUserAvatar.js.map +1 -1
  264. package/dist/components/presentation/UserAvatar/UserAvatar.d.ts +0 -17
  265. package/dist/components/presentation/UserAvatar/UserAvatar.d.ts.map +1 -1
  266. package/dist/components/presentation/UserAvatar/UserAvatar.js.map +1 -1
  267. package/dist/components/presentation/UserDropdown/BaseUserDropdown.d.ts +0 -17
  268. package/dist/components/presentation/UserDropdown/BaseUserDropdown.d.ts.map +1 -1
  269. package/dist/components/presentation/UserDropdown/BaseUserDropdown.js.map +1 -1
  270. package/dist/components/presentation/UserDropdown/BaseUserDropdown.styles.d.ts +0 -17
  271. package/dist/components/presentation/UserDropdown/BaseUserDropdown.styles.d.ts.map +1 -1
  272. package/dist/components/presentation/UserDropdown/BaseUserDropdown.styles.js.map +1 -1
  273. package/dist/components/presentation/UserDropdown/UserDropdown.d.ts +0 -17
  274. package/dist/components/presentation/UserDropdown/UserDropdown.d.ts.map +1 -1
  275. package/dist/components/presentation/UserDropdown/UserDropdown.js.map +1 -1
  276. package/dist/components/presentation/UserProfile/BaseUserProfile.d.ts +0 -17
  277. package/dist/components/presentation/UserProfile/BaseUserProfile.d.ts.map +1 -1
  278. package/dist/components/presentation/UserProfile/BaseUserProfile.js.map +1 -1
  279. package/dist/components/presentation/UserProfile/BaseUserProfile.styles.d.ts +0 -17
  280. package/dist/components/presentation/UserProfile/BaseUserProfile.styles.d.ts.map +1 -1
  281. package/dist/components/presentation/UserProfile/BaseUserProfile.styles.js.map +1 -1
  282. package/dist/components/presentation/UserProfile/UserProfile.d.ts +0 -17
  283. package/dist/components/presentation/UserProfile/UserProfile.d.ts.map +1 -1
  284. package/dist/components/presentation/UserProfile/UserProfile.js.map +1 -1
  285. package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.d.ts +0 -17
  286. package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.d.ts.map +1 -1
  287. package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.js +2 -4
  288. package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.js.map +1 -1
  289. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.d.ts +0 -17
  290. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.d.ts.map +1 -1
  291. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.js.map +1 -1
  292. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.d.ts +0 -17
  293. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.d.ts.map +1 -1
  294. package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.js.map +1 -1
  295. package/dist/components/presentation/auth/AcceptInvite/index.d.ts +0 -17
  296. package/dist/components/presentation/auth/AcceptInvite/index.d.ts.map +1 -1
  297. package/dist/components/presentation/auth/AuthOptionFactory.d.ts +0 -17
  298. package/dist/components/presentation/auth/AuthOptionFactory.d.ts.map +1 -1
  299. package/dist/components/presentation/auth/AuthOptionFactory.js.map +1 -1
  300. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.d.ts +0 -17
  301. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.d.ts.map +1 -1
  302. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.js.map +1 -1
  303. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.d.ts +0 -17
  304. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.d.ts.map +1 -1
  305. package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.js.map +1 -1
  306. package/dist/components/presentation/auth/InviteUser/InviteUser.d.ts +0 -17
  307. package/dist/components/presentation/auth/InviteUser/InviteUser.d.ts.map +1 -1
  308. package/dist/components/presentation/auth/InviteUser/InviteUser.js +5 -4
  309. package/dist/components/presentation/auth/InviteUser/InviteUser.js.map +1 -1
  310. package/dist/components/presentation/auth/InviteUser/index.d.ts +0 -17
  311. package/dist/components/presentation/auth/InviteUser/index.d.ts.map +1 -1
  312. package/dist/components/presentation/auth/Recovery/BaseRecovery.d.ts +0 -17
  313. package/dist/components/presentation/auth/Recovery/BaseRecovery.d.ts.map +1 -1
  314. package/dist/components/presentation/auth/Recovery/BaseRecovery.js.map +1 -1
  315. package/dist/components/presentation/auth/Recovery/Recovery.d.ts +0 -17
  316. package/dist/components/presentation/auth/Recovery/Recovery.d.ts.map +1 -1
  317. package/dist/components/presentation/auth/Recovery/Recovery.js.map +1 -1
  318. package/dist/components/presentation/auth/SignIn/BaseSignIn.d.ts +0 -17
  319. package/dist/components/presentation/auth/SignIn/BaseSignIn.d.ts.map +1 -1
  320. package/dist/components/presentation/auth/SignIn/BaseSignIn.js.map +1 -1
  321. package/dist/components/presentation/auth/SignIn/BaseSignIn.styles.d.ts +0 -17
  322. package/dist/components/presentation/auth/SignIn/BaseSignIn.styles.d.ts.map +1 -1
  323. package/dist/components/presentation/auth/SignIn/BaseSignIn.styles.js.map +1 -1
  324. package/dist/components/presentation/auth/SignIn/SignIn.d.ts +0 -17
  325. package/dist/components/presentation/auth/SignIn/SignIn.d.ts.map +1 -1
  326. package/dist/components/presentation/auth/SignIn/SignIn.js +10 -1
  327. package/dist/components/presentation/auth/SignIn/SignIn.js.map +1 -1
  328. package/dist/components/presentation/auth/SignUp/BaseSignUp.d.ts +0 -17
  329. package/dist/components/presentation/auth/SignUp/BaseSignUp.d.ts.map +1 -1
  330. package/dist/components/presentation/auth/SignUp/BaseSignUp.js.map +1 -1
  331. package/dist/components/presentation/auth/SignUp/BaseSignUp.styles.d.ts +0 -17
  332. package/dist/components/presentation/auth/SignUp/BaseSignUp.styles.d.ts.map +1 -1
  333. package/dist/components/presentation/auth/SignUp/BaseSignUp.styles.js.map +1 -1
  334. package/dist/components/presentation/auth/SignUp/SignUp.d.ts +0 -17
  335. package/dist/components/presentation/auth/SignUp/SignUp.d.ts.map +1 -1
  336. package/dist/components/presentation/auth/SignUp/SignUp.js.map +1 -1
  337. package/dist/components/primitives/AffixedField/AffixedField.d.ts +0 -17
  338. package/dist/components/primitives/AffixedField/AffixedField.d.ts.map +1 -1
  339. package/dist/components/primitives/AffixedField/AffixedField.js.map +1 -1
  340. package/dist/components/primitives/AffixedField/AffixedField.styles.d.ts +0 -17
  341. package/dist/components/primitives/AffixedField/AffixedField.styles.d.ts.map +1 -1
  342. package/dist/components/primitives/AffixedField/AffixedField.styles.js.map +1 -1
  343. package/dist/components/primitives/AffixedField/index.d.ts +0 -17
  344. package/dist/components/primitives/AffixedField/index.d.ts.map +1 -1
  345. package/dist/components/primitives/Alert/Alert.d.ts +0 -17
  346. package/dist/components/primitives/Alert/Alert.d.ts.map +1 -1
  347. package/dist/components/primitives/Alert/Alert.js.map +1 -1
  348. package/dist/components/primitives/Alert/Alert.styles.d.ts +0 -17
  349. package/dist/components/primitives/Alert/Alert.styles.d.ts.map +1 -1
  350. package/dist/components/primitives/Alert/Alert.styles.js.map +1 -1
  351. package/dist/components/primitives/Avatar/Avatar.d.ts +0 -17
  352. package/dist/components/primitives/Avatar/Avatar.d.ts.map +1 -1
  353. package/dist/components/primitives/Avatar/Avatar.js.map +1 -1
  354. package/dist/components/primitives/Avatar/Avatar.styles.d.ts +0 -17
  355. package/dist/components/primitives/Avatar/Avatar.styles.d.ts.map +1 -1
  356. package/dist/components/primitives/Avatar/Avatar.styles.js.map +1 -1
  357. package/dist/components/primitives/Button/Button.d.ts +0 -17
  358. package/dist/components/primitives/Button/Button.d.ts.map +1 -1
  359. package/dist/components/primitives/Button/Button.js.map +1 -1
  360. package/dist/components/primitives/Button/Button.styles.d.ts +0 -17
  361. package/dist/components/primitives/Button/Button.styles.d.ts.map +1 -1
  362. package/dist/components/primitives/Button/Button.styles.js.map +1 -1
  363. package/dist/components/primitives/Card/Card.d.ts +0 -17
  364. package/dist/components/primitives/Card/Card.d.ts.map +1 -1
  365. package/dist/components/primitives/Card/Card.js.map +1 -1
  366. package/dist/components/primitives/Card/Card.styles.d.ts +0 -17
  367. package/dist/components/primitives/Card/Card.styles.d.ts.map +1 -1
  368. package/dist/components/primitives/Card/Card.styles.js.map +1 -1
  369. package/dist/components/primitives/Checkbox/Checkbox.d.ts +0 -17
  370. package/dist/components/primitives/Checkbox/Checkbox.d.ts.map +1 -1
  371. package/dist/components/primitives/Checkbox/Checkbox.js.map +1 -1
  372. package/dist/components/primitives/Checkbox/Checkbox.styles.d.ts +0 -17
  373. package/dist/components/primitives/Checkbox/Checkbox.styles.d.ts.map +1 -1
  374. package/dist/components/primitives/Checkbox/Checkbox.styles.js.map +1 -1
  375. package/dist/components/primitives/CopyableText/CopyableText.d.ts +0 -17
  376. package/dist/components/primitives/CopyableText/CopyableText.d.ts.map +1 -1
  377. package/dist/components/primitives/CopyableText/CopyableText.js.map +1 -1
  378. package/dist/components/primitives/CopyableText/CopyableText.styles.d.ts +0 -17
  379. package/dist/components/primitives/CopyableText/CopyableText.styles.d.ts.map +1 -1
  380. package/dist/components/primitives/CopyableText/CopyableText.styles.js.map +1 -1
  381. package/dist/components/primitives/CopyableText/index.d.ts +0 -17
  382. package/dist/components/primitives/CopyableText/index.d.ts.map +1 -1
  383. package/dist/components/primitives/DatePicker/DatePicker.d.ts +0 -17
  384. package/dist/components/primitives/DatePicker/DatePicker.d.ts.map +1 -1
  385. package/dist/components/primitives/DatePicker/DatePicker.js.map +1 -1
  386. package/dist/components/primitives/DatePicker/DatePicker.styles.d.ts +0 -17
  387. package/dist/components/primitives/DatePicker/DatePicker.styles.d.ts.map +1 -1
  388. package/dist/components/primitives/DatePicker/DatePicker.styles.js.map +1 -1
  389. package/dist/components/primitives/Dialog/Dialog.d.ts +0 -17
  390. package/dist/components/primitives/Dialog/Dialog.d.ts.map +1 -1
  391. package/dist/components/primitives/Dialog/Dialog.js.map +1 -1
  392. package/dist/components/primitives/Dialog/Dialog.styles.d.ts +0 -17
  393. package/dist/components/primitives/Dialog/Dialog.styles.d.ts.map +1 -1
  394. package/dist/components/primitives/Dialog/Dialog.styles.js.map +1 -1
  395. package/dist/components/primitives/Divider/Divider.d.ts +0 -17
  396. package/dist/components/primitives/Divider/Divider.d.ts.map +1 -1
  397. package/dist/components/primitives/Divider/Divider.js.map +1 -1
  398. package/dist/components/primitives/Divider/Divider.styles.d.ts +0 -17
  399. package/dist/components/primitives/Divider/Divider.styles.d.ts.map +1 -1
  400. package/dist/components/primitives/Divider/Divider.styles.js.map +1 -1
  401. package/dist/components/primitives/FormControl/FormControl.d.ts +0 -17
  402. package/dist/components/primitives/FormControl/FormControl.d.ts.map +1 -1
  403. package/dist/components/primitives/FormControl/FormControl.js.map +1 -1
  404. package/dist/components/primitives/FormControl/FormControl.styles.d.ts +0 -17
  405. package/dist/components/primitives/FormControl/FormControl.styles.d.ts.map +1 -1
  406. package/dist/components/primitives/FormControl/FormControl.styles.js.map +1 -1
  407. package/dist/components/primitives/Icons/ArrowLeftRight.d.ts +0 -17
  408. package/dist/components/primitives/Icons/ArrowLeftRight.d.ts.map +1 -1
  409. package/dist/components/primitives/Icons/ArrowLeftRight.js.map +1 -1
  410. package/dist/components/primitives/Icons/ArrowRightLeft.d.ts +0 -17
  411. package/dist/components/primitives/Icons/ArrowRightLeft.d.ts.map +1 -1
  412. package/dist/components/primitives/Icons/ArrowRightLeft.js.map +1 -1
  413. package/dist/components/primitives/Icons/Building.d.ts +0 -17
  414. package/dist/components/primitives/Icons/Building.d.ts.map +1 -1
  415. package/dist/components/primitives/Icons/BuildingAlt.d.ts +0 -17
  416. package/dist/components/primitives/Icons/BuildingAlt.d.ts.map +1 -1
  417. package/dist/components/primitives/Icons/BuildingAlt.js.map +1 -1
  418. package/dist/components/primitives/Icons/Check.d.ts +0 -17
  419. package/dist/components/primitives/Icons/Check.d.ts.map +1 -1
  420. package/dist/components/primitives/Icons/Check.js.map +1 -1
  421. package/dist/components/primitives/Icons/ChevronDown.d.ts +0 -17
  422. package/dist/components/primitives/Icons/ChevronDown.d.ts.map +1 -1
  423. package/dist/components/primitives/Icons/ChevronDown.js.map +1 -1
  424. package/dist/components/primitives/Icons/CircleAlert.d.ts +0 -17
  425. package/dist/components/primitives/Icons/CircleAlert.d.ts.map +1 -1
  426. package/dist/components/primitives/Icons/CircleAlert.js.map +1 -1
  427. package/dist/components/primitives/Icons/CircleCheck.d.ts +0 -17
  428. package/dist/components/primitives/Icons/CircleCheck.d.ts.map +1 -1
  429. package/dist/components/primitives/Icons/CircleCheck.js.map +1 -1
  430. package/dist/components/primitives/Icons/Eye.d.ts +0 -17
  431. package/dist/components/primitives/Icons/Eye.d.ts.map +1 -1
  432. package/dist/components/primitives/Icons/Eye.js.map +1 -1
  433. package/dist/components/primitives/Icons/EyeOff.d.ts +0 -17
  434. package/dist/components/primitives/Icons/EyeOff.d.ts.map +1 -1
  435. package/dist/components/primitives/Icons/EyeOff.js.map +1 -1
  436. package/dist/components/primitives/Icons/Info.d.ts +0 -17
  437. package/dist/components/primitives/Icons/Info.d.ts.map +1 -1
  438. package/dist/components/primitives/Icons/Info.js.map +1 -1
  439. package/dist/components/primitives/Icons/LogOut.d.ts +0 -17
  440. package/dist/components/primitives/Icons/LogOut.d.ts.map +1 -1
  441. package/dist/components/primitives/Icons/LogOut.js.map +1 -1
  442. package/dist/components/primitives/Icons/Plus.d.ts +0 -17
  443. package/dist/components/primitives/Icons/Plus.d.ts.map +1 -1
  444. package/dist/components/primitives/Icons/Plus.js.map +1 -1
  445. package/dist/components/primitives/Icons/TriangleAlert.d.ts +0 -17
  446. package/dist/components/primitives/Icons/TriangleAlert.d.ts.map +1 -1
  447. package/dist/components/primitives/Icons/TriangleAlert.js.map +1 -1
  448. package/dist/components/primitives/Icons/User.d.ts +0 -17
  449. package/dist/components/primitives/Icons/User.d.ts.map +1 -1
  450. package/dist/components/primitives/Icons/User.js.map +1 -1
  451. package/dist/components/primitives/Icons/X.d.ts +0 -17
  452. package/dist/components/primitives/Icons/X.d.ts.map +1 -1
  453. package/dist/components/primitives/Icons/X.js.map +1 -1
  454. package/dist/components/primitives/Icons/flowIconRegistry.d.ts +0 -17
  455. package/dist/components/primitives/Icons/flowIconRegistry.d.ts.map +1 -1
  456. package/dist/components/primitives/Icons/flowIconRegistry.js.map +1 -1
  457. package/dist/components/primitives/Icons/index.d.ts +0 -17
  458. package/dist/components/primitives/Icons/index.d.ts.map +1 -1
  459. package/dist/components/primitives/InputLabel/InputLabel.d.ts +0 -17
  460. package/dist/components/primitives/InputLabel/InputLabel.d.ts.map +1 -1
  461. package/dist/components/primitives/InputLabel/InputLabel.js.map +1 -1
  462. package/dist/components/primitives/InputLabel/InputLabel.styles.d.ts +0 -17
  463. package/dist/components/primitives/InputLabel/InputLabel.styles.d.ts.map +1 -1
  464. package/dist/components/primitives/InputLabel/InputLabel.styles.js.map +1 -1
  465. package/dist/components/primitives/KeyValueInput/KeyValueInput.d.ts +0 -17
  466. package/dist/components/primitives/KeyValueInput/KeyValueInput.d.ts.map +1 -1
  467. package/dist/components/primitives/KeyValueInput/KeyValueInput.js.map +1 -1
  468. package/dist/components/primitives/KeyValueInput/KeyValueInput.styles.d.ts +0 -17
  469. package/dist/components/primitives/KeyValueInput/KeyValueInput.styles.d.ts.map +1 -1
  470. package/dist/components/primitives/KeyValueInput/KeyValueInput.styles.js.map +1 -1
  471. package/dist/components/primitives/Logo/Logo.d.ts +0 -17
  472. package/dist/components/primitives/Logo/Logo.d.ts.map +1 -1
  473. package/dist/components/primitives/Logo/Logo.js.map +1 -1
  474. package/dist/components/primitives/Logo/Logo.styles.d.ts +0 -17
  475. package/dist/components/primitives/Logo/Logo.styles.d.ts.map +1 -1
  476. package/dist/components/primitives/Logo/Logo.styles.js.map +1 -1
  477. package/dist/components/primitives/MultiInput/MultiInput.d.ts +0 -17
  478. package/dist/components/primitives/MultiInput/MultiInput.d.ts.map +1 -1
  479. package/dist/components/primitives/MultiInput/MultiInput.js.map +1 -1
  480. package/dist/components/primitives/MultiInput/MultiInput.styles.d.ts +0 -17
  481. package/dist/components/primitives/MultiInput/MultiInput.styles.d.ts.map +1 -1
  482. package/dist/components/primitives/MultiInput/MultiInput.styles.js.map +1 -1
  483. package/dist/components/primitives/OtpField/OtpField.d.ts +0 -17
  484. package/dist/components/primitives/OtpField/OtpField.d.ts.map +1 -1
  485. package/dist/components/primitives/OtpField/OtpField.js.map +1 -1
  486. package/dist/components/primitives/OtpField/OtpField.styles.d.ts +0 -17
  487. package/dist/components/primitives/OtpField/OtpField.styles.d.ts.map +1 -1
  488. package/dist/components/primitives/OtpField/OtpField.styles.js.map +1 -1
  489. package/dist/components/primitives/PasswordField/PasswordField.d.ts +0 -17
  490. package/dist/components/primitives/PasswordField/PasswordField.d.ts.map +1 -1
  491. package/dist/components/primitives/PasswordField/PasswordField.js.map +1 -1
  492. package/dist/components/primitives/PasswordField/PasswordField.styles.d.ts +0 -17
  493. package/dist/components/primitives/PasswordField/PasswordField.styles.d.ts.map +1 -1
  494. package/dist/components/primitives/PasswordField/PasswordField.styles.js.map +1 -1
  495. package/dist/components/primitives/Select/Select.d.ts +0 -17
  496. package/dist/components/primitives/Select/Select.d.ts.map +1 -1
  497. package/dist/components/primitives/Select/Select.js.map +1 -1
  498. package/dist/components/primitives/Select/Select.styles.d.ts +0 -17
  499. package/dist/components/primitives/Select/Select.styles.d.ts.map +1 -1
  500. package/dist/components/primitives/Select/Select.styles.js.map +1 -1
  501. package/dist/components/primitives/Spinner/Spinner.d.ts +0 -17
  502. package/dist/components/primitives/Spinner/Spinner.d.ts.map +1 -1
  503. package/dist/components/primitives/Spinner/Spinner.js.map +1 -1
  504. package/dist/components/primitives/Spinner/Spinner.styles.d.ts +0 -17
  505. package/dist/components/primitives/Spinner/Spinner.styles.d.ts.map +1 -1
  506. package/dist/components/primitives/Spinner/Spinner.styles.js.map +1 -1
  507. package/dist/components/primitives/TextField/TextField.d.ts +0 -17
  508. package/dist/components/primitives/TextField/TextField.d.ts.map +1 -1
  509. package/dist/components/primitives/TextField/TextField.js.map +1 -1
  510. package/dist/components/primitives/TextField/TextField.styles.d.ts +0 -17
  511. package/dist/components/primitives/TextField/TextField.styles.d.ts.map +1 -1
  512. package/dist/components/primitives/TextField/TextField.styles.js.map +1 -1
  513. package/dist/components/primitives/Toggle/Toggle.d.ts +0 -17
  514. package/dist/components/primitives/Toggle/Toggle.d.ts.map +1 -1
  515. package/dist/components/primitives/Toggle/Toggle.js.map +1 -1
  516. package/dist/components/primitives/Toggle/Toggle.styles.d.ts +0 -17
  517. package/dist/components/primitives/Toggle/Toggle.styles.d.ts.map +1 -1
  518. package/dist/components/primitives/Toggle/Toggle.styles.js.map +1 -1
  519. package/dist/components/primitives/Tooltip/Tooltip.d.ts +0 -17
  520. package/dist/components/primitives/Tooltip/Tooltip.d.ts.map +1 -1
  521. package/dist/components/primitives/Tooltip/Tooltip.js.map +1 -1
  522. package/dist/components/primitives/Tooltip/Tooltip.styles.d.ts +0 -17
  523. package/dist/components/primitives/Tooltip/Tooltip.styles.d.ts.map +1 -1
  524. package/dist/components/primitives/Tooltip/Tooltip.styles.js.map +1 -1
  525. package/dist/components/primitives/Typography/Typography.d.ts +0 -17
  526. package/dist/components/primitives/Typography/Typography.d.ts.map +1 -1
  527. package/dist/components/primitives/Typography/Typography.js.map +1 -1
  528. package/dist/components/primitives/Typography/Typography.styles.d.ts +0 -17
  529. package/dist/components/primitives/Typography/Typography.styles.d.ts.map +1 -1
  530. package/dist/components/primitives/Typography/Typography.styles.js.map +1 -1
  531. package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts +0 -17
  532. package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts.map +1 -1
  533. package/dist/contexts/ComponentRenderer/ComponentRendererContext.js.map +1 -1
  534. package/dist/contexts/ComponentRenderer/ComponentRendererProvider.d.ts +0 -17
  535. package/dist/contexts/ComponentRenderer/ComponentRendererProvider.d.ts.map +1 -1
  536. package/dist/contexts/ComponentRenderer/ComponentRendererProvider.js.map +1 -1
  537. package/dist/contexts/Flow/FlowContext.d.ts +0 -17
  538. package/dist/contexts/Flow/FlowContext.d.ts.map +1 -1
  539. package/dist/contexts/Flow/FlowContext.js.map +1 -1
  540. package/dist/contexts/Flow/FlowProvider.d.ts +0 -17
  541. package/dist/contexts/Flow/FlowProvider.d.ts.map +1 -1
  542. package/dist/contexts/Flow/FlowProvider.js.map +1 -1
  543. package/dist/contexts/Flow/useFlow.d.ts +0 -17
  544. package/dist/contexts/Flow/useFlow.d.ts.map +1 -1
  545. package/dist/contexts/Flow/useFlow.js.map +1 -1
  546. package/dist/contexts/FlowMeta/FlowMetaContext.d.ts +0 -17
  547. package/dist/contexts/FlowMeta/FlowMetaContext.d.ts.map +1 -1
  548. package/dist/contexts/FlowMeta/FlowMetaContext.js.map +1 -1
  549. package/dist/contexts/FlowMeta/FlowMetaProvider.d.ts +0 -17
  550. package/dist/contexts/FlowMeta/FlowMetaProvider.d.ts.map +1 -1
  551. package/dist/contexts/FlowMeta/FlowMetaProvider.js +6 -2
  552. package/dist/contexts/FlowMeta/FlowMetaProvider.js.map +1 -1
  553. package/dist/contexts/FlowMeta/useFlowMeta.d.ts +0 -17
  554. package/dist/contexts/FlowMeta/useFlowMeta.d.ts.map +1 -1
  555. package/dist/contexts/FlowMeta/useFlowMeta.js.map +1 -1
  556. package/dist/contexts/I18n/ComponentPreferencesContext.d.ts +0 -17
  557. package/dist/contexts/I18n/ComponentPreferencesContext.d.ts.map +1 -1
  558. package/dist/contexts/I18n/ComponentPreferencesContext.js.map +1 -1
  559. package/dist/contexts/I18n/I18nContext.d.ts +0 -17
  560. package/dist/contexts/I18n/I18nContext.d.ts.map +1 -1
  561. package/dist/contexts/I18n/I18nContext.js.map +1 -1
  562. package/dist/contexts/I18n/I18nProvider.d.ts +0 -17
  563. package/dist/contexts/I18n/I18nProvider.d.ts.map +1 -1
  564. package/dist/contexts/I18n/I18nProvider.js.map +1 -1
  565. package/dist/contexts/I18n/useI18n.d.ts +0 -17
  566. package/dist/contexts/I18n/useI18n.d.ts.map +1 -1
  567. package/dist/contexts/I18n/useI18n.js.map +1 -1
  568. package/dist/contexts/Theme/ThemeContext.d.ts +0 -17
  569. package/dist/contexts/Theme/ThemeContext.d.ts.map +1 -1
  570. package/dist/contexts/Theme/ThemeContext.js.map +1 -1
  571. package/dist/contexts/Theme/ThemeProvider.d.ts +0 -17
  572. package/dist/contexts/Theme/ThemeProvider.d.ts.map +1 -1
  573. package/dist/contexts/Theme/ThemeProvider.js.map +1 -1
  574. package/dist/contexts/Theme/types.d.ts +0 -17
  575. package/dist/contexts/Theme/types.d.ts.map +1 -1
  576. package/dist/contexts/Theme/useTheme.d.ts +0 -17
  577. package/dist/contexts/Theme/useTheme.d.ts.map +1 -1
  578. package/dist/contexts/Theme/useTheme.js.map +1 -1
  579. package/dist/contexts/ThunderID/ThunderIDContext.d.ts +5 -17
  580. package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
  581. package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
  582. package/dist/contexts/ThunderID/ThunderIDProvider.d.ts +0 -17
  583. package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
  584. package/dist/contexts/ThunderID/ThunderIDProvider.js +34 -18
  585. package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
  586. package/dist/contexts/ThunderID/useThunderID.d.ts +0 -17
  587. package/dist/contexts/ThunderID/useThunderID.d.ts.map +1 -1
  588. package/dist/contexts/ThunderID/useThunderID.js.map +1 -1
  589. package/dist/contexts/User/UserContext.d.ts +0 -17
  590. package/dist/contexts/User/UserContext.d.ts.map +1 -1
  591. package/dist/contexts/User/UserContext.js.map +1 -1
  592. package/dist/contexts/User/UserProvider.d.ts +0 -17
  593. package/dist/contexts/User/UserProvider.d.ts.map +1 -1
  594. package/dist/contexts/User/UserProvider.js.map +1 -1
  595. package/dist/contexts/User/useUser.d.ts +0 -17
  596. package/dist/contexts/User/useUser.d.ts.map +1 -1
  597. package/dist/contexts/User/useUser.js.map +1 -1
  598. package/dist/hooks/useBrowserUrl.d.ts +0 -17
  599. package/dist/hooks/useBrowserUrl.d.ts.map +1 -1
  600. package/dist/hooks/useBrowserUrl.js.map +1 -1
  601. package/dist/hooks/useForm.d.ts +0 -17
  602. package/dist/hooks/useForm.d.ts.map +1 -1
  603. package/dist/hooks/useForm.js.map +1 -1
  604. package/dist/hooks/useOAuthCallback.d.ts +0 -17
  605. package/dist/hooks/useOAuthCallback.d.ts.map +1 -1
  606. package/dist/hooks/useOAuthCallback.js.map +1 -1
  607. package/dist/hooks/useTranslation.d.ts +0 -17
  608. package/dist/hooks/useTranslation.d.ts.map +1 -1
  609. package/dist/hooks/useTranslation.js.map +1 -1
  610. package/dist/index.d.ts +0 -17
  611. package/dist/index.d.ts.map +1 -1
  612. package/dist/models/adapters.d.ts +0 -17
  613. package/dist/models/adapters.d.ts.map +1 -1
  614. package/dist/models/config.d.ts +0 -17
  615. package/dist/models/config.d.ts.map +1 -1
  616. package/dist/utils/applyThemeToDOM.d.ts +0 -17
  617. package/dist/utils/applyThemeToDOM.d.ts.map +1 -1
  618. package/dist/utils/applyThemeToDOM.js.map +1 -1
  619. package/dist/utils/buildThemeConfigFromFlowMeta.d.ts +0 -17
  620. package/dist/utils/buildThemeConfigFromFlowMeta.d.ts.map +1 -1
  621. package/dist/utils/buildThemeConfigFromFlowMeta.js.map +1 -1
  622. package/dist/utils/composeAffixedInputs.d.ts +0 -17
  623. package/dist/utils/composeAffixedInputs.d.ts.map +1 -1
  624. package/dist/utils/composeAffixedInputs.js.map +1 -1
  625. package/dist/utils/flowTransformer.d.ts +0 -17
  626. package/dist/utils/flowTransformer.d.ts.map +1 -1
  627. package/dist/utils/flowTransformer.js.map +1 -1
  628. package/dist/utils/getAuthComponentHeadings.d.ts +0 -17
  629. package/dist/utils/getAuthComponentHeadings.d.ts.map +1 -1
  630. package/dist/utils/getAuthComponentHeadings.js.map +1 -1
  631. package/dist/utils/getDisplayName.d.ts +0 -17
  632. package/dist/utils/getDisplayName.d.ts.map +1 -1
  633. package/dist/utils/getDisplayName.js.map +1 -1
  634. package/dist/utils/getMappedUserProfileValue.d.ts +0 -17
  635. package/dist/utils/getMappedUserProfileValue.d.ts.map +1 -1
  636. package/dist/utils/getMappedUserProfileValue.js.map +1 -1
  637. package/dist/utils/normalizeThemeConfig.d.ts +0 -17
  638. package/dist/utils/normalizeThemeConfig.d.ts.map +1 -1
  639. package/dist/utils/normalizeThemeConfig.js.map +1 -1
  640. package/dist/utils/oauth.d.ts +0 -17
  641. package/dist/utils/oauth.d.ts.map +1 -1
  642. package/dist/utils/oauth.js.map +1 -1
  643. package/dist/utils/passkey.d.ts +0 -17
  644. package/dist/utils/passkey.d.ts.map +1 -1
  645. package/dist/utils/passkey.js.map +1 -1
  646. package/dist/utils/resolveTranslationsInArray.d.ts +0 -17
  647. package/dist/utils/resolveTranslationsInArray.d.ts.map +1 -1
  648. package/dist/utils/resolveTranslationsInArray.js.map +1 -1
  649. package/dist/utils/resolveTranslationsInObject.d.ts +0 -17
  650. package/dist/utils/resolveTranslationsInObject.d.ts.map +1 -1
  651. package/dist/utils/resolveTranslationsInObject.js.map +1 -1
  652. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Consent.cjs","names":["defaultConfig: Required<Pick<ConsentConfig, 'essential' | 'optional'>>","Consent: FC<ConsentProps>","config: ConsentConfig","getConsentOptionalKey","purposes: ConsentPurposeData[]","parsed: ConsentPurposeData[] | {purposes: ConsentPurposeData[]}","Typography","Tooltip","Info","ConsentCheckboxList","Toggle"],"sources":["../../../../src/components/adapters/Consent.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n type ConsentPurposeData,\n FlowMetadataResponse,\n PromptElement,\n resolveFlowTemplateLiterals,\n} from '@thunderid/browser';\nimport {type ChangeEvent, FC, ReactNode} from 'react';\nimport ConsentCheckboxList, {getConsentOptionalKey} from './ConsentCheckboxList';\nimport Typography from '../primitives/Typography/Typography';\nimport Toggle from '../primitives/Toggle/Toggle';\nimport {Info} from '../primitives/Icons';\nimport Tooltip from '../primitives/Tooltip/Tooltip';\nimport {UseTranslation} from '../../hooks/useTranslation';\n\n/**\n * Backward-compatible consent purpose type exported by @thunderid/react.\n *\n * Some consumers import this name directly; keep it as an alias to the v2 model.\n */\nexport type ConsentPurpose = ConsentPurposeData;\n\n/**\n * Render props exposed by Consent when using the render-prop pattern.\n */\nexport interface ConsentRenderProps {\n /** Current form values - used to read optional checkbox state. */\n formValues: Record<string, string>;\n /** Callback invoked when a user toggles an optional attribute. */\n onInputChange: (name: string, value: string) => void;\n /** The resolved list of consent purposes parsed from `consentData`. */\n purposes: ConsentPurposeData[];\n}\n\n/**\n * Interface for consent configuration\n */\nexport interface ConsentConfig {\n essential?: string;\n optional?: string;\n essentialInfo?: string;\n optionalInfo?: string;\n}\n\n/**\n * Props for the Consent component.\n */\nexport interface ConsentProps {\n /**\n * Render-props callback. When provided, the default consent UI is replaced with\n * whatever JSX the callback returns. The parsed `purposes` list is injected so\n * consumers do not need to re-parse `consentData` themselves.\n *\n * @example\n * ```tsx\n * <Consent consentData={raw} formValues={formInputs} onInputChange={onChange} t={t}>\n * {({ purposes, formValues, onInputChange, t }) => (\n * <div>\n * {purposes.map(p => <MyConsentSection key={p.purposeId} purpose={p} />)}\n * </div>\n * )}\n * </Consent>\n * ```\n */\n children?: (props: ConsentRenderProps) => ReactNode;\n /**\n * The raw JSON string returned by the backend in `additionalData.consentPrompt`.\n */\n consentData?: string | ConsentPurposeData[] | {purposes: ConsentPurposeData[]};\n /**\n * Current form values - used to read optional checkbox state.\n */\n formValues: Record<string, string>;\n /**\n * Callback invoked when a user toggles an optional attribute.\n */\n onInputChange: (name: string, value: string) => void;\n /**\n * Config to modified detail in consent page\n */\n config?: Record<string, unknown>;\n\n /**\n * Config of meta response\n */\n meta?: FlowMetadataResponse | null;\n\n /**\n * translation data\n */\n t?: UseTranslation['t'];\n}\n\nconst defaultConfig: Required<Pick<ConsentConfig, 'essential' | 'optional'>> = {\n essential: 'Essential Attributtes',\n optional: 'Optional Attributes',\n};\n\n/**\n * Consent component renders the list of purposes and their associated attributes (essential and optional)\n * based on the data provided by the backend. It allows users to toggle optional attributes while essential\n * attributes are displayed as read-only.\n */\nconst Consent: FC<ConsentProps> = ({\n consentData,\n formValues,\n config: suppliedConfig = {},\n onInputChange,\n children,\n meta,\n t,\n}: ConsentProps) => {\n /** Resolve any remaining {{t()}} or {{meta()}} template expressions in a string at render time. */\n const resolve = (text: string | undefined): string => {\n if (!text || (!t && !meta)) {\n return text || '';\n }\n return resolveFlowTemplateLiterals(text, {meta, t: t || ((k: string): string => k)});\n };\n\n const config: ConsentConfig = {...defaultConfig, ...suppliedConfig};\n const essentialInfo = typeof config.essentialInfo === 'string' ? resolve(config.essentialInfo.trim()) : '';\n const optionalInfo = typeof config.optionalInfo === 'string' ? resolve(config.optionalInfo.trim()) : '';\n const essentialLabel = resolve(config['essential']);\n const optionalLabel = resolve(config['optional']);\n\n /**\n * Method to check whether master toggle button is checked or not\n * @param purpose Purpose object\n * @param checked boolean variable to check, whether toggle is checked or unchecked\n */\n const handleChange = (purpose: ConsentPurposeData, checked: boolean): void => {\n const checkValue = checked ? 'true' : 'false';\n purpose.optional.map((opt: PromptElement) => {\n const key: string = getConsentOptionalKey(purpose.purposeId, opt.name);\n onInputChange(key, checkValue);\n });\n };\n\n /**\n * Check all optional claims are selected or not\n * @param purpose Purpose object\n * @returns boolean value to denote all optional claims are selected\n */\n const checkOptValue = (purpose: ConsentPurposeData): boolean => {\n return purpose.optional.every((opt: PromptElement) => {\n const key: string = getConsentOptionalKey(purpose.purposeId, opt.name);\n return formValues[key] === 'true';\n });\n };\n\n if (!consentData) return null;\n\n let purposes: ConsentPurposeData[] = [];\n\n try {\n const parsed: ConsentPurposeData[] | {purposes: ConsentPurposeData[]} =\n typeof consentData === 'string' ? JSON.parse(consentData) : consentData;\n\n purposes = Array.isArray(parsed) ? parsed : parsed.purposes || [];\n } catch (e) {\n // Failed to parse consent prompt data\n return null;\n }\n\n if (purposes.length === 0) return null;\n\n if (children) {\n return <>{children({formValues, onInputChange, purposes: purposes})}</>;\n }\n\n return (\n <div style={{display: 'flex', flexDirection: 'column', gap: '1rem', marginTop: '0.25rem'}}>\n {purposes.map((purpose: ConsentPurposeData, purposeIndex: number) => (\n <div key={purpose.purposeId || purposeIndex} style={{paddingBottom: '1rem'}}>\n {/* TODO: Uncomment when the backend supports multiple purposes for a application */}\n {/* <Typography variant=\"h6\" fontWeight={600} gutterBottom color=\"inherit\">\n {purpose.purposeName}\n </Typography>\n <Typography variant=\"body2\" color=\"inherit\" style={{marginBottom: '1rem', opacity: 0.85}}>\n {purpose.description}\n </Typography> */}\n\n {purpose.essential && purpose.essential.length > 0 && (\n <div style={{marginTop: '0.5rem'}}>\n <div style={{display: 'flex', alignItems: 'center', gap: '4px', marginBottom: '10px'}}>\n <Typography variant=\"subtitle2\" fontWeight=\"bold\">\n {essentialLabel}\n </Typography>\n {essentialInfo !== '' && (\n <Tooltip helperText={essentialInfo}>\n <Info width=\"1rem\" height=\"1rem\" />\n </Tooltip>\n )}\n </div>\n <ConsentCheckboxList\n variant=\"ESSENTIAL\"\n purpose={purpose}\n formValues={formValues}\n onInputChange={onInputChange}\n />\n </div>\n )}\n\n {purpose.optional && purpose.optional.length > 0 && (\n <div style={{marginTop: '0.5rem'}}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingRight: '4px',\n marginBottom: '10px',\n }}\n >\n <div style={{display: 'flex', alignItems: 'center', gap: '4px'}}>\n <Typography variant=\"subtitle2\" fontWeight=\"bold\">\n {purpose.type === 'permissions' ? 'Permissions' : optionalLabel}\n </Typography>\n {optionalInfo !== '' && (\n <Tooltip helperText={optionalInfo}>\n <Info width=\"1rem\" height=\"1rem\" />\n </Tooltip>\n )}\n </div>\n <Toggle\n id={`consent_opt_${purpose.purposeId}_all`}\n checked={checkOptValue(purpose)}\n aria-label=\"Toggle all optional attributes\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => handleChange(purpose, e.target.checked)}\n />\n </div>\n <ConsentCheckboxList\n variant=\"OPTIONAL\"\n purpose={purpose}\n formValues={formValues}\n onInputChange={onInputChange}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n );\n};\n\nexport default Consent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Consent.cjs","names":["defaultConfig: Required<Pick<ConsentConfig, 'essential' | 'optional'>>","Consent: FC<ConsentProps>","config: ConsentConfig","getConsentOptionalKey","purposes: ConsentPurposeData[]","parsed: ConsentPurposeData[] | {purposes: ConsentPurposeData[]}","Typography","Tooltip","Info","ConsentCheckboxList","Toggle"],"sources":["../../../../src/components/adapters/Consent.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n type ConsentPurposeData,\n FlowMetadataResponse,\n PromptElement,\n resolveFlowTemplateLiterals,\n} from '@thunderid/browser';\nimport {type ChangeEvent, FC, ReactNode} from 'react';\nimport ConsentCheckboxList, {getConsentOptionalKey} from './ConsentCheckboxList';\nimport Typography from '../primitives/Typography/Typography';\nimport Toggle from '../primitives/Toggle/Toggle';\nimport {Info} from '../primitives/Icons';\nimport Tooltip from '../primitives/Tooltip/Tooltip';\nimport {UseTranslation} from '../../hooks/useTranslation';\n\n/**\n * Backward-compatible consent purpose type exported by @thunderid/react.\n *\n * Some consumers import this name directly; keep it as an alias to the v2 model.\n */\nexport type ConsentPurpose = ConsentPurposeData;\n\n/**\n * Render props exposed by Consent when using the render-prop pattern.\n */\nexport interface ConsentRenderProps {\n /** Current form values - used to read optional checkbox state. */\n formValues: Record<string, string>;\n /** Callback invoked when a user toggles an optional attribute. */\n onInputChange: (name: string, value: string) => void;\n /** The resolved list of consent purposes parsed from `consentData`. */\n purposes: ConsentPurposeData[];\n}\n\n/**\n * Interface for consent configuration\n */\nexport interface ConsentConfig {\n essential?: string;\n optional?: string;\n essentialInfo?: string;\n optionalInfo?: string;\n}\n\n/**\n * Props for the Consent component.\n */\nexport interface ConsentProps {\n /**\n * Render-props callback. When provided, the default consent UI is replaced with\n * whatever JSX the callback returns. The parsed `purposes` list is injected so\n * consumers do not need to re-parse `consentData` themselves.\n *\n * @example\n * ```tsx\n * <Consent consentData={raw} formValues={formInputs} onInputChange={onChange} t={t}>\n * {({ purposes, formValues, onInputChange, t }) => (\n * <div>\n * {purposes.map(p => <MyConsentSection key={p.purposeId} purpose={p} />)}\n * </div>\n * )}\n * </Consent>\n * ```\n */\n children?: (props: ConsentRenderProps) => ReactNode;\n /**\n * The raw JSON string returned by the backend in `additionalData.consentPrompt`.\n */\n consentData?: string | ConsentPurposeData[] | {purposes: ConsentPurposeData[]};\n /**\n * Current form values - used to read optional checkbox state.\n */\n formValues: Record<string, string>;\n /**\n * Callback invoked when a user toggles an optional attribute.\n */\n onInputChange: (name: string, value: string) => void;\n /**\n * Config to modified detail in consent page\n */\n config?: Record<string, unknown>;\n\n /**\n * Config of meta response\n */\n meta?: FlowMetadataResponse | null;\n\n /**\n * translation data\n */\n t?: UseTranslation['t'];\n}\n\nconst defaultConfig: Required<Pick<ConsentConfig, 'essential' | 'optional'>> = {\n essential: 'Essential Attributtes',\n optional: 'Optional Attributes',\n};\n\n/**\n * Consent component renders the list of purposes and their associated attributes (essential and optional)\n * based on the data provided by the backend. It allows users to toggle optional attributes while essential\n * attributes are displayed as read-only.\n */\nconst Consent: FC<ConsentProps> = ({\n consentData,\n formValues,\n config: suppliedConfig = {},\n onInputChange,\n children,\n meta,\n t,\n}: ConsentProps) => {\n /** Resolve any remaining {{t()}} or {{meta()}} template expressions in a string at render time. */\n const resolve = (text: string | undefined): string => {\n if (!text || (!t && !meta)) {\n return text || '';\n }\n return resolveFlowTemplateLiterals(text, {meta, t: t || ((k: string): string => k)});\n };\n\n const config: ConsentConfig = {...defaultConfig, ...suppliedConfig};\n const essentialInfo = typeof config.essentialInfo === 'string' ? resolve(config.essentialInfo.trim()) : '';\n const optionalInfo = typeof config.optionalInfo === 'string' ? resolve(config.optionalInfo.trim()) : '';\n const essentialLabel = resolve(config['essential']);\n const optionalLabel = resolve(config['optional']);\n\n /**\n * Method to check whether master toggle button is checked or not\n * @param purpose Purpose object\n * @param checked boolean variable to check, whether toggle is checked or unchecked\n */\n const handleChange = (purpose: ConsentPurposeData, checked: boolean): void => {\n const checkValue = checked ? 'true' : 'false';\n purpose.optional.map((opt: PromptElement) => {\n const key: string = getConsentOptionalKey(purpose.purposeId, opt.name);\n onInputChange(key, checkValue);\n });\n };\n\n /**\n * Check all optional claims are selected or not\n * @param purpose Purpose object\n * @returns boolean value to denote all optional claims are selected\n */\n const checkOptValue = (purpose: ConsentPurposeData): boolean => {\n return purpose.optional.every((opt: PromptElement) => {\n const key: string = getConsentOptionalKey(purpose.purposeId, opt.name);\n return formValues[key] === 'true';\n });\n };\n\n if (!consentData) return null;\n\n let purposes: ConsentPurposeData[] = [];\n\n try {\n const parsed: ConsentPurposeData[] | {purposes: ConsentPurposeData[]} =\n typeof consentData === 'string' ? JSON.parse(consentData) : consentData;\n\n purposes = Array.isArray(parsed) ? parsed : parsed.purposes || [];\n } catch (e) {\n // Failed to parse consent prompt data\n return null;\n }\n\n if (purposes.length === 0) return null;\n\n if (children) {\n return <>{children({formValues, onInputChange, purposes: purposes})}</>;\n }\n\n return (\n <div style={{display: 'flex', flexDirection: 'column', gap: '1rem', marginTop: '0.25rem'}}>\n {purposes.map((purpose: ConsentPurposeData, purposeIndex: number) => (\n <div key={purpose.purposeId || purposeIndex} style={{paddingBottom: '1rem'}}>\n {/* TODO: Uncomment when the backend supports multiple purposes for a application */}\n {/* <Typography variant=\"h6\" fontWeight={600} gutterBottom color=\"inherit\">\n {purpose.purposeName}\n </Typography>\n <Typography variant=\"body2\" color=\"inherit\" style={{marginBottom: '1rem', opacity: 0.85}}>\n {purpose.description}\n </Typography> */}\n\n {purpose.essential && purpose.essential.length > 0 && (\n <div style={{marginTop: '0.5rem'}}>\n <div style={{display: 'flex', alignItems: 'center', gap: '4px', marginBottom: '10px'}}>\n <Typography variant=\"subtitle2\" fontWeight=\"bold\">\n {essentialLabel}\n </Typography>\n {essentialInfo !== '' && (\n <Tooltip helperText={essentialInfo}>\n <Info width=\"1rem\" height=\"1rem\" />\n </Tooltip>\n )}\n </div>\n <ConsentCheckboxList\n variant=\"ESSENTIAL\"\n purpose={purpose}\n formValues={formValues}\n onInputChange={onInputChange}\n />\n </div>\n )}\n\n {purpose.optional && purpose.optional.length > 0 && (\n <div style={{marginTop: '0.5rem'}}>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingRight: '4px',\n marginBottom: '10px',\n }}\n >\n <div style={{display: 'flex', alignItems: 'center', gap: '4px'}}>\n <Typography variant=\"subtitle2\" fontWeight=\"bold\">\n {purpose.type === 'permissions' ? 'Permissions' : optionalLabel}\n </Typography>\n {optionalInfo !== '' && (\n <Tooltip helperText={optionalInfo}>\n <Info width=\"1rem\" height=\"1rem\" />\n </Tooltip>\n )}\n </div>\n <Toggle\n id={`consent_opt_${purpose.purposeId}_all`}\n checked={checkOptValue(purpose)}\n aria-label=\"Toggle all optional attributes\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => handleChange(purpose, e.target.checked)}\n />\n </div>\n <ConsentCheckboxList\n variant=\"OPTIONAL\"\n purpose={purpose}\n formValues={formValues}\n onInputChange={onInputChange}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n );\n};\n\nexport default Consent;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConsentCheckboxList.cjs","names":["ConsentCheckboxList: FC<ConsentCheckboxListProps>","useTheme","styles: Record<string, string>","useStyles","attributes: string[]","isEssential: boolean","checked: boolean","Typography","Toggle"],"sources":["../../../../src/components/adapters/ConsentCheckboxList.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {cx} from '@emotion/css';\nimport {type ConsentPurposeData, withVendorCSSClassPrefix, bem} from '@thunderid/browser';\nimport {type ChangeEvent, FC, ReactNode} from 'react';\nimport useStyles from './ConsentCheckboxList.styles';\nimport useTheme from '../../contexts/Theme/useTheme';\nimport Toggle from '../primitives/Toggle/Toggle';\nimport Typography from '../primitives/Typography/Typography';\n\n/**\n * Computes the form value key for tracking an optional attribute's consent state.\n *\n * @param purposeId - The ID of the consent purpose.\n * @param attrName - The name of the attribute.\n * @returns A stable form key string.\n */\nexport const getConsentOptionalKey = (purposeId: string, attrName: string): string =>\n `__consent_opt__${purposeId}__${attrName}`;\n\n/**\n * ConsentInputVariant defines whether the ConsentCheckboxList is rendering essential (read-only) or\n * optional (toggleable) attributes.\n */\nexport type ConsentInputVariant = 'ESSENTIAL' | 'OPTIONAL';\n\n/**\n * Render props exposed by ConsentCheckboxList when using the render-prop pattern.\n */\nexport interface ConsentCheckboxListRenderProps {\n /** The list of attribute names to render. */\n attributes: string[];\n /**\n * Call this when an optional attribute checkbox is toggled.\n * No-op for ESSENTIAL attributes (they cannot be changed).\n */\n handleChange: (attrName: string, checked: boolean) => void;\n /**\n * Returns the current checked state for the given attribute name.\n * Always returns true for ESSENTIAL attributes.\n */\n isChecked: (attrName: string) => boolean;\n /** Whether the list is rendering essential or optional attributes. */\n variant: ConsentInputVariant;\n}\n\n/**\n * Props for the ConsentCheckboxList component.\n */\nexport interface ConsentCheckboxListProps {\n /**\n * Render-props callback. When provided, the default checkbox list UI is replaced\n * with whatever JSX the callback returns.\n *\n * @example\n * ```tsx\n * <ConsentCheckboxList variant=\"OPTIONAL\" purpose={purpose} formValues={formValues} onInputChange={onChange}>\n * {({ attributes, isChecked, handleChange }) => (\n * <ul>\n * {attributes.map(attr => (\n * <li key={attr}>\n * <Checkbox checked={isChecked(attr)} onChange={e => handleChange(attr, e.target.checked)} />\n * {attr}\n * </li>\n * ))}\n * </ul>\n * )}\n * </ConsentCheckboxList>\n * ```\n */\n children?: (props: ConsentCheckboxListRenderProps) => ReactNode;\n /** Current form values - used to read optional checkbox state */\n formValues: Record<string, string>;\n /** Callback invoked when an optional attribute checkbox is toggled */\n onInputChange: (name: string, value: string) => void;\n /** The consent purpose data containing attribute lists */\n purpose: ConsentPurposeData;\n /** Whether to render essential (disabled) or optional (toggleable) attributes */\n variant: ConsentInputVariant;\n}\n\n/**\n * Renders a list of consent attribute checkboxes.\n *\n * - ESSENTIAL variant: renders read-only checked checkboxes for required attributes.\n * - OPTIONAL variant: renders toggleable checkboxes for optional attributes.\n * Opt-in is the default when no prior form value exists.\n */\nconst ConsentCheckboxList: FC<ConsentCheckboxListProps> = ({\n variant,\n purpose,\n formValues,\n onInputChange,\n children,\n}: ConsentCheckboxListProps) => {\n const {theme, colorScheme}: ReturnType<typeof useTheme> = useTheme();\n const styles: Record<string, string> = useStyles(theme, colorScheme);\n\n const attributes: string[] = (variant === 'ESSENTIAL' ? purpose.essential : purpose.optional).map(\n (e): string => e.name,\n );\n\n if (!attributes || attributes.length === 0) {\n return null;\n }\n\n const isEssential: boolean = variant === 'ESSENTIAL';\n\n const isChecked = (attrName: string): boolean => {\n if (isEssential) {\n return true;\n }\n const key: string = getConsentOptionalKey(purpose.purposeId, attrName);\n // Default to be false when there's no explicit form value\n return formValues[key] === 'true';\n };\n\n const handleChange = (attrName: string, checked: boolean): void => {\n const key: string = getConsentOptionalKey(purpose.purposeId, attrName);\n onInputChange(key, checked ? 'true' : 'false');\n };\n\n if (children) {\n return <>{children({attributes, handleChange, isChecked, variant})}</>;\n }\n\n return (\n <div className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list')), styles['listContainer'])}>\n {attributes.map((attr: string) => {\n const inputId = `consent_${isEssential ? 'ess' : 'opt'}_${purpose.purposeId}_${attr}`;\n const checked: boolean = isChecked(attr);\n\n return (\n <div\n key={attr}\n className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'item')), styles['listItem'])}\n >\n <div className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'row')), styles['listRow'])}>\n <div\n className={cx(\n withVendorCSSClassPrefix(bem('consent-checkbox-list', 'label-container')),\n styles['labelContainer'],\n )}\n >\n <div\n className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'bullet')), styles['bullet'])}\n />\n <Typography\n variant=\"body2\"\n className={cx(\n withVendorCSSClassPrefix(bem('consent-checkbox-list', 'typography')),\n styles['typography'],\n )}\n >\n {attr}\n </Typography>\n </div>\n {isEssential ? (\n <Typography variant=\"body2\">Required</Typography>\n ) : (\n <Toggle\n id={inputId}\n checked={checked}\n disabled={isEssential}\n onChange={\n isEssential\n ? undefined\n : (e: ChangeEvent<HTMLInputElement>): void => handleChange(attr, e.target.checked)\n }\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default ConsentCheckboxList;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAiCA,MAAa,yBAAyB,WAAmB,aACvD,kBAAkB,UAAU,IAAI;;;;;;;;AAsElC,MAAMA,uBAAqD,EACzD,SACA,SACA,YACA,eACA,eAC8B;CAC9B,MAAM,EAAC,OAAO,gBAA4CC,0BAAU;CACpE,MAAMC,SAAiCC,2CAAU,OAAO,YAAY;CAEpE,MAAMC,cAAwB,YAAY,cAAc,QAAQ,YAAY,QAAQ,UAAU,KAC3F,MAAc,EAAE,KAClB;AAED,KAAI,CAAC,cAAc,WAAW,WAAW,EACvC,QAAO;CAGT,MAAMC,cAAuB,YAAY;CAEzC,MAAM,aAAa,aAA8B;AAC/C,MAAI,YACF,QAAO;AAIT,SAAO,WAFa,sBAAsB,QAAQ,WAAW,SAAS,MAE3C;;CAG7B,MAAM,gBAAgB,UAAkB,YAA2B;AAEjE,gBADoB,sBAAsB,QAAQ,WAAW,SAAS,EACnD,UAAU,SAAS,QAAQ;;AAGhD,KAAI,SACF,QAAO,mFAAG,SAAS;EAAC;EAAY;EAAc;EAAW;EAAQ,CAAC,GAAI;AAGxE,QACE,2CAAC;EAAI,gHAA2C,wBAAwB,CAAC,EAAE,OAAO,iBAAiB;YAChG,WAAW,KAAK,SAAiB;GAChC,MAAM,UAAU,WAAW,cAAc,QAAQ,MAAM,GAAG,QAAQ,UAAU,GAAG;GAC/E,MAAMC,UAAmB,UAAU,KAAK;AAExC,UACE,2CAAC;IAEC,gHAA2C,yBAAyB,OAAO,CAAC,EAAE,OAAO,YAAY;cAEjG,4CAAC;KAAI,gHAA2C,yBAAyB,MAAM,CAAC,EAAE,OAAO,WAAW;gBAClG,4CAAC;MACC,gHAC+B,yBAAyB,kBAAkB,CAAC,EACzE,OAAO,kBACR;iBAED,2CAAC,SACC,gHAA2C,yBAAyB,SAAS,CAAC,EAAE,OAAO,UAAU,GACjG,EACF,2CAACC;OACC,SAAQ;OACR,gHAC+B,yBAAyB,aAAa,CAAC,EACpE,OAAO,cACR;iBAEA;QACU;OACT,EACL,cACC,2CAACA;MAAW,SAAQ;gBAAQ;OAAqB,GAEjD,2CAACC;MACC,IAAI;MACK;MACT,UAAU;MACV,UACE,cACI,UACC,MAA2C,aAAa,MAAM,EAAE,OAAO,QAAQ;OAEtF;MAEA;MArCD,KAsCD;IAER;GACE;;AAIV,kCAAe"}
1
+ {"version":3,"file":"ConsentCheckboxList.cjs","names":["ConsentCheckboxList: FC<ConsentCheckboxListProps>","useTheme","styles: Record<string, string>","useStyles","attributes: string[]","isEssential: boolean","checked: boolean","Typography","Toggle"],"sources":["../../../../src/components/adapters/ConsentCheckboxList.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {cx} from '@emotion/css';\nimport {type ConsentPurposeData, withVendorCSSClassPrefix, bem} from '@thunderid/browser';\nimport {type ChangeEvent, FC, ReactNode} from 'react';\nimport useStyles from './ConsentCheckboxList.styles';\nimport useTheme from '../../contexts/Theme/useTheme';\nimport Toggle from '../primitives/Toggle/Toggle';\nimport Typography from '../primitives/Typography/Typography';\n\n/**\n * Computes the form value key for tracking an optional attribute's consent state.\n *\n * @param purposeId - The ID of the consent purpose.\n * @param attrName - The name of the attribute.\n * @returns A stable form key string.\n */\nexport const getConsentOptionalKey = (purposeId: string, attrName: string): string =>\n `__consent_opt__${purposeId}__${attrName}`;\n\n/**\n * ConsentInputVariant defines whether the ConsentCheckboxList is rendering essential (read-only) or\n * optional (toggleable) attributes.\n */\nexport type ConsentInputVariant = 'ESSENTIAL' | 'OPTIONAL';\n\n/**\n * Render props exposed by ConsentCheckboxList when using the render-prop pattern.\n */\nexport interface ConsentCheckboxListRenderProps {\n /** The list of attribute names to render. */\n attributes: string[];\n /**\n * Call this when an optional attribute checkbox is toggled.\n * No-op for ESSENTIAL attributes (they cannot be changed).\n */\n handleChange: (attrName: string, checked: boolean) => void;\n /**\n * Returns the current checked state for the given attribute name.\n * Always returns true for ESSENTIAL attributes.\n */\n isChecked: (attrName: string) => boolean;\n /** Whether the list is rendering essential or optional attributes. */\n variant: ConsentInputVariant;\n}\n\n/**\n * Props for the ConsentCheckboxList component.\n */\nexport interface ConsentCheckboxListProps {\n /**\n * Render-props callback. When provided, the default checkbox list UI is replaced\n * with whatever JSX the callback returns.\n *\n * @example\n * ```tsx\n * <ConsentCheckboxList variant=\"OPTIONAL\" purpose={purpose} formValues={formValues} onInputChange={onChange}>\n * {({ attributes, isChecked, handleChange }) => (\n * <ul>\n * {attributes.map(attr => (\n * <li key={attr}>\n * <Checkbox checked={isChecked(attr)} onChange={e => handleChange(attr, e.target.checked)} />\n * {attr}\n * </li>\n * ))}\n * </ul>\n * )}\n * </ConsentCheckboxList>\n * ```\n */\n children?: (props: ConsentCheckboxListRenderProps) => ReactNode;\n /** Current form values - used to read optional checkbox state */\n formValues: Record<string, string>;\n /** Callback invoked when an optional attribute checkbox is toggled */\n onInputChange: (name: string, value: string) => void;\n /** The consent purpose data containing attribute lists */\n purpose: ConsentPurposeData;\n /** Whether to render essential (disabled) or optional (toggleable) attributes */\n variant: ConsentInputVariant;\n}\n\n/**\n * Renders a list of consent attribute checkboxes.\n *\n * - ESSENTIAL variant: renders read-only checked checkboxes for required attributes.\n * - OPTIONAL variant: renders toggleable checkboxes for optional attributes.\n * Opt-in is the default when no prior form value exists.\n */\nconst ConsentCheckboxList: FC<ConsentCheckboxListProps> = ({\n variant,\n purpose,\n formValues,\n onInputChange,\n children,\n}: ConsentCheckboxListProps) => {\n const {theme, colorScheme}: ReturnType<typeof useTheme> = useTheme();\n const styles: Record<string, string> = useStyles(theme, colorScheme);\n\n const attributes: string[] = (variant === 'ESSENTIAL' ? purpose.essential : purpose.optional).map(\n (e): string => e.name,\n );\n\n if (!attributes || attributes.length === 0) {\n return null;\n }\n\n const isEssential: boolean = variant === 'ESSENTIAL';\n\n const isChecked = (attrName: string): boolean => {\n if (isEssential) {\n return true;\n }\n const key: string = getConsentOptionalKey(purpose.purposeId, attrName);\n // Default to be false when there's no explicit form value\n return formValues[key] === 'true';\n };\n\n const handleChange = (attrName: string, checked: boolean): void => {\n const key: string = getConsentOptionalKey(purpose.purposeId, attrName);\n onInputChange(key, checked ? 'true' : 'false');\n };\n\n if (children) {\n return <>{children({attributes, handleChange, isChecked, variant})}</>;\n }\n\n return (\n <div className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list')), styles['listContainer'])}>\n {attributes.map((attr: string) => {\n const inputId = `consent_${isEssential ? 'ess' : 'opt'}_${purpose.purposeId}_${attr}`;\n const checked: boolean = isChecked(attr);\n\n return (\n <div\n key={attr}\n className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'item')), styles['listItem'])}\n >\n <div className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'row')), styles['listRow'])}>\n <div\n className={cx(\n withVendorCSSClassPrefix(bem('consent-checkbox-list', 'label-container')),\n styles['labelContainer'],\n )}\n >\n <div\n className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'bullet')), styles['bullet'])}\n />\n <Typography\n variant=\"body2\"\n className={cx(\n withVendorCSSClassPrefix(bem('consent-checkbox-list', 'typography')),\n styles['typography'],\n )}\n >\n {attr}\n </Typography>\n </div>\n {isEssential ? (\n <Typography variant=\"body2\">Required</Typography>\n ) : (\n <Toggle\n id={inputId}\n checked={checked}\n disabled={isEssential}\n onChange={\n isEssential\n ? undefined\n : (e: ChangeEvent<HTMLInputElement>): void => handleChange(attr, e.target.checked)\n }\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default ConsentCheckboxList;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAkBA,MAAa,yBAAyB,WAAmB,aACvD,kBAAkB,UAAU,IAAI;;;;;;;;AAsElC,MAAMA,uBAAqD,EACzD,SACA,SACA,YACA,eACA,eAC8B;CAC9B,MAAM,EAAC,OAAO,gBAA4CC,0BAAU;CACpE,MAAMC,SAAiCC,2CAAU,OAAO,YAAY;CAEpE,MAAMC,cAAwB,YAAY,cAAc,QAAQ,YAAY,QAAQ,UAAU,KAC3F,MAAc,EAAE,KAClB;AAED,KAAI,CAAC,cAAc,WAAW,WAAW,EACvC,QAAO;CAGT,MAAMC,cAAuB,YAAY;CAEzC,MAAM,aAAa,aAA8B;AAC/C,MAAI,YACF,QAAO;AAIT,SAAO,WAFa,sBAAsB,QAAQ,WAAW,SAAS,MAE3C;;CAG7B,MAAM,gBAAgB,UAAkB,YAA2B;AAEjE,gBADoB,sBAAsB,QAAQ,WAAW,SAAS,EACnD,UAAU,SAAS,QAAQ;;AAGhD,KAAI,SACF,QAAO,mFAAG,SAAS;EAAC;EAAY;EAAc;EAAW;EAAQ,CAAC,GAAI;AAGxE,QACE,2CAAC;EAAI,gHAA2C,wBAAwB,CAAC,EAAE,OAAO,iBAAiB;YAChG,WAAW,KAAK,SAAiB;GAChC,MAAM,UAAU,WAAW,cAAc,QAAQ,MAAM,GAAG,QAAQ,UAAU,GAAG;GAC/E,MAAMC,UAAmB,UAAU,KAAK;AAExC,UACE,2CAAC;IAEC,gHAA2C,yBAAyB,OAAO,CAAC,EAAE,OAAO,YAAY;cAEjG,4CAAC;KAAI,gHAA2C,yBAAyB,MAAM,CAAC,EAAE,OAAO,WAAW;gBAClG,4CAAC;MACC,gHAC+B,yBAAyB,kBAAkB,CAAC,EACzE,OAAO,kBACR;iBAED,2CAAC,SACC,gHAA2C,yBAAyB,SAAS,CAAC,EAAE,OAAO,UAAU,GACjG,EACF,2CAACC;OACC,SAAQ;OACR,gHAC+B,yBAAyB,aAAa,CAAC,EACpE,OAAO,cACR;iBAEA;QACU;OACT,EACL,cACC,2CAACA;MAAW,SAAQ;gBAAQ;OAAqB,GAEjD,2CAACC;MACC,IAAI;MACK;MACT,UAAU;MACV,UACE,cACI,UACC,MAA2C,aAAa,MAAM,EAAE,OAAO,QAAQ;OAEtF;MAEA;MArCD,KAsCD;IAER;GACE;;AAIV,kCAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConsentCheckboxList.styles.cjs","names":[],"sources":["../../../../src/components/adapters/ConsentCheckboxList.styles.ts"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {css} from '@emotion/css';\nimport {Theme} from '@thunderid/browser';\nimport {useMemo} from 'react';\n\nconst useStyles = (theme: Theme, colorScheme: string): Record<string, string> =>\n useMemo(\n () => ({\n bullet: css`\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background-color: #9e9e9e;\n flex-shrink: 0;\n `,\n divider: css`\n opacity: 0.5;\n margin: 0.25rem 0;\n `,\n labelContainer: css`\n display: flex;\n align-items: center;\n gap: 0.4rem;\n `,\n listContainer: css`\n display: flex;\n flex-direction: column;\n `,\n listItem: css`\n padding: 0 0.25rem;\n margin-bottom: 4px;\n `,\n listRow: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.125rem 0;\n `,\n typography: css`\n margin: 0;\n `,\n }),\n [theme, colorScheme],\n );\n\nexport default useStyles;\n"],"mappings":";;;;;;;AAsBA,MAAM,aAAa,OAAc,0CAEtB;CACL,QAAQ,iBAAG;;;;;;;CAOX,SAAS,iBAAG;;;;CAIZ,gBAAgB,iBAAG;;;;;CAKnB,eAAe,iBAAG;;;;CAIlB,UAAU,iBAAG;;;;CAIb,SAAS,iBAAG;;;;;;CAMZ,YAAY,iBAAG;;;CAGhB,GACD,CAAC,OAAO,YAAY,CACrB;AAEH,yCAAe"}
1
+ {"version":3,"file":"ConsentCheckboxList.styles.cjs","names":[],"sources":["../../../../src/components/adapters/ConsentCheckboxList.styles.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {css} from '@emotion/css';\nimport {Theme} from '@thunderid/browser';\nimport {useMemo} from 'react';\n\nconst useStyles = (theme: Theme, colorScheme: string): Record<string, string> =>\n useMemo(\n () => ({\n bullet: css`\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background-color: #9e9e9e;\n flex-shrink: 0;\n `,\n divider: css`\n opacity: 0.5;\n margin: 0.25rem 0;\n `,\n labelContainer: css`\n display: flex;\n align-items: center;\n gap: 0.4rem;\n `,\n listContainer: css`\n display: flex;\n flex-direction: column;\n `,\n listItem: css`\n padding: 0 0.25rem;\n margin-bottom: 4px;\n `,\n listRow: css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0.125rem 0;\n `,\n typography: css`\n margin: 0;\n `,\n }),\n [theme, colorScheme],\n );\n\nexport default useStyles;\n"],"mappings":";;;;;;;AAOA,MAAM,aAAa,OAAc,0CAEtB;CACL,QAAQ,iBAAG;;;;;;;CAOX,SAAS,iBAAG;;;;CAIZ,gBAAgB,iBAAG;;;;;CAKnB,eAAe,iBAAG;;;;CAIlB,UAAU,iBAAG;;;;CAIb,SAAS,iBAAG;;;;;;CAMZ,YAAY,iBAAG;;;CAGhB,GACD,CAAC,OAAO,YAAY,CACrB;AAEH,yCAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"FacebookButton.cjs","names":["FacebookButton: FC<FacebookButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/FacebookButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface FacebookButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * Facebook Sign-In Button Component.\n * Handles authentication with Facebook identity provider.\n */\nconst FacebookButton: FC<FacebookButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: FacebookButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"primary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#1976D2\"\n d=\"M448,0H64C28.704,0,0,28.704,0,64v384c0,35.296,28.704,64,64,64h384c35.296,0,64-28.704,64-64V64C512,28.704,483.296,0,448,0z\"\n />\n <path\n fill=\"#FAFAFA\"\n d=\"M432,256h-80v-64c0-17.664,14.336-16,32-16h32V96h-64l0,0c-53.024,0-96,42.976-96,96v64h-64v80h64v176h96V336h48L432,256z\"\n />\n </svg>\n }\n >\n {children ?? t('elements.buttons.facebook.text')}\n </Button>\n );\n};\n\nexport default FacebookButton;\n"],"mappings":";;;;;;;;;;;AAkCA,MAAMA,kBAA+E,EACnF,WACA,aACA,SACA,GAAG,WAC0D;CAC7D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,4CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAc,OAAM;cACtD,2CAAC;IACC,MAAK;IACL,GAAE;KACF,EACF,2CAAC;IACC,MAAK;IACL,GAAE;KACF;IACE;YAGP,YAAY,EAAE,iCAAiC;GACzC;;AAIb,6BAAe"}
1
+ {"version":3,"file":"FacebookButton.cjs","names":["FacebookButton: FC<FacebookButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/FacebookButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface FacebookButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * Facebook Sign-In Button Component.\n * Handles authentication with Facebook identity provider.\n */\nconst FacebookButton: FC<FacebookButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: FacebookButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"primary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 512 512\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#1976D2\"\n d=\"M448,0H64C28.704,0,0,28.704,0,64v384c0,35.296,28.704,64,64,64h384c35.296,0,64-28.704,64-64V64C512,28.704,483.296,0,448,0z\"\n />\n <path\n fill=\"#FAFAFA\"\n d=\"M432,256h-80v-64c0-17.664,14.336-16,32-16h32V96h-64l0,0c-53.024,0-96,42.976-96,96v64h-64v80h64v176h96V336h48L432,256z\"\n />\n </svg>\n }\n >\n {children ?? t('elements.buttons.facebook.text')}\n </Button>\n );\n};\n\nexport default FacebookButton;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,kBAA+E,EACnF,WACA,aACA,SACA,GAAG,WAC0D;CAC7D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,4CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAc,OAAM;cACtD,2CAAC;IACC,MAAK;IACL,GAAE;KACF,EACF,2CAAC;IACC,MAAK;IACL,GAAE;KACF;IACE;YAGP,YAAY,EAAE,iCAAiC;GACzC;;AAIb,6BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"FlowTimer.cjs","names":["FlowTimer: FC<FlowTimerProps>","interval: NodeJS.Timeout","isExpired: boolean","formattedTime: string","Typography"],"sources":["../../../../src/components/adapters/FlowTimer.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FC, ReactNode, useEffect, useState} from 'react';\nimport Typography from '../primitives/Typography/Typography';\n\n/**\n * Render props exposed by FlowTimer when using the render-prop pattern.\n */\nexport interface FlowTimerRenderProps {\n /** Human-readable formatted time string (e.g. \"2:30\" or \"Timed out\"). */\n formattedTime: string;\n /** Whether the timer has expired. */\n isExpired: boolean;\n /** Remaining time in seconds. 0 when expired. */\n remaining: number;\n}\n\n/**\n * Props for the FlowTimer component.\n */\nexport interface FlowTimerProps {\n /**\n * Render-props callback. When provided, the default countdown display is replaced\n * with whatever JSX the callback returns.\n *\n * @example\n * ```tsx\n * <FlowTimer expiresIn={300}>\n * {({ remaining, isExpired, formattedTime }) => (\n * <span style={{ color: isExpired ? 'red' : 'inherit' }}>\n * {isExpired ? 'Session expired' : `Time left: ${formattedTime}`}\n * </span>\n * )}\n * </FlowTimer>\n * ```\n */\n children?: (props: FlowTimerRenderProps) => ReactNode;\n /** Initial number of seconds for the countdown. 0 or negative means no timer. */\n expiresIn?: number;\n /** Text template for the countdown display. Use {time} as a placeholder. */\n textTemplate?: string;\n}\n\n/**\n * Flow countdown timer component.\n *\n * Displays a countdown from the given number of seconds. When the time expires,\n * shows \"Timed out\". Returns null if expiresIn <= 0.\n */\nconst FlowTimer: FC<FlowTimerProps> = ({\n expiresIn = 0,\n textTemplate = 'Time remaining: {time}',\n children,\n}: FlowTimerProps) => {\n const [remaining, setRemaining] = useState<number>(expiresIn > 0 ? expiresIn : 0);\n\n useEffect(() => {\n if (expiresIn <= 0) {\n return undefined;\n }\n\n setRemaining(expiresIn);\n\n const interval: NodeJS.Timeout = setInterval(() => {\n setRemaining((prev: number) => {\n if (prev <= 1) {\n clearInterval(interval);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearInterval(interval);\n }, [expiresIn]);\n\n if (expiresIn <= 0) {\n return null;\n }\n\n const formatTime = (seconds: number): string => {\n if (seconds <= 0) {\n return 'Timed out';\n }\n const m: number = Math.floor(seconds / 60);\n const s: number = seconds % 60;\n return `${m}:${s.toString().padStart(2, '0')}`;\n };\n\n const isExpired: boolean = remaining <= 0;\n const formattedTime: string = formatTime(remaining);\n\n if (children) {\n return <>{children({formattedTime, isExpired, remaining})}</>;\n }\n\n const displayText: string = isExpired ? 'Timed out' : textTemplate.replace('{time}', formattedTime);\n\n return <Typography variant=\"body2\">{displayText}</Typography>;\n};\n\nexport default FlowTimer;\n"],"mappings":";;;;;;;;;;;;;;AAiEA,MAAMA,aAAiC,EACrC,YAAY,GACZ,eAAe,0BACf,eACoB;CACpB,MAAM,CAAC,WAAW,oCAAiC,YAAY,IAAI,YAAY,EAAE;AAEjF,4BAAgB;AACd,MAAI,aAAa,EACf;AAGF,eAAa,UAAU;EAEvB,MAAMC,WAA2B,kBAAkB;AACjD,iBAAc,SAAiB;AAC7B,QAAI,QAAQ,GAAG;AACb,mBAAc,SAAS;AACvB,YAAO;;AAET,WAAO,OAAO;KACd;KACD,IAAK;AAER,eAAa,cAAc,SAAS;IACnC,CAAC,UAAU,CAAC;AAEf,KAAI,aAAa,EACf,QAAO;CAGT,MAAM,cAAc,YAA4B;AAC9C,MAAI,WAAW,EACb,QAAO;AAIT,SAAO,GAFW,KAAK,MAAM,UAAU,GAAG,CAE9B,IADM,UAAU,IACX,UAAU,CAAC,SAAS,GAAG,IAAI;;CAG9C,MAAMC,YAAqB,aAAa;CACxC,MAAMC,gBAAwB,WAAW,UAAU;AAEnD,KAAI,SACF,QAAO,mFAAG,SAAS;EAAC;EAAe;EAAW;EAAU,CAAC,GAAI;AAK/D,QAAO,2CAACC;EAAW,SAAQ;YAFC,YAAY,cAAc,aAAa,QAAQ,UAAU,cAAc;GAEtC;;AAG/D,wBAAe"}
1
+ {"version":3,"file":"FlowTimer.cjs","names":["FlowTimer: FC<FlowTimerProps>","interval: NodeJS.Timeout","isExpired: boolean","formattedTime: string","Typography"],"sources":["../../../../src/components/adapters/FlowTimer.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FC, ReactNode, useEffect, useState} from 'react';\nimport Typography from '../primitives/Typography/Typography';\n\n/**\n * Render props exposed by FlowTimer when using the render-prop pattern.\n */\nexport interface FlowTimerRenderProps {\n /** Human-readable formatted time string (e.g. \"2:30\" or \"Timed out\"). */\n formattedTime: string;\n /** Whether the timer has expired. */\n isExpired: boolean;\n /** Remaining time in seconds. 0 when expired. */\n remaining: number;\n}\n\n/**\n * Props for the FlowTimer component.\n */\nexport interface FlowTimerProps {\n /**\n * Render-props callback. When provided, the default countdown display is replaced\n * with whatever JSX the callback returns.\n *\n * @example\n * ```tsx\n * <FlowTimer expiresIn={300}>\n * {({ remaining, isExpired, formattedTime }) => (\n * <span style={{ color: isExpired ? 'red' : 'inherit' }}>\n * {isExpired ? 'Session expired' : `Time left: ${formattedTime}`}\n * </span>\n * )}\n * </FlowTimer>\n * ```\n */\n children?: (props: FlowTimerRenderProps) => ReactNode;\n /** Initial number of seconds for the countdown. 0 or negative means no timer. */\n expiresIn?: number;\n /** Text template for the countdown display. Use {time} as a placeholder. */\n textTemplate?: string;\n}\n\n/**\n * Flow countdown timer component.\n *\n * Displays a countdown from the given number of seconds. When the time expires,\n * shows \"Timed out\". Returns null if expiresIn <= 0.\n */\nconst FlowTimer: FC<FlowTimerProps> = ({\n expiresIn = 0,\n textTemplate = 'Time remaining: {time}',\n children,\n}: FlowTimerProps) => {\n const [remaining, setRemaining] = useState<number>(expiresIn > 0 ? expiresIn : 0);\n\n useEffect(() => {\n if (expiresIn <= 0) {\n return undefined;\n }\n\n setRemaining(expiresIn);\n\n const interval: NodeJS.Timeout = setInterval(() => {\n setRemaining((prev: number) => {\n if (prev <= 1) {\n clearInterval(interval);\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearInterval(interval);\n }, [expiresIn]);\n\n if (expiresIn <= 0) {\n return null;\n }\n\n const formatTime = (seconds: number): string => {\n if (seconds <= 0) {\n return 'Timed out';\n }\n const m: number = Math.floor(seconds / 60);\n const s: number = seconds % 60;\n return `${m}:${s.toString().padStart(2, '0')}`;\n };\n\n const isExpired: boolean = remaining <= 0;\n const formattedTime: string = formatTime(remaining);\n\n if (children) {\n return <>{children({formattedTime, isExpired, remaining})}</>;\n }\n\n const displayText: string = isExpired ? 'Timed out' : textTemplate.replace('{time}', formattedTime);\n\n return <Typography variant=\"body2\">{displayText}</Typography>;\n};\n\nexport default FlowTimer;\n"],"mappings":";;;;;;;;;;;;;;AAkDA,MAAMA,aAAiC,EACrC,YAAY,GACZ,eAAe,0BACf,eACoB;CACpB,MAAM,CAAC,WAAW,oCAAiC,YAAY,IAAI,YAAY,EAAE;AAEjF,4BAAgB;AACd,MAAI,aAAa,EACf;AAGF,eAAa,UAAU;EAEvB,MAAMC,WAA2B,kBAAkB;AACjD,iBAAc,SAAiB;AAC7B,QAAI,QAAQ,GAAG;AACb,mBAAc,SAAS;AACvB,YAAO;;AAET,WAAO,OAAO;KACd;KACD,IAAK;AAER,eAAa,cAAc,SAAS;IACnC,CAAC,UAAU,CAAC;AAEf,KAAI,aAAa,EACf,QAAO;CAGT,MAAM,cAAc,YAA4B;AAC9C,MAAI,WAAW,EACb,QAAO;AAIT,SAAO,GAFW,KAAK,MAAM,UAAU,GAAG,CAE9B,IADM,UAAU,IACX,UAAU,CAAC,SAAS,GAAG,IAAI;;CAG9C,MAAMC,YAAqB,aAAa;CACxC,MAAMC,gBAAwB,WAAW,UAAU;AAEnD,KAAI,SACF,QAAO,mFAAG,SAAS;EAAC;EAAe;EAAW;EAAU,CAAC,GAAI;AAK/D,QAAO,2CAACC;EAAW,SAAQ;YAFC,YAAY,cAAc,aAAa,QAAQ,UAAU,cAAc;GAEtC;;AAG/D,wBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"GitHubButton.cjs","names":["GitHubButton: FC<GithubButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/GitHubButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface GithubButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * GitHub Sign-In Button Component.\n * Handles authentication with GitHub identity provider.\n */\nconst GitHubButton: FC<GithubButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: GithubButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 67.91 66.233\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"translate(-386.96 658.072)\">\n <path\n d=\"M420.915-658.072a33.956,33.956,0,0,0-33.955,33.955,33.963,33.963,0,0,0,23.221,32.22c1.7.314,2.32-.737,2.32-1.633,0-.81-.031-3.484-.046-6.322-9.446,2.054-11.44-4.006-11.44-4.006-1.545-3.925-3.77-4.968-3.77-4.968-3.081-2.107.232-2.064.232-2.064,3.41.239,5.205,3.5,5.205,3.5,3.028,5.19,7.943,3.69,9.881,2.822a7.23,7.23,0,0,1,2.156-4.54c-7.542-.859-15.47-3.77-15.47-16.781a13.141,13.141,0,0,1,3.5-9.114,12.2,12.2,0,0,1,.329-8.986s2.851-.913,9.34,3.48a32.545,32.545,0,0,1,8.5-1.143,32.629,32.629,0,0,1,8.506,1.143c6.481-4.393,9.328-3.48,9.328-3.48a12.185,12.185,0,0,1,.333,8.986,13.115,13.115,0,0,1,3.495,9.114c0,13.042-7.943,15.913-15.5,16.754,1.218,1.054,2.3,3.12,2.3,6.288,0,4.543-.039,8.2-.039,9.318,0,.9.611,1.962,2.332,1.629a33.959,33.959,0,0,0,23.2-32.215,33.955,33.955,0,0,0-33.955-33.955\"\n fill=\"#ffffff\"\n />\n </g>\n </svg>\n }\n >\n {children ?? t('elements.buttons.github.text')}\n </Button>\n );\n};\n\nexport default GitHubButton;\n"],"mappings":";;;;;;;;;;;AAkCA,MAAMA,gBAA2E,EAC/E,WACA,aACA,SACA,GAAG,WACwD;CAC3D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAmB,OAAM;aAC3D,2CAAC;IAAE,WAAU;cACX,2CAAC;KACC,GAAE;KACF,MAAK;MACL;KACA;IACA;YAGP,YAAY,EAAE,+BAA+B;GACvC;;AAIb,2BAAe"}
1
+ {"version":3,"file":"GitHubButton.cjs","names":["GitHubButton: FC<GithubButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/GitHubButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface GithubButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * GitHub Sign-In Button Component.\n * Handles authentication with GitHub identity provider.\n */\nconst GitHubButton: FC<GithubButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: GithubButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 67.91 66.233\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"translate(-386.96 658.072)\">\n <path\n d=\"M420.915-658.072a33.956,33.956,0,0,0-33.955,33.955,33.963,33.963,0,0,0,23.221,32.22c1.7.314,2.32-.737,2.32-1.633,0-.81-.031-3.484-.046-6.322-9.446,2.054-11.44-4.006-11.44-4.006-1.545-3.925-3.77-4.968-3.77-4.968-3.081-2.107.232-2.064.232-2.064,3.41.239,5.205,3.5,5.205,3.5,3.028,5.19,7.943,3.69,9.881,2.822a7.23,7.23,0,0,1,2.156-4.54c-7.542-.859-15.47-3.77-15.47-16.781a13.141,13.141,0,0,1,3.5-9.114,12.2,12.2,0,0,1,.329-8.986s2.851-.913,9.34,3.48a32.545,32.545,0,0,1,8.5-1.143,32.629,32.629,0,0,1,8.506,1.143c6.481-4.393,9.328-3.48,9.328-3.48a12.185,12.185,0,0,1,.333,8.986,13.115,13.115,0,0,1,3.495,9.114c0,13.042-7.943,15.913-15.5,16.754,1.218,1.054,2.3,3.12,2.3,6.288,0,4.543-.039,8.2-.039,9.318,0,.9.611,1.962,2.332,1.629a33.959,33.959,0,0,0,23.2-32.215,33.955,33.955,0,0,0-33.955-33.955\"\n fill=\"#ffffff\"\n />\n </g>\n </svg>\n }\n >\n {children ?? t('elements.buttons.github.text')}\n </Button>\n );\n};\n\nexport default GitHubButton;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,gBAA2E,EAC/E,WACA,aACA,SACA,GAAG,WACwD;CAC3D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAmB,OAAM;aAC3D,2CAAC;IAAE,WAAU;cACX,2CAAC;KACC,GAAE;KACF,MAAK;MACL;KACA;IACA;YAGP,YAAY,EAAE,+BAA+B;GACvC;;AAIb,2BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleButton.cjs","names":["GoogleButton: FC<GoogleButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/GoogleButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface GoogleButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * Google Sign-In Button Component.\n * Handles authentication with Google identity provider.\n */\nconst GoogleButton: FC<GoogleButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: GoogleButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 67.91 67.901\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"translate(-0.001 -0.001)\">\n <path\n d=\"M15.049,160.965l-2.364,8.824-8.639.183a34.011,34.011,0,0,1-.25-31.7h0l7.691,1.41,3.369,7.645a20.262,20.262,0,0,0,.19,13.642Z\"\n transform=\"translate(0 -119.93)\"\n fill=\"#fbbb00\"\n />\n <path\n d=\"M294.24,208.176A33.939,33.939,0,0,1,282.137,241h0l-9.687-.494-1.371-8.559a20.235,20.235,0,0,0,8.706-10.333H261.628V208.176Z\"\n transform=\"translate(-226.93 -180.567)\"\n fill=\"#518ef8\"\n />\n <path\n d=\"M81.668,328.8h0a33.962,33.962,0,0,1-51.161-10.387l11-9.006a20.192,20.192,0,0,0,29.1,10.338Z\"\n transform=\"translate(-26.463 -268.374)\"\n fill=\"#28b446\"\n />\n <path\n d=\"M80.451,7.816l-11,9A20.19,20.19,0,0,0,39.686,27.393l-11.06-9.055h0A33.959,33.959,0,0,1,80.451,7.816Z\"\n transform=\"translate(-24.828)\"\n fill=\"#f14336\"\n />\n </g>\n </svg>\n }\n >\n {children ?? t('elements.buttons.google.text')}\n </Button>\n );\n};\n\nexport default GoogleButton;\n"],"mappings":";;;;;;;;;;;AAkCA,MAAMA,gBAA2E,EAC/E,WACA,aACA,SACA,GAAG,WACwD;CAC3D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAmB,OAAM;aAC3D,4CAAC;IAAE,WAAU;;KACX,2CAAC;MACC,GAAE;MACF,WAAU;MACV,MAAK;OACL;KACF,2CAAC;MACC,GAAE;MACF,WAAU;MACV,MAAK;OACL;KACF,2CAAC;MACC,GAAE;MACF,WAAU;MACV,MAAK;OACL;KACF,2CAAC;MACC,GAAE;MACF,WAAU;MACV,MAAK;OACL;;KACA;IACA;YAGP,YAAY,EAAE,+BAA+B;GACvC;;AAIb,2BAAe"}
1
+ {"version":3,"file":"GoogleButton.cjs","names":["GoogleButton: FC<GoogleButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/GoogleButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface GoogleButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * Google Sign-In Button Component.\n * Handles authentication with Google identity provider.\n */\nconst GoogleButton: FC<GoogleButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: GoogleButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 67.91 67.901\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"translate(-0.001 -0.001)\">\n <path\n d=\"M15.049,160.965l-2.364,8.824-8.639.183a34.011,34.011,0,0,1-.25-31.7h0l7.691,1.41,3.369,7.645a20.262,20.262,0,0,0,.19,13.642Z\"\n transform=\"translate(0 -119.93)\"\n fill=\"#fbbb00\"\n />\n <path\n d=\"M294.24,208.176A33.939,33.939,0,0,1,282.137,241h0l-9.687-.494-1.371-8.559a20.235,20.235,0,0,0,8.706-10.333H261.628V208.176Z\"\n transform=\"translate(-226.93 -180.567)\"\n fill=\"#518ef8\"\n />\n <path\n d=\"M81.668,328.8h0a33.962,33.962,0,0,1-51.161-10.387l11-9.006a20.192,20.192,0,0,0,29.1,10.338Z\"\n transform=\"translate(-26.463 -268.374)\"\n fill=\"#28b446\"\n />\n <path\n d=\"M80.451,7.816l-11,9A20.19,20.19,0,0,0,39.686,27.393l-11.06-9.055h0A33.959,33.959,0,0,1,80.451,7.816Z\"\n transform=\"translate(-24.828)\"\n fill=\"#f14336\"\n />\n </g>\n </svg>\n }\n >\n {children ?? t('elements.buttons.google.text')}\n </Button>\n );\n};\n\nexport default GoogleButton;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,gBAA2E,EAC/E,WACA,aACA,SACA,GAAG,WACwD;CAC3D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAmB,OAAM;aAC3D,4CAAC;IAAE,WAAU;;KACX,2CAAC;MACC,GAAE;MACF,WAAU;MACV,MAAK;OACL;KACF,2CAAC;MACC,GAAE;MACF,WAAU;MACV,MAAK;OACL;KACF,2CAAC;MACC,GAAE;MACF,WAAU;MACV,MAAK;OACL;KACF,2CAAC;MACC,GAAE;MACF,WAAU;MACV,MAAK;OACL;;KACA;IACA;YAGP,YAAY,EAAE,+BAA+B;GACvC;;AAIb,2BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImageComponent.cjs","names":["ImageComponent: FC<AdapterProps>","useTheme","config: Record<string, unknown>","src: string","alt: string","width: string","height: string","variant: string","imageStyle: CSSProperties","resolvedIcon: ResolvedLogo","cssWidth: string","cssHeight: string","containerHeight: string"],"sources":["../../../../src/components/adapters/ImageComponent.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {resolveLogoUri, ResolvedLogo} from '@thunderid/browser';\nimport {CSSProperties, FC, SyntheticEvent} from 'react';\nimport useTheme from '../../contexts/Theme/useTheme';\nimport {AdapterProps} from '../../models/adapters';\n\nconst DEFAULT_EMOJI_CONTAINER_HEIGHT = '4em';\n\n/**\n * Image component for sign-up forms.\n */\nconst ImageComponent: FC<AdapterProps> = ({component}: AdapterProps) => {\n const {theme} = useTheme();\n const config: Record<string, unknown> = component.config || {};\n const src: string = (config['src'] as string) || '';\n const alt: string = (config['alt'] as string) || (config['label'] as string) || 'Image';\n const width: string = (config['width'] as string) || '100%';\n const height: string = (config['height'] as string) || 'auto';\n const variant: string = component.variant?.toLowerCase() || 'image_block';\n\n const imageStyle: CSSProperties = {\n borderRadius: theme.vars.borderRadius.small,\n display: 'block',\n margin: variant === 'image_block' ? '1rem auto' : '0',\n };\n\n if (!src) {\n return null;\n }\n\n const resolvedIcon: ResolvedLogo = resolveLogoUri(src, alt);\n\n if (resolvedIcon.kind === 'emoji') {\n // Bare numbers (e.g. \"48\") are valid for <img> width/height attributes but\n // are unit-less and ignored as CSS properties — normalize them to px.\n const toCSSLength = (value: string): string => (/^\\d+(\\.\\d+)?$/.test(value) ? `${value}px` : value);\n const cssWidth: string = toCSSLength(width);\n const cssHeight: string = toCSSLength(height);\n\n // container-type: size needs a concrete block dimension — percentage and\n // 'auto' values both collapse to 0 when the parent has no defined height.\n // Priority: explicit height → explicit width (square) → fallback constant.\n const isConcrete = (v: string): boolean => v !== 'auto' && !v.endsWith('%');\n let containerHeight: string;\n if (isConcrete(cssHeight)) {\n containerHeight = cssHeight;\n } else if (isConcrete(cssWidth)) {\n containerHeight = cssWidth;\n } else {\n containerHeight = DEFAULT_EMOJI_CONTAINER_HEIGHT;\n }\n\n return (\n <div key={component.id} style={{textAlign: 'center'}}>\n {/*\n * container-type: size lets the inner span use cqmin (= min(cqw, cqh))\n * so the emoji font-size tracks the rendered container dimensions\n * rather than the parent's font-size.\n */}\n <span\n style={{\n ...imageStyle,\n containerType: 'size',\n display: 'inline-grid',\n height: containerHeight,\n placeItems: 'center',\n width: cssWidth,\n }}\n >\n <span aria-label={alt} role=\"img\" style={{fontSize: '100cqmin', lineHeight: 1}}>\n {resolvedIcon.glyph}\n </span>\n </span>\n </div>\n );\n }\n\n return (\n <div key={component.id} style={{textAlign: 'center'}}>\n <img\n src={resolvedIcon.imgSrc}\n alt={alt}\n height={height}\n width={width}\n style={imageStyle}\n onError={(e: SyntheticEvent<HTMLImageElement>): void => {\n // Hide broken images\n e.currentTarget.style.display = 'none';\n }}\n />\n </div>\n );\n};\n\nexport default ImageComponent;\n"],"mappings":";;;;;;;;AAuBA,MAAM,iCAAiC;;;;AAKvC,MAAMA,kBAAoC,EAAC,gBAA6B;CACtE,MAAM,EAAC,UAASC,0BAAU;CAC1B,MAAMC,SAAkC,UAAU,UAAU,EAAE;CAC9D,MAAMC,MAAe,OAAO,UAAqB;CACjD,MAAMC,MAAe,OAAO,UAAsB,OAAO,YAAuB;CAChF,MAAMC,QAAiB,OAAO,YAAuB;CACrD,MAAMC,SAAkB,OAAO,aAAwB;CACvD,MAAMC,UAAkB,UAAU,SAAS,aAAa,IAAI;CAE5D,MAAMC,aAA4B;EAChC,cAAc,MAAM,KAAK,aAAa;EACtC,SAAS;EACT,QAAQ,YAAY,gBAAgB,cAAc;EACnD;AAED,KAAI,CAAC,IACH,QAAO;CAGT,MAAMC,uDAA4C,KAAK,IAAI;AAE3D,KAAI,aAAa,SAAS,SAAS;EAGjC,MAAM,eAAe,UAA2B,gBAAgB,KAAK,MAAM,GAAG,GAAG,MAAM,MAAM;EAC7F,MAAMC,WAAmB,YAAY,MAAM;EAC3C,MAAMC,YAAoB,YAAY,OAAO;EAK7C,MAAM,cAAc,MAAuB,MAAM,UAAU,CAAC,EAAE,SAAS,IAAI;EAC3E,IAAIC;AACJ,MAAI,WAAW,UAAU,CACvB,mBAAkB;WACT,WAAW,SAAS,CAC7B,mBAAkB;MAElB,mBAAkB;AAGpB,SACE,2CAAC;GAAuB,OAAO,EAAC,WAAW,UAAS;aAMlD,2CAAC;IACC,OAAO;KACL,GAAG;KACH,eAAe;KACf,SAAS;KACT,QAAQ;KACR,YAAY;KACZ,OAAO;KACR;cAED,2CAAC;KAAK,cAAY;KAAK,MAAK;KAAM,OAAO;MAAC,UAAU;MAAY,YAAY;MAAE;eAC3E,aAAa;MACT;KACF;KAnBC,UAAU,GAoBd;;AAIV,QACE,2CAAC;EAAuB,OAAO,EAAC,WAAW,UAAS;YAClD,2CAAC;GACC,KAAK,aAAa;GACb;GACG;GACD;GACP,OAAO;GACP,UAAU,MAA8C;AAEtD,MAAE,cAAc,MAAM,UAAU;;IAElC;IAXM,UAAU,GAYd;;AAIV,6BAAe"}
1
+ {"version":3,"file":"ImageComponent.cjs","names":["ImageComponent: FC<AdapterProps>","useTheme","config: Record<string, unknown>","src: string","alt: string","width: string","height: string","variant: string","imageStyle: CSSProperties","resolvedIcon: ResolvedLogo","cssWidth: string","cssHeight: string","containerHeight: string"],"sources":["../../../../src/components/adapters/ImageComponent.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {resolveLogoUri, ResolvedLogo} from '@thunderid/browser';\nimport {CSSProperties, FC, SyntheticEvent} from 'react';\nimport useTheme from '../../contexts/Theme/useTheme';\nimport {AdapterProps} from '../../models/adapters';\n\nconst DEFAULT_EMOJI_CONTAINER_HEIGHT = '4em';\n\n/**\n * Image component for sign-up forms.\n */\nconst ImageComponent: FC<AdapterProps> = ({component}: AdapterProps) => {\n const {theme} = useTheme();\n const config: Record<string, unknown> = component.config || {};\n const src: string = (config['src'] as string) || '';\n const alt: string = (config['alt'] as string) || (config['label'] as string) || 'Image';\n const width: string = (config['width'] as string) || '100%';\n const height: string = (config['height'] as string) || 'auto';\n const variant: string = component.variant?.toLowerCase() || 'image_block';\n\n const imageStyle: CSSProperties = {\n borderRadius: theme.vars.borderRadius.small,\n display: 'block',\n margin: variant === 'image_block' ? '1rem auto' : '0',\n };\n\n if (!src) {\n return null;\n }\n\n const resolvedIcon: ResolvedLogo = resolveLogoUri(src, alt);\n\n if (resolvedIcon.kind === 'emoji') {\n // Bare numbers (e.g. \"48\") are valid for <img> width/height attributes but\n // are unit-less and ignored as CSS properties — normalize them to px.\n const toCSSLength = (value: string): string => (/^\\d+(\\.\\d+)?$/.test(value) ? `${value}px` : value);\n const cssWidth: string = toCSSLength(width);\n const cssHeight: string = toCSSLength(height);\n\n // container-type: size needs a concrete block dimension — percentage and\n // 'auto' values both collapse to 0 when the parent has no defined height.\n // Priority: explicit height → explicit width (square) → fallback constant.\n const isConcrete = (v: string): boolean => v !== 'auto' && !v.endsWith('%');\n let containerHeight: string;\n if (isConcrete(cssHeight)) {\n containerHeight = cssHeight;\n } else if (isConcrete(cssWidth)) {\n containerHeight = cssWidth;\n } else {\n containerHeight = DEFAULT_EMOJI_CONTAINER_HEIGHT;\n }\n\n return (\n <div key={component.id} style={{textAlign: 'center'}}>\n {/*\n * container-type: size lets the inner span use cqmin (= min(cqw, cqh))\n * so the emoji font-size tracks the rendered container dimensions\n * rather than the parent's font-size.\n */}\n <span\n style={{\n ...imageStyle,\n containerType: 'size',\n display: 'inline-grid',\n height: containerHeight,\n placeItems: 'center',\n width: cssWidth,\n }}\n >\n <span aria-label={alt} role=\"img\" style={{fontSize: '100cqmin', lineHeight: 1}}>\n {resolvedIcon.glyph}\n </span>\n </span>\n </div>\n );\n }\n\n return (\n <div key={component.id} style={{textAlign: 'center'}}>\n <img\n src={resolvedIcon.imgSrc}\n alt={alt}\n height={height}\n width={width}\n style={imageStyle}\n onError={(e: SyntheticEvent<HTMLImageElement>): void => {\n // Hide broken images\n e.currentTarget.style.display = 'none';\n }}\n />\n </div>\n );\n};\n\nexport default ImageComponent;\n"],"mappings":";;;;;;;;AAQA,MAAM,iCAAiC;;;;AAKvC,MAAMA,kBAAoC,EAAC,gBAA6B;CACtE,MAAM,EAAC,UAASC,0BAAU;CAC1B,MAAMC,SAAkC,UAAU,UAAU,EAAE;CAC9D,MAAMC,MAAe,OAAO,UAAqB;CACjD,MAAMC,MAAe,OAAO,UAAsB,OAAO,YAAuB;CAChF,MAAMC,QAAiB,OAAO,YAAuB;CACrD,MAAMC,SAAkB,OAAO,aAAwB;CACvD,MAAMC,UAAkB,UAAU,SAAS,aAAa,IAAI;CAE5D,MAAMC,aAA4B;EAChC,cAAc,MAAM,KAAK,aAAa;EACtC,SAAS;EACT,QAAQ,YAAY,gBAAgB,cAAc;EACnD;AAED,KAAI,CAAC,IACH,QAAO;CAGT,MAAMC,uDAA4C,KAAK,IAAI;AAE3D,KAAI,aAAa,SAAS,SAAS;EAGjC,MAAM,eAAe,UAA2B,gBAAgB,KAAK,MAAM,GAAG,GAAG,MAAM,MAAM;EAC7F,MAAMC,WAAmB,YAAY,MAAM;EAC3C,MAAMC,YAAoB,YAAY,OAAO;EAK7C,MAAM,cAAc,MAAuB,MAAM,UAAU,CAAC,EAAE,SAAS,IAAI;EAC3E,IAAIC;AACJ,MAAI,WAAW,UAAU,CACvB,mBAAkB;WACT,WAAW,SAAS,CAC7B,mBAAkB;MAElB,mBAAkB;AAGpB,SACE,2CAAC;GAAuB,OAAO,EAAC,WAAW,UAAS;aAMlD,2CAAC;IACC,OAAO;KACL,GAAG;KACH,eAAe;KACf,SAAS;KACT,QAAQ;KACR,YAAY;KACZ,OAAO;KACR;cAED,2CAAC;KAAK,cAAY;KAAK,MAAK;KAAM,OAAO;MAAC,UAAU;MAAY,YAAY;MAAE;eAC3E,aAAa;MACT;KACF;KAnBC,UAAU,GAoBd;;AAIV,QACE,2CAAC;EAAuB,OAAO,EAAC,WAAW,UAAS;YAClD,2CAAC;GACC,KAAK,aAAa;GACb;GACG;GACD;GACP,OAAO;GACP,UAAU,MAA8C;AAEtD,MAAE,cAAc,MAAM,UAAU;;IAElC;IAXM,UAAU,GAYd;;AAIV,6BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedInButton.cjs","names":["LinkedInButton: FC<LinkedInButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/LinkedInButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface LinkedInButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * LinkedIn Sign-In Button Component.\n * Handles authentication with LinkedIn identity provider.\n */\nconst LinkedInButton: FC<LinkedInButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: LinkedInButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#0077B5\"\n d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"\n />\n </svg>\n }\n >\n {children ?? t('elements.buttons.linkedin.text')}\n </Button>\n );\n};\n\nexport default LinkedInButton;\n"],"mappings":";;;;;;;;;;;AAkCA,MAAMA,kBAA+E,EACnF,WACA,aACA,SACA,GAAG,WAC0D;CAC7D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,OAAM;aACpD,2CAAC;IACC,MAAK;IACL,GAAE;KACF;IACE;YAGP,YAAY,EAAE,iCAAiC;GACzC;;AAIb,6BAAe"}
1
+ {"version":3,"file":"LinkedInButton.cjs","names":["LinkedInButton: FC<LinkedInButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/LinkedInButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface LinkedInButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * LinkedIn Sign-In Button Component.\n * Handles authentication with LinkedIn identity provider.\n */\nconst LinkedInButton: FC<LinkedInButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: LinkedInButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#0077B5\"\n d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"\n />\n </svg>\n }\n >\n {children ?? t('elements.buttons.linkedin.text')}\n </Button>\n );\n};\n\nexport default LinkedInButton;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,kBAA+E,EACnF,WACA,aACA,SACA,GAAG,WAC0D;CAC7D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,OAAM;aACpD,2CAAC;IACC,MAAK;IACL,GAAE;KACF;IACE;YAGP,YAAY,EAAE,iCAAiC;GACzC;;AAIb,6BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"MicrosoftButton.cjs","names":["MicrosoftButton: FC<MicrosoftButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/MicrosoftButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface MicrosoftButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * Microsoft Sign-In Button Component.\n * Handles authentication with Microsoft identity provider.\n */\nconst MicrosoftButton: FC<MicrosoftButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: MicrosoftButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 23 23\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"#f3f3f3\" d=\"M0 0h23v23H0z\" />\n <path fill=\"#f35325\" d=\"M1 1h10v10H1z\" />\n <path fill=\"#81bc06\" d=\"M12 1h10v10H12z\" />\n <path fill=\"#05a6f0\" d=\"M1 12h10v10H1z\" />\n <path fill=\"#ffba08\" d=\"M12 12h10v10H12z\" />\n </svg>\n }\n >\n {children ?? t('elements.buttons.microsoft.text')}\n </Button>\n );\n};\n\nexport default MicrosoftButton;\n"],"mappings":";;;;;;;;;;;AAkCA,MAAMA,mBAAiF,EACrF,WACA,aACA,SACA,GAAG,WAC2D;CAC9D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,4CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,OAAM;;IACpD,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAkB;IACzC,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAkB;IACzC,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAoB;IAC3C,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAmB;IAC1C,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAqB;;IACxC;YAGP,YAAY,EAAE,kCAAkC;GAC1C;;AAIb,8BAAe"}
1
+ {"version":3,"file":"MicrosoftButton.cjs","names":["MicrosoftButton: FC<MicrosoftButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/MicrosoftButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface MicrosoftButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * Microsoft Sign-In Button Component.\n * Handles authentication with Microsoft identity provider.\n */\nconst MicrosoftButton: FC<MicrosoftButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: MicrosoftButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 23 23\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill=\"#f3f3f3\" d=\"M0 0h23v23H0z\" />\n <path fill=\"#f35325\" d=\"M1 1h10v10H1z\" />\n <path fill=\"#81bc06\" d=\"M12 1h10v10H12z\" />\n <path fill=\"#05a6f0\" d=\"M1 12h10v10H1z\" />\n <path fill=\"#ffba08\" d=\"M12 12h10v10H12z\" />\n </svg>\n }\n >\n {children ?? t('elements.buttons.microsoft.text')}\n </Button>\n );\n};\n\nexport default MicrosoftButton;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,mBAAiF,EACrF,WACA,aACA,SACA,GAAG,WAC2D;CAC9D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,4CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,OAAM;;IACpD,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAkB;IACzC,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAkB;IACzC,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAoB;IAC3C,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAmB;IAC1C,2CAAC;KAAK,MAAK;KAAU,GAAE;MAAqB;;IACxC;YAGP,YAAY,EAAE,kCAAkC;GAC1C;;AAIb,8BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignInWithEthereumButton.cjs","names":["SignInWithEthereumButton: FC<SignInWithEthereumButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/SignInWithEthereumButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface SignInWithEthereumButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * Sign In With Ethereum Button Component.\n * Handles authentication with Sign In With Ethereum identity provider.\n */\nconst SignInWithEthereumButton: FC<SignInWithEthereumButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: SignInWithEthereumButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#627EEA\"\n d=\"M11.944 17.97L4.58 13.62 11.943 24l7.37-10.38-7.372 4.35h.003zM12.056 0L4.69 12.223l7.365 4.354 7.365-4.35L12.056 0z\"\n />\n </svg>\n }\n >\n {children ?? t('elements.buttons.ethereum.text')}\n </Button>\n );\n};\n\nexport default SignInWithEthereumButton;\n"],"mappings":";;;;;;;;;;;AAkCA,MAAMA,4BAAmG,EACvG,WACA,aACA,SACA,GAAG,WACoE;CACvE,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,OAAM;aACpD,2CAAC;IACC,MAAK;IACL,GAAE;KACF;IACE;YAGP,YAAY,EAAE,iCAAiC;GACzC;;AAIb,uCAAe"}
1
+ {"version":3,"file":"SignInWithEthereumButton.cjs","names":["SignInWithEthereumButton: FC<SignInWithEthereumButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/SignInWithEthereumButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface SignInWithEthereumButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * Sign In With Ethereum Button Component.\n * Handles authentication with Sign In With Ethereum identity provider.\n */\nconst SignInWithEthereumButton: FC<SignInWithEthereumButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: SignInWithEthereumButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#627EEA\"\n d=\"M11.944 17.97L4.58 13.62 11.943 24l7.37-10.38-7.372 4.35h.003zM12.056 0L4.69 12.223l7.365 4.354 7.365-4.35L12.056 0z\"\n />\n </svg>\n }\n >\n {children ?? t('elements.buttons.ethereum.text')}\n </Button>\n );\n};\n\nexport default SignInWithEthereumButton;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,4BAAmG,EACvG,WACA,aACA,SACA,GAAG,WACoE;CACvE,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,OAAM;aACpD,2CAAC;IACC,MAAK;IACL,GAAE;KACF;IACE;YAGP,YAAY,EAAE,iCAAiC;GACzC;;AAIb,uCAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"SmsOtpButton.cjs","names":["SmsOtpButton: FC<SmsOtpButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/SmsOtpButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface SmsOtpButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * SMS OTP Sign-In Button Component.\n * Handles authentication with SMS OTP.\n */\nconst SmsOtpButton: FC<SmsOtpButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: SmsOtpButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"currentColor\"\n d=\"M20 15.5c-1.25 0-2.45-.2-3.57-.57a1.02 1.02 0 0 0-1.02.24l-2.2 2.2a15.074 15.074 0 0 1-6.59-6.59l2.2-2.2c.27-.27.35-.67.24-1.02A11.36 11.36 0 0 1 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1M12 3v10l3-3h6V3z\"\n />\n </svg>\n }\n >\n {children ?? t('elements.buttons.smsotp.text')}\n </Button>\n );\n};\n\nexport default SmsOtpButton;\n"],"mappings":";;;;;;;;;;;AAkCA,MAAMA,gBAA2E,EAC/E,WACA,aACA,SACA,GAAG,WACwD;CAC3D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,OAAM;aACpD,2CAAC;IACC,MAAK;IACL,GAAE;KACF;IACE;YAGP,YAAY,EAAE,+BAA+B;GACvC;;AAIb,2BAAe"}
1
+ {"version":3,"file":"SmsOtpButton.cjs","names":["SmsOtpButton: FC<SmsOtpButtonProps & HTMLAttributes<HTMLButtonElement>>","useTranslation","Button"],"sources":["../../../../src/components/adapters/SmsOtpButton.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {WithPreferences} from '@thunderid/browser';\nimport {FC, HTMLAttributes} from 'react';\nimport useTranslation from '../../hooks/useTranslation';\nimport Button from '../primitives/Button/Button';\n\nexport interface SmsOtpButtonProps extends WithPreferences {\n /**\n * Whether the component is in loading state.\n */\n isLoading?: boolean;\n}\n\n/**\n * SMS OTP Sign-In Button Component.\n * Handles authentication with SMS OTP.\n */\nconst SmsOtpButton: FC<SmsOtpButtonProps & HTMLAttributes<HTMLButtonElement>> = ({\n isLoading,\n preferences,\n children,\n ...rest\n}: SmsOtpButtonProps & HTMLAttributes<HTMLButtonElement>) => {\n const {t} = useTranslation(preferences?.i18n);\n\n return (\n <Button\n {...rest}\n fullWidth\n type=\"button\"\n color=\"secondary\"\n variant=\"solid\"\n disabled={isLoading}\n startIcon={\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"currentColor\"\n d=\"M20 15.5c-1.25 0-2.45-.2-3.57-.57a1.02 1.02 0 0 0-1.02.24l-2.2 2.2a15.074 15.074 0 0 1-6.59-6.59l2.2-2.2c.27-.27.35-.67.24-1.02A11.36 11.36 0 0 1 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1M12 3v10l3-3h6V3z\"\n />\n </svg>\n }\n >\n {children ?? t('elements.buttons.smsotp.text')}\n </Button>\n );\n};\n\nexport default SmsOtpButton;\n"],"mappings":";;;;;;;;;;;AAmBA,MAAMA,gBAA2E,EAC/E,WACA,aACA,SACA,GAAG,WACwD;CAC3D,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;AAE7C,QACE,2CAACC;EACC,GAAI;EACJ;EACA,MAAK;EACL,OAAM;EACN,SAAQ;EACR,UAAU;EACV,WACE,2CAAC;GAAI,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAY,OAAM;aACpD,2CAAC;IACC,MAAK;IACL,GAAE;KACF;IACE;YAGP,YAAY,EAAE,+BAA+B;GACvC;;AAIb,2BAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"Callback.cjs","names":["Callback: FC<CallbackProps>","TokenCallback","OAuthCallback"],"sources":["../../../../../src/components/auth/Callback/Callback.tsx"],"sourcesContent":["/*\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FC, useState} from 'react';\nimport {OAuthCallback, OAuthCallbackProps} from './OAuthCallback';\nimport {TokenCallback, TokenCallbackProps} from './TokenCallback';\n\n/**\n * Props for the unified Callback component, combining properties for both Token and OAuth callbacks.\n */\nexport type CallbackProps = OAuthCallbackProps & TokenCallbackProps;\n\n/**\n * A unified Callback component that automatically routes to either OAuthCallback or TokenCallback\n * based on the presence of URL parameters ('code' for OAuth, 'token' for token-based flows).\n */\nexport const Callback: FC<CallbackProps> = (props: CallbackProps) => {\n // Use state to lock the flow type on initial mount.\n // This prevents the component from swapping to OAuthCallback if TokenCallback\n // removes the '?token=' query parameter from the URL using window.history.\n const [flowType] = useState<'token' | 'oauth'>(() => {\n if (typeof window === 'undefined') {\n return 'oauth';\n }\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get('token') ? 'token' : 'oauth';\n });\n\n if (typeof window === 'undefined') {\n return null;\n }\n\n if (flowType === 'token') {\n return <TokenCallback {...props} />;\n }\n\n return <OAuthCallback {...props} />;\n};\n\nexport default Callback;\n"],"mappings":";;;;;;;;;;;;;AA+BA,MAAaA,YAA+B,UAAyB;CAInE,MAAM,CAAC,sCAA8C;AACnD,MAAI,OAAO,WAAW,YACpB,QAAO;AAGT,SADkB,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C,IAAI,QAAQ,GAAG,UAAU;GAC1C;AAEF,KAAI,OAAO,WAAW,YACpB,QAAO;AAGT,KAAI,aAAa,QACf,QAAO,2CAACC,uCAAc,GAAI,QAAS;AAGrC,QAAO,2CAACC,uCAAc,GAAI,QAAS"}
1
+ {"version":3,"file":"Callback.cjs","names":["Callback: FC<CallbackProps>","TokenCallback","OAuthCallback"],"sources":["../../../../../src/components/auth/Callback/Callback.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FC, useState} from 'react';\nimport {OAuthCallback, OAuthCallbackProps} from './OAuthCallback';\nimport {TokenCallback, TokenCallbackProps} from './TokenCallback';\n\n/**\n * Props for the unified Callback component, combining properties for both Token and OAuth callbacks.\n */\nexport type CallbackProps = OAuthCallbackProps & TokenCallbackProps;\n\n/**\n * A unified Callback component that automatically routes to either OAuthCallback or TokenCallback\n * based on the presence of URL parameters ('code' for OAuth, 'token' for token-based flows).\n */\nexport const Callback: FC<CallbackProps> = (props: CallbackProps) => {\n // Use state to lock the flow type on initial mount.\n // This prevents the component from swapping to OAuthCallback if TokenCallback\n // removes the '?token=' query parameter from the URL using window.history.\n const [flowType] = useState<'token' | 'oauth'>(() => {\n if (typeof window === 'undefined') {\n return 'oauth';\n }\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get('token') ? 'token' : 'oauth';\n });\n\n if (typeof window === 'undefined') {\n return null;\n }\n\n if (flowType === 'token') {\n return <TokenCallback {...props} />;\n }\n\n return <OAuthCallback {...props} />;\n};\n\nexport default Callback;\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAaA,YAA+B,UAAyB;CAInE,MAAM,CAAC,sCAA8C;AACnD,MAAI,OAAO,WAAW,YACpB,QAAO;AAGT,SADkB,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C,IAAI,QAAQ,GAAG,UAAU;GAC1C;AAEF,KAAI,OAAO,WAAW,YACpB,QAAO;AAGT,KAAI,aAAa,QACf,QAAO,2CAACC,uCAAc,GAAI,QAAS;AAGrC,QAAO,2CAACC,uCAAc,GAAI,QAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"OAuthCallback.cjs","names":["OAuthCallback: FC<OAuthCallbackProps>","processingRef: any","vendor: string","ThunderIDContext","urlParams: URLSearchParams","code: string | null","state: string | null","nonce: string | null","oauthError: string | null","errorDescription: string | null","storedData: string | null","errorMsg: string","params: URLSearchParams","params","errorMessage: string"],"sources":["../../../../../src/components/auth/Callback/OAuthCallback.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {navigate as browserNavigate, getVendorPrefix} from '@thunderid/browser';\nimport {FC, useContext, useEffect, useRef} from 'react';\nimport ThunderIDContext from '../../../contexts/ThunderID/ThunderIDContext';\n\n/**\n * Props for Callback component\n */\nexport interface OAuthCallbackProps {\n /**\n * Callback function called when an error occurs\n */\n onError?: (error: Error) => void;\n\n /**\n * Function to navigate to a different path.\n * If not provided, falls back to the browser navigate utility (SPA navigation via History API for same-origin paths).\n * Provide this prop to enable framework-specific navigation (e.g., from React Router).\n */\n onNavigate?: (path: string) => void;\n}\n\n/**\n * BaseCallback is a headless component that handles OAuth callback parameter forwarding.\n * This component extracts OAuth parameters (code, state, error) from the URL and forwards them\n * to the original component that initiated the OAuth flow.\n *\n * Works standalone using the browser navigate utility (History API) for navigation by default.\n * Pass an onNavigate prop to enable framework-specific navigation (e.g., via React Router).\n *\n * Flow: Extract OAuth parameters from URL -> Parse state parameter -> Redirect to original path with parameters\n *\n * The original component (SignIn/AcceptInvite) is responsible for:\n * - Processing the OAuth code via the SDK\n * - Calling /flow/execute\n * - Handling the assertion and auth/callback POST\n * - Managing the authenticated session\n */\nexport const OAuthCallback: FC<OAuthCallbackProps> = ({onNavigate, onError}: OAuthCallbackProps) => {\n // Prevent double execution in React Strict Mode\n const processingRef: any = useRef(false);\n\n // Read the vendor prefix directly from context (rather than the throwing useThunderID hook)\n // so this component keeps working standalone, without a ThunderIDProvider ancestor.\n const thunderIDContext = useContext(ThunderIDContext);\n const vendor: string = getVendorPrefix(thunderIDContext?.vendor);\n\n // Resolve navigation: use provided onNavigate (router-aware) or fall back to browser navigate utility\n const navigate = (path: string): void => {\n if (onNavigate) {\n onNavigate(path);\n } else {\n browserNavigate(path);\n }\n };\n\n useEffect(() => {\n const processOAuthCallback = (): void => {\n // Guard against double execution\n if (processingRef.current) {\n return;\n }\n processingRef.current = true;\n\n // Declare variables outside try block for use in catch\n let returnPath = '/';\n\n try {\n // 1. Extract OAuth parameters from URL\n const urlParams: URLSearchParams = new URLSearchParams(window.location.search);\n const code: string | null = urlParams.get('code');\n const state: string | null = urlParams.get('state');\n const nonce: string | null = urlParams.get('nonce');\n const oauthError: string | null = urlParams.get('error');\n const errorDescription: string | null = urlParams.get('error_description');\n\n // 1a. If running inside a popup (e.g. social signup), send OAuth params\n // back to the opener via postMessage. The parent window's handler will\n // close this popup after processing the code.\n if (window.opener) {\n window.opener.postMessage({code, error: oauthError, errorDescription, nonce, state}, window.location.origin);\n return;\n }\n\n // 2. Validate and retrieve OAuth state from sessionStorage\n if (!state) {\n throw new Error('Missing OAuth state parameter - possible security issue');\n }\n\n const storedData: string | null = sessionStorage.getItem(`${vendor}_oauth_${state}`);\n if (!storedData) {\n // If state not found, might be an error callback - try to handle gracefully\n if (oauthError) {\n const errorMsg: string = errorDescription || oauthError || 'OAuth authentication failed';\n const err: Error = new Error(errorMsg);\n onError?.(err);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', oauthError);\n if (errorDescription) {\n params.set('error_description', errorDescription);\n }\n\n navigate(`/?${params.toString()}`);\n return;\n }\n throw new Error('Invalid OAuth state - possible CSRF attack');\n }\n\n const {path, timestamp} = JSON.parse(storedData);\n returnPath = path || '/';\n\n // 3. Validate state freshness\n const MAX_STATE_AGE = 600000; // 10 minutes\n if (Date.now() - timestamp > MAX_STATE_AGE) {\n sessionStorage.removeItem(`${vendor}_oauth_${state}`);\n throw new Error('OAuth state expired - please try again');\n }\n\n // 4. Clean up state\n sessionStorage.removeItem(`${vendor}_oauth_${state}`);\n\n // 5. Handle OAuth error response\n if (oauthError) {\n const errorMsg: string = errorDescription || oauthError || 'OAuth authentication failed';\n const err: Error = new Error(errorMsg);\n onError?.(err);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', oauthError);\n if (errorDescription) {\n params.set('error_description', errorDescription);\n }\n\n navigate(`${returnPath}?${params.toString()}`);\n return;\n }\n\n // 6. Validate required parameters\n if (!code) {\n throw new Error('Missing OAuth authorization code');\n }\n\n // 7. Forward OAuth code to original component\n // The component (SignIn/AcceptInvite) will retrieve flowId/authId from sessionStorage\n const params: URLSearchParams = new URLSearchParams();\n params.set('code', code);\n if (nonce) {\n params.set('nonce', nonce);\n }\n\n navigate(`${returnPath}?${params.toString()}`);\n } catch (err) {\n const errorMessage: string = err instanceof Error ? err.message : 'OAuth callback processing failed';\n // eslint-disable-next-line no-console\n console.error('OAuth callback error:', err);\n\n onError?.(err instanceof Error ? err : new Error(errorMessage));\n\n // Redirect back with OAuth error format\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', 'callback_error');\n params.set('error_description', errorMessage);\n\n navigate(`${returnPath}?${params.toString()}`);\n }\n };\n\n processOAuthCallback();\n }, [onNavigate, onError, vendor]);\n\n // Headless component - no UI, just processing logic\n return null;\n};\n\nexport default OAuthCallback;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAuDA,MAAaA,iBAAyC,EAAC,YAAY,cAAiC;CAElG,MAAMC,kCAA4B,MAAM;CAKxC,MAAMC,wEAD8BC,iCAAiB,EACI,OAAO;CAGhE,MAAM,YAAY,SAAuB;AACvC,MAAI,WACF,YAAW,KAAK;MAEhB,mCAAgB,KAAK;;AAIzB,4BAAgB;EACd,MAAM,6BAAmC;AAEvC,OAAI,cAAc,QAChB;AAEF,iBAAc,UAAU;GAGxB,IAAI,aAAa;AAEjB,OAAI;IAEF,MAAMC,YAA6B,IAAI,gBAAgB,OAAO,SAAS,OAAO;IAC9E,MAAMC,OAAsB,UAAU,IAAI,OAAO;IACjD,MAAMC,QAAuB,UAAU,IAAI,QAAQ;IACnD,MAAMC,QAAuB,UAAU,IAAI,QAAQ;IACnD,MAAMC,aAA4B,UAAU,IAAI,QAAQ;IACxD,MAAMC,mBAAkC,UAAU,IAAI,oBAAoB;AAK1E,QAAI,OAAO,QAAQ;AACjB,YAAO,OAAO,YAAY;MAAC;MAAM,OAAO;MAAY;MAAkB;MAAO;MAAM,EAAE,OAAO,SAAS,OAAO;AAC5G;;AAIF,QAAI,CAAC,MACH,OAAM,IAAI,MAAM,0DAA0D;IAG5E,MAAMC,aAA4B,eAAe,QAAQ,GAAG,OAAO,SAAS,QAAQ;AACpF,QAAI,CAAC,YAAY;AAEf,SAAI,YAAY;MACd,MAAMC,WAAmB,oBAAoB,cAAc;AAE3D,gBADmB,IAAI,MAAM,SAAS,CACxB;MAEd,MAAMC,WAA0B,IAAI,iBAAiB;AACrD,eAAO,IAAI,SAAS,WAAW;AAC/B,UAAI,iBACF,UAAO,IAAI,qBAAqB,iBAAiB;AAGnD,eAAS,KAAKC,SAAO,UAAU,GAAG;AAClC;;AAEF,WAAM,IAAI,MAAM,6CAA6C;;IAG/D,MAAM,EAAC,MAAM,cAAa,KAAK,MAAM,WAAW;AAChD,iBAAa,QAAQ;AAIrB,QAAI,KAAK,KAAK,GAAG,YADK,KACsB;AAC1C,oBAAe,WAAW,GAAG,OAAO,SAAS,QAAQ;AACrD,WAAM,IAAI,MAAM,yCAAyC;;AAI3D,mBAAe,WAAW,GAAG,OAAO,SAAS,QAAQ;AAGrD,QAAI,YAAY;KACd,MAAMF,WAAmB,oBAAoB,cAAc;AAE3D,eADmB,IAAI,MAAM,SAAS,CACxB;KAEd,MAAMC,WAA0B,IAAI,iBAAiB;AACrD,cAAO,IAAI,SAAS,WAAW;AAC/B,SAAI,iBACF,UAAO,IAAI,qBAAqB,iBAAiB;AAGnD,cAAS,GAAG,WAAW,GAAGC,SAAO,UAAU,GAAG;AAC9C;;AAIF,QAAI,CAAC,KACH,OAAM,IAAI,MAAM,mCAAmC;IAKrD,MAAMD,SAA0B,IAAI,iBAAiB;AACrD,WAAO,IAAI,QAAQ,KAAK;AACxB,QAAI,MACF,QAAO,IAAI,SAAS,MAAM;AAG5B,aAAS,GAAG,WAAW,GAAG,OAAO,UAAU,GAAG;YACvC,KAAK;IACZ,MAAME,eAAuB,eAAe,QAAQ,IAAI,UAAU;AAElE,YAAQ,MAAM,yBAAyB,IAAI;AAE3C,cAAU,eAAe,QAAQ,MAAM,IAAI,MAAM,aAAa,CAAC;IAG/D,MAAMF,SAA0B,IAAI,iBAAiB;AACrD,WAAO,IAAI,SAAS,iBAAiB;AACrC,WAAO,IAAI,qBAAqB,aAAa;AAE7C,aAAS,GAAG,WAAW,GAAG,OAAO,UAAU,GAAG;;;AAIlD,wBAAsB;IACrB;EAAC;EAAY;EAAS;EAAO,CAAC;AAGjC,QAAO"}
1
+ {"version":3,"file":"OAuthCallback.cjs","names":["OAuthCallback: FC<OAuthCallbackProps>","processingRef: any","vendor: string","ThunderIDContext","urlParams: URLSearchParams","code: string | null","state: string | null","nonce: string | null","oauthError: string | null","errorDescription: string | null","storedData: string | null","errorMsg: string","params: URLSearchParams","params","errorMessage: string"],"sources":["../../../../../src/components/auth/Callback/OAuthCallback.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {navigate as browserNavigate, getVendorPrefix} from '@thunderid/browser';\nimport {FC, useContext, useEffect, useRef} from 'react';\nimport ThunderIDContext from '../../../contexts/ThunderID/ThunderIDContext';\n\n/**\n * Props for Callback component\n */\nexport interface OAuthCallbackProps {\n /**\n * Callback function called when an error occurs\n */\n onError?: (error: Error) => void;\n\n /**\n * Function to navigate to a different path.\n * If not provided, falls back to the browser navigate utility (SPA navigation via History API for same-origin paths).\n * Provide this prop to enable framework-specific navigation (e.g., from React Router).\n */\n onNavigate?: (path: string) => void;\n}\n\n/**\n * BaseCallback is a headless component that handles OAuth callback parameter forwarding.\n * This component extracts OAuth parameters (code, state, error) from the URL and forwards them\n * to the original component that initiated the OAuth flow.\n *\n * Works standalone using the browser navigate utility (History API) for navigation by default.\n * Pass an onNavigate prop to enable framework-specific navigation (e.g., via React Router).\n *\n * Flow: Extract OAuth parameters from URL -> Parse state parameter -> Redirect to original path with parameters\n *\n * The original component (SignIn/AcceptInvite) is responsible for:\n * - Processing the OAuth code via the SDK\n * - Calling /flow/execute\n * - Handling the assertion and auth/callback POST\n * - Managing the authenticated session\n */\nexport const OAuthCallback: FC<OAuthCallbackProps> = ({onNavigate, onError}: OAuthCallbackProps) => {\n // Prevent double execution in React Strict Mode\n const processingRef: any = useRef(false);\n\n // Read the vendor prefix directly from context (rather than the throwing useThunderID hook)\n // so this component keeps working standalone, without a ThunderIDProvider ancestor.\n const thunderIDContext = useContext(ThunderIDContext);\n const vendor: string = getVendorPrefix(thunderIDContext?.vendor);\n\n // Resolve navigation: use provided onNavigate (router-aware) or fall back to browser navigate utility\n const navigate = (path: string): void => {\n if (onNavigate) {\n onNavigate(path);\n } else {\n browserNavigate(path);\n }\n };\n\n useEffect(() => {\n const processOAuthCallback = (): void => {\n // Guard against double execution\n if (processingRef.current) {\n return;\n }\n processingRef.current = true;\n\n // Declare variables outside try block for use in catch\n let returnPath = '/';\n\n try {\n // 1. Extract OAuth parameters from URL\n const urlParams: URLSearchParams = new URLSearchParams(window.location.search);\n const code: string | null = urlParams.get('code');\n const state: string | null = urlParams.get('state');\n const nonce: string | null = urlParams.get('nonce');\n const oauthError: string | null = urlParams.get('error');\n const errorDescription: string | null = urlParams.get('error_description');\n\n // 1a. If running inside a popup (e.g. social signup), send OAuth params\n // back to the opener via postMessage. The parent window's handler will\n // close this popup after processing the code.\n if (window.opener) {\n window.opener.postMessage({code, error: oauthError, errorDescription, nonce, state}, window.location.origin);\n return;\n }\n\n // 2. Validate and retrieve OAuth state from sessionStorage\n if (!state) {\n throw new Error('Missing OAuth state parameter - possible security issue');\n }\n\n const storedData: string | null = sessionStorage.getItem(`${vendor}_oauth_${state}`);\n if (!storedData) {\n // If state not found, might be an error callback - try to handle gracefully\n if (oauthError) {\n const errorMsg: string = errorDescription || oauthError || 'OAuth authentication failed';\n const err: Error = new Error(errorMsg);\n onError?.(err);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', oauthError);\n if (errorDescription) {\n params.set('error_description', errorDescription);\n }\n\n navigate(`/?${params.toString()}`);\n return;\n }\n throw new Error('Invalid OAuth state - possible CSRF attack');\n }\n\n const {path, timestamp} = JSON.parse(storedData);\n returnPath = path || '/';\n\n // 3. Validate state freshness\n const MAX_STATE_AGE = 600000; // 10 minutes\n if (Date.now() - timestamp > MAX_STATE_AGE) {\n sessionStorage.removeItem(`${vendor}_oauth_${state}`);\n throw new Error('OAuth state expired - please try again');\n }\n\n // 4. Clean up state\n sessionStorage.removeItem(`${vendor}_oauth_${state}`);\n\n // 5. Handle OAuth error response\n if (oauthError) {\n const errorMsg: string = errorDescription || oauthError || 'OAuth authentication failed';\n const err: Error = new Error(errorMsg);\n onError?.(err);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', oauthError);\n if (errorDescription) {\n params.set('error_description', errorDescription);\n }\n\n navigate(`${returnPath}?${params.toString()}`);\n return;\n }\n\n // 6. Validate required parameters\n if (!code) {\n throw new Error('Missing OAuth authorization code');\n }\n\n // 7. Forward OAuth code to original component\n // The component (SignIn/AcceptInvite) will retrieve flowId/authId from sessionStorage\n const params: URLSearchParams = new URLSearchParams();\n params.set('code', code);\n if (nonce) {\n params.set('nonce', nonce);\n }\n\n navigate(`${returnPath}?${params.toString()}`);\n } catch (err) {\n const errorMessage: string = err instanceof Error ? err.message : 'OAuth callback processing failed';\n // eslint-disable-next-line no-console\n console.error('OAuth callback error:', err);\n\n onError?.(err instanceof Error ? err : new Error(errorMessage));\n\n // Redirect back with OAuth error format\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', 'callback_error');\n params.set('error_description', errorMessage);\n\n navigate(`${returnPath}?${params.toString()}`);\n }\n };\n\n processOAuthCallback();\n }, [onNavigate, onError, vendor]);\n\n // Headless component - no UI, just processing logic\n return null;\n};\n\nexport default OAuthCallback;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAaA,iBAAyC,EAAC,YAAY,cAAiC;CAElG,MAAMC,kCAA4B,MAAM;CAKxC,MAAMC,wEAD8BC,iCAAiB,EACI,OAAO;CAGhE,MAAM,YAAY,SAAuB;AACvC,MAAI,WACF,YAAW,KAAK;MAEhB,mCAAgB,KAAK;;AAIzB,4BAAgB;EACd,MAAM,6BAAmC;AAEvC,OAAI,cAAc,QAChB;AAEF,iBAAc,UAAU;GAGxB,IAAI,aAAa;AAEjB,OAAI;IAEF,MAAMC,YAA6B,IAAI,gBAAgB,OAAO,SAAS,OAAO;IAC9E,MAAMC,OAAsB,UAAU,IAAI,OAAO;IACjD,MAAMC,QAAuB,UAAU,IAAI,QAAQ;IACnD,MAAMC,QAAuB,UAAU,IAAI,QAAQ;IACnD,MAAMC,aAA4B,UAAU,IAAI,QAAQ;IACxD,MAAMC,mBAAkC,UAAU,IAAI,oBAAoB;AAK1E,QAAI,OAAO,QAAQ;AACjB,YAAO,OAAO,YAAY;MAAC;MAAM,OAAO;MAAY;MAAkB;MAAO;MAAM,EAAE,OAAO,SAAS,OAAO;AAC5G;;AAIF,QAAI,CAAC,MACH,OAAM,IAAI,MAAM,0DAA0D;IAG5E,MAAMC,aAA4B,eAAe,QAAQ,GAAG,OAAO,SAAS,QAAQ;AACpF,QAAI,CAAC,YAAY;AAEf,SAAI,YAAY;MACd,MAAMC,WAAmB,oBAAoB,cAAc;AAE3D,gBADmB,IAAI,MAAM,SAAS,CACxB;MAEd,MAAMC,WAA0B,IAAI,iBAAiB;AACrD,eAAO,IAAI,SAAS,WAAW;AAC/B,UAAI,iBACF,UAAO,IAAI,qBAAqB,iBAAiB;AAGnD,eAAS,KAAKC,SAAO,UAAU,GAAG;AAClC;;AAEF,WAAM,IAAI,MAAM,6CAA6C;;IAG/D,MAAM,EAAC,MAAM,cAAa,KAAK,MAAM,WAAW;AAChD,iBAAa,QAAQ;AAIrB,QAAI,KAAK,KAAK,GAAG,YADK,KACsB;AAC1C,oBAAe,WAAW,GAAG,OAAO,SAAS,QAAQ;AACrD,WAAM,IAAI,MAAM,yCAAyC;;AAI3D,mBAAe,WAAW,GAAG,OAAO,SAAS,QAAQ;AAGrD,QAAI,YAAY;KACd,MAAMF,WAAmB,oBAAoB,cAAc;AAE3D,eADmB,IAAI,MAAM,SAAS,CACxB;KAEd,MAAMC,WAA0B,IAAI,iBAAiB;AACrD,cAAO,IAAI,SAAS,WAAW;AAC/B,SAAI,iBACF,UAAO,IAAI,qBAAqB,iBAAiB;AAGnD,cAAS,GAAG,WAAW,GAAGC,SAAO,UAAU,GAAG;AAC9C;;AAIF,QAAI,CAAC,KACH,OAAM,IAAI,MAAM,mCAAmC;IAKrD,MAAMD,SAA0B,IAAI,iBAAiB;AACrD,WAAO,IAAI,QAAQ,KAAK;AACxB,QAAI,MACF,QAAO,IAAI,SAAS,MAAM;AAG5B,aAAS,GAAG,WAAW,GAAG,OAAO,UAAU,GAAG;YACvC,KAAK;IACZ,MAAME,eAAuB,eAAe,QAAQ,IAAI,UAAU;AAElE,YAAQ,MAAM,yBAAyB,IAAI;AAE3C,cAAU,eAAe,QAAQ,MAAM,IAAI,MAAM,aAAa,CAAC;IAG/D,MAAMF,SAA0B,IAAI,iBAAiB;AACrD,WAAO,IAAI,SAAS,iBAAiB;AACrC,WAAO,IAAI,qBAAqB,aAAa;AAE7C,aAAS,GAAG,WAAW,GAAG,OAAO,UAAU,GAAG;;;AAIlD,wBAAsB;IACrB;EAAC;EAAY;EAAS;EAAO,CAAC;AAGjC,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"TokenCallback.cjs","names":["TokenCallback: FC<TokenCallbackProps>","processingRef: any","useThunderID","url: URL","redirectUrlObj: URL","state: string","params: URLSearchParams","searchParams: URLSearchParams","executionId: string | null","token: string | null","applicationId: string | null","isRegistrationFlow: boolean","storageManager: any","response: any","EmbeddedSignInFlowType","redirectURL: string | undefined","nextExecutionId: string","nextExecutionId","EmbeddedSignInFlowStatus","redirectUrl: string | undefined","failureReason: string | undefined","error: Error"],"sources":["../../../../../src/components/auth/Callback/TokenCallback.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\n\nimport {EmbeddedSignInFlowStatus, EmbeddedSignInFlowType, navigate as browserNavigate} from '@thunderid/browser';\nimport {FC, useEffect, useRef} from 'react';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\n\nexport interface TokenCallbackProps {\n /**\n * Callback function called when an error occurs\n */\n onError?: (error: Error) => void;\n\n /**\n * Function to navigate to a different path.\n * If not provided, falls back to the browser navigate utility (SPA navigation via History API for same-origin paths).\n * Provide this prop to enable framework-specific navigation (e.g., from React Router).\n */\n onNavigate?: (path: string) => void;\n\n /**\n * Callback function called when authentication is successful\n */\n onSuccess?: (authData: Record<string, any>) => void;\n\n /**\n * Custom path for the sign-in page. Defaults to '/signin'\n */\n signInPath?: string;\n\n /**\n * Custom path for the sign-up page. Defaults to '/signup'\n */\n signUpPath?: string;\n}\n\nexport const TokenCallback: FC<TokenCallbackProps> = ({\n onNavigate,\n onError,\n onSuccess,\n signInPath = '/signin',\n signUpPath = '/signup',\n}: TokenCallbackProps) => {\n const processingRef: any = useRef(false);\n const {isInitialized, isLoading, signIn, signUp, getStorageManager, vendor} = useThunderID();\n\n const navigate = (path: string): void => {\n if (onNavigate) {\n onNavigate(path);\n } else {\n browserNavigate(path);\n }\n };\n\n const clearTokenFromUrl = (): void => {\n if (!window?.location?.href) {\n return;\n }\n\n const url: URL = new URL(window.location.href);\n url.searchParams.delete('token');\n url.searchParams.delete('type');\n window.history.replaceState({}, '', url.toString());\n };\n\n const initiateOAuthRedirect = (redirectURL: string, isRegistrationFlow?: boolean): void => {\n const redirectUrlObj: URL = new URL(redirectURL);\n const state: string = redirectUrlObj.searchParams.get('state') || crypto.randomUUID();\n\n sessionStorage.setItem(\n `${vendor}_oauth_${state}`,\n JSON.stringify({\n path: isRegistrationFlow ? signUpPath : signInPath,\n timestamp: Date.now(),\n }),\n );\n\n browserNavigate(redirectUrlObj.toString());\n };\n\n const buildSignInPath = (\n executionId?: string | null,\n applicationId?: string | null,\n isRegistrationFlow?: boolean,\n ): string => {\n const params: URLSearchParams = new URLSearchParams();\n if (executionId) {\n params.set('executionId', executionId);\n }\n if (applicationId) {\n params.set('applicationId', applicationId);\n }\n\n const basePath = isRegistrationFlow ? signUpPath : signInPath;\n return params.toString() ? `${basePath}?${params.toString()}` : basePath;\n };\n\n const redirectWithError = (error: Error, isRegistrationFlow?: boolean): void => {\n sessionStorage.removeItem(`${vendor}_execution_id`);\n\n onError?.(error);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', 'token_verification_failed');\n params.set('error_description', error.message);\n const basePath = isRegistrationFlow ? signUpPath : signInPath;\n navigate(`${basePath}?${params.toString()}`);\n };\n\n useEffect(() => {\n if (!isInitialized || isLoading) {\n return;\n }\n\n const processTokenCallback = async (): Promise<void> => {\n if (processingRef.current) {\n return;\n }\n processingRef.current = true;\n\n // Read URL params before clearing them so they're accessible in both try and catch.\n const searchParams: URLSearchParams = new URLSearchParams(window.location.search);\n const executionId: string | null = searchParams.get('id') || searchParams.get('executionId');\n const token: string | null = searchParams.get('token');\n const applicationId: string | null = searchParams.get('applicationId');\n const isRegistrationFlow: boolean = searchParams.get('type') === 'REGISTRATION';\n\n clearTokenFromUrl();\n\n try {\n const storageManager: any = await getStorageManager();\n\n if (!executionId || !token) {\n const error: Error = new Error('Missing executionId or token in callback URL');\n redirectWithError(error, isRegistrationFlow);\n return;\n }\n\n let response: any;\n\n if (isRegistrationFlow) {\n response = await signUp({executionId, inputs: {token}});\n } else {\n response = await signIn({executionId, inputs: {token}});\n }\n\n if (response.type === EmbeddedSignInFlowType.Redirection) {\n const redirectURL: string | undefined = response.data?.redirectURL || response?.redirectURL;\n const nextExecutionId: string = response.executionId || executionId;\n sessionStorage.setItem(`${vendor}_execution_id`, nextExecutionId);\n\n if (redirectURL) {\n initiateOAuthRedirect(redirectURL, isRegistrationFlow);\n return;\n }\n }\n\n if (response.flowStatus === EmbeddedSignInFlowStatus.Complete) {\n const redirectUrl: string | undefined = response?.redirectUrl || response?.redirect_uri;\n\n sessionStorage.removeItem(`${vendor}_execution_id`);\n await storageManager.removeHybridDataParameter('authId');\n\n onSuccess?.({\n redirectUrl,\n ...((response.data as Record<string, any>) || {}),\n });\n\n if (redirectUrl) {\n window.location.href = redirectUrl;\n return;\n }\n\n navigate(isRegistrationFlow ? signUpPath : signInPath);\n return;\n }\n\n if (response.flowStatus === EmbeddedSignInFlowStatus.Error) {\n const failureReason: string | undefined = response?.failureReason;\n const error: Error = new Error(failureReason || 'Token validation failed. Please try again.');\n await storageManager.removeHybridDataParameter('authId');\n redirectWithError(error, isRegistrationFlow);\n return;\n }\n\n const nextExecutionId: string = response.executionId || executionId;\n sessionStorage.setItem(`${vendor}_execution_id`, nextExecutionId);\n\n if (response.challengeToken) {\n await storageManager.setTemporaryDataParameter('challengeToken', response.challengeToken);\n }\n\n navigate(buildSignInPath(nextExecutionId, applicationId, isRegistrationFlow));\n } catch (err) {\n const error: Error = err instanceof Error ? err : new Error('Token callback processing failed');\n // eslint-disable-next-line no-console\n console.error('Token callback error:', err);\n const storageManager: any = await getStorageManager();\n if (storageManager) {\n await storageManager.removeHybridDataParameter('authId');\n }\n redirectWithError(error, isRegistrationFlow);\n }\n };\n\n processTokenCallback();\n }, [\n getStorageManager,\n isInitialized,\n isLoading,\n onError,\n onNavigate,\n onSuccess,\n signIn,\n signUp,\n signInPath,\n signUpPath,\n vendor,\n ]);\n\n return null;\n};\n\nexport default TokenCallback;\n"],"mappings":"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"}
1
+ {"version":3,"file":"TokenCallback.cjs","names":["TokenCallback: FC<TokenCallbackProps>","processingRef: any","useThunderID","url: URL","redirectUrlObj: URL","state: string","params: URLSearchParams","searchParams: URLSearchParams","executionId: string | null","token: string | null","applicationId: string | null","isRegistrationFlow: boolean","storageManager: any","response: any","EmbeddedSignInFlowType","redirectURL: string | undefined","nextExecutionId: string","nextExecutionId","EmbeddedSignInFlowStatus","redirectUrl: string | undefined","failureReason: string | undefined","error: Error"],"sources":["../../../../../src/components/auth/Callback/TokenCallback.tsx"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {EmbeddedSignInFlowStatus, EmbeddedSignInFlowType, navigate as browserNavigate} from '@thunderid/browser';\nimport {FC, useEffect, useRef} from 'react';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\n\nexport interface TokenCallbackProps {\n /**\n * Callback function called when an error occurs\n */\n onError?: (error: Error) => void;\n\n /**\n * Function to navigate to a different path.\n * If not provided, falls back to the browser navigate utility (SPA navigation via History API for same-origin paths).\n * Provide this prop to enable framework-specific navigation (e.g., from React Router).\n */\n onNavigate?: (path: string) => void;\n\n /**\n * Callback function called when authentication is successful\n */\n onSuccess?: (authData: Record<string, any>) => void;\n\n /**\n * Custom path for the sign-in page. Defaults to '/signin'\n */\n signInPath?: string;\n\n /**\n * Custom path for the sign-up page. Defaults to '/signup'\n */\n signUpPath?: string;\n}\n\nexport const TokenCallback: FC<TokenCallbackProps> = ({\n onNavigate,\n onError,\n onSuccess,\n signInPath = '/signin',\n signUpPath = '/signup',\n}: TokenCallbackProps) => {\n const processingRef: any = useRef(false);\n const {isInitialized, isLoading, signIn, signUp, getStorageManager, vendor} = useThunderID();\n\n const navigate = (path: string): void => {\n if (onNavigate) {\n onNavigate(path);\n } else {\n browserNavigate(path);\n }\n };\n\n const clearTokenFromUrl = (): void => {\n if (!window?.location?.href) {\n return;\n }\n\n const url: URL = new URL(window.location.href);\n url.searchParams.delete('token');\n url.searchParams.delete('type');\n window.history.replaceState({}, '', url.toString());\n };\n\n const initiateOAuthRedirect = (redirectURL: string, isRegistrationFlow?: boolean): void => {\n const redirectUrlObj: URL = new URL(redirectURL);\n const state: string = redirectUrlObj.searchParams.get('state') || crypto.randomUUID();\n\n sessionStorage.setItem(\n `${vendor}_oauth_${state}`,\n JSON.stringify({\n path: isRegistrationFlow ? signUpPath : signInPath,\n timestamp: Date.now(),\n }),\n );\n\n browserNavigate(redirectUrlObj.toString());\n };\n\n const buildSignInPath = (\n executionId?: string | null,\n applicationId?: string | null,\n isRegistrationFlow?: boolean,\n ): string => {\n const params: URLSearchParams = new URLSearchParams();\n if (executionId) {\n params.set('executionId', executionId);\n }\n if (applicationId) {\n params.set('applicationId', applicationId);\n }\n\n const basePath = isRegistrationFlow ? signUpPath : signInPath;\n return params.toString() ? `${basePath}?${params.toString()}` : basePath;\n };\n\n const redirectWithError = (error: Error, isRegistrationFlow?: boolean): void => {\n sessionStorage.removeItem(`${vendor}_execution_id`);\n\n onError?.(error);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', 'token_verification_failed');\n params.set('error_description', error.message);\n const basePath = isRegistrationFlow ? signUpPath : signInPath;\n navigate(`${basePath}?${params.toString()}`);\n };\n\n useEffect(() => {\n if (!isInitialized || isLoading) {\n return;\n }\n\n const processTokenCallback = async (): Promise<void> => {\n if (processingRef.current) {\n return;\n }\n processingRef.current = true;\n\n // Read URL params before clearing them so they're accessible in both try and catch.\n const searchParams: URLSearchParams = new URLSearchParams(window.location.search);\n const executionId: string | null = searchParams.get('id') || searchParams.get('executionId');\n const token: string | null = searchParams.get('token');\n const applicationId: string | null = searchParams.get('applicationId');\n const isRegistrationFlow: boolean = searchParams.get('type') === 'REGISTRATION';\n\n clearTokenFromUrl();\n\n try {\n const storageManager: any = await getStorageManager();\n\n if (!executionId || !token) {\n const error: Error = new Error('Missing executionId or token in callback URL');\n redirectWithError(error, isRegistrationFlow);\n return;\n }\n\n let response: any;\n\n if (isRegistrationFlow) {\n response = await signUp({executionId, inputs: {token}});\n } else {\n response = await signIn({executionId, inputs: {token}});\n }\n\n if (response.type === EmbeddedSignInFlowType.Redirection) {\n const redirectURL: string | undefined = response.data?.redirectURL || response?.redirectURL;\n const nextExecutionId: string = response.executionId || executionId;\n sessionStorage.setItem(`${vendor}_execution_id`, nextExecutionId);\n\n if (redirectURL) {\n initiateOAuthRedirect(redirectURL, isRegistrationFlow);\n return;\n }\n }\n\n if (response.flowStatus === EmbeddedSignInFlowStatus.Complete) {\n const redirectUrl: string | undefined = response?.redirectUrl || response?.redirect_uri;\n\n sessionStorage.removeItem(`${vendor}_execution_id`);\n await storageManager.removeHybridDataParameter('authId');\n\n onSuccess?.({\n redirectUrl,\n ...((response.data as Record<string, any>) || {}),\n });\n\n if (redirectUrl) {\n window.location.href = redirectUrl;\n return;\n }\n\n navigate(isRegistrationFlow ? signUpPath : signInPath);\n return;\n }\n\n if (response.flowStatus === EmbeddedSignInFlowStatus.Error) {\n const failureReason: string | undefined = response?.failureReason;\n const error: Error = new Error(failureReason || 'Token validation failed. Please try again.');\n await storageManager.removeHybridDataParameter('authId');\n redirectWithError(error, isRegistrationFlow);\n return;\n }\n\n const nextExecutionId: string = response.executionId || executionId;\n sessionStorage.setItem(`${vendor}_execution_id`, nextExecutionId);\n\n if (response.challengeToken) {\n await storageManager.setTemporaryDataParameter('challengeToken', response.challengeToken);\n }\n\n navigate(buildSignInPath(nextExecutionId, applicationId, isRegistrationFlow));\n } catch (err) {\n const error: Error = err instanceof Error ? err : new Error('Token callback processing failed');\n // eslint-disable-next-line no-console\n console.error('Token callback error:', err);\n const storageManager: any = await getStorageManager();\n if (storageManager) {\n await storageManager.removeHybridDataParameter('authId');\n }\n redirectWithError(error, isRegistrationFlow);\n }\n };\n\n processTokenCallback();\n }, [\n getStorageManager,\n isInitialized,\n isLoading,\n onError,\n onNavigate,\n onSuccess,\n signIn,\n signUp,\n signInPath,\n signUpPath,\n vendor,\n ]);\n\n return null;\n};\n\nexport default TokenCallback;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Loading.cjs","names":["Loading: FC<PropsWithChildren<LoadingProps>>","useThunderID"],"sources":["../../../../src/components/control/Loading.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FC, PropsWithChildren, ReactNode} from 'react';\nimport useThunderID from '../../contexts/ThunderID/useThunderID';\n\n/**\n * Props for the Loading component.\n */\nexport interface LoadingProps {\n /**\n * Content to show when the user is not signed in.\n */\n fallback?: ReactNode;\n}\n\n/**\n * A component that only renders its children when the ThunderID is loading.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example\n * ```tsx\n * import { Loading } from '@thunderid/auth-react';\n *\n * const App = () => {\n * return (\n * <Loading fallback={<p>Finished Loading...</p>}>\n * <p>Loading...</p>\n * </Loading>\n * );\n * }\n * ```\n */\nconst Loading: FC<PropsWithChildren<LoadingProps>> = ({children, fallback = null}: PropsWithChildren<LoadingProps>) => {\n const {isLoading} = useThunderID();\n\n if (!isLoading) {\n return <>{fallback}</>;\n }\n\n return <>{children}</>;\n};\n\nLoading.displayName = 'Loading';\n\nexport default Loading;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAMA,WAAgD,EAAC,UAAU,WAAW,WAA2C;CACrH,MAAM,EAAC,cAAaC,8BAAc;AAElC,KAAI,CAAC,UACH,QAAO,mFAAG,WAAY;AAGxB,QAAO,yEAAG,WAAY;;AAGxB,QAAQ,cAAc;AAEtB,sBAAe"}
1
+ {"version":3,"file":"Loading.cjs","names":["Loading: FC<PropsWithChildren<LoadingProps>>","useThunderID"],"sources":["../../../../src/components/control/Loading.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FC, PropsWithChildren, ReactNode} from 'react';\nimport useThunderID from '../../contexts/ThunderID/useThunderID';\n\n/**\n * Props for the Loading component.\n */\nexport interface LoadingProps {\n /**\n * Content to show when the user is not signed in.\n */\n fallback?: ReactNode;\n}\n\n/**\n * A component that only renders its children when the ThunderID is loading.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example\n * ```tsx\n * import { Loading } from '@thunderid/auth-react';\n *\n * const App = () => {\n * return (\n * <Loading fallback={<p>Finished Loading...</p>}>\n * <p>Loading...</p>\n * </Loading>\n * );\n * }\n * ```\n */\nconst Loading: FC<PropsWithChildren<LoadingProps>> = ({children, fallback = null}: PropsWithChildren<LoadingProps>) => {\n const {isLoading} = useThunderID();\n\n if (!isLoading) {\n return <>{fallback}</>;\n }\n\n return <>{children}</>;\n};\n\nLoading.displayName = 'Loading';\n\nexport default Loading;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,WAAgD,EAAC,UAAU,WAAW,WAA2C;CACrH,MAAM,EAAC,cAAaC,8BAAc;AAElC,KAAI,CAAC,UACH,QAAO,mFAAG,WAAY;AAGxB,QAAO,yEAAG,WAAY;;AAGxB,QAAQ,cAAc;AAEtB,sBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignedIn.cjs","names":["SignedIn: FC<PropsWithChildren<SignedInProps>>","useThunderID"],"sources":["../../../../src/components/control/SignedIn.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FC, PropsWithChildren, ReactNode} from 'react';\nimport useThunderID from '../../contexts/ThunderID/useThunderID';\n\n/**\n * Props for the SignedIn component.\n */\nexport interface SignedInProps {\n /**\n * Content to show when the user is not signed in.\n */\n fallback?: ReactNode;\n}\n\n/**\n * A component that only renders its children when the user is signed in.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example\n * ```tsx\n * import { SignedIn } from '@thunderid/auth-react';\n *\n * const App = () => {\n * return (\n * <SignedIn fallback={<p>Please sign in to continue</p>}>\n * <p>Welcome! You are signed in.</p>\n * </SignedIn>\n * );\n * }\n * ```\n */\nconst SignedIn: FC<PropsWithChildren<SignedInProps>> = ({\n children,\n fallback = null,\n}: PropsWithChildren<SignedInProps>) => {\n const {isSignedIn} = useThunderID();\n\n if (!isSignedIn) {\n return <>{fallback}</>;\n }\n\n return <>{children}</>;\n};\n\nSignedIn.displayName = 'SignedIn';\n\nexport default SignedIn;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAMA,YAAkD,EACtD,UACA,WAAW,WAC2B;CACtC,MAAM,EAAC,eAAcC,8BAAc;AAEnC,KAAI,CAAC,WACH,QAAO,mFAAG,WAAY;AAGxB,QAAO,yEAAG,WAAY;;AAGxB,SAAS,cAAc;AAEvB,uBAAe"}
1
+ {"version":3,"file":"SignedIn.cjs","names":["SignedIn: FC<PropsWithChildren<SignedInProps>>","useThunderID"],"sources":["../../../../src/components/control/SignedIn.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FC, PropsWithChildren, ReactNode} from 'react';\nimport useThunderID from '../../contexts/ThunderID/useThunderID';\n\n/**\n * Props for the SignedIn component.\n */\nexport interface SignedInProps {\n /**\n * Content to show when the user is not signed in.\n */\n fallback?: ReactNode;\n}\n\n/**\n * A component that only renders its children when the user is signed in.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example\n * ```tsx\n * import { SignedIn } from '@thunderid/auth-react';\n *\n * const App = () => {\n * return (\n * <SignedIn fallback={<p>Please sign in to continue</p>}>\n * <p>Welcome! You are signed in.</p>\n * </SignedIn>\n * );\n * }\n * ```\n */\nconst SignedIn: FC<PropsWithChildren<SignedInProps>> = ({\n children,\n fallback = null,\n}: PropsWithChildren<SignedInProps>) => {\n const {isSignedIn} = useThunderID();\n\n if (!isSignedIn) {\n return <>{fallback}</>;\n }\n\n return <>{children}</>;\n};\n\nSignedIn.displayName = 'SignedIn';\n\nexport default SignedIn;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,YAAkD,EACtD,UACA,WAAW,WAC2B;CACtC,MAAM,EAAC,eAAcC,8BAAc;AAEnC,KAAI,CAAC,WACH,QAAO,mFAAG,WAAY;AAGxB,QAAO,yEAAG,WAAY;;AAGxB,SAAS,cAAc;AAEvB,uBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"SignedOut.cjs","names":["SignedOut: FC<PropsWithChildren<SignedOutProps>>","useThunderID"],"sources":["../../../../src/components/control/SignedOut.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FC, PropsWithChildren, ReactNode} from 'react';\nimport useThunderID from '../../contexts/ThunderID/useThunderID';\n\n/**\n * Props for the SignedOut component.\n */\nexport interface SignedOutProps {\n /**\n * Content to show when the user is signed in.\n */\n fallback?: ReactNode;\n}\n\n/**\n * A component that only renders its children when the user is signed out.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example\n * ```tsx\n * import { SignedOut } from '@thunderid/auth-react';\n *\n * const App = () => {\n * return (\n * <SignedOut fallback={<p>You are already signed in</p>}>\n * <p>Please sign in to continue</p>\n * </SignedOut>\n * );\n * }\n * ```\n */\nconst SignedOut: FC<PropsWithChildren<SignedOutProps>> = ({\n children,\n fallback = null,\n}: PropsWithChildren<SignedOutProps>) => {\n const {isSignedIn} = useThunderID();\n\n if (!isSignedIn) {\n return <>{children}</>;\n }\n\n return <>{fallback}</>;\n};\n\nSignedOut.displayName = 'SignedOut';\n\nexport default SignedOut;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAMA,aAAoD,EACxD,UACA,WAAW,WAC4B;CACvC,MAAM,EAAC,eAAcC,8BAAc;AAEnC,KAAI,CAAC,WACH,QAAO,yEAAG,WAAY;AAGxB,QAAO,mFAAG,WAAY;;AAGxB,UAAU,cAAc;AAExB,wBAAe"}
1
+ {"version":3,"file":"SignedOut.cjs","names":["SignedOut: FC<PropsWithChildren<SignedOutProps>>","useThunderID"],"sources":["../../../../src/components/control/SignedOut.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FC, PropsWithChildren, ReactNode} from 'react';\nimport useThunderID from '../../contexts/ThunderID/useThunderID';\n\n/**\n * Props for the SignedOut component.\n */\nexport interface SignedOutProps {\n /**\n * Content to show when the user is signed in.\n */\n fallback?: ReactNode;\n}\n\n/**\n * A component that only renders its children when the user is signed out.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example\n * ```tsx\n * import { SignedOut } from '@thunderid/auth-react';\n *\n * const App = () => {\n * return (\n * <SignedOut fallback={<p>You are already signed in</p>}>\n * <p>Please sign in to continue</p>\n * </SignedOut>\n * );\n * }\n * ```\n */\nconst SignedOut: FC<PropsWithChildren<SignedOutProps>> = ({\n children,\n fallback = null,\n}: PropsWithChildren<SignedOutProps>) => {\n const {isSignedIn} = useThunderID();\n\n if (!isSignedIn) {\n return <>{children}</>;\n }\n\n return <>{fallback}</>;\n};\n\nSignedOut.displayName = 'SignedOut';\n\nexport default SignedOut;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,aAAoD,EACxD,UACA,WAAW,WAC4B;CACvC,MAAM,EAAC,eAAcC,8BAAc;AAEnC,KAAI,CAAC,WACH,QAAO,yEAAG,WAAY;AAGxB,QAAO,mFAAG,WAAY;;AAGxB,UAAU,cAAc;AAExB,wBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldFactory.cjs","names":["FieldType","numValue: number","validationError: string | null","commonProps: Record<string, any>","PasswordField","TextField","DatePicker","isChecked: boolean","Checkbox","OtpField","fieldOptions: SelectOption[]","Select","FieldFactory: FC<FieldConfig>"],"sources":["../../../../src/components/factories/FieldFactory.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FieldType} from '@thunderid/browser';\nimport {ChangeEvent, FC, ReactElement} from 'react';\nimport Checkbox from '../primitives/Checkbox/Checkbox';\nimport DatePicker from '../primitives/DatePicker/DatePicker';\nimport OtpField from '../primitives/OtpField/OtpField';\nimport PasswordField from '../primitives/PasswordField/PasswordField';\nimport Select, {SelectOption} from '../primitives/Select/Select';\nimport TextField from '../primitives/TextField/TextField';\n\n/**\n * Interface for field configuration.\n */\nexport interface FieldConfig {\n /**\n * Additional CSS class name.\n */\n className?: string;\n /**\n * Whether the field is disabled.\n */\n disabled?: boolean;\n /**\n * Error message to display.\n */\n error?: string;\n /**\n * HTML id to apply to the rendered field.\n */\n id?: string;\n /**\n * Display name for the field.\n */\n label: string;\n /**\n * The name of the field.\n */\n name: string;\n /**\n * Callback function when the field loses focus.\n */\n onBlur?: () => void;\n /**\n * Callback function when the field value changes.\n */\n onChange: (value: string) => void;\n /**\n * Additional options for multi-valued fields.\n */\n options?: SelectOption[];\n /**\n * Placeholder text for the field.\n */\n placeholder?: string;\n /**\n * Whether the field is required.\n */\n required: boolean;\n /**\n * Whether the field has been touched/interacted with by the user.\n */\n touched?: boolean;\n /**\n * The field type.\n */\n type: FieldType;\n /**\n * Current value of the field.\n */\n value: string;\n}\n\n/**\n * Utility function to validate field values based on type\n */\nexport const validateFieldValue = (\n value: string,\n type: FieldType,\n required = false,\n touched = false,\n): string | null => {\n if (required && touched && (!value || value.trim() === '')) {\n return 'This field is required';\n }\n\n if (!value || value.trim() === '') {\n return null;\n }\n\n switch (type) {\n case FieldType.Number: {\n const numValue: number = parseInt(value, 10);\n if (Number.isNaN(numValue)) {\n return 'Please enter a valid number';\n }\n break;\n }\n default:\n break;\n }\n\n return null;\n};\n\n/**\n * Factory function to create form fields based on field type.\n *\n * @param config - The field configuration\n * @returns The appropriate React component for the field type\n *\n * @example\n * ```tsx\n * const field = createField({\n * param: 'username',\n * type: FieldType.Text,\n * label: 'Username',\n * confidential: false,\n * required: true,\n * value: '',\n * onChange: (value) => console.log(value)\n * });\n * ```\n */\nexport const createField = (config: FieldConfig): ReactElement => {\n const {\n name,\n type,\n label,\n required,\n value,\n onChange,\n onBlur,\n disabled = false,\n error,\n className,\n id,\n options = [],\n touched = false,\n placeholder,\n } = config;\n\n const validationError: string | null = error || validateFieldValue(value, type, required, touched);\n\n const commonProps: Record<string, any> = {\n className,\n 'data-testid': `thunderid-signin-${name}`,\n disabled,\n error: validationError,\n id,\n label,\n name,\n onBlur,\n placeholder,\n required,\n value,\n };\n\n switch (type) {\n case FieldType.Password:\n return <PasswordField {...commonProps} onChange={onChange} />;\n case FieldType.Text:\n return (\n <TextField\n {...commonProps}\n type=\"text\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n autoComplete=\"off\"\n />\n );\n case FieldType.Email:\n return (\n <TextField\n {...commonProps}\n type=\"email\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n autoComplete=\"email\"\n />\n );\n case FieldType.Tel:\n return (\n <TextField\n {...commonProps}\n type=\"tel\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n autoComplete=\"tel\"\n />\n );\n case FieldType.Date:\n return (\n <DatePicker {...commonProps} onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)} />\n );\n case FieldType.Checkbox: {\n const isChecked: boolean = value === 'true' || (value as any) === true;\n return (\n <Checkbox\n {...commonProps}\n checked={isChecked}\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.checked.toString())}\n />\n );\n }\n case FieldType.Otp:\n return (\n <OtpField {...commonProps} onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)} />\n );\n case FieldType.Number:\n return (\n <TextField\n {...commonProps}\n type=\"number\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n helperText=\"Enter a numeric value\"\n />\n );\n case FieldType.Select: {\n const fieldOptions: SelectOption[] = options.length > 0 ? options : [];\n\n if (fieldOptions.length > 0) {\n return (\n <Select\n {...commonProps}\n options={fieldOptions}\n onChange={(e: ChangeEvent<HTMLSelectElement>): void => onChange(e.target.value)}\n helperText=\"Select from available options\"\n />\n );\n }\n\n return (\n <TextField\n {...commonProps}\n type=\"text\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n helperText=\"Enter multiple values separated by commas (e.g., value1, value2, value3)\"\n placeholder=\"value1, value2, value3\"\n />\n );\n }\n default:\n return (\n <TextField\n {...commonProps}\n type=\"text\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n helperText=\"Unknown field type, treating as text\"\n />\n );\n }\n};\n\n/**\n * React component wrapper for the field factory.\n */\nexport const FieldFactory: FC<FieldConfig> = (props: FieldConfig): ReactElement => createField(props);\n\nexport default FieldFactory;\n"],"mappings":";;;;;;;;;;;;;;;;AA4FA,MAAa,sBACX,OACA,MACA,WAAW,OACX,UAAU,UACQ;AAClB,KAAI,YAAY,YAAY,CAAC,SAAS,MAAM,MAAM,KAAK,IACrD,QAAO;AAGT,KAAI,CAAC,SAAS,MAAM,MAAM,KAAK,GAC7B,QAAO;AAGT,SAAQ,MAAR;EACE,KAAKA,8BAAU,QAAQ;GACrB,MAAMC,WAAmB,SAAS,OAAO,GAAG;AAC5C,OAAI,OAAO,MAAM,SAAS,CACxB,QAAO;AAET;;EAEF,QACE;;AAGJ,QAAO;;;;;;;;;;;;;;;;;;;;;AAsBT,MAAa,eAAe,WAAsC;CAChE,MAAM,EACJ,MACA,MACA,OACA,UACA,OACA,UACA,QACA,WAAW,OACX,OACA,WACA,IACA,UAAU,EAAE,EACZ,UAAU,OACV,gBACE;CAEJ,MAAMC,kBAAiC,SAAS,mBAAmB,OAAO,MAAM,UAAU,QAAQ;CAElG,MAAMC,cAAmC;EACvC;EACA,eAAe,oBAAoB;EACnC;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACD;AAED,SAAQ,MAAR;EACE,KAAKH,8BAAU,SACb,QAAO,2CAACI;GAAc,GAAI;GAAuB;IAAY;EAC/D,KAAKJ,8BAAU,KACb,QACE,2CAACK;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,cAAa;IACb;EAEN,KAAKL,8BAAU,MACb,QACE,2CAACK;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,cAAa;IACb;EAEN,KAAKL,8BAAU,IACb,QACE,2CAACK;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,cAAa;IACb;EAEN,KAAKL,8BAAU,KACb,QACE,2CAACM;GAAW,GAAI;GAAa,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;IAAI;EAEnH,KAAKN,8BAAU,UAAU;GACvB,MAAMO,YAAqB,UAAU,UAAW,UAAkB;AAClE,UACE,2CAACC;IACC,GAAI;IACJ,SAAS;IACT,WAAW,MAA2C,SAAS,EAAE,OAAO,QAAQ,UAAU,CAAC;KAC3F;;EAGN,KAAKR,8BAAU,IACb,QACE,2CAACS;GAAS,GAAI;GAAa,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;IAAI;EAEjH,KAAKT,8BAAU,OACb,QACE,2CAACK;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,YAAW;IACX;EAEN,KAAKL,8BAAU,QAAQ;GACrB,MAAMU,eAA+B,QAAQ,SAAS,IAAI,UAAU,EAAE;AAEtE,OAAI,aAAa,SAAS,EACxB,QACE,2CAACC;IACC,GAAI;IACJ,SAAS;IACT,WAAW,MAA4C,SAAS,EAAE,OAAO,MAAM;IAC/E,YAAW;KACX;AAIN,UACE,2CAACN;IACC,GAAI;IACJ,MAAK;IACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;IAC9E,YAAW;IACX,aAAY;KACZ;;EAGN,QACE,QACE,2CAACA;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,YAAW;IACX;;;;;;AAQV,MAAaO,gBAAiC,UAAqC,YAAY,MAAM"}
1
+ {"version":3,"file":"FieldFactory.cjs","names":["FieldType","numValue: number","validationError: string | null","commonProps: Record<string, any>","PasswordField","TextField","DatePicker","isChecked: boolean","Checkbox","OtpField","fieldOptions: SelectOption[]","Select","FieldFactory: FC<FieldConfig>"],"sources":["../../../../src/components/factories/FieldFactory.tsx"],"sourcesContent":["// Copyright 2025 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {FieldType} from '@thunderid/browser';\nimport {ChangeEvent, FC, ReactElement} from 'react';\nimport Checkbox from '../primitives/Checkbox/Checkbox';\nimport DatePicker from '../primitives/DatePicker/DatePicker';\nimport OtpField from '../primitives/OtpField/OtpField';\nimport PasswordField from '../primitives/PasswordField/PasswordField';\nimport Select, {SelectOption} from '../primitives/Select/Select';\nimport TextField from '../primitives/TextField/TextField';\n\n/**\n * Interface for field configuration.\n */\nexport interface FieldConfig {\n /**\n * Additional CSS class name.\n */\n className?: string;\n /**\n * Whether the field is disabled.\n */\n disabled?: boolean;\n /**\n * Error message to display.\n */\n error?: string;\n /**\n * HTML id to apply to the rendered field.\n */\n id?: string;\n /**\n * Display name for the field.\n */\n label: string;\n /**\n * The name of the field.\n */\n name: string;\n /**\n * Callback function when the field loses focus.\n */\n onBlur?: () => void;\n /**\n * Callback function when the field value changes.\n */\n onChange: (value: string) => void;\n /**\n * Additional options for multi-valued fields.\n */\n options?: SelectOption[];\n /**\n * Placeholder text for the field.\n */\n placeholder?: string;\n /**\n * Whether the field is required.\n */\n required: boolean;\n /**\n * Whether the field has been touched/interacted with by the user.\n */\n touched?: boolean;\n /**\n * The field type.\n */\n type: FieldType;\n /**\n * Current value of the field.\n */\n value: string;\n}\n\n/**\n * Utility function to validate field values based on type\n */\nexport const validateFieldValue = (\n value: string,\n type: FieldType,\n required = false,\n touched = false,\n): string | null => {\n if (required && touched && (!value || value.trim() === '')) {\n return 'This field is required';\n }\n\n if (!value || value.trim() === '') {\n return null;\n }\n\n switch (type) {\n case FieldType.Number: {\n const numValue: number = parseInt(value, 10);\n if (Number.isNaN(numValue)) {\n return 'Please enter a valid number';\n }\n break;\n }\n default:\n break;\n }\n\n return null;\n};\n\n/**\n * Factory function to create form fields based on field type.\n *\n * @param config - The field configuration\n * @returns The appropriate React component for the field type\n *\n * @example\n * ```tsx\n * const field = createField({\n * param: 'username',\n * type: FieldType.Text,\n * label: 'Username',\n * confidential: false,\n * required: true,\n * value: '',\n * onChange: (value) => console.log(value)\n * });\n * ```\n */\nexport const createField = (config: FieldConfig): ReactElement => {\n const {\n name,\n type,\n label,\n required,\n value,\n onChange,\n onBlur,\n disabled = false,\n error,\n className,\n id,\n options = [],\n touched = false,\n placeholder,\n } = config;\n\n const validationError: string | null = error || validateFieldValue(value, type, required, touched);\n\n const commonProps: Record<string, any> = {\n className,\n 'data-testid': `thunderid-signin-${name}`,\n disabled,\n error: validationError,\n id,\n label,\n name,\n onBlur,\n placeholder,\n required,\n value,\n };\n\n switch (type) {\n case FieldType.Password:\n return <PasswordField {...commonProps} onChange={onChange} />;\n case FieldType.Text:\n return (\n <TextField\n {...commonProps}\n type=\"text\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n autoComplete=\"off\"\n />\n );\n case FieldType.Email:\n return (\n <TextField\n {...commonProps}\n type=\"email\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n autoComplete=\"email\"\n />\n );\n case FieldType.Tel:\n return (\n <TextField\n {...commonProps}\n type=\"tel\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n autoComplete=\"tel\"\n />\n );\n case FieldType.Date:\n return (\n <DatePicker {...commonProps} onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)} />\n );\n case FieldType.Checkbox: {\n const isChecked: boolean = value === 'true' || (value as any) === true;\n return (\n <Checkbox\n {...commonProps}\n checked={isChecked}\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.checked.toString())}\n />\n );\n }\n case FieldType.Otp:\n return (\n <OtpField {...commonProps} onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)} />\n );\n case FieldType.Number:\n return (\n <TextField\n {...commonProps}\n type=\"number\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n helperText=\"Enter a numeric value\"\n />\n );\n case FieldType.Select: {\n const fieldOptions: SelectOption[] = options.length > 0 ? options : [];\n\n if (fieldOptions.length > 0) {\n return (\n <Select\n {...commonProps}\n options={fieldOptions}\n onChange={(e: ChangeEvent<HTMLSelectElement>): void => onChange(e.target.value)}\n helperText=\"Select from available options\"\n />\n );\n }\n\n return (\n <TextField\n {...commonProps}\n type=\"text\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n helperText=\"Enter multiple values separated by commas (e.g., value1, value2, value3)\"\n placeholder=\"value1, value2, value3\"\n />\n );\n }\n default:\n return (\n <TextField\n {...commonProps}\n type=\"text\"\n onChange={(e: ChangeEvent<HTMLInputElement>): void => onChange(e.target.value)}\n helperText=\"Unknown field type, treating as text\"\n />\n );\n }\n};\n\n/**\n * React component wrapper for the field factory.\n */\nexport const FieldFactory: FC<FieldConfig> = (props: FieldConfig): ReactElement => createField(props);\n\nexport default FieldFactory;\n"],"mappings":";;;;;;;;;;;;;;;;AA6EA,MAAa,sBACX,OACA,MACA,WAAW,OACX,UAAU,UACQ;AAClB,KAAI,YAAY,YAAY,CAAC,SAAS,MAAM,MAAM,KAAK,IACrD,QAAO;AAGT,KAAI,CAAC,SAAS,MAAM,MAAM,KAAK,GAC7B,QAAO;AAGT,SAAQ,MAAR;EACE,KAAKA,8BAAU,QAAQ;GACrB,MAAMC,WAAmB,SAAS,OAAO,GAAG;AAC5C,OAAI,OAAO,MAAM,SAAS,CACxB,QAAO;AAET;;EAEF,QACE;;AAGJ,QAAO;;;;;;;;;;;;;;;;;;;;;AAsBT,MAAa,eAAe,WAAsC;CAChE,MAAM,EACJ,MACA,MACA,OACA,UACA,OACA,UACA,QACA,WAAW,OACX,OACA,WACA,IACA,UAAU,EAAE,EACZ,UAAU,OACV,gBACE;CAEJ,MAAMC,kBAAiC,SAAS,mBAAmB,OAAO,MAAM,UAAU,QAAQ;CAElG,MAAMC,cAAmC;EACvC;EACA,eAAe,oBAAoB;EACnC;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACD;AAED,SAAQ,MAAR;EACE,KAAKH,8BAAU,SACb,QAAO,2CAACI;GAAc,GAAI;GAAuB;IAAY;EAC/D,KAAKJ,8BAAU,KACb,QACE,2CAACK;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,cAAa;IACb;EAEN,KAAKL,8BAAU,MACb,QACE,2CAACK;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,cAAa;IACb;EAEN,KAAKL,8BAAU,IACb,QACE,2CAACK;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,cAAa;IACb;EAEN,KAAKL,8BAAU,KACb,QACE,2CAACM;GAAW,GAAI;GAAa,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;IAAI;EAEnH,KAAKN,8BAAU,UAAU;GACvB,MAAMO,YAAqB,UAAU,UAAW,UAAkB;AAClE,UACE,2CAACC;IACC,GAAI;IACJ,SAAS;IACT,WAAW,MAA2C,SAAS,EAAE,OAAO,QAAQ,UAAU,CAAC;KAC3F;;EAGN,KAAKR,8BAAU,IACb,QACE,2CAACS;GAAS,GAAI;GAAa,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;IAAI;EAEjH,KAAKT,8BAAU,OACb,QACE,2CAACK;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,YAAW;IACX;EAEN,KAAKL,8BAAU,QAAQ;GACrB,MAAMU,eAA+B,QAAQ,SAAS,IAAI,UAAU,EAAE;AAEtE,OAAI,aAAa,SAAS,EACxB,QACE,2CAACC;IACC,GAAI;IACJ,SAAS;IACT,WAAW,MAA4C,SAAS,EAAE,OAAO,MAAM;IAC/E,YAAW;KACX;AAIN,UACE,2CAACN;IACC,GAAI;IACJ,MAAK;IACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;IAC9E,YAAW;IACX,aAAY;KACZ;;EAGN,QACE,QACE,2CAACA;GACC,GAAI;GACJ,MAAK;GACL,WAAW,MAA2C,SAAS,EAAE,OAAO,MAAM;GAC9E,YAAW;IACX;;;;;;AAQV,MAAaO,gBAAiC,UAAqC,YAAY,MAAM"}