@luochuanyuewu/payload-auth 1.8.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 (424) hide show
  1. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +24 -0
  2. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts.map +1 -0
  3. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +317 -0
  4. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts +2 -0
  5. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts.map +1 -0
  6. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +23 -0
  7. package/dist/better-auth/adapter/generate-schema/index.d.ts +5 -0
  8. package/dist/better-auth/adapter/generate-schema/index.d.ts.map +1 -0
  9. package/dist/better-auth/adapter/generate-schema/index.js +19 -0
  10. package/dist/better-auth/adapter/generate-schema/utils.d.ts +3 -0
  11. package/dist/better-auth/adapter/generate-schema/utils.d.ts.map +1 -0
  12. package/dist/better-auth/adapter/generate-schema/utils.js +20 -0
  13. package/dist/better-auth/adapter/index.d.ts +16 -0
  14. package/dist/better-auth/adapter/index.d.ts.map +1 -0
  15. package/dist/better-auth/adapter/index.js +717 -0
  16. package/dist/better-auth/adapter/transform/index.d.ts +31 -0
  17. package/dist/better-auth/adapter/transform/index.d.ts.map +1 -0
  18. package/dist/better-auth/adapter/transform/index.js +729 -0
  19. package/dist/better-auth/adapter/types.d.ts +11 -0
  20. package/dist/better-auth/adapter/types.d.ts.map +1 -0
  21. package/dist/better-auth/adapter/types.js +3 -0
  22. package/dist/better-auth/generated-types.d.ts +329 -0
  23. package/dist/better-auth/generated-types.d.ts.map +1 -0
  24. package/dist/better-auth/generated-types.js +4 -0
  25. package/dist/better-auth/index.d.ts +4 -0
  26. package/dist/better-auth/index.d.ts.map +1 -0
  27. package/dist/better-auth/index.js +5 -0
  28. package/dist/better-auth/plugin/constants.d.ts +231 -0
  29. package/dist/better-auth/plugin/constants.d.ts.map +1 -0
  30. package/dist/better-auth/plugin/constants.js +259 -0
  31. package/dist/better-auth/plugin/helpers/check-plugin-exists.d.ts +13 -0
  32. package/dist/better-auth/plugin/helpers/check-plugin-exists.d.ts.map +1 -0
  33. package/dist/better-auth/plugin/helpers/check-plugin-exists.js +14 -0
  34. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +30 -0
  35. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts.map +1 -0
  36. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +46 -0
  37. package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +8 -0
  38. package/dist/better-auth/plugin/helpers/get-admin-access.d.ts.map +1 -0
  39. package/dist/better-auth/plugin/helpers/get-admin-access.js +22 -0
  40. package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +6 -0
  41. package/dist/better-auth/plugin/helpers/get-all-roles.d.ts.map +1 -0
  42. package/dist/better-auth/plugin/helpers/get-all-roles.js +20 -0
  43. package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts +19 -0
  44. package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts.map +1 -0
  45. package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +75 -0
  46. package/dist/better-auth/plugin/helpers/get-collection-slug.d.ts +6 -0
  47. package/dist/better-auth/plugin/helpers/get-collection-slug.d.ts.map +1 -0
  48. package/dist/better-auth/plugin/helpers/get-collection-slug.js +20 -0
  49. package/dist/better-auth/plugin/helpers/get-collection.d.ts +28 -0
  50. package/dist/better-auth/plugin/helpers/get-collection.d.ts.map +1 -0
  51. package/dist/better-auth/plugin/helpers/get-collection.js +49 -0
  52. package/dist/better-auth/plugin/helpers/get-ip.d.ts +3 -0
  53. package/dist/better-auth/plugin/helpers/get-ip.d.ts.map +1 -0
  54. package/dist/better-auth/plugin/helpers/get-ip.js +31 -0
  55. package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts +3 -0
  56. package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts.map +1 -0
  57. package/dist/better-auth/plugin/helpers/get-signed-cookie.js +63 -0
  58. package/dist/better-auth/plugin/helpers/index.d.ts +2 -0
  59. package/dist/better-auth/plugin/helpers/index.d.ts.map +1 -0
  60. package/dist/better-auth/plugin/helpers/index.js +3 -0
  61. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +60 -0
  62. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -0
  63. package/dist/better-auth/plugin/helpers/prepare-session-data.js +49 -0
  64. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts +21 -0
  65. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts.map +1 -0
  66. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +63 -0
  67. package/dist/better-auth/plugin/index.d.ts +8 -0
  68. package/dist/better-auth/plugin/index.d.ts.map +1 -0
  69. package/dist/better-auth/plugin/index.js +103 -0
  70. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts +13 -0
  71. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts.map +1 -0
  72. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +87 -0
  73. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +4 -0
  74. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -0
  75. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +51 -0
  76. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +4 -0
  77. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -0
  78. package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +150 -0
  79. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +6 -0
  80. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts.map +1 -0
  81. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +11 -0
  82. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +3 -0
  83. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts.map +1 -0
  84. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +8 -0
  85. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +7 -0
  86. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts.map +1 -0
  87. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +117 -0
  88. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +4 -0
  89. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -0
  90. package/dist/better-auth/plugin/lib/build-collections/api-keys.js +174 -0
  91. package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts +4 -0
  92. package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts.map +1 -0
  93. package/dist/better-auth/plugin/lib/build-collections/device-code.js +49 -0
  94. package/dist/better-auth/plugin/lib/build-collections/index.d.ts +11 -0
  95. package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -0
  96. package/dist/better-auth/plugin/lib/build-collections/index.js +79 -0
  97. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +4 -0
  98. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts.map +1 -0
  99. package/dist/better-auth/plugin/lib/build-collections/invitations.js +93 -0
  100. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +4 -0
  101. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -0
  102. package/dist/better-auth/plugin/lib/build-collections/jwks.js +58 -0
  103. package/dist/better-auth/plugin/lib/build-collections/members.d.ts +4 -0
  104. package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -0
  105. package/dist/better-auth/plugin/lib/build-collections/members.js +72 -0
  106. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +4 -0
  107. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -0
  108. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +105 -0
  109. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +4 -0
  110. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -0
  111. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +117 -0
  112. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +4 -0
  113. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -0
  114. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +87 -0
  115. package/dist/better-auth/plugin/lib/build-collections/organization-roles.d.ts +4 -0
  116. package/dist/better-auth/plugin/lib/build-collections/organization-roles.d.ts.map +1 -0
  117. package/dist/better-auth/plugin/lib/build-collections/organization-roles.js +65 -0
  118. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +4 -0
  119. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts.map +1 -0
  120. package/dist/better-auth/plugin/lib/build-collections/organizations.js +106 -0
  121. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +4 -0
  122. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -0
  123. package/dist/better-auth/plugin/lib/build-collections/passkeys.js +115 -0
  124. package/dist/better-auth/plugin/lib/build-collections/rate-limit.d.ts +4 -0
  125. package/dist/better-auth/plugin/lib/build-collections/rate-limit.d.ts.map +1 -0
  126. package/dist/better-auth/plugin/lib/build-collections/rate-limit.js +54 -0
  127. package/dist/better-auth/plugin/lib/build-collections/scim-provider.d.ts +4 -0
  128. package/dist/better-auth/plugin/lib/build-collections/scim-provider.d.ts.map +1 -0
  129. package/dist/better-auth/plugin/lib/build-collections/scim-provider.js +65 -0
  130. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +4 -0
  131. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -0
  132. package/dist/better-auth/plugin/lib/build-collections/sessions.js +140 -0
  133. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +4 -0
  134. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts.map +1 -0
  135. package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +80 -0
  136. package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts +4 -0
  137. package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts.map +1 -0
  138. package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +110 -0
  139. package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts +4 -0
  140. package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts.map +1 -0
  141. package/dist/better-auth/plugin/lib/build-collections/team-members.js +63 -0
  142. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +4 -0
  143. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -0
  144. package/dist/better-auth/plugin/lib/build-collections/teams.js +74 -0
  145. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +4 -0
  146. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts.map +1 -0
  147. package/dist/better-auth/plugin/lib/build-collections/two-factors.js +66 -0
  148. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +8 -0
  149. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts.map +1 -0
  150. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +52 -0
  151. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +12 -0
  152. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts.map +1 -0
  153. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +68 -0
  154. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts +5 -0
  155. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts.map +1 -0
  156. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +6 -0
  157. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +3 -0
  158. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts.map +1 -0
  159. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +114 -0
  160. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +4 -0
  161. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts.map +1 -0
  162. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +64 -0
  163. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +4 -0
  164. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts.map +1 -0
  165. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +90 -0
  166. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +7 -0
  167. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -0
  168. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +80 -0
  169. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts +3 -0
  170. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts.map +1 -0
  171. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +79 -0
  172. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +3 -0
  173. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts.map +1 -0
  174. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +54 -0
  175. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +7 -0
  176. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts.map +1 -0
  177. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +15 -0
  178. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts +7 -0
  179. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts.map +1 -0
  180. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js +8 -0
  181. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +3 -0
  182. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts.map +1 -0
  183. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +17 -0
  184. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +3 -0
  185. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts.map +1 -0
  186. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +90 -0
  187. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +4 -0
  188. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -0
  189. package/dist/better-auth/plugin/lib/build-collections/users/index.js +333 -0
  190. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts +16 -0
  191. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts.map +1 -0
  192. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js +24 -0
  193. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts +11 -0
  194. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts.map +1 -0
  195. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js +112 -0
  196. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +8 -0
  197. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts.map +1 -0
  198. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +31 -0
  199. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts +12 -0
  200. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts.map +1 -0
  201. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js +26 -0
  202. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +18 -0
  203. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts.map +1 -0
  204. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +84 -0
  205. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +21 -0
  206. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts.map +1 -0
  207. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +95 -0
  208. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +4 -0
  209. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -0
  210. package/dist/better-auth/plugin/lib/build-collections/verifications.js +82 -0
  211. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +6 -0
  212. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts.map +1 -0
  213. package/dist/better-auth/plugin/lib/get-payload-auth.js +9 -0
  214. package/dist/better-auth/plugin/lib/init-better-auth.d.ts +8 -0
  215. package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -0
  216. package/dist/better-auth/plugin/lib/init-better-auth.js +16 -0
  217. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +3 -0
  218. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts.map +1 -0
  219. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +12 -0
  220. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +3 -0
  221. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts.map +1 -0
  222. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +10 -0
  223. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts +3 -0
  224. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts.map +1 -0
  225. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js +8 -0
  226. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +12 -0
  227. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -0
  228. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +146 -0
  229. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +3 -0
  230. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts.map +1 -0
  231. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +18 -0
  232. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +3 -0
  233. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts.map +1 -0
  234. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +34 -0
  235. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +3 -0
  236. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts.map +1 -0
  237. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +11 -0
  238. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +3 -0
  239. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts.map +1 -0
  240. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +10 -0
  241. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts +3 -0
  242. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts.map +1 -0
  243. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js +11 -0
  244. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.d.ts +8 -0
  245. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.d.ts.map +1 -0
  246. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-after-role-middleware.js +20 -0
  247. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.d.ts +8 -0
  248. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.d.ts.map +1 -0
  249. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/admin-before-role-middleware.js +20 -0
  250. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.d.ts +14 -0
  251. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.d.ts.map +1 -0
  252. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.js +38 -0
  253. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +8 -0
  254. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts.map +1 -0
  255. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +23 -0
  256. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +26 -0
  257. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts.map +1 -0
  258. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +62 -0
  259. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts +10 -0
  260. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts.map +1 -0
  261. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js +42 -0
  262. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +10 -0
  263. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts.map +1 -0
  264. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +62 -0
  265. package/dist/better-auth/plugin/lib/set-login-methods.d.ts +5 -0
  266. package/dist/better-auth/plugin/lib/set-login-methods.d.ts.map +1 -0
  267. package/dist/better-auth/plugin/lib/set-login-methods.js +14 -0
  268. package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +10 -0
  269. package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts.map +1 -0
  270. package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +116 -0
  271. package/dist/better-auth/plugin/payload/components/admin-buttons/index.scss +36 -0
  272. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +11 -0
  273. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts.map +1 -0
  274. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +213 -0
  275. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.scss +136 -0
  276. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.d.ts +4 -0
  277. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.d.ts.map +1 -0
  278. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.js +197 -0
  279. package/dist/better-auth/plugin/payload/components/login-form/context.d.ts +49 -0
  280. package/dist/better-auth/plugin/payload/components/login-form/context.d.ts.map +1 -0
  281. package/dist/better-auth/plugin/payload/components/login-form/context.js +94 -0
  282. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.d.ts +4 -0
  283. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.d.ts.map +1 -0
  284. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.js +167 -0
  285. package/dist/better-auth/plugin/payload/components/login-form/index.d.ts +5 -0
  286. package/dist/better-auth/plugin/payload/components/login-form/index.d.ts.map +1 -0
  287. package/dist/better-auth/plugin/payload/components/login-form/index.js +6 -0
  288. package/dist/better-auth/plugin/payload/components/login-form/index.scss +58 -0
  289. package/dist/better-auth/plugin/payload/components/logout-button.d.ts +5 -0
  290. package/dist/better-auth/plugin/payload/components/logout-button.d.ts.map +1 -0
  291. package/dist/better-auth/plugin/payload/components/logout-button.js +24 -0
  292. package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts +9 -0
  293. package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts.map +1 -0
  294. package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +122 -0
  295. package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts +3 -0
  296. package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts.map +1 -0
  297. package/dist/better-auth/plugin/payload/components/passkeys/client.js +61 -0
  298. package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts +5 -0
  299. package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts.map +1 -0
  300. package/dist/better-auth/plugin/payload/components/passkeys/index.js +42 -0
  301. package/dist/better-auth/plugin/payload/components/passkeys/index.scss +98 -0
  302. package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts +9 -0
  303. package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts.map +1 -0
  304. package/dist/better-auth/plugin/payload/components/passkeys/list.js +57 -0
  305. package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +23 -0
  306. package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts.map +1 -0
  307. package/dist/better-auth/plugin/payload/components/passkeys/types.js +3 -0
  308. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +7 -0
  309. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts.map +1 -0
  310. package/dist/better-auth/plugin/payload/components/rsc-redirect.js +13 -0
  311. package/dist/better-auth/plugin/payload/components/token-field.d.ts +4 -0
  312. package/dist/better-auth/plugin/payload/components/token-field.d.ts.map +1 -0
  313. package/dist/better-auth/plugin/payload/components/token-field.js +29 -0
  314. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +9 -0
  315. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts.map +1 -0
  316. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +347 -0
  317. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.scss +116 -0
  318. package/dist/better-auth/plugin/payload/exports/client.d.ts +7 -0
  319. package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -0
  320. package/dist/better-auth/plugin/payload/exports/client.js +8 -0
  321. package/dist/better-auth/plugin/payload/exports/rsc.d.ts +9 -0
  322. package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -0
  323. package/dist/better-auth/plugin/payload/exports/rsc.js +10 -0
  324. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +3 -0
  325. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts.map +1 -0
  326. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +9 -0
  327. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts +2 -0
  328. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts.map +1 -0
  329. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +22 -0
  330. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +23 -0
  331. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -0
  332. package/dist/better-auth/plugin/payload/views/admin-login/client.js +24 -0
  333. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +11 -0
  334. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -0
  335. package/dist/better-auth/plugin/payload/views/admin-login/index.js +143 -0
  336. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +23 -0
  337. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts.map +1 -0
  338. package/dist/better-auth/plugin/payload/views/admin-signup/client.js +185 -0
  339. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +10 -0
  340. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -0
  341. package/dist/better-auth/plugin/payload/views/admin-signup/index.js +92 -0
  342. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +7 -0
  343. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts.map +1 -0
  344. package/dist/better-auth/plugin/payload/views/forgot-password/client.js +104 -0
  345. package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +9 -0
  346. package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts.map +1 -0
  347. package/dist/better-auth/plugin/payload/views/forgot-password/index.js +61 -0
  348. package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +11 -0
  349. package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts.map +1 -0
  350. package/dist/better-auth/plugin/payload/views/reset-password/client.js +111 -0
  351. package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +9 -0
  352. package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts.map +1 -0
  353. package/dist/better-auth/plugin/payload/views/reset-password/index.js +78 -0
  354. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +9 -0
  355. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts.map +1 -0
  356. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +79 -0
  357. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +10 -0
  358. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts.map +1 -0
  359. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +49 -0
  360. package/dist/better-auth/plugin/types.d.ts +448 -0
  361. package/dist/better-auth/plugin/types.d.ts.map +1 -0
  362. package/dist/better-auth/plugin/types.js +3 -0
  363. package/dist/better-auth/plugin/utils/set.d.ts +40 -0
  364. package/dist/better-auth/plugin/utils/set.d.ts.map +1 -0
  365. package/dist/better-auth/plugin/utils/set.js +84 -0
  366. package/dist/better-auth/scripts/generate-types.d.ts +2 -0
  367. package/dist/better-auth/scripts/generate-types.d.ts.map +1 -0
  368. package/dist/better-auth/scripts/generate-types.js +225 -0
  369. package/dist/better-auth/types.d.ts +3 -0
  370. package/dist/better-auth/types.d.ts.map +1 -0
  371. package/dist/better-auth/types.js +4 -0
  372. package/dist/index.d.ts +2 -0
  373. package/dist/index.d.ts.map +1 -0
  374. package/dist/index.js +4 -0
  375. package/dist/shared/components/icons.d.ts +8 -0
  376. package/dist/shared/components/icons.d.ts.map +1 -0
  377. package/dist/shared/components/icons.js +436 -0
  378. package/dist/shared/components/logo.d.ts +3 -0
  379. package/dist/shared/components/logo.d.ts.map +1 -0
  380. package/dist/shared/components/logo.js +24 -0
  381. package/dist/shared/form/components/submit.d.ts +8 -0
  382. package/dist/shared/form/components/submit.d.ts.map +1 -0
  383. package/dist/shared/form/components/submit.js +23 -0
  384. package/dist/shared/form/fields/text-field.d.ts +9 -0
  385. package/dist/shared/form/fields/text-field.d.ts.map +1 -0
  386. package/dist/shared/form/fields/text-field.js +44 -0
  387. package/dist/shared/form/index.d.ts +28 -0
  388. package/dist/shared/form/index.d.ts.map +1 -0
  389. package/dist/shared/form/index.js +17 -0
  390. package/dist/shared/form/ui/header/index.d.ts +9 -0
  391. package/dist/shared/form/ui/header/index.d.ts.map +1 -0
  392. package/dist/shared/form/ui/header/index.js +23 -0
  393. package/dist/shared/form/ui/header/index.scss +8 -0
  394. package/dist/shared/form/ui/index.d.ts +34 -0
  395. package/dist/shared/form/ui/index.d.ts.map +1 -0
  396. package/dist/shared/form/ui/index.js +70 -0
  397. package/dist/shared/form/ui/index.scss +27 -0
  398. package/dist/shared/form/validation.d.ts +65 -0
  399. package/dist/shared/form/validation.d.ts.map +1 -0
  400. package/dist/shared/form/validation.js +108 -0
  401. package/dist/shared/index.d.ts +3 -0
  402. package/dist/shared/index.d.ts.map +1 -0
  403. package/dist/shared/index.js +4 -0
  404. package/dist/shared/payload/fields/field-copy-button/index.css +47 -0
  405. package/dist/shared/payload/fields/field-copy-button/index.d.ts +4 -0
  406. package/dist/shared/payload/fields/field-copy-button/index.d.ts.map +1 -0
  407. package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
  408. package/dist/shared/payload/fields/generate-uuid-button/index.css +14 -0
  409. package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +4 -0
  410. package/dist/shared/payload/fields/generate-uuid-button/index.d.ts.map +1 -0
  411. package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
  412. package/dist/shared/payload/fields/index.d.ts +3 -0
  413. package/dist/shared/payload/fields/index.d.ts.map +1 -0
  414. package/dist/shared/payload/fields/index.js +4 -0
  415. package/dist/shared/utils/regex.d.ts +3 -0
  416. package/dist/shared/utils/regex.d.ts.map +1 -0
  417. package/dist/shared/utils/regex.js +4 -0
  418. package/dist/shared/utils/try-catch.d.ts +12 -0
  419. package/dist/shared/utils/try-catch.d.ts.map +1 -0
  420. package/dist/shared/utils/try-catch.js +17 -0
  421. package/dist/shared/utils/value-or-default.d.ts +10 -0
  422. package/dist/shared/utils/value-or-default.d.ts.map +1 -0
  423. package/dist/shared/utils/value-or-default.js +12 -0
  424. package/package.json +124 -0
