@mulverse/mulguard-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/README.md +24 -0
  2. package/adapters.d.ts +522 -0
  3. package/adapters.d.ts.map +1 -0
  4. package/adapters.js +170 -0
  5. package/errors.d.ts +429 -0
  6. package/errors.d.ts.map +1 -0
  7. package/errors.js +473 -0
  8. package/index.d.ts +547 -0
  9. package/index.d.ts.map +1 -0
  10. package/index.js +142 -0
  11. package/jwt.d.ts +132 -0
  12. package/jwt.d.ts.map +1 -0
  13. package/jwt.js +123 -0
  14. package/lib/actions/callback/handle-login.d.ts +35 -0
  15. package/lib/actions/callback/handle-login.d.ts.map +1 -0
  16. package/lib/actions/callback/handle-login.js +275 -0
  17. package/lib/actions/callback/index.d.ts +5 -0
  18. package/lib/actions/callback/index.d.ts.map +1 -0
  19. package/lib/actions/callback/index.js +409 -0
  20. package/lib/actions/callback/oauth/callback.d.ts +36 -0
  21. package/lib/actions/callback/oauth/callback.d.ts.map +1 -0
  22. package/lib/actions/callback/oauth/callback.js +248 -0
  23. package/lib/actions/callback/oauth/checks.d.ts +70 -0
  24. package/lib/actions/callback/oauth/checks.d.ts.map +1 -0
  25. package/lib/actions/callback/oauth/checks.js +188 -0
  26. package/lib/actions/callback/oauth/csrf-token.d.ts +33 -0
  27. package/lib/actions/callback/oauth/csrf-token.d.ts.map +1 -0
  28. package/lib/actions/callback/oauth/csrf-token.js +39 -0
  29. package/lib/actions/index.d.ts +6 -0
  30. package/lib/actions/index.d.ts.map +1 -0
  31. package/lib/actions/index.js +5 -0
  32. package/lib/actions/session.d.ts +5 -0
  33. package/lib/actions/session.d.ts.map +1 -0
  34. package/lib/actions/session.js +127 -0
  35. package/lib/actions/signin/authorization-url.d.ts +12 -0
  36. package/lib/actions/signin/authorization-url.d.ts.map +1 -0
  37. package/lib/actions/signin/authorization-url.js +94 -0
  38. package/lib/actions/signin/index.d.ts +4 -0
  39. package/lib/actions/signin/index.d.ts.map +1 -0
  40. package/lib/actions/signin/index.js +22 -0
  41. package/lib/actions/signin/send-token.d.ts +10 -0
  42. package/lib/actions/signin/send-token.d.ts.map +1 -0
  43. package/lib/actions/signin/send-token.js +98 -0
  44. package/lib/actions/signout.d.ts +11 -0
  45. package/lib/actions/signout.d.ts.map +1 -0
  46. package/lib/actions/signout.js +30 -0
  47. package/lib/actions/webauthn-options.d.ts +8 -0
  48. package/lib/actions/webauthn-options.d.ts.map +1 -0
  49. package/lib/actions/webauthn-options.js +60 -0
  50. package/lib/index.d.ts +2 -0
  51. package/lib/index.d.ts.map +1 -0
  52. package/lib/index.js +70 -0
  53. package/lib/init.d.ts +25 -0
  54. package/lib/init.d.ts.map +1 -0
  55. package/lib/init.js +172 -0
  56. package/lib/pages/error.d.ts +17 -0
  57. package/lib/pages/error.d.ts.map +1 -0
  58. package/lib/pages/error.js +40 -0
  59. package/lib/pages/index.d.ts +42 -0
  60. package/lib/pages/index.d.ts.map +1 -0
  61. package/lib/pages/index.js +136 -0
  62. package/lib/pages/signin.d.ts +10 -0
  63. package/lib/pages/signin.d.ts.map +1 -0
  64. package/lib/pages/signin.js +75 -0
  65. package/lib/pages/signout.d.ts +8 -0
  66. package/lib/pages/signout.d.ts.map +1 -0
  67. package/lib/pages/signout.js +17 -0
  68. package/lib/pages/styles.d.ts +3 -0
  69. package/lib/pages/styles.d.ts.map +1 -0
  70. package/lib/pages/styles.js +381 -0
  71. package/lib/pages/verify-request.d.ts +8 -0
  72. package/lib/pages/verify-request.d.ts.map +1 -0
  73. package/lib/pages/verify-request.js +11 -0
  74. package/lib/symbols.d.ts +50 -0
  75. package/lib/symbols.d.ts.map +1 -0
  76. package/lib/symbols.js +57 -0
  77. package/lib/utils/actions.d.ts +3 -0
  78. package/lib/utils/actions.d.ts.map +1 -0
  79. package/lib/utils/actions.js +14 -0
  80. package/lib/utils/assert.d.ts +14 -0
  81. package/lib/utils/assert.d.ts.map +1 -0
  82. package/lib/utils/assert.js +168 -0
  83. package/lib/utils/callback-url.d.ts +17 -0
  84. package/lib/utils/callback-url.d.ts.map +1 -0
  85. package/lib/utils/callback-url.js +27 -0
  86. package/lib/utils/cookie.d.ts +111 -0
  87. package/lib/utils/cookie.d.ts.map +1 -0
  88. package/lib/utils/cookie.js +205 -0
  89. package/lib/utils/date.d.ts +7 -0
  90. package/lib/utils/date.d.ts.map +1 -0
  91. package/lib/utils/date.js +8 -0
  92. package/lib/utils/email.d.ts +20 -0
  93. package/lib/utils/email.d.ts.map +1 -0
  94. package/lib/utils/email.js +57 -0
  95. package/lib/utils/env.d.ts +9 -0
  96. package/lib/utils/env.d.ts.map +1 -0
  97. package/lib/utils/env.js +96 -0
  98. package/lib/utils/logger.d.ts +18 -0
  99. package/lib/utils/logger.d.ts.map +1 -0
  100. package/lib/utils/logger.js +50 -0
  101. package/lib/utils/merge.d.ts +3 -0
  102. package/lib/utils/merge.d.ts.map +1 -0
  103. package/lib/utils/merge.js +23 -0
  104. package/lib/utils/providers.d.ts +19 -0
  105. package/lib/utils/providers.d.ts.map +1 -0
  106. package/lib/utils/providers.js +149 -0
  107. package/lib/utils/session.d.ts +7 -0
  108. package/lib/utils/session.d.ts.map +1 -0
  109. package/lib/utils/session.js +29 -0
  110. package/lib/utils/web.d.ts +10 -0
  111. package/lib/utils/web.d.ts.map +1 -0
  112. package/lib/utils/web.js +109 -0
  113. package/lib/utils/webauthn-client.d.ts +30 -0
  114. package/lib/utils/webauthn-client.d.ts.map +1 -0
  115. package/lib/utils/webauthn-client.js +197 -0
  116. package/lib/utils/webauthn-utils.d.ts +81 -0
  117. package/lib/utils/webauthn-utils.d.ts.map +1 -0
  118. package/lib/utils/webauthn-utils.js +343 -0
  119. package/lib/vendored/cookie.d.ts +120 -0
  120. package/lib/vendored/cookie.d.ts.map +1 -0
  121. package/lib/vendored/cookie.js +237 -0
  122. package/package.json +118 -0
  123. package/providers/42-school.d.ts +240 -0
  124. package/providers/42-school.d.ts.map +1 -0
  125. package/providers/42-school.js +78 -0
  126. package/providers/apple.d.ts +149 -0
  127. package/providers/apple.d.ts.map +1 -0
  128. package/providers/apple.js +104 -0
  129. package/providers/asgardeo.d.ts +102 -0
  130. package/providers/asgardeo.d.ts.map +1 -0
  131. package/providers/asgardeo.js +93 -0
  132. package/providers/atlassian.d.ts +94 -0
  133. package/providers/atlassian.d.ts.map +1 -0
  134. package/providers/atlassian.js +84 -0
  135. package/providers/auth0.d.ts +116 -0
  136. package/providers/auth0.d.ts.map +1 -0
  137. package/providers/auth0.js +49 -0
  138. package/providers/authentik.d.ts +90 -0
  139. package/providers/authentik.d.ts.map +1 -0
  140. package/providers/authentik.js +65 -0
  141. package/providers/azure-ad-b2c.d.ts +104 -0
  142. package/providers/azure-ad-b2c.d.ts.map +1 -0
  143. package/providers/azure-ad-b2c.js +100 -0
  144. package/providers/azure-ad.d.ts +19 -0
  145. package/providers/azure-ad.d.ts.map +1 -0
  146. package/providers/azure-ad.js +23 -0
  147. package/providers/azure-devops.d.ts +128 -0
  148. package/providers/azure-devops.d.ts.map +1 -0
  149. package/providers/azure-devops.js +158 -0
  150. package/providers/bankid-no.d.ts +134 -0
  151. package/providers/bankid-no.d.ts.map +1 -0
  152. package/providers/bankid-no.js +65 -0
  153. package/providers/battlenet.d.ts +85 -0
  154. package/providers/battlenet.d.ts.map +1 -0
  155. package/providers/battlenet.js +81 -0
  156. package/providers/beyondidentity.d.ts +77 -0
  157. package/providers/beyondidentity.d.ts.map +1 -0
  158. package/providers/beyondidentity.js +84 -0
  159. package/providers/bitbucket.d.ts +89 -0
  160. package/providers/bitbucket.d.ts.map +1 -0
  161. package/providers/bitbucket.js +92 -0
  162. package/providers/box.d.ts +63 -0
  163. package/providers/box.d.ts.map +1 -0
  164. package/providers/box.js +73 -0
  165. package/providers/boxyhq-saml.d.ts +121 -0
  166. package/providers/boxyhq-saml.d.ts.map +1 -0
  167. package/providers/boxyhq-saml.js +127 -0
  168. package/providers/bungie.d.ts +167 -0
  169. package/providers/bungie.d.ts.map +1 -0
  170. package/providers/bungie.js +174 -0
  171. package/providers/click-up.d.ts +75 -0
  172. package/providers/click-up.d.ts.map +1 -0
  173. package/providers/click-up.js +89 -0
  174. package/providers/cognito.d.ts +81 -0
  175. package/providers/cognito.d.ts.map +1 -0
  176. package/providers/cognito.js +73 -0
  177. package/providers/coinbase.d.ts +69 -0
  178. package/providers/coinbase.d.ts.map +1 -0
  179. package/providers/coinbase.js +78 -0
  180. package/providers/concept2.d.ts +81 -0
  181. package/providers/concept2.d.ts.map +1 -0
  182. package/providers/concept2.js +86 -0
  183. package/providers/credentials.d.ts +132 -0
  184. package/providers/credentials.d.ts.map +1 -0
  185. package/providers/credentials.js +74 -0
  186. package/providers/descope.d.ts +91 -0
  187. package/providers/descope.d.ts.map +1 -0
  188. package/providers/descope.js +78 -0
  189. package/providers/discord.d.ts +139 -0
  190. package/providers/discord.d.ts.map +1 -0
  191. package/providers/discord.js +86 -0
  192. package/providers/dribbble.d.ts +88 -0
  193. package/providers/dribbble.d.ts.map +1 -0
  194. package/providers/dribbble.js +85 -0
  195. package/providers/dropbox.d.ts +65 -0
  196. package/providers/dropbox.d.ts.map +1 -0
  197. package/providers/dropbox.js +88 -0
  198. package/providers/duende-identity-server6.d.ts +91 -0
  199. package/providers/duende-identity-server6.d.ts.map +1 -0
  200. package/providers/duende-identity-server6.js +80 -0
  201. package/providers/email.d.ts +41 -0
  202. package/providers/email.d.ts.map +1 -0
  203. package/providers/email.js +18 -0
  204. package/providers/eventbrite.d.ts +78 -0
  205. package/providers/eventbrite.d.ts.map +1 -0
  206. package/providers/eventbrite.js +88 -0
  207. package/providers/eveonline.d.ts +94 -0
  208. package/providers/eveonline.d.ts.map +1 -0
  209. package/providers/eveonline.js +92 -0
  210. package/providers/facebook.d.ts +84 -0
  211. package/providers/facebook.d.ts.map +1 -0
  212. package/providers/facebook.js +93 -0
  213. package/providers/faceit.d.ts +64 -0
  214. package/providers/faceit.d.ts.map +1 -0
  215. package/providers/faceit.js +74 -0
  216. package/providers/figma.d.ts +75 -0
  217. package/providers/figma.d.ts.map +1 -0
  218. package/providers/figma.js +81 -0
  219. package/providers/forwardemail.d.ts +4 -0
  220. package/providers/forwardemail.d.ts.map +1 -0
  221. package/providers/forwardemail.js +32 -0
  222. package/providers/foursquare.d.ts +71 -0
  223. package/providers/foursquare.d.ts.map +1 -0
  224. package/providers/foursquare.js +91 -0
  225. package/providers/freshbooks.d.ts +66 -0
  226. package/providers/freshbooks.d.ts.map +1 -0
  227. package/providers/freshbooks.js +76 -0
  228. package/providers/frontegg.d.ts +95 -0
  229. package/providers/frontegg.d.ts.map +1 -0
  230. package/providers/frontegg.js +88 -0
  231. package/providers/fusionauth.d.ts +279 -0
  232. package/providers/fusionauth.d.ts.map +1 -0
  233. package/providers/fusionauth.js +292 -0
  234. package/providers/github.d.ts +127 -0
  235. package/providers/github.d.ts.map +1 -0
  236. package/providers/github.js +115 -0
  237. package/providers/gitlab.d.ts +115 -0
  238. package/providers/gitlab.d.ts.map +1 -0
  239. package/providers/gitlab.js +75 -0
  240. package/providers/google.d.ts +138 -0
  241. package/providers/google.d.ts.map +1 -0
  242. package/providers/google.js +119 -0
  243. package/providers/hubspot.d.ts +76 -0
  244. package/providers/hubspot.d.ts.map +1 -0
  245. package/providers/hubspot.js +93 -0
  246. package/providers/huggingface.d.ts +216 -0
  247. package/providers/huggingface.d.ts.map +1 -0
  248. package/providers/huggingface.js +101 -0
  249. package/providers/identity-server4.d.ts +69 -0
  250. package/providers/identity-server4.d.ts.map +1 -0
  251. package/providers/identity-server4.js +64 -0
  252. package/providers/index.d.ts +61 -0
  253. package/providers/index.d.ts.map +1 -0
  254. package/providers/index.js +3 -0
  255. package/providers/instagram.d.ts +74 -0
  256. package/providers/instagram.d.ts.map +1 -0
  257. package/providers/instagram.js +87 -0
  258. package/providers/kakao.d.ts +148 -0
  259. package/providers/kakao.d.ts.map +1 -0
  260. package/providers/kakao.js +103 -0
  261. package/providers/keycloak.d.ts +100 -0
  262. package/providers/keycloak.d.ts.map +1 -0
  263. package/providers/keycloak.js +73 -0
  264. package/providers/kinde.d.ts +73 -0
  265. package/providers/kinde.d.ts.map +1 -0
  266. package/providers/kinde.js +51 -0
  267. package/providers/line.d.ts +83 -0
  268. package/providers/line.d.ts.map +1 -0
  269. package/providers/line.js +73 -0
  270. package/providers/linkedin.d.ts +77 -0
  271. package/providers/linkedin.d.ts.map +1 -0
  272. package/providers/linkedin.js +65 -0
  273. package/providers/logto.d.ts +98 -0
  274. package/providers/logto.d.ts.map +1 -0
  275. package/providers/logto.js +81 -0
  276. package/providers/loops.d.ts +40 -0
  277. package/providers/loops.d.ts.map +1 -0
  278. package/providers/loops.js +59 -0
  279. package/providers/mailchimp.d.ts +66 -0
  280. package/providers/mailchimp.d.ts.map +1 -0
  281. package/providers/mailchimp.js +76 -0
  282. package/providers/mailgun.d.ts +55 -0
  283. package/providers/mailgun.d.ts.map +1 -0
  284. package/providers/mailgun.js +74 -0
  285. package/providers/mailru.d.ts +63 -0
  286. package/providers/mailru.d.ts.map +1 -0
  287. package/providers/mailru.js +61 -0
  288. package/providers/mastodon.d.ts +90 -0
  289. package/providers/mastodon.d.ts.map +1 -0
  290. package/providers/mastodon.js +75 -0
  291. package/providers/mattermost.d.ts +132 -0
  292. package/providers/mattermost.d.ts.map +1 -0
  293. package/providers/mattermost.js +83 -0
  294. package/providers/medium.d.ts +68 -0
  295. package/providers/medium.d.ts.map +1 -0
  296. package/providers/medium.js +84 -0
  297. package/providers/microsoft-entra-id.d.ts +428 -0
  298. package/providers/microsoft-entra-id.d.ts.map +1 -0
  299. package/providers/microsoft-entra-id.js +156 -0
  300. package/providers/naver.d.ts +80 -0
  301. package/providers/naver.d.ts.map +1 -0
  302. package/providers/naver.js +79 -0
  303. package/providers/netlify.d.ts +66 -0
  304. package/providers/netlify.d.ts.map +1 -0
  305. package/providers/netlify.js +85 -0
  306. package/providers/netsuite.d.ts +189 -0
  307. package/providers/netsuite.d.ts.map +1 -0
  308. package/providers/netsuite.js +170 -0
  309. package/providers/nextcloud.d.ts +150 -0
  310. package/providers/nextcloud.d.ts.map +1 -0
  311. package/providers/nextcloud.js +99 -0
  312. package/providers/nodemailer.d.ts +27 -0
  313. package/providers/nodemailer.d.ts.map +1 -0
  314. package/providers/nodemailer.js +34 -0
  315. package/providers/notion.d.ts +99 -0
  316. package/providers/notion.d.ts.map +1 -0
  317. package/providers/notion.js +110 -0
  318. package/providers/oauth.d.ts +188 -0
  319. package/providers/oauth.d.ts.map +1 -0
  320. package/providers/oauth.js +1 -0
  321. package/providers/okta.d.ts +99 -0
  322. package/providers/okta.d.ts.map +1 -0
  323. package/providers/okta.js +63 -0
  324. package/providers/onelogin.d.ts +65 -0
  325. package/providers/onelogin.d.ts.map +1 -0
  326. package/providers/onelogin.js +61 -0
  327. package/providers/ory-hydra.d.ts +79 -0
  328. package/providers/ory-hydra.d.ts.map +1 -0
  329. package/providers/ory-hydra.js +67 -0
  330. package/providers/osso.d.ts +79 -0
  331. package/providers/osso.d.ts.map +1 -0
  332. package/providers/osso.js +77 -0
  333. package/providers/osu.d.ts +116 -0
  334. package/providers/osu.d.ts.map +1 -0
  335. package/providers/osu.js +75 -0
  336. package/providers/passage.d.ts +88 -0
  337. package/providers/passage.d.ts.map +1 -0
  338. package/providers/passage.js +75 -0
  339. package/providers/passkey.d.ts +65 -0
  340. package/providers/passkey.d.ts.map +1 -0
  341. package/providers/passkey.js +87 -0
  342. package/providers/patreon.d.ts +73 -0
  343. package/providers/patreon.d.ts.map +1 -0
  344. package/providers/patreon.js +77 -0
  345. package/providers/ping-id.d.ts +57 -0
  346. package/providers/ping-id.d.ts.map +1 -0
  347. package/providers/ping-id.js +40 -0
  348. package/providers/pinterest.d.ts +79 -0
  349. package/providers/pinterest.d.ts.map +1 -0
  350. package/providers/pinterest.js +85 -0
  351. package/providers/pipedrive.d.ts +99 -0
  352. package/providers/pipedrive.d.ts.map +1 -0
  353. package/providers/pipedrive.js +71 -0
  354. package/providers/postmark.d.ts +4 -0
  355. package/providers/postmark.d.ts.map +1 -0
  356. package/providers/postmark.js +36 -0
  357. package/providers/provider-types.d.ts +3 -0
  358. package/providers/provider-types.d.ts.map +1 -0
  359. package/providers/provider-types.js +1 -0
  360. package/providers/reddit.d.ts +88 -0
  361. package/providers/reddit.d.ts.map +1 -0
  362. package/providers/reddit.js +90 -0
  363. package/providers/resend.d.ts +4 -0
  364. package/providers/resend.d.ts.map +1 -0
  365. package/providers/resend.js +32 -0
  366. package/providers/roblox.d.ts +67 -0
  367. package/providers/roblox.d.ts.map +1 -0
  368. package/providers/roblox.js +53 -0
  369. package/providers/salesforce.d.ts +59 -0
  370. package/providers/salesforce.d.ts.map +1 -0
  371. package/providers/salesforce.js +52 -0
  372. package/providers/sendgrid.d.ts +4 -0
  373. package/providers/sendgrid.d.ts.map +1 -0
  374. package/providers/sendgrid.js +35 -0
  375. package/providers/simplelogin.d.ts +87 -0
  376. package/providers/simplelogin.d.ts.map +1 -0
  377. package/providers/simplelogin.js +83 -0
  378. package/providers/slack.d.ts +102 -0
  379. package/providers/slack.d.ts.map +1 -0
  380. package/providers/slack.js +69 -0
  381. package/providers/spotify.d.ts +75 -0
  382. package/providers/spotify.d.ts.map +1 -0
  383. package/providers/spotify.js +73 -0
  384. package/providers/strava.d.ts +68 -0
  385. package/providers/strava.d.ts.map +1 -0
  386. package/providers/strava.js +80 -0
  387. package/providers/threads.d.ts +108 -0
  388. package/providers/threads.d.ts.map +1 -0
  389. package/providers/threads.js +89 -0
  390. package/providers/tiktok.d.ts +248 -0
  391. package/providers/tiktok.d.ts.map +1 -0
  392. package/providers/tiktok.js +195 -0
  393. package/providers/todoist.d.ts +76 -0
  394. package/providers/todoist.d.ts.map +1 -0
  395. package/providers/todoist.js +97 -0
  396. package/providers/trakt.d.ts +93 -0
  397. package/providers/trakt.d.ts.map +1 -0
  398. package/providers/trakt.js +91 -0
  399. package/providers/twitch.d.ts +71 -0
  400. package/providers/twitch.d.ts.map +1 -0
  401. package/providers/twitch.js +96 -0
  402. package/providers/twitter.d.ts +183 -0
  403. package/providers/twitter.d.ts.map +1 -0
  404. package/providers/twitter.js +100 -0
  405. package/providers/united-effects.d.ts +80 -0
  406. package/providers/united-effects.d.ts.map +1 -0
  407. package/providers/united-effects.js +72 -0
  408. package/providers/vipps.d.ts +71 -0
  409. package/providers/vipps.d.ts.map +1 -0
  410. package/providers/vipps.js +33 -0
  411. package/providers/vk.d.ts +334 -0
  412. package/providers/vk.d.ts.map +1 -0
  413. package/providers/vk.js +103 -0
  414. package/providers/webauthn.d.ts +148 -0
  415. package/providers/webauthn.d.ts.map +1 -0
  416. package/providers/webauthn.js +128 -0
  417. package/providers/webex.d.ts +78 -0
  418. package/providers/webex.d.ts.map +1 -0
  419. package/providers/webex.js +73 -0
  420. package/providers/wechat.d.ts +78 -0
  421. package/providers/wechat.d.ts.map +1 -0
  422. package/providers/wechat.js +105 -0
  423. package/providers/wikimedia.d.ts +99 -0
  424. package/providers/wikimedia.d.ts.map +1 -0
  425. package/providers/wikimedia.js +90 -0
  426. package/providers/wordpress.d.ts +65 -0
  427. package/providers/wordpress.d.ts.map +1 -0
  428. package/providers/wordpress.js +71 -0
  429. package/providers/workos.d.ts +154 -0
  430. package/providers/workos.d.ts.map +1 -0
  431. package/providers/workos.js +143 -0
  432. package/providers/yandex.d.ts +131 -0
  433. package/providers/yandex.d.ts.map +1 -0
  434. package/providers/yandex.js +80 -0
  435. package/providers/zitadel.d.ts +117 -0
  436. package/providers/zitadel.d.ts.map +1 -0
  437. package/providers/zitadel.js +95 -0
  438. package/providers/zoho.d.ts +63 -0
  439. package/providers/zoho.d.ts.map +1 -0
  440. package/providers/zoho.js +79 -0
  441. package/providers/zoom.d.ts +93 -0
  442. package/providers/zoom.d.ts.map +1 -0
  443. package/providers/zoom.js +82 -0
  444. package/src/adapters/server-actions-helpers.ts +126 -0
  445. package/src/adapters.ts +603 -0
  446. package/src/errors.ts +551 -0
  447. package/src/index.ts +689 -0
  448. package/src/jwt.ts +283 -0
  449. package/src/lib/actions/callback/handle-login.ts +334 -0
  450. package/src/lib/actions/callback/index.ts +554 -0
  451. package/src/lib/actions/callback/oauth/callback.ts +347 -0
  452. package/src/lib/actions/callback/oauth/checks.ts +258 -0
  453. package/src/lib/actions/callback/oauth/csrf-token.ts +60 -0
  454. package/src/lib/actions/index.ts +5 -0
  455. package/src/lib/actions/session.ts +167 -0
  456. package/src/lib/actions/signin/authorization-url.ts +123 -0
  457. package/src/lib/actions/signin/index.ts +37 -0
  458. package/src/lib/actions/signin/send-token.ts +124 -0
  459. package/src/lib/actions/signout.ts +38 -0
  460. package/src/lib/actions/webauthn-options.ts +100 -0
  461. package/src/lib/index.ts +97 -0
  462. package/src/lib/init.ts +236 -0
  463. package/src/lib/pages/error.tsx +106 -0
  464. package/src/lib/pages/index.ts +181 -0
  465. package/src/lib/pages/signin.tsx +255 -0
  466. package/src/lib/pages/signout.tsx +49 -0
  467. package/src/lib/pages/styles.css +377 -0
  468. package/src/lib/pages/styles.ts +381 -0
  469. package/src/lib/pages/verify-request.tsx +36 -0
  470. package/src/lib/symbols.ts +60 -0
  471. package/src/lib/utils/actions.ts +17 -0
  472. package/src/lib/utils/assert.ts +259 -0
  473. package/src/lib/utils/callback-url.ts +42 -0
  474. package/src/lib/utils/cookie.ts +248 -0
  475. package/src/lib/utils/date.ts +8 -0
  476. package/src/lib/utils/email.ts +65 -0
  477. package/src/lib/utils/env.ts +113 -0
  478. package/src/lib/utils/logger.ts +75 -0
  479. package/src/lib/utils/merge.ts +30 -0
  480. package/src/lib/utils/providers.ts +203 -0
  481. package/src/lib/utils/session.ts +41 -0
  482. package/src/lib/utils/web.ts +151 -0
  483. package/src/lib/utils/webauthn-client.js +229 -0
  484. package/src/lib/utils/webauthn-utils.ts +531 -0
  485. package/src/lib/vendored/cookie.ts +383 -0
  486. package/src/providers/42-school.ts +256 -0
  487. package/src/providers/apple.ts +206 -0
  488. package/src/providers/asgardeo.ts +118 -0
  489. package/src/providers/atlassian.ts +120 -0
  490. package/src/providers/auth0.ts +127 -0
  491. package/src/providers/authentik.ts +100 -0
  492. package/src/providers/azure-ad-b2c.ts +124 -0
  493. package/src/providers/azure-ad.ts +30 -0
  494. package/src/providers/azure-devops.ts +184 -0
  495. package/src/providers/bankid-no.ts +161 -0
  496. package/src/providers/battlenet.ts +107 -0
  497. package/src/providers/beyondidentity.ts +102 -0
  498. package/src/providers/bitbucket.ts +122 -0
  499. package/src/providers/box.ts +87 -0
  500. package/src/providers/boxyhq-saml.ts +148 -0
  501. package/src/providers/bungie.ts +192 -0
  502. package/src/providers/click-up.ts +104 -0
  503. package/src/providers/cognito.ts +94 -0
  504. package/src/providers/coinbase.ts +93 -0
  505. package/src/providers/concept2.ts +108 -0
  506. package/src/providers/credentials.ts +157 -0
  507. package/src/providers/descope.ts +105 -0
  508. package/src/providers/discord.ts +176 -0
  509. package/src/providers/dribbble.ts +122 -0
  510. package/src/providers/dropbox.ts +102 -0
  511. package/src/providers/duende-identity-server6.ts +101 -0
  512. package/src/providers/email.ts +60 -0
  513. package/src/providers/eventbrite.ts +105 -0
  514. package/src/providers/eveonline.ts +117 -0
  515. package/src/providers/facebook.ts +119 -0
  516. package/src/providers/faceit.ts +90 -0
  517. package/src/providers/figma.ts +105 -0
  518. package/src/providers/forwardemail.ts +37 -0
  519. package/src/providers/foursquare.ts +105 -0
  520. package/src/providers/freshbooks.ts +90 -0
  521. package/src/providers/frontegg.ts +111 -0
  522. package/src/providers/fusionauth.ts +336 -0
  523. package/src/providers/github.ts +187 -0
  524. package/src/providers/gitlab.ts +140 -0
  525. package/src/providers/google.ts +152 -0
  526. package/src/providers/hubspot.ts +117 -0
  527. package/src/providers/huggingface.ts +234 -0
  528. package/src/providers/identity-server4.ts +78 -0
  529. package/src/providers/index.ts +115 -0
  530. package/src/providers/instagram.ts +103 -0
  531. package/src/providers/kakao.ts +184 -0
  532. package/src/providers/keycloak.ts +111 -0
  533. package/src/providers/kinde.ts +85 -0
  534. package/src/providers/line.ts +99 -0
  535. package/src/providers/linkedin.ts +91 -0
  536. package/src/providers/logto.ts +122 -0
  537. package/src/providers/loops.ts +79 -0
  538. package/src/providers/mailchimp.ts +90 -0
  539. package/src/providers/mailgun.ts +98 -0
  540. package/src/providers/mailru.ts +75 -0
  541. package/src/providers/mastodon.ts +112 -0
  542. package/src/providers/mattermost.ts +154 -0
  543. package/src/providers/medium.ts +89 -0
  544. package/src/providers/microsoft-entra-id.ts +497 -0
  545. package/src/providers/naver.ts +102 -0
  546. package/src/providers/netlify.ts +90 -0
  547. package/src/providers/netsuite.ts +225 -0
  548. package/src/providers/nextcloud.ts +207 -0
  549. package/src/providers/nodemailer.ts +84 -0
  550. package/src/providers/notion.ts +166 -0
  551. package/src/providers/oauth.ts +310 -0
  552. package/src/providers/okta.ts +111 -0
  553. package/src/providers/onelogin.ts +75 -0
  554. package/src/providers/ory-hydra.ts +93 -0
  555. package/src/providers/osso.ts +91 -0
  556. package/src/providers/osu.ts +138 -0
  557. package/src/providers/passage.ts +103 -0
  558. package/src/providers/passkey.ts +94 -0
  559. package/src/providers/patreon.ts +98 -0
  560. package/src/providers/ping-id.ts +68 -0
  561. package/src/providers/pinterest.ts +106 -0
  562. package/src/providers/pipedrive.ts +120 -0
  563. package/src/providers/postmark.ts +38 -0
  564. package/src/providers/provider-types.ts +107 -0
  565. package/src/providers/reddit.ts +104 -0
  566. package/src/providers/resend.ts +35 -0
  567. package/src/providers/roblox.ts +94 -0
  568. package/src/providers/salesforce.ts +73 -0
  569. package/src/providers/sendgrid.ts +36 -0
  570. package/src/providers/simplelogin.ts +107 -0
  571. package/src/providers/slack.ts +115 -0
  572. package/src/providers/spotify.ts +99 -0
  573. package/src/providers/strava.ts +101 -0
  574. package/src/providers/threads.ts +135 -0
  575. package/src/providers/tiktok.ts +319 -0
  576. package/src/providers/todoist.ts +122 -0
  577. package/src/providers/trakt.ts +120 -0
  578. package/src/providers/twitch.ts +121 -0
  579. package/src/providers/twitter.ts +207 -0
  580. package/src/providers/united-effects.ts +89 -0
  581. package/src/providers/vipps.ts +86 -0
  582. package/src/providers/vk.ts +401 -0
  583. package/src/providers/webauthn.ts +296 -0
  584. package/src/providers/webex.ts +102 -0
  585. package/src/providers/wechat.ts +141 -0
  586. package/src/providers/wikimedia.ts +258 -0
  587. package/src/providers/wordpress.ts +86 -0
  588. package/src/providers/workos.ts +180 -0
  589. package/src/providers/yandex.ts +159 -0
  590. package/src/providers/zitadel.ts +128 -0
  591. package/src/providers/zoho.ts +84 -0
  592. package/src/providers/zoom.ts +119 -0
  593. package/src/types.ts +430 -0
  594. package/src/warnings.ts +21 -0
  595. package/types.d.ts +309 -0
  596. package/types.d.ts.map +1 -0
  597. package/types.js +53 -0
  598. package/warnings.d.ts +17 -0
  599. package/warnings.d.ts.map +1 -0
  600. package/warnings.js +1 -0
@@ -0,0 +1,255 @@
1
+ import type {
2
+ InternalProvider,
3
+ SignInPageErrorParam,
4
+ Theme,
5
+ } from "../../types.js"
6
+ import { webauthnScript } from "../utils/webauthn-client.js"
7
+
8
+ const signinErrors: Record<SignInPageErrorParam | "default", string> = {
9
+ default: "Unable to sign in.",
10
+ Signin: "Try signing in with a different account.",
11
+ OAuthSignin: "Try signing in with a different account.",
12
+ OAuthCallbackError: "Try signing in with a different account.",
13
+ OAuthCreateAccount: "Try signing in with a different account.",
14
+ EmailCreateAccount: "Try signing in with a different account.",
15
+ Callback: "Try signing in with a different account.",
16
+ OAuthAccountNotLinked:
17
+ "To confirm your identity, sign in with the same account you used originally.",
18
+ EmailSignin: "The e-mail could not be sent.",
19
+ CredentialsSignin:
20
+ "Sign in failed. Check the details you provided are correct.",
21
+ SessionRequired: "Please sign in to access this page.",
22
+ }
23
+
24
+ function ConditionalUIScript(providerID: string) {
25
+ const startConditionalUIScript = `
26
+ const currentURL = window.location.href;
27
+ const authURL = currentURL.substring(0, currentURL.lastIndexOf('/'));
28
+ (${webauthnScript})(authURL, "${providerID}");
29
+ `
30
+ return (
31
+ <>
32
+ <script dangerouslySetInnerHTML={{ __html: startConditionalUIScript }} />
33
+ </>
34
+ )
35
+ }
36
+
37
+ export default function SigninPage(props: {
38
+ csrfToken?: string
39
+ providers?: InternalProvider[]
40
+ callbackUrl?: string
41
+ email?: string
42
+ error?: SignInPageErrorParam
43
+ theme?: Theme
44
+ }) {
45
+ const {
46
+ csrfToken,
47
+ providers = [],
48
+ callbackUrl,
49
+ theme,
50
+ email,
51
+ error: errorType,
52
+ } = props
53
+
54
+ if (typeof document !== "undefined" && theme?.brandColor) {
55
+ document.documentElement.style.setProperty(
56
+ "--brand-color",
57
+ theme.brandColor
58
+ )
59
+ }
60
+
61
+ if (typeof document !== "undefined" && theme?.buttonText) {
62
+ document.documentElement.style.setProperty(
63
+ "--button-text-color",
64
+ theme.buttonText
65
+ )
66
+ }
67
+
68
+ const error = errorType && (signinErrors[errorType] ?? signinErrors.default)
69
+
70
+ const providerLogoPath = "https://authjs.dev/img/providers"
71
+
72
+ const conditionalUIProviderID = providers.find(
73
+ (provider) => provider.type === "webauthn" && provider.enableConditionalUI
74
+ )?.id
75
+
76
+ return (
77
+ <div className="signin">
78
+ {theme?.brandColor && (
79
+ <style
80
+ dangerouslySetInnerHTML={{
81
+ __html: `:root {--brand-color: ${theme.brandColor}}`,
82
+ }}
83
+ />
84
+ )}
85
+ {theme?.buttonText && (
86
+ <style
87
+ dangerouslySetInnerHTML={{
88
+ __html: `
89
+ :root {
90
+ --button-text-color: ${theme.buttonText}
91
+ }
92
+ `,
93
+ }}
94
+ />
95
+ )}
96
+ <div className="card">
97
+ {error && (
98
+ <div className="error">
99
+ <p>{error}</p>
100
+ </div>
101
+ )}
102
+ {theme?.logo && <img src={theme.logo} alt="Logo" className="logo" />}
103
+ {providers.map((provider, i) => {
104
+ let bg, brandColor, logo
105
+ if (provider.type === "oauth" || provider.type === "oidc") {
106
+ ;({
107
+ bg = "#fff",
108
+ brandColor,
109
+ logo = `${providerLogoPath}/${provider.id}.svg`,
110
+ } = provider.style ?? {})
111
+ }
112
+ const color = brandColor ?? bg ?? "#fff"
113
+ return (
114
+ <div key={provider.id} className="provider">
115
+ {provider.type === "oauth" || provider.type === "oidc" ? (
116
+ <form action={provider.signinUrl} method="POST">
117
+ <input type="hidden" name="csrfToken" value={csrfToken} />
118
+ {callbackUrl && (
119
+ <input
120
+ type="hidden"
121
+ name="callbackUrl"
122
+ value={callbackUrl}
123
+ />
124
+ )}
125
+ <button
126
+ type="submit"
127
+ className="button"
128
+ style={{
129
+ "--provider-brand-color": color,
130
+ }}
131
+ tabIndex={0}
132
+ >
133
+ <span
134
+ style={{
135
+ filter:
136
+ "invert(1) grayscale(1) brightness(1.3) contrast(9000)",
137
+ "mix-blend-mode": "luminosity",
138
+ opacity: 0.95,
139
+ }}
140
+ >
141
+ Sign in with {provider.name}
142
+ </span>
143
+ {logo && <img loading="lazy" height={24} src={logo} />}
144
+ </button>
145
+ </form>
146
+ ) : null}
147
+ {(provider.type === "email" ||
148
+ provider.type === "credentials" ||
149
+ provider.type === "webauthn") &&
150
+ i > 0 &&
151
+ providers[i - 1].type !== "email" &&
152
+ providers[i - 1].type !== "credentials" &&
153
+ providers[i - 1].type !== "webauthn" && <hr />}
154
+ {provider.type === "email" && (
155
+ <form action={provider.signinUrl} method="POST">
156
+ <input type="hidden" name="csrfToken" value={csrfToken} />
157
+ <label
158
+ className="section-header"
159
+ htmlFor={`input-email-for-${provider.id}-provider`}
160
+ >
161
+ Email
162
+ </label>
163
+ <input
164
+ id={`input-email-for-${provider.id}-provider`}
165
+ autoFocus
166
+ type="email"
167
+ name="email"
168
+ value={email}
169
+ placeholder="email@example.com"
170
+ required
171
+ />
172
+ <button id="submitButton" type="submit" tabIndex={0}>
173
+ Sign in with {provider.name}
174
+ </button>
175
+ </form>
176
+ )}
177
+ {provider.type === "credentials" && (
178
+ <form action={provider.callbackUrl} method="POST">
179
+ <input type="hidden" name="csrfToken" value={csrfToken} />
180
+ {Object.keys(provider.credentials).map((credential) => {
181
+ return (
182
+ <div key={`input-group-${provider.id}`}>
183
+ <label
184
+ className="section-header"
185
+ htmlFor={`input-${credential}-for-${provider.id}-provider`}
186
+ >
187
+ {provider.credentials[credential].label ?? credential}
188
+ </label>
189
+ <input
190
+ name={credential}
191
+ id={`input-${credential}-for-${provider.id}-provider`}
192
+ type={provider.credentials[credential].type ?? "text"}
193
+ placeholder={
194
+ provider.credentials[credential].placeholder ?? ""
195
+ }
196
+ {...provider.credentials[credential]}
197
+ />
198
+ </div>
199
+ )
200
+ })}
201
+ <button id="submitButton" type="submit" tabIndex={0}>
202
+ Sign in with {provider.name}
203
+ </button>
204
+ </form>
205
+ )}
206
+ {provider.type === "webauthn" && (
207
+ <form
208
+ action={provider.callbackUrl}
209
+ method="POST"
210
+ id={`${provider.id}-form`}
211
+ >
212
+ <input type="hidden" name="csrfToken" value={csrfToken} />
213
+ {Object.keys(provider.formFields).map((field) => {
214
+ return (
215
+ <div key={`input-group-${provider.id}`}>
216
+ <label
217
+ className="section-header"
218
+ htmlFor={`input-${field}-for-${provider.id}-provider`}
219
+ >
220
+ {provider.formFields[field].label ?? field}
221
+ </label>
222
+ <input
223
+ name={field}
224
+ data-form-field
225
+ id={`input-${field}-for-${provider.id}-provider`}
226
+ type={provider.formFields[field].type ?? "text"}
227
+ placeholder={
228
+ provider.formFields[field].placeholder ?? ""
229
+ }
230
+ {...provider.formFields[field]}
231
+ />
232
+ </div>
233
+ )
234
+ })}
235
+ <button
236
+ id={`submitButton-${provider.id}`}
237
+ type="submit"
238
+ tabIndex={0}
239
+ >
240
+ Sign in with {provider.name}
241
+ </button>
242
+ </form>
243
+ )}
244
+ {(provider.type === "email" ||
245
+ provider.type === "credentials" ||
246
+ provider.type === "webauthn") &&
247
+ i + 1 < providers.length && <hr />}
248
+ </div>
249
+ )
250
+ })}
251
+ </div>
252
+ {conditionalUIProviderID && ConditionalUIScript(conditionalUIProviderID)}
253
+ </div>
254
+ )
255
+ }
@@ -0,0 +1,49 @@
1
+ import type { Theme } from "../../types.js"
2
+
3
+ export interface SignoutProps {
4
+ url?: URL
5
+ csrfToken?: string
6
+ theme?: Theme
7
+ }
8
+
9
+ export default function SignoutPage(props: SignoutProps) {
10
+ const { url, csrfToken, theme } = props
11
+
12
+ return (
13
+ <div className="signout">
14
+ {theme?.brandColor && (
15
+ <style
16
+ dangerouslySetInnerHTML={{
17
+ __html: `
18
+ :root {
19
+ --brand-color: ${theme.brandColor}
20
+ }
21
+ `,
22
+ }}
23
+ />
24
+ )}
25
+ {theme?.buttonText && (
26
+ <style
27
+ dangerouslySetInnerHTML={{
28
+ __html: `
29
+ :root {
30
+ --button-text-color: ${theme.buttonText}
31
+ }
32
+ `,
33
+ }}
34
+ />
35
+ )}
36
+ <div className="card">
37
+ {theme?.logo && <img src={theme.logo} alt="Logo" className="logo" />}
38
+ <h1>Signout</h1>
39
+ <p>Are you sure you want to sign out?</p>
40
+ <form action={url?.toString()} method="POST">
41
+ <input type="hidden" name="csrfToken" value={csrfToken} />
42
+ <button id="submitButton" type="submit">
43
+ Sign out
44
+ </button>
45
+ </form>
46
+ </div>
47
+ </div>
48
+ )
49
+ }
@@ -0,0 +1,377 @@
1
+ :root {
2
+ --border-width: 1px;
3
+ --border-radius: 0.5rem;
4
+ --color-error: #c94b4b;
5
+ --color-info: #157efb;
6
+ --color-info-hover: #0f6ddb;
7
+ --color-info-text: #fff;
8
+ }
9
+
10
+ .__next-auth-theme-auto,
11
+ .__next-auth-theme-light {
12
+ --color-background: #ececec;
13
+ --color-background-hover: rgba(236, 236, 236, 0.8);
14
+ --color-background-card: #fff;
15
+ --color-text: #000;
16
+ --color-primary: #444;
17
+ --color-control-border: #bbb;
18
+ --color-button-active-background: #f9f9f9;
19
+ --color-button-active-border: #aaa;
20
+ --color-separator: #ccc;
21
+ --provider-bg: #fff;
22
+ --provider-bg-hover: color-mix(
23
+ in srgb,
24
+ var(--provider-brand-color) 30%,
25
+ #fff
26
+ );
27
+ }
28
+
29
+ .__next-auth-theme-dark {
30
+ --color-background: #161b22;
31
+ --color-background-hover: rgba(22, 27, 34, 0.8);
32
+ --color-background-card: #0d1117;
33
+ --color-text: #fff;
34
+ --color-primary: #ccc;
35
+ --color-control-border: #555;
36
+ --color-button-active-background: #060606;
37
+ --color-button-active-border: #666;
38
+ --color-separator: #444;
39
+ --provider-bg: #161b22;
40
+ --provider-bg-hover: color-mix(
41
+ in srgb,
42
+ var(--provider-brand-color) 30%,
43
+ #000
44
+ );
45
+ img[src$="42-school.svg"],
46
+ img[src$="apple.svg"],
47
+ img[src$="boxyhq-saml.svg"],
48
+ img[src$="eveonline.svg"],
49
+ img[src$="github.svg"],
50
+ img[src$="mailchimp.svg"],
51
+ img[src$="medium.svg"],
52
+ img[src$="okta.svg"],
53
+ img[src$="patreon.svg"],
54
+ img[src$="ping-id.svg"],
55
+ img[src$="roblox.svg"],
56
+ img[src$="threads.svg"],
57
+ img[src$="wikimedia.svg"] {
58
+ filter: invert(1);
59
+ }
60
+ #submitButton {
61
+ background-color: var(--provider-bg, var(--color-info));
62
+ }
63
+ }
64
+
65
+ @media (prefers-color-scheme: dark) {
66
+ .__next-auth-theme-auto {
67
+ --color-background: #161b22;
68
+ --color-background-hover: rgba(22, 27, 34, 0.8);
69
+ --color-background-card: #0d1117;
70
+ --color-text: #fff;
71
+ --color-primary: #ccc;
72
+ --color-control-border: #555;
73
+ --color-button-active-background: #060606;
74
+ --color-button-active-border: #666;
75
+ --color-separator: #444;
76
+ --provider-bg: #161b22;
77
+ --provider-bg-hover: color-mix(
78
+ in srgb,
79
+ var(--provider-brand-color) 30%,
80
+ #000
81
+ );
82
+ img[src$="42-school.svg"],
83
+ img[src$="apple.svg"],
84
+ img[src$="boxyhq-saml.svg"],
85
+ img[src$="eveonline.svg"],
86
+ img[src$="github.svg"],
87
+ img[src$="mailchimp.svg"],
88
+ img[src$="medium.svg"],
89
+ img[src$="okta.svg"],
90
+ img[src$="patreon.svg"],
91
+ img[src$="ping-id.svg"],
92
+ img[src$="roblox.svg"],
93
+ img[src$="threads.svg"],
94
+ img[src$="wikimedia.svg"] {
95
+ filter: invert(1);
96
+ }
97
+ #submitButton {
98
+ background-color: var(--provider-bg, var(--color-info));
99
+ }
100
+ }
101
+ }
102
+
103
+ html {
104
+ -webkit-box-sizing: border-box;
105
+ -moz-box-sizing: border-box;
106
+ box-sizing: border-box;
107
+ }
108
+
109
+ *,
110
+ *:before,
111
+ *:after {
112
+ -webkit-box-sizing: inherit;
113
+ -moz-box-sizing: inherit;
114
+ box-sizing: inherit;
115
+ margin: 0;
116
+ padding: 0;
117
+ }
118
+
119
+ body {
120
+ background-color: var(--color-background);
121
+ margin: 0;
122
+ padding: 0;
123
+ font-family:
124
+ ui-sans-serif,
125
+ system-ui,
126
+ -apple-system,
127
+ BlinkMacSystemFont,
128
+ "Segoe UI",
129
+ Roboto,
130
+ "Helvetica Neue",
131
+ Arial,
132
+ "Noto Sans",
133
+ sans-serif,
134
+ "Apple Color Emoji",
135
+ "Segoe UI Emoji",
136
+ "Segoe UI Symbol",
137
+ "Noto Color Emoji";
138
+ }
139
+
140
+ h1 {
141
+ margin-bottom: 1.5rem;
142
+ padding: 0 1rem;
143
+ font-weight: 400;
144
+ color: var(--color-text);
145
+ }
146
+
147
+ p {
148
+ margin-bottom: 1.5rem;
149
+ padding: 0 1rem;
150
+ color: var(--color-text);
151
+ }
152
+
153
+ form {
154
+ margin: 0;
155
+ padding: 0;
156
+ }
157
+
158
+ label {
159
+ font-weight: 500;
160
+ text-align: left;
161
+ margin-bottom: 0.25rem;
162
+ display: block;
163
+ color: var(--color-text);
164
+ }
165
+
166
+ input[type] {
167
+ box-sizing: border-box;
168
+ display: block;
169
+ width: 100%;
170
+ padding: 0.5rem 1rem;
171
+ border: var(--border-width) solid var(--color-control-border);
172
+ background: var(--color-background-card);
173
+ font-size: 1rem;
174
+ border-radius: var(--border-radius);
175
+ color: var(--color-text);
176
+ }
177
+
178
+ p {
179
+ font-size: 1.1rem;
180
+ line-height: 2rem;
181
+ }
182
+
183
+ a.button {
184
+ text-decoration: none;
185
+ line-height: 1rem;
186
+
187
+ &:link,
188
+ &:visited {
189
+ background-color: var(--color-background);
190
+ color: var(--color-primary);
191
+ }
192
+ }
193
+
194
+ button,
195
+ a.button {
196
+ padding: 0.75rem 1rem;
197
+ color: var(--provider-color, var(--color-primary));
198
+ background-color: var(--provider-bg, var(--color-background));
199
+ border: 1px solid #00000031;
200
+ font-size: 0.9rem;
201
+ height: 50px;
202
+ border-radius: var(--border-radius);
203
+ transition: background-color 250ms ease-in-out;
204
+ font-weight: 300;
205
+ position: relative;
206
+ display: flex;
207
+ align-items: center;
208
+ justify-content: space-between;
209
+
210
+ &:hover {
211
+ background-color: var(--provider-bg-hover, var(--color-background-hover));
212
+ cursor: pointer;
213
+ }
214
+
215
+ &:active {
216
+ cursor: pointer;
217
+ }
218
+
219
+ span {
220
+ color: var(--provider-bg);
221
+ }
222
+ }
223
+
224
+ #submitButton {
225
+ color: var(--button-text-color, var(--color-info-text));
226
+ background-color: var(--brand-color, var(--color-info));
227
+ width: 100%;
228
+
229
+ &:hover {
230
+ background-color: var(
231
+ --button-hover-bg,
232
+ var(--color-info-hover)
233
+ ) !important;
234
+ }
235
+ }
236
+
237
+ a.site {
238
+ color: var(--color-primary);
239
+ text-decoration: none;
240
+ font-size: 1rem;
241
+ line-height: 2rem;
242
+
243
+ &:hover {
244
+ text-decoration: underline;
245
+ }
246
+ }
247
+
248
+ .page {
249
+ position: absolute;
250
+ width: 100%;
251
+ height: 100%;
252
+ display: grid;
253
+ place-items: center;
254
+ margin: 0;
255
+ padding: 0;
256
+ box-sizing: border-box;
257
+
258
+ > div {
259
+ text-align: center;
260
+ }
261
+ }
262
+
263
+ .error {
264
+ a.button {
265
+ padding-left: 2rem;
266
+ padding-right: 2rem;
267
+ margin-top: 0.5rem;
268
+ }
269
+
270
+ .message {
271
+ margin-bottom: 1.5rem;
272
+ }
273
+ }
274
+
275
+ .signin {
276
+ input[type="text"] {
277
+ margin-left: auto;
278
+ margin-right: auto;
279
+ display: block;
280
+ }
281
+
282
+ hr {
283
+ display: block;
284
+ border: 0;
285
+ border-top: 1px solid var(--color-separator);
286
+ margin: 2rem auto 1rem auto;
287
+ overflow: visible;
288
+
289
+ &::before {
290
+ content: "or";
291
+ background: var(--color-background-card);
292
+ color: #888;
293
+ padding: 0 0.4rem;
294
+ position: relative;
295
+ top: -0.7rem;
296
+ }
297
+ }
298
+
299
+ .error {
300
+ background: #f5f5f5;
301
+ font-weight: 500;
302
+ border-radius: 0.3rem;
303
+ background: var(--color-error);
304
+
305
+ p {
306
+ text-align: left;
307
+ padding: 0.5rem 1rem;
308
+ font-size: 0.9rem;
309
+ line-height: 1.2rem;
310
+ color: var(--color-info-text);
311
+ }
312
+ }
313
+
314
+ > div,
315
+ form {
316
+ display: block;
317
+
318
+ input[type] {
319
+ margin-bottom: 0.5rem;
320
+ }
321
+
322
+ button {
323
+ width: 100%;
324
+ }
325
+ }
326
+
327
+ .provider + .provider {
328
+ margin-top: 1rem;
329
+ }
330
+ }
331
+
332
+ .logo {
333
+ display: inline-block;
334
+ max-width: 150px;
335
+ margin: 1.25rem 0;
336
+ max-height: 70px;
337
+ }
338
+
339
+ .card {
340
+ background-color: var(--color-background-card);
341
+ border-radius: 1rem;
342
+ padding: 1.25rem 2rem;
343
+
344
+ .header {
345
+ color: var(--color-primary);
346
+ }
347
+
348
+ input[type]::placeholder {
349
+ color: color-mix(
350
+ in srgb,
351
+ var(--color-text) 20%,
352
+ var(--color-button-active-background)
353
+ );
354
+ }
355
+
356
+ input[type] {
357
+ background: color-mix(in srgb, var(--color-background-card) 95%, black);
358
+ }
359
+ }
360
+
361
+ .section-header {
362
+ color: var(--color-text);
363
+ }
364
+
365
+ @media screen and (min-width: 450px) {
366
+ .card {
367
+ margin: 2rem 0;
368
+ width: 368px;
369
+ }
370
+ }
371
+
372
+ @media screen and (max-width: 450px) {
373
+ .card {
374
+ margin: 1rem 0;
375
+ width: 343px;
376
+ }
377
+ }