@@ -0,0 +1,213 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button, Modal, Select, TextInput, toast, useConfig, useModal } from "@payloadcms/ui";
4
+ import { Copy, Loader2, XIcon } from "lucide-react";
5
+ import { usePathname } from "next/navigation";
6
+ import React, { useState } from "react";
7
+ import { adminEndpoints } from "../../../constants";
8
+ import "./index.scss";
9
+ const baseClass = "admin-invite-modal";
10
+ export function AdminInviteButton({ roles }) {
11
+ const [role, setRole] = useState(undefined);
12
+ const [email, setEmail] = useState("");
13
+ const [inviteLink, setInviteLink] = useState("");
14
+ const [isLoading, setIsLoading] = useState(false);
15
+ const [isCopyLoading, setIsCopyLoading] = useState(false);
16
+ const { toggleModal } = useModal();
17
+ const { config: { serverURL, routes: { api: apiRoute, admin: adminRoute }, admin: { user: userSlug } } } = useConfig();
18
+ // Only render invite button in list view.
19
+ const pathname = usePathname();
20
+ if (pathname !== `${adminRoute}/collections/${userSlug}`) return null;
21
+ const handleGenerateInvite = async ()=>{
22
+ if (!role) {
23
+ toast.error("Please select a role first");
24
+ return null;
25
+ }
26
+ try {
27
+ const url = `${serverURL}${apiRoute}/${userSlug}${adminEndpoints.generateInviteUrl}`;
28
+ const response = await fetch(url, {
29
+ method: "POST",
30
+ headers: {
31
+ "Content-Type": "application/json"
32
+ },
33
+ body: JSON.stringify({
34
+ role
35
+ }),
36
+ credentials: "include"
37
+ });
38
+ if (!response.ok) throw new Error("Failed to generate invite");
39
+ const data = await response.json();
40
+ setInviteLink(data.inviteLink);
41
+ return data.inviteLink;
42
+ } catch (error) {
43
+ toast.error("Failed to generate invite link");
44
+ return null;
45
+ }
46
+ };
47
+ const handleSendEmail = async ()=>{
48
+ if (!role) {
49
+ toast.error("Please select a role first");
50
+ return;
51
+ }
52
+ if (!email) {
53
+ toast.error("Please enter an email address");
54
+ return;
55
+ }
56
+ try {
57
+ setIsLoading(true);
58
+ let linkToCopy = inviteLink;
59
+ if (!linkToCopy) {
60
+ linkToCopy = await handleGenerateInvite();
61
+ }
62
+ if (linkToCopy) {
63
+ const response = await fetch(`${serverURL}${apiRoute}/${userSlug}${adminEndpoints.sendInvite}`, {
64
+ method: "POST",
65
+ headers: {
66
+ "Content-Type": "application/json"
67
+ },
68
+ body: JSON.stringify({
69
+ email,
70
+ link: linkToCopy
71
+ }),
72
+ credentials: "include"
73
+ });
74
+ if (!response.ok) throw new Error("Failed to send invite");
75
+ toast.success("Invite sent successfully");
76
+ handleToggleModal();
77
+ }
78
+ } catch (error) {
79
+ toast.error("Failed to send invite email");
80
+ } finally{
81
+ setIsLoading(false);
82
+ }
83
+ };
84
+ const handleCopyLink = async ()=>{
85
+ if (!role) {
86
+ toast.error("Please select a role first");
87
+ return;
88
+ }
89
+ try {
90
+ setIsCopyLoading(true);
91
+ let linkToCopy = inviteLink;
92
+ if (!linkToCopy) {
93
+ linkToCopy = await handleGenerateInvite();
94
+ }
95
+ if (linkToCopy) {
96
+ await navigator.clipboard.writeText(linkToCopy);
97
+ toast.success("Invite link copied to clipboard");
98
+ toggleModal("admin-invite-modal");
99
+ }
100
+ } catch (error) {
101
+ toast.error("Failed to copy invite link");
102
+ } finally{
103
+ setIsCopyLoading(false);
104
+ }
105
+ };
106
+ const handleToggleModal = ()=>{
107
+ toggleModal("admin-invite-modal");
108
+ };
109
+ return /*#__PURE__*/ _jsxs(_Fragment, {
110
+ children: [
111
+ /*#__PURE__*/ _jsx(Button, {
112
+ onClick: handleToggleModal,
113
+ type: "button",
114
+ size: "small",
115
+ buttonStyle: "pill",
116
+ className: "admin-invite-button",
117
+ children: "Invite User"
118
+ }),
119
+ /*#__PURE__*/ _jsx(Modal, {
120
+ slug: "admin-invite-modal",
121
+ className: `${baseClass}`,
122
+ closeOnBlur: true,
123
+ children: /*#__PURE__*/ _jsxs("div", {
124
+ className: `${baseClass}__wrapper`,
125
+ children: [
126
+ /*#__PURE__*/ _jsx(Button, {
127
+ onClick: handleToggleModal,
128
+ buttonStyle: "icon-label",
129
+ size: "small",
130
+ className: `${baseClass}__close-button`,
131
+ children: /*#__PURE__*/ _jsx(XIcon, {
132
+ size: 24
133
+ })
134
+ }),
135
+ /*#__PURE__*/ _jsxs("div", {
136
+ className: `${baseClass}__content`,
137
+ style: {
138
+ maxWidth: "38rem"
139
+ },
140
+ children: [
141
+ /*#__PURE__*/ _jsx("h2", {
142
+ children: "Invite User"
143
+ }),
144
+ /*#__PURE__*/ _jsx("p", {
145
+ children: "Invite a user to your application. Select the role of the user and send the invite via email or copy the invite link."
146
+ }),
147
+ /*#__PURE__*/ _jsx(Select, {
148
+ options: roles,
149
+ value: role,
150
+ placeholder: "Select Role",
151
+ onChange: (option)=>setRole(option)
152
+ }),
153
+ /*#__PURE__*/ _jsxs("div", {
154
+ className: `${baseClass}__invite-controls`,
155
+ children: [
156
+ /*#__PURE__*/ _jsx("div", {
157
+ className: `${baseClass}__email-field`,
158
+ children: /*#__PURE__*/ _jsx(TextInput, {
159
+ label: "Email Address",
160
+ path: "email",
161
+ value: email,
162
+ onChange: (e)=>setEmail(e.target.value),
163
+ placeholder: "user@example.com"
164
+ })
165
+ }),
166
+ /*#__PURE__*/ _jsxs("div", {
167
+ className: `${baseClass}__buttons`,
168
+ children: [
169
+ /*#__PURE__*/ _jsxs(Button, {
170
+ type: "button",
171
+ onClick: handleSendEmail,
172
+ disabled: isLoading || !role || !email,
173
+ children: [
174
+ isLoading ? /*#__PURE__*/ _jsx(Loader2, {
175
+ size: 24,
176
+ className: "mr-2 animate-spin"
177
+ }) : null,
178
+ "Send Email"
179
+ ]
180
+ }),
181
+ /*#__PURE__*/ _jsxs(Button, {
182
+ size: "medium",
183
+ buttonStyle: "transparent",
184
+ className: `${baseClass}__copy-button`,
185
+ type: "button",
186
+ onClick: handleCopyLink,
187
+ disabled: isCopyLoading || !role,
188
+ children: [
189
+ isCopyLoading ? /*#__PURE__*/ _jsx(Loader2, {
190
+ size: 20,
191
+ strokeWidth: 1.5,
192
+ className: "animate-spin"
193
+ }) : /*#__PURE__*/ _jsx(Copy, {
194
+ size: 20,
195
+ strokeWidth: 1.5
196
+ }),
197
+ "Generate Link"
198
+ ]
199
+ })
200
+ ]
201
+ })
202
+ ]
203
+ })
204
+ ]
205
+ })
206
+ ]
207
+ })
208
+ })
209
+ ]
210
+ });
211
+ }
212
+
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL2FkbWluLWludml0ZS1idXR0b24vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQge1xuICBCdXR0b24sXG4gIE1vZGFsLFxuICBTZWxlY3QsXG4gIFRleHRJbnB1dCxcbiAgdG9hc3QsXG4gIHVzZUNvbmZpZyxcbiAgdXNlTW9kYWxcbn0gZnJvbSBcIkBwYXlsb2FkY21zL3VpXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbiB9IGZyb20gXCJAcGF5bG9hZGNtcy91aS9lbGVtZW50cy9SZWFjdFNlbGVjdFwiO1xuaW1wb3J0IHsgQ29weSwgTG9hZGVyMiwgWEljb24gfSBmcm9tIFwibHVjaWRlLXJlYWN0XCI7XG5pbXBvcnQgeyB1c2VQYXRobmFtZSB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgYWRtaW5FbmRwb2ludHMgfSBmcm9tIFwiQC9iZXR0ZXItYXV0aC9wbHVnaW4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCBcIi4vaW5kZXguc2Nzc1wiO1xuXG5jb25zdCBiYXNlQ2xhc3MgPSBcImFkbWluLWludml0ZS1tb2RhbFwiO1xuXG5pbnRlcmZhY2UgQWRtaW5JbnZpdGVCdXR0b25Qcm9wcyB7XG4gIHJvbGVzOiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQWRtaW5JbnZpdGVCdXR0b24oeyByb2xlcyB9OiBBZG1pbkludml0ZUJ1dHRvblByb3BzKSB7XG4gIGNvbnN0IFtyb2xlLCBzZXRSb2xlXSA9IHVzZVN0YXRlPE9wdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgW2VtYWlsLCBzZXRFbWFpbF0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW2ludml0ZUxpbmssIHNldEludml0ZUxpbmtdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc0NvcHlMb2FkaW5nLCBzZXRJc0NvcHlMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyB0b2dnbGVNb2RhbCB9ID0gdXNlTW9kYWwoKTtcblxuICBjb25zdCB7XG4gICAgY29uZmlnOiB7XG4gICAgICBzZXJ2ZXJVUkwsXG4gICAgICByb3V0ZXM6IHsgYXBpOiBhcGlSb3V0ZSwgYWRtaW46IGFkbWluUm91dGUgfSxcbiAgICAgIGFkbWluOiB7IHVzZXI6IHVzZXJTbHVnIH1cbiAgICB9XG4gIH0gPSB1c2VDb25maWcoKTtcblxuICAvLyBPbmx5IHJlbmRlciBpbnZpdGUgYnV0dG9uIGluIGxpc3Qgdmlldy5cbiAgY29uc3QgcGF0aG5hbWUgPSB1c2VQYXRobmFtZSgpO1xuICBpZiAocGF0aG5hbWUgIT09IGAke2FkbWluUm91dGV9L2NvbGxlY3Rpb25zLyR7dXNlclNsdWd9YCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgaGFuZGxlR2VuZXJhdGVJbnZpdGUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFyb2xlKSB7XG4gICAgICB0b2FzdC5lcnJvcihcIlBsZWFzZSBzZWxlY3QgYSByb2xlIGZpcnN0XCIpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IGAke3NlcnZlclVSTH0ke2FwaVJvdXRlfS8ke3VzZXJTbHVnfSR7YWRtaW5FbmRwb2ludHMuZ2VuZXJhdGVJbnZpdGVVcmx9YDtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHJvbGUgfSksXG4gICAgICAgIGNyZWRlbnRpYWxzOiBcImluY2x1ZGVcIlxuICAgICAgfSk7XG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2VuZXJhdGUgaW52aXRlXCIpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgIHNldEludml0ZUxpbmsoZGF0YS5pbnZpdGVMaW5rKTtcbiAgICAgIHJldHVybiBkYXRhLmludml0ZUxpbms7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRvYXN0LmVycm9yKFwiRmFpbGVkIHRvIGdlbmVyYXRlIGludml0ZSBsaW5rXCIpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVNlbmRFbWFpbCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIXJvbGUpIHtcbiAgICAgIHRvYXN0LmVycm9yKFwiUGxlYXNlIHNlbGVjdCBhIHJvbGUgZmlyc3RcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFlbWFpbCkge1xuICAgICAgdG9hc3QuZXJyb3IoXCJQbGVhc2UgZW50ZXIgYW4gZW1haWwgYWRkcmVzc1wiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgICAgbGV0IGxpbmtUb0NvcHkgPSBpbnZpdGVMaW5rO1xuICAgICAgaWYgKCFsaW5rVG9Db3B5KSB7XG4gICAgICAgIGxpbmtUb0NvcHkgPSBhd2FpdCBoYW5kbGVHZW5lcmF0ZUludml0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGxpbmtUb0NvcHkpIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChcbiAgICAgICAgICBgJHtzZXJ2ZXJVUkx9JHthcGlSb3V0ZX0vJHt1c2VyU2x1Z30ke2FkbWluRW5kcG9pbnRzLnNlbmRJbnZpdGV9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZW1haWwsIGxpbms6IGxpbmtUb0NvcHkgfSksXG4gICAgICAgICAgICBjcmVkZW50aWFsczogXCJpbmNsdWRlXCJcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBzZW5kIGludml0ZVwiKTtcbiAgICAgICAgdG9hc3Quc3VjY2VzcyhcIkludml0ZSBzZW50IHN1Y2Nlc3NmdWxseVwiKTtcbiAgICAgICAgaGFuZGxlVG9nZ2xlTW9kYWwoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdG9hc3QuZXJyb3IoXCJGYWlsZWQgdG8gc2VuZCBpbnZpdGUgZW1haWxcIik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNvcHlMaW5rID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghcm9sZSkge1xuICAgICAgdG9hc3QuZXJyb3IoXCJQbGVhc2Ugc2VsZWN0IGEgcm9sZSBmaXJzdFwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgc2V0SXNDb3B5TG9hZGluZyh0cnVlKTtcbiAgICAgIGxldCBsaW5rVG9Db3B5ID0gaW52aXRlTGluaztcblxuICAgICAgaWYgKCFsaW5rVG9Db3B5KSB7XG4gICAgICAgIGxpbmtUb0NvcHkgPSBhd2FpdCBoYW5kbGVHZW5lcmF0ZUludml0ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAobGlua1RvQ29weSkge1xuICAgICAgICBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChsaW5rVG9Db3B5KTtcbiAgICAgICAgdG9hc3Quc3VjY2VzcyhcIkludml0ZSBsaW5rIGNvcGllZCB0byBjbGlwYm9hcmRcIik7XG4gICAgICAgIHRvZ2dsZU1vZGFsKFwiYWRtaW4taW52aXRlLW1vZGFsXCIpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0b2FzdC5lcnJvcihcIkZhaWxlZCB0byBjb3B5IGludml0ZSBsaW5rXCIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc0NvcHlMb2FkaW5nKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlTW9kYWwgPSAoKSA9PiB7XG4gICAgdG9nZ2xlTW9kYWwoXCJhZG1pbi1pbnZpdGUtbW9kYWxcIik7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJ1dHRvblxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVUb2dnbGVNb2RhbH1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgIGJ1dHRvblN0eWxlPVwicGlsbFwiXG4gICAgICAgIGNsYXNzTmFtZT1cImFkbWluLWludml0ZS1idXR0b25cIlxuICAgICAgPlxuICAgICAgICBJbnZpdGUgVXNlclxuICAgICAgPC9CdXR0b24+XG4gICAgICA8TW9kYWwgc2x1Zz1cImFkbWluLWludml0ZS1tb2RhbFwiIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfWB9IGNsb3NlT25CbHVyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZU1vZGFsfVxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJpY29uLWxhYmVsXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Nsb3NlLWJ1dHRvbmB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFhJY29uIHNpemU9ezI0fSAvPlxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY29udGVudGB9XG4gICAgICAgICAgICBzdHlsZT17eyBtYXhXaWR0aDogXCIzOHJlbVwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGgyPkludml0ZSBVc2VyPC9oMj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICBJbnZpdGUgYSB1c2VyIHRvIHlvdXIgYXBwbGljYXRpb24uIFNlbGVjdCB0aGUgcm9sZSBvZiB0aGUgdXNlciBhbmRcbiAgICAgICAgICAgICAgc2VuZCB0aGUgaW52aXRlIHZpYSBlbWFpbCBvciBjb3B5IHRoZSBpbnZpdGUgbGluay5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgb3B0aW9ucz17cm9sZXN9XG4gICAgICAgICAgICAgIHZhbHVlPXtyb2xlfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBSb2xlXCJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhvcHRpb246IGFueSkgPT4gc2V0Um9sZShvcHRpb24pfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2ludml0ZS1jb250cm9sc2B9PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZW1haWwtZmllbGRgfT5cbiAgICAgICAgICAgICAgICA8VGV4dElucHV0XG4gICAgICAgICAgICAgICAgICBsYWJlbD1cIkVtYWlsIEFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgcGF0aD1cImVtYWlsXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtlbWFpbH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZTogYW55KSA9PiBzZXRFbWFpbChlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInVzZXJAZXhhbXBsZS5jb21cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19idXR0b25zYH0+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kRW1haWx9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNMb2FkaW5nIHx8ICFyb2xlIHx8ICFlbWFpbH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgICAgICAgICA8TG9hZGVyMiBzaXplPXsyNH0gY2xhc3NOYW1lPVwibXItMiBhbmltYXRlLXNwaW5cIiAvPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICBTZW5kIEVtYWlsXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG5cbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvblN0eWxlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jb3B5LWJ1dHRvbmB9XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHlMaW5rfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQ29weUxvYWRpbmcgfHwgIXJvbGV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2lzQ29weUxvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxMb2FkZXIyXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MjB9XG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezEuNX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhbmltYXRlLXNwaW5cIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPENvcHkgc2l6ZT17MjB9IHN0cm9rZVdpZHRoPXsxLjV9IC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgTGlua1xuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvTW9kYWw+XG4gICAgPC8+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiQnV0dG9uIiwiTW9kYWwiLCJTZWxlY3QiLCJUZXh0SW5wdXQiLCJ0b2FzdCIsInVzZUNvbmZpZyIsInVzZU1vZGFsIiwiQ29weSIsIkxvYWRlcjIiLCJYSWNvbiIsInVzZVBhdGhuYW1lIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImFkbWluRW5kcG9pbnRzIiwiYmFzZUNsYXNzIiwiQWRtaW5JbnZpdGVCdXR0b24iLCJyb2xlcyIsInJvbGUiLCJzZXRSb2xlIiwidW5kZWZpbmVkIiwiZW1haWwiLCJzZXRFbWFpbCIsImludml0ZUxpbmsiLCJzZXRJbnZpdGVMaW5rIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwiaXNDb3B5TG9hZGluZyIsInNldElzQ29weUxvYWRpbmciLCJ0b2dnbGVNb2RhbCIsImNvbmZpZyIsInNlcnZlclVSTCIsInJvdXRlcyIsImFwaSIsImFwaVJvdXRlIiwiYWRtaW4iLCJhZG1pblJvdXRlIiwidXNlciIsInVzZXJTbHVnIiwicGF0aG5hbWUiLCJoYW5kbGVHZW5lcmF0ZUludml0ZSIsImVycm9yIiwidXJsIiwiZ2VuZXJhdGVJbnZpdGVVcmwiLCJyZXNwb25zZSIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwiY3JlZGVudGlhbHMiLCJvayIsIkVycm9yIiwiZGF0YSIsImpzb24iLCJoYW5kbGVTZW5kRW1haWwiLCJsaW5rVG9Db3B5Iiwic2VuZEludml0ZSIsImxpbmsiLCJzdWNjZXNzIiwiaGFuZGxlVG9nZ2xlTW9kYWwiLCJoYW5kbGVDb3B5TGluayIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsIm9uQ2xpY2siLCJ0eXBlIiwic2l6ZSIsImJ1dHRvblN0eWxlIiwiY2xhc3NOYW1lIiwic2x1ZyIsImNsb3NlT25CbHVyIiwiZGl2Iiwic3R5bGUiLCJtYXhXaWR0aCIsImgyIiwicCIsIm9wdGlvbnMiLCJ2YWx1ZSIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJvcHRpb24iLCJsYWJlbCIsInBhdGgiLCJlIiwidGFyZ2V0IiwiZGlzYWJsZWQiLCJzdHJva2VXaWR0aCJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsU0FDRUEsTUFBTSxFQUNOQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxLQUFLLEVBQ0xDLFNBQVMsRUFDVEMsUUFBUSxRQUNILGlCQUFpQjtBQUV4QixTQUFTQyxJQUFJLEVBQUVDLE9BQU8sRUFBRUMsS0FBSyxRQUFRLGVBQWU7QUFDcEQsU0FBU0MsV0FBVyxRQUFRLGtCQUFrQjtBQUM5QyxPQUFPQyxTQUFTQyxRQUFRLFFBQVEsUUFBUTtBQUN4QyxTQUFTQyxjQUFjLFFBQVEscUJBQWlDO0FBRWhFLE9B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
@@ -0,0 +1,136 @@
1
+ @mixin blur-bg($color: var(--theme-bg), $opacity: 0.75) {
2
+
3
+ &:before,
4
+ &:after {
5
+ content: ' ';
6
+ position: absolute;
7
+ top: 0;
8
+ right: 0;
9
+ bottom: 0;
10
+ left: 0;
11
+ }
12
+
13
+ &:before {
14
+ background: $color;
15
+ opacity: $opacity;
16
+ }
17
+
18
+ &:after {
19
+ backdrop-filter: blur(8px);
20
+ }
21
+ }
22
+
23
+ @layer payload-default {
24
+ .list-header:has(.collection-list__sub-header .admin-invite-button) {
25
+ display: flex;
26
+ align-items: center;
27
+ }
28
+
29
+ .list-header:has(.collection-list__sub-header .admin-invite-button) .list-selection {
30
+ order: 2;
31
+ margin-left: 0;
32
+ }
33
+
34
+ .list-header:has(.collection-list__sub-header .admin-invite-button) .collection-list__sub-header {
35
+ margin-left: auto;
36
+ display: flex;
37
+ justify-content: flex-start;
38
+ flex-basis: auto !important;
39
+ }
40
+
41
+ .list-header:has(.collection-list__sub-header .admin-invite-button) .btn {
42
+ flex-shrink: 0;
43
+ margin-bottom: 0;
44
+ }
45
+ }
46
+
47
+ @layer payload-default {
48
+ .admin-invite-modal {
49
+ @include blur-bg;
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ height: 100%;
54
+
55
+ &__wrapper {
56
+ z-index: 1;
57
+ position: relative;
58
+ display: flex;
59
+ flex-direction: column;
60
+ gap: 16px;
61
+ border-radius: 3px;
62
+ border: 1px solid var(--theme-border-color);
63
+ background-color: var(--theme-elevation-50);
64
+ }
65
+
66
+ &__close-button {
67
+ position: absolute;
68
+ top: 0;
69
+ right: 0;
70
+ margin-block: 0 !important;
71
+ padding: 10px !important;
72
+
73
+ svg {
74
+ width: 24px;
75
+ height: 24px;
76
+ }
77
+ }
78
+
79
+ &__content {
80
+ display: flex;
81
+ flex-direction: column;
82
+ gap: 1.5rem;
83
+ padding: 1rem;
84
+
85
+ h1 {
86
+ font-size: 1.5rem;
87
+ font-weight: 600;
88
+ margin: 0;
89
+ }
90
+
91
+ p {
92
+ margin: 0;
93
+ color: var(--theme-elevation-500);
94
+ }
95
+ }
96
+
97
+ &__invite-controls {
98
+ display: flex;
99
+ flex-direction: column;
100
+ gap: 1rem;
101
+ margin-top: 0.5rem;
102
+ }
103
+
104
+ &__email-field {
105
+ width: 100%;
106
+ }
107
+
108
+ &__buttons {
109
+ display: flex;
110
+ gap: 1rem;
111
+ align-items: center;
112
+ justify-content: flex-end;
113
+
114
+ >.btn {
115
+ margin-block: 0.5rem !important;
116
+ }
117
+ }
118
+
119
+ &__copy-button {
120
+ &:hover {
121
+ background-color: var(--theme-elevation-200) !important;
122
+ }
123
+
124
+ .btn__label {
125
+ gap: 0.5rem;
126
+ display: flex;
127
+ align-items: center;
128
+ justify-content: center;
129
+ }
130
+ }
131
+ }
132
+
133
+ .admin-invite-button {
134
+ display: block;
135
+ }
136
+ }
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import "./index.scss";
3
+ export declare function AlternativeMethods(): React.JSX.Element | null;
4
+ //# sourceMappingURL=alternative-methods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alternative-methods.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/components/login-form/alternative-methods.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,cAAc,CAAC;AAsKtB,wBAAgB,kBAAkB,6BA2CjC"}
@@ -0,0 +1,197 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button, toast } from "@payloadcms/ui";
4
+ import { Key, Mail } from "lucide-react";
5
+ import { useRouter } from "next/navigation";
6
+ import React, { useEffect, useRef, useState } from "react";
7
+ import { socialProviders } from "../../../constants";
8
+ import { Icons } from "../../../../../shared/components/icons";
9
+ import { isValidEmail } from "../../../../../shared/form/validation";
10
+ import { useLoginForm } from "./context";
11
+ import "./index.scss";
12
+ const baseClass = "login-form-methods";
13
+ function MagicLinkButton() {
14
+ const { email, authClient, redirectUrl, showIconOnly } = useLoginForm();
15
+ const [loading, setLoading] = useState(false);
16
+ const [sent, setSent] = useState(false);
17
+ const sentEmailRef = useRef("");
18
+ useEffect(()=>{
19
+ if (sent && email !== sentEmailRef.current) {
20
+ setSent(false);
21
+ }
22
+ }, [
23
+ email,
24
+ sent
25
+ ]);
26
+ const handleClick = async ()=>{
27
+ if (!email) {
28
+ toast.error("Please enter your email address");
29
+ return;
30
+ }
31
+ if (!isValidEmail(email)) {
32
+ toast.error("Please enter a valid email address");
33
+ return;
34
+ }
35
+ setLoading(true);
36
+ try {
37
+ const { error } = await authClient.signIn.magicLink({
38
+ email,
39
+ callbackURL: redirectUrl
40
+ });
41
+ if (error) {
42
+ toast.error(error.message || "Failed to send magic link");
43
+ } else {
44
+ sentEmailRef.current = email;
45
+ setSent(true);
46
+ toast.success("Magic link sent! Check your email.");
47
+ }
48
+ } catch (error) {
49
+ toast.error(error?.message || "Failed to send magic link");
50
+ } finally{
51
+ setLoading(false);
52
+ }
53
+ };
54
+ const label = sent ? "Resend Magic Link" : "Magic Link";
55
+ return /*#__PURE__*/ _jsx(Button, {
56
+ type: "button",
57
+ size: "large",
58
+ className: `${baseClass}__button provider--magic-link`,
59
+ onClick: handleClick,
60
+ disabled: loading,
61
+ iconPosition: "left",
62
+ icon: /*#__PURE__*/ _jsx(Mail, {
63
+ className: `${baseClass}__icon`
64
+ }),
65
+ tooltip: showIconOnly ? "Sign in with Magic Link" : undefined,
66
+ children: !showIconOnly && /*#__PURE__*/ _jsx("span", {
67
+ children: loading ? "Sending..." : label
68
+ })
69
+ });
70
+ }
71
+ function PasskeyButton({ setLoading }) {
72
+ const router = useRouter();
73
+ const { authClient, redirectUrl, showIconOnly } = useLoginForm();
74
+ const handleClick = async ()=>{
75
+ setLoading(true);
76
+ try {
77
+ await authClient.signIn.passkey({
78
+ fetchOptions: {
79
+ onSuccess () {
80
+ if (redirectUrl) router.push(redirectUrl);
81
+ },
82
+ onError (context) {
83
+ toast.error(context.error.message || "Failed to sign in with passkey");
84
+ }
85
+ }
86
+ });
87
+ } catch (error) {
88
+ toast.error(error?.message || "Failed to sign in with passkey");
89
+ } finally{
90
+ setLoading(false);
91
+ }
92
+ };
93
+ return /*#__PURE__*/ _jsx(Button, {
94
+ type: "button",
95
+ size: "large",
96
+ className: `${baseClass}__button provider--passkey`,
97
+ onClick: handleClick,
98
+ iconPosition: "left",
99
+ icon: /*#__PURE__*/ _jsx(Key, {
100
+ className: `${baseClass}__icon`
101
+ }),
102
+ tooltip: showIconOnly ? "Sign in with Passkey" : undefined,
103
+ children: !showIconOnly && /*#__PURE__*/ _jsx("span", {
104
+ children: "Passkey"
105
+ })
106
+ });
107
+ }
108
+ function SocialButton({ provider, setLoading }) {
109
+ const { authClient, redirectUrl, isSignup, showIconOnly, adminInviteToken, newUserCallbackURL } = useLoginForm();
110
+ const Icon = Icons[provider] ?? null;
111
+ const providerName = provider.charAt(0).toUpperCase() + provider.slice(1);
112
+ const handleClick = async ()=>{
113
+ setLoading(true);
114
+ try {
115
+ const { error } = await authClient.signIn.social({
116
+ provider,
117
+ fetchOptions: {
118
+ query: {
119
+ ...isSignup && {
120
+ adminInviteToken
121
+ }
122
+ }
123
+ },
124
+ errorCallbackURL: window.location.href,
125
+ callbackURL: redirectUrl,
126
+ newUserCallbackURL,
127
+ ...isSignup && {
128
+ requestSignUp: true
129
+ }
130
+ });
131
+ if (error) {
132
+ toast.error(error.message);
133
+ }
134
+ } catch {
135
+ toast.error(`Failed to sign in with ${providerName}`);
136
+ } finally{
137
+ setLoading(false);
138
+ }
139
+ };
140
+ return /*#__PURE__*/ _jsx(Button, {
141
+ type: "button",
142
+ size: "large",
143
+ className: `${baseClass}__button provider--${provider}`,
144
+ onClick: handleClick,
145
+ iconPosition: "left",
146
+ icon: Icon ? /*#__PURE__*/ _jsx(Icon, {
147
+ className: `${baseClass}__icon`
148
+ }) : undefined,
149
+ tooltip: showIconOnly ? `Sign in with ${providerName}` : undefined,
150
+ children: !showIconOnly && /*#__PURE__*/ _jsx("span", {
151
+ children: providerName
152
+ })
153
+ });
154
+ }
155
+ export function AlternativeMethods() {
156
+ const { alternativeMethods, hasMethod, isSignup, showIconOnly } = useLoginForm();
157
+ const [_, setLoading] = useState(false);
158
+ if (alternativeMethods.length === 0) return null;
159
+ return /*#__PURE__*/ _jsxs(_Fragment, {
160
+ children: [
161
+ hasMethod("emailPassword") && /*#__PURE__*/ _jsx("div", {
162
+ className: `${baseClass}__divider`,
163
+ children: /*#__PURE__*/ _jsxs("span", {
164
+ children: [
165
+ "Or ",
166
+ isSignup ? "sign up" : "login",
167
+ " with"
168
+ ]
169
+ })
170
+ }),
171
+ /*#__PURE__*/ _jsx("div", {
172
+ className: `${baseClass} ${baseClass}--count-${showIconOnly ? "many" : alternativeMethods.length}`,
173
+ children: alternativeMethods.map((method)=>{
174
+ if (method === "passkey") {
175
+ if (isSignup) return null;
176
+ return /*#__PURE__*/ _jsx(PasskeyButton, {
177
+ setLoading: setLoading
178
+ }, method);
179
+ }
180
+ if (method === "magicLink") {
181
+ if (isSignup) return null;
182
+ return /*#__PURE__*/ _jsx(MagicLinkButton, {}, method);
183
+ }
184
+ if (socialProviders.includes(method)) {
185
+ return /*#__PURE__*/ _jsx(SocialButton, {
186
+ provider: method,
187
+ setLoading: setLoading
188
+ }, method);
189
+ }
190
+ return null;
191
+ })
192
+ })
193
+ ]
194
+ });
195
+ }
196
+
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL2xvZ2luLWZvcm0vYWx0ZXJuYXRpdmUtbWV0aG9kcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiwgdG9hc3QgfSBmcm9tIFwiQHBheWxvYWRjbXMvdWlcIjtcbmltcG9ydCB7IEtleSwgTWFpbCB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIjtcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNvY2lhbFByb3ZpZGVycyB9IGZyb20gXCJAL2JldHRlci1hdXRoL3BsdWdpbi9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgU29jaWFsUHJvdmlkZXIgfSBmcm9tIFwiQC9iZXR0ZXItYXV0aC9wbHVnaW4vdHlwZXNcIjtcbmltcG9ydCB7IEljb25zIH0gZnJvbSBcIkAvc2hhcmVkL2NvbXBvbmVudHMvaWNvbnNcIjtcbmltcG9ydCB7IGlzVmFsaWRFbWFpbCB9IGZyb20gXCJAL3NoYXJlZC9mb3JtL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IHVzZUxvZ2luRm9ybSB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCBcIi4vaW5kZXguc2Nzc1wiO1xuXG5jb25zdCBiYXNlQ2xhc3MgPSBcImxvZ2luLWZvcm0tbWV0aG9kc1wiO1xuXG5mdW5jdGlvbiBNYWdpY0xpbmtCdXR0b24oKSB7XG4gIGNvbnN0IHsgZW1haWwsIGF1dGhDbGllbnQsIHJlZGlyZWN0VXJsLCBzaG93SWNvbk9ubHkgfSA9IHVzZUxvZ2luRm9ybSgpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZW50LCBzZXRTZW50XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2VudEVtYWlsUmVmID0gdXNlUmVmKFwiXCIpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNlbnQgJiYgZW1haWwgIT09IHNlbnRFbWFpbFJlZi5jdXJyZW50KSB7XG4gICAgICBzZXRTZW50KGZhbHNlKTtcbiAgICB9XG4gIH0sIFtlbWFpbCwgc2VudF0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZW1haWwpIHtcbiAgICAgIHRvYXN0LmVycm9yKFwiUGxlYXNlIGVudGVyIHlvdXIgZW1haWwgYWRkcmVzc1wiKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkRW1haWwoZW1haWwpKSB7XG4gICAgICB0b2FzdC5lcnJvcihcIlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3NcIik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBlcnJvciB9ID0gYXdhaXQgYXV0aENsaWVudC5zaWduSW4ubWFnaWNMaW5rKHtcbiAgICAgICAgZW1haWwsXG4gICAgICAgIGNhbGxiYWNrVVJMOiByZWRpcmVjdFVybFxuICAgICAgfSk7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IoZXJyb3IubWVzc2FnZSB8fCBcIkZhaWxlZCB0byBzZW5kIG1hZ2ljIGxpbmtcIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZW50RW1haWxSZWYuY3VycmVudCA9IGVtYWlsO1xuICAgICAgICBzZXRTZW50KHRydWUpO1xuICAgICAgICB0b2FzdC5zdWNjZXNzKFwiTWFnaWMgbGluayBzZW50ISBDaGVjayB5b3VyIGVtYWlsLlwiKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICB0b2FzdC5lcnJvcihlcnJvcj8ubWVzc2FnZSB8fCBcIkZhaWxlZCB0byBzZW5kIG1hZ2ljIGxpbmtcIik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBsYWJlbCA9IHNlbnQgPyBcIlJlc2VuZCBNYWdpYyBMaW5rXCIgOiBcIk1hZ2ljIExpbmtcIjtcblxuICByZXR1cm4gKFxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fYnV0dG9uIHByb3ZpZGVyLS1tYWdpYy1saW5rYH1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgZGlzYWJsZWQ9e2xvYWRpbmd9XG4gICAgICBpY29uUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIGljb249ezxNYWlsIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faWNvbmB9IC8+fVxuICAgICAgdG9vbHRpcD17c2hvd0ljb25Pbmx5ID8gXCJTaWduIGluIHdpdGggTWFnaWMgTGlua1wiIDogdW5kZWZpbmVkfVxuICAgID5cbiAgICAgIHshc2hvd0ljb25Pbmx5ICYmIDxzcGFuPntsb2FkaW5nID8gXCJTZW5kaW5nLi4uXCIgOiBsYWJlbH08L3NwYW4+fVxuICAgIDwvQnV0dG9uPlxuICApO1xufVxuXG5pbnRlcmZhY2UgUGFzc2tleUJ1dHRvblByb3BzIHtcbiAgc2V0TG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIFBhc3NrZXlCdXR0b24oeyBzZXRMb2FkaW5nIH06IFBhc3NrZXlCdXR0b25Qcm9wcykge1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbiAgY29uc3QgeyBhdXRoQ2xpZW50LCByZWRpcmVjdFVybCwgc2hvd0ljb25Pbmx5IH0gPSB1c2VMb2dpbkZvcm0oKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IGFzeW5jICgpID0+IHtcbiAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBhdXRoQ2xpZW50LnNpZ25Jbi5wYXNza2V5KHtcbiAgICAgICAgZmV0Y2hPcHRpb25zOiB7XG4gICAgICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICAgICAgaWYgKHJlZGlyZWN0VXJsKSByb3V0ZXIucHVzaChyZWRpcmVjdFVybCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yKGNvbnRleHQ6IGFueSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoXG4gICAgICAgICAgICAgIGNvbnRleHQuZXJyb3IubWVzc2FnZSB8fCBcIkZhaWxlZCB0byBzaWduIGluIHdpdGggcGFzc2tleVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgdG9hc3QuZXJyb3IoZXJyb3I/Lm1lc3NhZ2UgfHwgXCJGYWlsZWQgdG8gc2lnbiBpbiB3aXRoIHBhc3NrZXlcIik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fYnV0dG9uIHByb3ZpZGVyLS1wYXNza2V5YH1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgaWNvblBvc2l0aW9uPVwibGVmdFwiXG4gICAgICBpY29uPXs8S2V5IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faWNvbmB9IC8+fVxuICAgICAgdG9vbHRpcD17c2hvd0ljb25Pbmx5ID8gXCJTaWduIGluIHdpdGggUGFzc2tleVwiIDogdW5kZWZpbmVkfVxuICAgID5cbiAgICAgIHshc2hvd0ljb25Pbmx5ICYmIDxzcGFuPlBhc3NrZXk8L3NwYW4+fVxuICAgIDwvQnV0dG9uPlxuICApO1xufVxuXG5pbnRlcmZhY2UgU29jaWFsQnV0dG9uUHJvcHMge1xuICBwcm92aWRlcjogU29jaWFsUHJvdmlkZXI7XG4gIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBTb2NpYWxCdXR0b24oeyBwcm92aWRlciwgc2V0TG9hZGluZyB9OiBTb2NpYWxCdXR0b25Qcm9wcykge1xuICBjb25zdCB7XG4gICAgYXV0aENsaWVudCxcbiAgICByZWRpcmVjdFVybCxcbiAgICBpc1NpZ251cCxcbiAgICBzaG93SWNvbk9ubHksXG4gICAgYWRtaW5JbnZpdGVUb2tlbixcbiAgICBuZXdVc2VyQ2FsbGJhY2tVUkxcbiAgfSA9IHVzZUxvZ2luRm9ybSgpO1xuICBjb25zdCBJY29uID0gSWNvbnNbcHJvdmlkZXIgYXMga2V5b2YgdHlwZW9mIEljb25zXSA/PyBudWxsO1xuICBjb25zdCBwcm92aWRlck5hbWUgPSBwcm92aWRlci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHByb3ZpZGVyLnNsaWNlKDEpO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gYXN5bmMgKCkgPT4ge1xuICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZXJyb3IgfSA9IGF3YWl0IGF1dGhDbGllbnQuc2lnbkluLnNvY2lhbCh7XG4gICAgICAgIHByb3ZpZGVyLFxuICAgICAgICBmZXRjaE9wdGlvbnM6IHtcbiAgICAgICAgICBxdWVyeToge1xuICAgICAgICAgICAgLi4uKGlzU2lnbnVwICYmIHsgYWRtaW5JbnZpdGVUb2tlbiB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3JDYWxsYmFja1VSTDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgIGNhbGxiYWNrVVJMOiByZWRpcmVjdFVybCxcbiAgICAgICAgbmV3VXNlckNhbGxiYWNrVVJMLFxuICAgICAgICAuLi4oaXNTaWdudXAgJiYgeyByZXF1ZXN0U2lnblVwOiB0cnVlIH0pXG4gICAgICB9KTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHRvYXN0LmVycm9yKGBGYWlsZWQgdG8gc2lnbiBpbiB3aXRoICR7cHJvdmlkZXJOYW1lfWApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2J1dHRvbiBwcm92aWRlci0tJHtwcm92aWRlcn1gfVxuICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICBpY29uUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgIGljb249e0ljb24gPyA8SWNvbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2ljb25gfSAvPiA6IHVuZGVmaW5lZH1cbiAgICAgIHRvb2x0aXA9e3Nob3dJY29uT25seSA/IGBTaWduIGluIHdpdGggJHtwcm92aWRlck5hbWV9YCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICB7IXNob3dJY29uT25seSAmJiA8c3Bhbj57cHJvdmlkZXJOYW1lfTwvc3Bhbj59XG4gICAgPC9CdXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBbHRlcm5hdGl2ZU1ldGhvZHMoKSB7XG4gIGNvbnN0IHsgYWx0ZXJuYXRpdmVNZXRob2RzLCBoYXNNZXRob2QsIGlzU2lnbnVwLCBzaG93SWNvbk9ubHkgfSA9XG4gICAgdXNlTG9naW5Gb3JtKCk7XG4gIGNvbnN0IFtfLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBpZiAoYWx0ZXJuYXRpdmVNZXRob2RzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2hhc01ldGhvZChcImVtYWlsUGFzc3dvcmRcIikgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZGl2aWRlcmB9PlxuICAgICAgICAgIDxzcGFuPk9yIHtpc1NpZ251cCA/IFwic2lnbiB1cFwiIDogXCJsb2dpblwifSB3aXRoPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfSAke2Jhc2VDbGFzc30tLWNvdW50LSR7c2hvd0ljb25Pbmx5ID8gXCJtYW55XCIgOiBhbHRlcm5hdGl2ZU1ldGhvZHMubGVuZ3RofWB9XG4gICAgICA+XG4gICAgICAgIHthbHRlcm5hdGl2ZU1ldGhvZHMubWFwKChtZXRob2QpID0+IHtcbiAgICAgICAgICBpZiAobWV0aG9kID09PSBcInBhc3NrZXlcIikge1xuICAgICAgICAgICAgaWYgKGlzU2lnbnVwKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiA8UGFzc2tleUJ1dHRvbiBrZXk9e21ldGhvZH0gc2V0TG9hZGluZz17c2V0TG9hZGluZ30gLz47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJtYWdpY0xpbmtcIikge1xuICAgICAgICAgICAgaWYgKGlzU2lnbnVwKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiA8TWFnaWNMaW5rQnV0dG9uIGtleT17bWV0aG9kfSAvPjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc29jaWFsUHJvdmlkZXJzLmluY2x1ZGVzKG1ldGhvZCBhcyBTb2NpYWxQcm92aWRlcikpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTb2NpYWxCdXR0b25cbiAgICAgICAgICAgICAgICBrZXk9e21ldGhvZH1cbiAgICAgICAgICAgICAgICBwcm92aWRlcj17bWV0aG9kIGFzIFNvY2lhbFByb3ZpZGVyfVxuICAgICAgICAgICAgICAgIHNldExvYWRpbmc9e3NldExvYWRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIDwvPlxuICApO1xufVxuIl0sIm5hbWVzIjpbIkJ1dHRvbiIsInRvYXN0IiwiS2V5IiwiTWFpbCIsInVzZVJvdXRlciIsIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJzb2NpYWxQcm92aWRlcnMiLCJJY29ucyIsImlzVmFsaWRFbWFpbCIsInVzZUxvZ2luRm9ybSIsImJhc2VDbGFzcyIsIk1hZ2ljTGlua0J1dHRvbiIsImVtYWlsIiwiYXV0aENsaWVudCIsInJlZGlyZWN0VXJsIiwic2hvd0ljb25Pbmx5IiwibG9hZGluZyIsInNldExvYWRpbmciLCJzZW50Iiwic2V0U2VudCIsInNlbnRFbWFpbFJlZiIsImN1cnJlbnQiLCJoYW5kbGVDbGljayIsImVycm9yIiwic2lnbkluIiwibWFnaWNMaW5rIiwiY2FsbGJhY2tVUkwiLCJtZXNzYWdlIiwic3VjY2VzcyIsImxhYmVsIiwidHlwZSIsInNpemUiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJpY29uUG9zaXRpb24iLCJpY29uIiwidG9vbHRpcCIsInVuZGVmaW5lZCIsInNwYW4iLCJQYXNza2V5QnV0dG9uIiwicm91dGVyIiwicGFzc2tleSIsImZldGNoT3B0aW9ucyIsIm9uU3VjY2VzcyIsInB1c2giLCJvbkVycm9yIiwiY29udGV4dCIsIlNvY2lhbEJ1dHRvbiIsInByb3ZpZGVyIiwiaXNTaWdudXAiLCJhZG1pbkludml0ZVRva2VuIiwibmV3VXNlckNhbGxiYWNrVVJMIiwiSWNvbiIsInByb3ZpZGVyTmFtZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJzb2NpYWwiLCJxdWVyeSIsImVycm9yQ2FsbGJhY2tVUkwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJyZXF1ZXN0U2lnblVwIiwiQWx0ZXJuYXRpdmVNZXRob2RzIiwiYWx0ZXJuYXRpdmVNZXRob2RzIiwiaGFzTWV0aG9kIiwiXyIsImxlbmd0aCIsImRpdiIsIm1hcCIsIm1ldGhvZCIsImluY2x1ZGVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxTQUFTQSxNQUFNLEVBQUVDLEtBQUssUUFBUSxpQkFBaUI7QUFDL0MsU0FBU0MsR0FBRyxFQUFFQyxJQUFJLFFBQVEsZUFBZTtBQUN6QyxTQUFTQyxTQUFTLFFBQVEsa0JBQWtCO0FBQzVDLE9BQU9DLFNBQVNDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsUUFBUTtBQUMzRCxTQUFTQyxlQUFlLFFBQVEscUJBQWlDO0FBRWpFLFNBQVNDLEtBQUssUUFBUSx5Q0FBNEI7QUFDbEQsU0FBU0MsWUFBWSxRQUFRLHdDQUEyQjtBQUN4RCxTQUFTQyxZQUFZLFFBQVEsWUFBWTtBQUN6QyxPQUFPLGVBQWU7QUFFdEIsTUFBTUMsWUFBWTtBQUVsQixTQUFTQztJQUNQLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxVQUFVLEVBQUVDLFdBQVcsRUFBRUMsWUFBWSxFQUFFLEdBQUdOO0lBQ3pELE1BQU0sQ0FBQ08sU0FBU0MsV0FBVyxHQUFHWixTQUFTO0lBQ3ZDLE1BQU0sQ0FBQ2EsTUFBTUMsUUFBUSxHQUFHZCxTQUFTO0lBQ2pDLE1BQU1lLGVBQWVoQixPQUFPO0lBRTVCRCxVQUFVO1FBQ1IsSUFBSWUsUUFBUU4sVUFBVVEsYUFBYUMsT0FBTyxFQUFFO1lBQzFDRixRQUFRO1FBQ1Y7SUFDRixHQUFHO1FBQUNQO1FBQU9NO0tBQUs7SUFFaEIsTUFBTUksY0FBYztRQUNsQixJQUFJLENBQUNWLE9BQU87WUFDVmQsTUFBTXlCLEtBQUssQ0FBQztZQUNaO1FBQ0Y7UUFDQSxJQUFJLENBQUNmLGFBQWFJLFFBQVE7WUFDeEJkLE1BQU15QixLQUFLLENBQUM7WUFDWjtRQUNGO1FB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
@@ -0,0 +1,49 @@
1
+ import React from "react";
2
+ import type { LoginMethod } from "@/better-auth/plugin/types";
3
+ interface LoginFormContextValue {
4
+ loginMethods: LoginMethod[];
5
+ email: string;
6
+ setEmail: (email: string) => void;
7
+ redirectUrl: string;
8
+ isSignup: boolean;
9
+ authClient: any;
10
+ loginType: "email" | "username" | "emailOrUsername";
11
+ hasMethod: (method: LoginMethod) => boolean;
12
+ alternativeMethods: LoginMethod[];
13
+ showIconOnly: boolean;
14
+ adminInviteToken?: string;
15
+ newUserCallbackURL?: string;
16
+ prefill: {
17
+ email?: string;
18
+ password?: string;
19
+ username?: string;
20
+ };
21
+ }
22
+ type Prefill = {
23
+ email?: string;
24
+ password?: string;
25
+ username?: string;
26
+ };
27
+ type Plugins = {
28
+ username?: boolean;
29
+ passkey?: boolean;
30
+ magicLink?: boolean;
31
+ };
32
+ type LoginIdentifier = "email" | "username";
33
+ export interface LoginFormProviderProps {
34
+ children: React.ReactNode;
35
+ loginMethods: LoginMethod[];
36
+ redirectUrl: string;
37
+ baseURL?: string;
38
+ basePath?: string;
39
+ isSignup?: boolean;
40
+ loginIdentifiers: LoginIdentifier[];
41
+ plugins?: Plugins;
42
+ prefill?: Prefill;
43
+ adminInviteToken?: string;
44
+ newUserCallbackURL?: string;
45
+ }
46
+ export declare function LoginFormProvider({ children, loginMethods, redirectUrl, baseURL, basePath, isSignup, loginIdentifiers, plugins, prefill, adminInviteToken, newUserCallbackURL }: LoginFormProviderProps): React.JSX.Element;
47
+ export declare const useLoginForm: () => LoginFormContextValue;
48
+ export {};
49
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/components/login-form/context.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAE5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,UAAU,qBAAqB;IAC7B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,iBAAiB,CAAC;IACpD,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC;IAC5C,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAID,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,eAAe,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,OAAO,EACP,QAAQ,EACR,QAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,kBAAkB,EACnB,EAAE,sBAAsB,qBAyFxB;AAED,eAAO,MAAM,YAAY,6BAMxB,CAAC"}