@better-auth-ui/react 1.6.3 → 1.6.5

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 (355) hide show
  1. package/dist/components/auth/auth-provider.d.ts +23 -8
  2. package/dist/components/auth/auth-provider.js +35 -19
  3. package/dist/components/{email → auth/email}/email-changed.js +2 -2
  4. package/dist/components/{email → auth/email}/email-localization.js +1 -1
  5. package/dist/components/{email → auth/email}/email-styles.js +1 -1
  6. package/dist/components/{email → auth/email}/email-verification.js +2 -2
  7. package/dist/components/{email → auth/email}/magic-link.js +2 -2
  8. package/dist/components/{email → auth/email}/new-device.js +2 -2
  9. package/dist/components/{email → auth/email}/otp-email.js +2 -2
  10. package/dist/components/{email → auth/email}/password-changed.js +2 -2
  11. package/dist/components/{email → auth/email}/reset-password.js +2 -2
  12. package/dist/components/auth/fetch-options-provider.d.ts +19 -0
  13. package/dist/components/auth/fetch-options-provider.js +30 -0
  14. package/dist/email.d.ts +1 -0
  15. package/dist/email.js +11 -0
  16. package/dist/hooks/auth/use-authenticate.d.ts +5 -28
  17. package/dist/hooks/auth/use-authenticate.js +12 -12
  18. package/dist/hooks/auth/use-user.d.ts +19 -314
  19. package/dist/hooks/auth/use-user.js +5 -5
  20. package/dist/hooks/use-auth-mutation.d.ts +12 -7
  21. package/dist/hooks/use-auth-plugin.d.ts +31 -0
  22. package/dist/hooks/use-auth-plugin.js +10 -0
  23. package/dist/hooks/use-auth-query.d.ts +3 -3
  24. package/dist/index.d.ts +34 -32
  25. package/dist/index.js +75 -83
  26. package/dist/lib/auth-client.d.ts +23 -3687
  27. package/dist/lib/auth-plugin.d.ts +61 -0
  28. package/dist/lib/auth-server.d.ts +16 -0
  29. package/dist/mutations/auth/request-password-reset-mutation.d.ts +26 -0
  30. package/dist/mutations/auth/request-password-reset-mutation.js +24 -0
  31. package/dist/mutations/auth/reset-password-mutation.d.ts +25 -0
  32. package/dist/mutations/auth/reset-password-mutation.js +24 -0
  33. package/dist/mutations/auth/send-verification-email-mutation.d.ts +24 -0
  34. package/dist/mutations/auth/send-verification-email-mutation.js +24 -0
  35. package/dist/mutations/auth/sign-in-email-mutation.d.ts +71 -0
  36. package/dist/mutations/auth/sign-in-email-mutation.js +29 -0
  37. package/dist/mutations/auth/sign-in-social-mutation.d.ts +77 -0
  38. package/dist/mutations/auth/sign-in-social-mutation.js +24 -0
  39. package/dist/mutations/auth/sign-out-mutation.d.ts +25 -0
  40. package/dist/mutations/auth/sign-out-mutation.js +28 -0
  41. package/dist/mutations/auth/sign-up-email-mutation.d.ts +105 -0
  42. package/dist/mutations/auth/sign-up-email-mutation.js +29 -0
  43. package/dist/mutations/auth-mutation-options.d.ts +37 -20
  44. package/dist/mutations/auth-mutation-options.js +2 -2
  45. package/dist/mutations/magic-link/sign-in-magic-link-mutation.d.ts +24 -0
  46. package/dist/mutations/magic-link/sign-in-magic-link-mutation.js +24 -0
  47. package/dist/mutations/multi-session/revoke-multi-session-mutation.d.ts +25 -0
  48. package/dist/mutations/multi-session/revoke-multi-session-mutation.js +29 -0
  49. package/dist/mutations/multi-session/set-active-session-mutation.d.ts +62 -0
  50. package/dist/mutations/multi-session/set-active-session-mutation.js +31 -0
  51. package/dist/mutations/passkey/add-passkey-mutation.d.ts +71 -0
  52. package/dist/mutations/passkey/add-passkey-mutation.js +29 -0
  53. package/dist/mutations/passkey/delete-passkey-mutation.d.ts +25 -0
  54. package/dist/mutations/passkey/delete-passkey-mutation.js +29 -0
  55. package/dist/mutations/passkey/sign-in-passkey-mutation.d.ts +105 -0
  56. package/dist/mutations/passkey/sign-in-passkey-mutation.js +29 -0
  57. package/dist/mutations/settings/change-email-mutation.d.ts +25 -0
  58. package/dist/mutations/settings/change-email-mutation.js +29 -0
  59. package/dist/mutations/settings/change-password-mutation.d.ts +78 -0
  60. package/dist/mutations/settings/change-password-mutation.js +24 -0
  61. package/dist/mutations/settings/delete-user-mutation.d.ts +26 -0
  62. package/dist/mutations/settings/delete-user-mutation.js +24 -0
  63. package/dist/mutations/settings/link-social-mutation.d.ts +26 -0
  64. package/dist/mutations/settings/link-social-mutation.js +24 -0
  65. package/dist/mutations/settings/revoke-session-mutation.d.ts +25 -0
  66. package/dist/mutations/settings/revoke-session-mutation.js +29 -0
  67. package/dist/mutations/settings/unlink-account-mutation.d.ts +25 -0
  68. package/dist/mutations/settings/unlink-account-mutation.js +29 -0
  69. package/dist/mutations/settings/update-user-mutation.d.ts +25 -0
  70. package/dist/mutations/settings/update-user-mutation.js +35 -0
  71. package/dist/mutations/username/is-username-available-mutation.d.ts +27 -0
  72. package/dist/mutations/username/is-username-available-mutation.js +24 -0
  73. package/dist/mutations/username/sign-in-username-mutation.d.ts +75 -0
  74. package/dist/mutations/username/sign-in-username-mutation.js +29 -0
  75. package/dist/plugins/captcha-plugin.d.ts +29 -0
  76. package/dist/plugins/captcha-plugin.js +29 -0
  77. package/dist/plugins.d.ts +1 -0
  78. package/dist/plugins.js +3 -0
  79. package/dist/queries/auth/session-query.d.ts +71 -0
  80. package/dist/queries/auth/session-query.js +30 -0
  81. package/dist/queries/auth-query-options.d.ts +26 -15
  82. package/dist/queries/multi-session/list-device-sessions-query.d.ts +76 -0
  83. package/dist/queries/multi-session/list-device-sessions-query.js +31 -0
  84. package/dist/queries/passkey/list-passkeys-query.d.ts +74 -0
  85. package/dist/queries/passkey/list-passkeys-query.js +31 -0
  86. package/dist/queries/settings/account-info-query.d.ts +85 -0
  87. package/dist/queries/settings/account-info-query.js +31 -0
  88. package/dist/queries/settings/list-accounts-query.d.ts +76 -0
  89. package/dist/queries/settings/list-accounts-query.js +31 -0
  90. package/dist/queries/settings/list-sessions-query.d.ts +74 -0
  91. package/dist/queries/settings/list-sessions-query.js +31 -0
  92. package/dist/server/queries/auth/session-query.d.ts +57 -0
  93. package/dist/server/queries/auth/session-query.js +13 -0
  94. package/dist/server/queries/multi-session/list-device-sessions-query.d.ts +60 -0
  95. package/dist/server/queries/multi-session/list-device-sessions-query.js +12 -0
  96. package/dist/server/queries/passkey/list-passkeys-query.d.ts +60 -0
  97. package/dist/server/queries/passkey/list-passkeys-query.js +12 -0
  98. package/dist/server/queries/settings/account-info-query.d.ts +68 -0
  99. package/dist/server/queries/settings/account-info-query.js +12 -0
  100. package/dist/server/queries/settings/list-accounts-query.d.ts +60 -0
  101. package/dist/server/queries/settings/list-accounts-query.js +12 -0
  102. package/dist/server/queries/settings/list-sessions-query.d.ts +60 -0
  103. package/dist/server/queries/settings/list-sessions-query.js +12 -0
  104. package/dist/server.d.ts +7 -0
  105. package/dist/server.js +7 -0
  106. package/package.json +28 -22
  107. package/src/components/auth/auth-provider.tsx +88 -25
  108. package/src/components/{email → auth/email}/email-changed.tsx +1 -1
  109. package/src/components/{email → auth/email}/email-verification.tsx +1 -1
  110. package/src/components/{email → auth/email}/magic-link.tsx +1 -1
  111. package/src/components/{email → auth/email}/new-device.tsx +1 -1
  112. package/src/components/{email → auth/email}/otp-email.tsx +1 -1
  113. package/src/components/{email → auth/email}/password-changed.tsx +1 -1
  114. package/src/components/{email → auth/email}/reset-password.tsx +1 -1
  115. package/src/components/auth/fetch-options-provider.tsx +77 -0
  116. package/src/email.ts +1 -0
  117. package/src/hooks/auth/use-authenticate.ts +12 -6
  118. package/src/hooks/auth/use-user.ts +14 -9
  119. package/src/hooks/use-auth-mutation.ts +30 -12
  120. package/src/hooks/use-auth-plugin.ts +50 -0
  121. package/src/hooks/use-auth-query.ts +11 -7
  122. package/src/index.ts +34 -32
  123. package/src/lib/auth-client.ts +33 -31
  124. package/src/lib/auth-plugin.ts +77 -0
  125. package/src/lib/auth-server.ts +30 -0
  126. package/src/mutations/auth/request-password-reset-mutation.ts +58 -0
  127. package/src/mutations/auth/reset-password-mutation.ts +60 -0
  128. package/src/mutations/auth/send-verification-email-mutation.ts +58 -0
  129. package/src/mutations/auth/sign-in-email-mutation.ts +78 -0
  130. package/src/mutations/auth/sign-in-social-mutation.ts +64 -0
  131. package/src/mutations/auth/sign-out-mutation.ts +71 -0
  132. package/src/mutations/auth/sign-up-email-mutation.ts +74 -0
  133. package/src/mutations/auth-mutation-options.ts +83 -38
  134. package/src/mutations/magic-link/sign-in-magic-link-mutation.ts +59 -0
  135. package/src/mutations/multi-session/revoke-multi-session-mutation.ts +70 -0
  136. package/src/mutations/multi-session/set-active-session-mutation.ts +98 -0
  137. package/src/mutations/passkey/add-passkey-mutation.ts +66 -0
  138. package/src/mutations/passkey/delete-passkey-mutation.ts +66 -0
  139. package/src/mutations/passkey/sign-in-passkey-mutation.ts +74 -0
  140. package/src/mutations/settings/change-email-mutation.ts +67 -0
  141. package/src/mutations/settings/change-password-mutation.ts +59 -0
  142. package/src/mutations/settings/delete-user-mutation.ts +59 -0
  143. package/src/mutations/settings/link-social-mutation.ts +59 -0
  144. package/src/mutations/settings/revoke-session-mutation.ts +69 -0
  145. package/src/mutations/settings/unlink-account-mutation.ts +67 -0
  146. package/src/mutations/settings/update-user-mutation.ts +82 -0
  147. package/src/mutations/username/is-username-available-mutation.ts +62 -0
  148. package/src/mutations/username/sign-in-username-mutation.ts +74 -0
  149. package/src/plugins/captcha-plugin.tsx +75 -0
  150. package/src/plugins.ts +3 -0
  151. package/src/queries/auth/session-query.ts +135 -0
  152. package/src/queries/auth-query-options.ts +61 -12
  153. package/src/queries/multi-session/list-device-sessions-query.ts +177 -0
  154. package/src/queries/passkey/list-passkeys-query.ts +154 -0
  155. package/src/queries/settings/account-info-query.ts +158 -0
  156. package/src/queries/settings/list-accounts-query.ts +156 -0
  157. package/src/queries/settings/list-sessions-query.ts +154 -0
  158. package/src/server/queries/auth/session-query.ts +94 -0
  159. package/src/server/queries/multi-session/list-device-sessions-query.ts +102 -0
  160. package/src/server/queries/passkey/list-passkeys-query.ts +100 -0
  161. package/src/server/queries/settings/account-info-query.ts +101 -0
  162. package/src/server/queries/settings/list-accounts-query.ts +101 -0
  163. package/src/server/queries/settings/list-sessions-query.ts +101 -0
  164. package/src/server.ts +7 -0
  165. package/dist/core.d.ts +0 -1
  166. package/dist/core.js +0 -1
  167. package/dist/hooks/auth/use-is-username-available.d.ts +0 -20
  168. package/dist/hooks/auth/use-is-username-available.js +0 -13
  169. package/dist/hooks/auth/use-request-password-reset.d.ts +0 -21
  170. package/dist/hooks/auth/use-request-password-reset.js +0 -13
  171. package/dist/hooks/auth/use-reset-password.d.ts +0 -23
  172. package/dist/hooks/auth/use-reset-password.js +0 -13
  173. package/dist/hooks/auth/use-send-verification-email.d.ts +0 -19
  174. package/dist/hooks/auth/use-send-verification-email.js +0 -13
  175. package/dist/hooks/auth/use-session.d.ts +0 -35
  176. package/dist/hooks/auth/use-session.js +0 -16
  177. package/dist/hooks/auth/use-sign-in-email.d.ts +0 -26
  178. package/dist/hooks/auth/use-sign-in-email.js +0 -17
  179. package/dist/hooks/auth/use-sign-in-magic-link.d.ts +0 -27
  180. package/dist/hooks/auth/use-sign-in-magic-link.js +0 -13
  181. package/dist/hooks/auth/use-sign-in-passkey.d.ts +0 -21
  182. package/dist/hooks/auth/use-sign-in-passkey.js +0 -17
  183. package/dist/hooks/auth/use-sign-in-social.d.ts +0 -63
  184. package/dist/hooks/auth/use-sign-in-social.js +0 -13
  185. package/dist/hooks/auth/use-sign-in-username.d.ts +0 -25
  186. package/dist/hooks/auth/use-sign-in-username.js +0 -17
  187. package/dist/hooks/auth/use-sign-out.d.ts +0 -18
  188. package/dist/hooks/auth/use-sign-out.js +0 -16
  189. package/dist/hooks/auth/use-sign-up-email.d.ts +0 -1186
  190. package/dist/hooks/auth/use-sign-up-email.js +0 -17
  191. package/dist/hooks/settings/use-account-info.d.ts +0 -17
  192. package/dist/hooks/settings/use-account-info.js +0 -18
  193. package/dist/hooks/settings/use-add-passkey.d.ts +0 -21
  194. package/dist/hooks/settings/use-add-passkey.js +0 -17
  195. package/dist/hooks/settings/use-change-email.d.ts +0 -21
  196. package/dist/hooks/settings/use-change-email.js +0 -17
  197. package/dist/hooks/settings/use-change-password.d.ts +0 -21
  198. package/dist/hooks/settings/use-change-password.js +0 -13
  199. package/dist/hooks/settings/use-delete-passkey.d.ts +0 -19
  200. package/dist/hooks/settings/use-delete-passkey.js +0 -17
  201. package/dist/hooks/settings/use-delete-user.d.ts +0 -24
  202. package/dist/hooks/settings/use-delete-user.js +0 -13
  203. package/dist/hooks/settings/use-link-social.d.ts +0 -43
  204. package/dist/hooks/settings/use-link-social.js +0 -13
  205. package/dist/hooks/settings/use-list-accounts.d.ts +0 -22
  206. package/dist/hooks/settings/use-list-accounts.js +0 -15
  207. package/dist/hooks/settings/use-list-device-sessions.d.ts +0 -34
  208. package/dist/hooks/settings/use-list-device-sessions.js +0 -15
  209. package/dist/hooks/settings/use-list-sessions.d.ts +0 -23
  210. package/dist/hooks/settings/use-list-sessions.js +0 -15
  211. package/dist/hooks/settings/use-list-user-passkeys.d.ts +0 -14
  212. package/dist/hooks/settings/use-list-user-passkeys.js +0 -15
  213. package/dist/hooks/settings/use-revoke-multi-session.d.ts +0 -19
  214. package/dist/hooks/settings/use-revoke-multi-session.js +0 -17
  215. package/dist/hooks/settings/use-revoke-session.d.ts +0 -19
  216. package/dist/hooks/settings/use-revoke-session.js +0 -17
  217. package/dist/hooks/settings/use-set-active-session.d.ts +0 -20
  218. package/dist/hooks/settings/use-set-active-session.js +0 -20
  219. package/dist/hooks/settings/use-unlink-account.d.ts +0 -21
  220. package/dist/hooks/settings/use-unlink-account.js +0 -17
  221. package/dist/hooks/settings/use-update-user.d.ts +0 -1185
  222. package/dist/hooks/settings/use-update-user.js +0 -24
  223. package/dist/lib/auth-client.js +0 -11
  224. package/dist/lib/auth-config.d.ts +0 -43
  225. package/dist/lib/auth-context.d.ts +0 -2
  226. package/dist/lib/auth-context.js +0 -6
  227. package/dist/mutations/auth/is-username-available-options.d.ts +0 -19
  228. package/dist/mutations/auth/is-username-available-options.js +0 -7
  229. package/dist/mutations/auth/request-password-reset-options.d.ts +0 -15
  230. package/dist/mutations/auth/request-password-reset-options.js +0 -7
  231. package/dist/mutations/auth/reset-password-options.d.ts +0 -17
  232. package/dist/mutations/auth/reset-password-options.js +0 -7
  233. package/dist/mutations/auth/send-verification-email-options.d.ts +0 -15
  234. package/dist/mutations/auth/send-verification-email-options.js +0 -7
  235. package/dist/mutations/auth/sign-in-email-options.d.ts +0 -23
  236. package/dist/mutations/auth/sign-in-email-options.js +0 -11
  237. package/dist/mutations/auth/sign-in-magic-link-options.d.ts +0 -23
  238. package/dist/mutations/auth/sign-in-magic-link-options.js +0 -11
  239. package/dist/mutations/auth/sign-in-passkey-options.d.ts +0 -15
  240. package/dist/mutations/auth/sign-in-passkey-options.js +0 -11
  241. package/dist/mutations/auth/sign-in-social-options.d.ts +0 -61
  242. package/dist/mutations/auth/sign-in-social-options.js +0 -11
  243. package/dist/mutations/auth/sign-in-username-options.d.ts +0 -19
  244. package/dist/mutations/auth/sign-in-username-options.js +0 -11
  245. package/dist/mutations/auth/sign-out-options.d.ts +0 -12
  246. package/dist/mutations/auth/sign-out-options.js +0 -7
  247. package/dist/mutations/auth/sign-up-email-options.d.ts +0 -1180
  248. package/dist/mutations/auth/sign-up-email-options.js +0 -11
  249. package/dist/mutations/settings/add-passkey-options.d.ts +0 -15
  250. package/dist/mutations/settings/add-passkey-options.js +0 -11
  251. package/dist/mutations/settings/change-email-options.d.ts +0 -15
  252. package/dist/mutations/settings/change-email-options.js +0 -7
  253. package/dist/mutations/settings/change-password-options.d.ts +0 -17
  254. package/dist/mutations/settings/change-password-options.js +0 -7
  255. package/dist/mutations/settings/delete-passkey-options.d.ts +0 -13
  256. package/dist/mutations/settings/delete-passkey-options.js +0 -11
  257. package/dist/mutations/settings/delete-user-options.d.ts +0 -20
  258. package/dist/mutations/settings/delete-user-options.js +0 -7
  259. package/dist/mutations/settings/link-social-options.d.ts +0 -39
  260. package/dist/mutations/settings/link-social-options.js +0 -7
  261. package/dist/mutations/settings/revoke-multi-session-options.d.ts +0 -13
  262. package/dist/mutations/settings/revoke-multi-session-options.js +0 -11
  263. package/dist/mutations/settings/revoke-session-options.d.ts +0 -13
  264. package/dist/mutations/settings/revoke-session-options.js +0 -7
  265. package/dist/mutations/settings/set-active-session-options.d.ts +0 -13
  266. package/dist/mutations/settings/set-active-session-options.js +0 -11
  267. package/dist/mutations/settings/unlink-account-options.d.ts +0 -15
  268. package/dist/mutations/settings/unlink-account-options.js +0 -7
  269. package/dist/mutations/settings/update-user-options.d.ts +0 -1182
  270. package/dist/mutations/settings/update-user-options.js +0 -7
  271. package/dist/queries/auth/session-options.d.ts +0 -110
  272. package/dist/queries/auth/session-options.js +0 -7
  273. package/dist/queries/settings/account-info-options.d.ts +0 -32
  274. package/dist/queries/settings/account-info-options.js +0 -12
  275. package/dist/queries/settings/list-accounts-options.d.ts +0 -53
  276. package/dist/queries/settings/list-accounts-options.js +0 -12
  277. package/dist/queries/settings/list-device-sessions-options.d.ts +0 -99
  278. package/dist/queries/settings/list-device-sessions-options.js +0 -12
  279. package/dist/queries/settings/list-sessions-options.d.ts +0 -54
  280. package/dist/queries/settings/list-sessions-options.js +0 -12
  281. package/dist/queries/settings/list-user-passkeys-options.d.ts +0 -18
  282. package/dist/queries/settings/list-user-passkeys-options.js +0 -12
  283. package/src/core.ts +0 -1
  284. package/src/hooks/auth/use-is-username-available.ts +0 -31
  285. package/src/hooks/auth/use-request-password-reset.ts +0 -33
  286. package/src/hooks/auth/use-reset-password.ts +0 -31
  287. package/src/hooks/auth/use-send-verification-email.ts +0 -31
  288. package/src/hooks/auth/use-session.ts +0 -31
  289. package/src/hooks/auth/use-sign-in-email.ts +0 -41
  290. package/src/hooks/auth/use-sign-in-magic-link.ts +0 -29
  291. package/src/hooks/auth/use-sign-in-passkey.ts +0 -40
  292. package/src/hooks/auth/use-sign-in-social.ts +0 -31
  293. package/src/hooks/auth/use-sign-in-username.ts +0 -40
  294. package/src/hooks/auth/use-sign-out.ts +0 -34
  295. package/src/hooks/auth/use-sign-up-email.ts +0 -40
  296. package/src/hooks/settings/use-account-info.ts +0 -40
  297. package/src/hooks/settings/use-add-passkey.ts +0 -37
  298. package/src/hooks/settings/use-change-email.ts +0 -37
  299. package/src/hooks/settings/use-change-password.ts +0 -29
  300. package/src/hooks/settings/use-delete-passkey.ts +0 -37
  301. package/src/hooks/settings/use-delete-user.ts +0 -29
  302. package/src/hooks/settings/use-link-social.ts +0 -29
  303. package/src/hooks/settings/use-list-accounts.ts +0 -39
  304. package/src/hooks/settings/use-list-device-sessions.ts +0 -39
  305. package/src/hooks/settings/use-list-sessions.ts +0 -39
  306. package/src/hooks/settings/use-list-user-passkeys.ts +0 -39
  307. package/src/hooks/settings/use-revoke-multi-session.ts +0 -39
  308. package/src/hooks/settings/use-revoke-session.ts +0 -39
  309. package/src/hooks/settings/use-set-active-session.ts +0 -58
  310. package/src/hooks/settings/use-unlink-account.ts +0 -37
  311. package/src/hooks/settings/use-update-user.ts +0 -50
  312. package/src/lib/auth-config.ts +0 -48
  313. package/src/lib/auth-context.ts +0 -6
  314. package/src/mutations/auth/is-username-available-options.ts +0 -18
  315. package/src/mutations/auth/request-password-reset-options.ts +0 -14
  316. package/src/mutations/auth/reset-password-options.ts +0 -14
  317. package/src/mutations/auth/send-verification-email-options.ts +0 -14
  318. package/src/mutations/auth/sign-in-email-options.ts +0 -19
  319. package/src/mutations/auth/sign-in-magic-link-options.ts +0 -15
  320. package/src/mutations/auth/sign-in-passkey-options.ts +0 -15
  321. package/src/mutations/auth/sign-in-social-options.ts +0 -19
  322. package/src/mutations/auth/sign-in-username-options.ts +0 -15
  323. package/src/mutations/auth/sign-out-options.ts +0 -11
  324. package/src/mutations/auth/sign-up-email-options.ts +0 -15
  325. package/src/mutations/settings/add-passkey-options.ts +0 -15
  326. package/src/mutations/settings/change-email-options.ts +0 -11
  327. package/src/mutations/settings/change-password-options.ts +0 -14
  328. package/src/mutations/settings/delete-passkey-options.ts +0 -15
  329. package/src/mutations/settings/delete-user-options.ts +0 -11
  330. package/src/mutations/settings/link-social-options.ts +0 -11
  331. package/src/mutations/settings/revoke-multi-session-options.ts +0 -15
  332. package/src/mutations/settings/revoke-session-options.ts +0 -14
  333. package/src/mutations/settings/set-active-session-options.ts +0 -15
  334. package/src/mutations/settings/unlink-account-options.ts +0 -14
  335. package/src/mutations/settings/update-user-options.ts +0 -15
  336. package/src/queries/auth/session-options.ts +0 -18
  337. package/src/queries/settings/account-info-options.ts +0 -25
  338. package/src/queries/settings/list-accounts-options.ts +0 -26
  339. package/src/queries/settings/list-device-sessions-options.ts +0 -24
  340. package/src/queries/settings/list-sessions-options.ts +0 -23
  341. package/src/queries/settings/list-user-passkeys-options.ts +0 -23
  342. /package/dist/components/{email → auth/email}/email-changed.d.ts +0 -0
  343. /package/dist/components/{email → auth/email}/email-localization.d.ts +0 -0
  344. /package/dist/components/{email → auth/email}/email-styles.d.ts +0 -0
  345. /package/dist/components/{email → auth/email}/email-verification.d.ts +0 -0
  346. /package/dist/components/{email → auth/email}/index.d.ts +0 -0
  347. /package/dist/components/{email → auth/email}/index.js +0 -0
  348. /package/dist/components/{email → auth/email}/magic-link.d.ts +0 -0
  349. /package/dist/components/{email → auth/email}/new-device.d.ts +0 -0
  350. /package/dist/components/{email → auth/email}/otp-email.d.ts +0 -0
  351. /package/dist/components/{email → auth/email}/password-changed.d.ts +0 -0
  352. /package/dist/components/{email → auth/email}/reset-password.d.ts +0 -0
  353. /package/src/components/{email → auth/email}/email-localization.tsx +0 -0
  354. /package/src/components/{email → auth/email}/email-styles.tsx +0 -0
  355. /package/src/components/{email → auth/email}/index.ts +0 -0
package/src/index.ts CHANGED
@@ -1,42 +1,44 @@
1
1
  "use client"
2
2
 
3
3
  export * from "./components/auth/auth-provider"
4
- export * from "./components/email"
4
+ export * from "./components/auth/fetch-options-provider"
5
5
  export * from "./components/icons"
6
6
  export * from "./components/settings/account/theme-preview"
7
7
  export * from "./hooks/auth/use-authenticate"
8
- export * from "./hooks/auth/use-is-username-available"
9
- export * from "./hooks/auth/use-request-password-reset"
10
- export * from "./hooks/auth/use-reset-password"
11
- export * from "./hooks/auth/use-send-verification-email"
12
- export * from "./hooks/auth/use-session"
13
- export * from "./hooks/auth/use-sign-in-email"
14
- export * from "./hooks/auth/use-sign-in-magic-link"
15
- export * from "./hooks/auth/use-sign-in-passkey"
16
- export * from "./hooks/auth/use-sign-in-social"
17
- export * from "./hooks/auth/use-sign-in-username"
18
- export * from "./hooks/auth/use-sign-out"
19
- export * from "./hooks/auth/use-sign-up-email"
20
8
  export * from "./hooks/auth/use-user"
21
- export * from "./hooks/settings/use-account-info"
22
- export * from "./hooks/settings/use-add-passkey"
23
- export * from "./hooks/settings/use-change-email"
24
- export * from "./hooks/settings/use-change-password"
25
- export * from "./hooks/settings/use-delete-passkey"
26
- export * from "./hooks/settings/use-delete-user"
27
- export * from "./hooks/settings/use-link-social"
28
- export * from "./hooks/settings/use-list-accounts"
29
- export * from "./hooks/settings/use-list-device-sessions"
30
- export * from "./hooks/settings/use-list-sessions"
31
- export * from "./hooks/settings/use-list-user-passkeys"
32
- export * from "./hooks/settings/use-revoke-multi-session"
33
- export * from "./hooks/settings/use-revoke-session"
34
- export * from "./hooks/settings/use-set-active-session"
35
- export * from "./hooks/settings/use-unlink-account"
36
- export * from "./hooks/settings/use-update-user"
37
9
  export * from "./hooks/use-auth-mutation"
10
+ export * from "./hooks/use-auth-plugin"
38
11
  export * from "./hooks/use-auth-query"
39
- export * from "./lib/auth-client"
40
- export * from "./lib/auth-config"
41
- export * from "./lib/auth-context"
12
+ export type * from "./lib/auth-client"
13
+ export * from "./lib/auth-plugin"
42
14
  export * from "./lib/provider-icons"
15
+ export * from "./mutations/auth/request-password-reset-mutation"
16
+ export * from "./mutations/auth/reset-password-mutation"
17
+ export * from "./mutations/auth/send-verification-email-mutation"
18
+ export * from "./mutations/auth/sign-in-email-mutation"
19
+ export * from "./mutations/auth/sign-in-social-mutation"
20
+ export * from "./mutations/auth/sign-out-mutation"
21
+ export * from "./mutations/auth/sign-up-email-mutation"
22
+ export * from "./mutations/auth-mutation-options"
23
+ export * from "./mutations/magic-link/sign-in-magic-link-mutation"
24
+ export * from "./mutations/multi-session/revoke-multi-session-mutation"
25
+ export * from "./mutations/multi-session/set-active-session-mutation"
26
+ export * from "./mutations/passkey/add-passkey-mutation"
27
+ export * from "./mutations/passkey/delete-passkey-mutation"
28
+ export * from "./mutations/passkey/sign-in-passkey-mutation"
29
+ export * from "./mutations/settings/change-email-mutation"
30
+ export * from "./mutations/settings/change-password-mutation"
31
+ export * from "./mutations/settings/delete-user-mutation"
32
+ export * from "./mutations/settings/link-social-mutation"
33
+ export * from "./mutations/settings/revoke-session-mutation"
34
+ export * from "./mutations/settings/unlink-account-mutation"
35
+ export * from "./mutations/settings/update-user-mutation"
36
+ export * from "./mutations/username/is-username-available-mutation"
37
+ export * from "./mutations/username/sign-in-username-mutation"
38
+ export * from "./queries/auth/session-query"
39
+ export * from "./queries/auth-query-options"
40
+ export * from "./queries/multi-session/list-device-sessions-query"
41
+ export * from "./queries/passkey/list-passkeys-query"
42
+ export * from "./queries/settings/account-info-query"
43
+ export * from "./queries/settings/list-accounts-query"
44
+ export * from "./queries/settings/list-sessions-query"
@@ -1,43 +1,45 @@
1
- import { passkeyClient } from "@better-auth/passkey/client"
2
- import {
1
+ import type { passkeyClient } from "@better-auth/passkey/client"
2
+ import type {
3
3
  magicLinkClient,
4
4
  multiSessionClient,
5
5
  usernameClient
6
6
  } from "better-auth/client/plugins"
7
- import { createAuthClient } from "better-auth/react"
8
- import type { AuthConfig } from "./auth-config"
7
+ import type { createAuthClient } from "better-auth/react"
9
8
 
10
- export type { PathToObject } from "better-auth/client"
9
+ export type AuthClient = ReturnType<typeof createAuthClient>
11
10
 
12
- /**
13
- * Type representing any auth client created with `createAuthClient`.
14
- *
15
- * Used for type flexibility when accepting auth clients that may have different
16
- * plugin configurations or feature sets.
17
- */
18
- export type AnyAuthClient = Omit<ReturnType<typeof createAuthClient>, "signUp">
11
+ // The per-plugin client types below are pure type-level declarations — no
12
+ // runtime code is emitted for them. This avoids relying on `/* @__PURE__ */`
13
+ // being honoured by every downstream bundler (RSC graphs, dev builds,
14
+ // Turbopack, older configs, etc.) and keeps the plugin packages out of
15
+ // consumers' runtime bundles entirely.
19
16
 
20
- const authClient = createAuthClient({
21
- plugins: [
22
- magicLinkClient(),
23
- multiSessionClient(),
24
- passkeyClient(),
25
- usernameClient()
26
- ]
27
- })
17
+ export type MagicLinkAuthClient = ReturnType<
18
+ typeof createAuthClient<{ plugins: [ReturnType<typeof magicLinkClient>] }>
19
+ >
28
20
 
29
- /**
30
- * Type representing the default auth client with plugins enabled.
31
- *
32
- * This is the standard auth client type used throughout the React package
33
- * and includes all required plugins enabled.
34
- */
21
+ export type MultiSessionAuthClient = ReturnType<
22
+ typeof createAuthClient<{ plugins: [ReturnType<typeof multiSessionClient>] }>
23
+ >
35
24
 
36
- type ResolveAuthClient<T> = "AuthClient" extends keyof T
37
- ? T["AuthClient"]
38
- : typeof authClient
25
+ export type PasskeyAuthClient = ReturnType<
26
+ typeof createAuthClient<{ plugins: [ReturnType<typeof passkeyClient>] }>
27
+ >
28
+
29
+ export type UsernameAuthClient = ReturnType<
30
+ typeof createAuthClient<{ plugins: [ReturnType<typeof usernameClient>] }>
31
+ >
39
32
 
40
33
  /**
41
- * The resolved auth client type, either from user augmentation or the default.
34
+ * Unwraps a Better Auth client method's `data` payload.
35
+ *
36
+ * Pass the method type directly, e.g. `TAuthClient["getSession"]` or
37
+ * `TAuthClient["passkey"]["listUserPasskeys"]`. Keeping it method-typed
38
+ * (instead of a path-string utility) preserves IntelliSense on the derived
39
+ * types.
42
40
  */
43
- export type AuthClient = ResolveAuthClient<AuthConfig>
41
+ export type InferData<TMethod> = TMethod extends (
42
+ ...args: infer _Args
43
+ ) => Promise<infer TResult extends { data: unknown }>
44
+ ? TResult["data"]
45
+ : never
@@ -0,0 +1,77 @@
1
+ import type { AuthPluginBase, AuthView } from "@better-auth-ui/core"
2
+ import type { ComponentType, ReactNode } from "react"
3
+
4
+ export type { AuthPluginViewPaths } from "@better-auth-ui/core"
5
+
6
+ /** Props for plugin-contributed auth buttons (e.g. passkey, magic link). */
7
+ export type AuthButtonProps = {
8
+ className?: string
9
+ children?: ReactNode
10
+ /** Current auth view — lets buttons context-switch (e.g. show "back to sign-in"). */
11
+ view?: AuthView
12
+ }
13
+
14
+ /** Props for plugin-contributed cards under `/settings/security`. */
15
+ export type SecurityCardProps = {
16
+ className?: string
17
+ children?: ReactNode
18
+ }
19
+
20
+ /** Props for plugin-contributed cards under `/settings/account`. */
21
+ export type AccountCardProps = {
22
+ className?: string
23
+ children?: ReactNode
24
+ }
25
+
26
+ /** Props for plugin-contributed items in the `UserButton` dropdown. */
27
+ export type UserMenuItemProps = {
28
+ className?: string
29
+ }
30
+
31
+ /** Framework-agnostic slot component shapes. UI packages narrow these via `TComponents`. */
32
+ export type AuthPluginComponents = {
33
+ /** Rendered below the submit button in auth forms. */
34
+ authButtons?: ComponentType<AuthButtonProps>[]
35
+ /** Captcha widget rendered above the submit button, below additionalFields. Singular — only one captcha can be active at a time. */
36
+ captchaComponent?: ReactNode
37
+ /** Rendered as cards inside security settings. */
38
+ securityCards?: ComponentType<SecurityCardProps>[]
39
+ /** Rendered as cards inside account settings. */
40
+ accountCards?: ComponentType<AccountCardProps>[]
41
+ /** Rendered as items inside the `UserButton` dropdown. */
42
+ userMenuItems?: ComponentType<UserMenuItemProps>[]
43
+ }
44
+
45
+ /** Plugin view overrides keyed by `AuthPluginViewPaths`. Always replaces the built-in view. */
46
+ export type AuthPluginViews<TAuthViewProps, TSettingsViewProps> = {
47
+ auth?: Record<string, ComponentType<TAuthViewProps>>
48
+ settings?: Record<string, ComponentType<TSettingsViewProps>>
49
+ }
50
+
51
+ /** Conditional view replacements — only used when the built-in flow isn't viable. */
52
+ export type AuthPluginFallbackViews<TAuthViewProps> = {
53
+ auth?: {
54
+ /** Rendered at `/auth/sign-in` when `emailAndPassword.enabled === false`. */
55
+ signIn?: ComponentType<TAuthViewProps>
56
+ }
57
+ }
58
+
59
+ /**
60
+ * UI-aware plugin definition. UI packages bind the generics in their own
61
+ * `AuthPlugin` re-export so plugin authors don't have to.
62
+ *
63
+ * @typeParam TComponents - Slot component shapes (e.g. heroui variant unions).
64
+ * @typeParam TAuthViewProps - Props the `<Auth>` router spreads onto plugin auth views.
65
+ * @typeParam TSettingsViewProps - Props the `<Settings>` router spreads onto plugin settings views.
66
+ */
67
+ export type AuthPlugin<
68
+ TComponents = AuthPluginComponents,
69
+ // biome-ignore lint/suspicious/noExplicitAny: any
70
+ TAuthViewProps = any,
71
+ // biome-ignore lint/suspicious/noExplicitAny: any
72
+ TSettingsViewProps = any
73
+ > = AuthPluginBase &
74
+ TComponents & {
75
+ views?: AuthPluginViews<TAuthViewProps, TSettingsViewProps>
76
+ fallbackViews?: AuthPluginFallbackViews<TAuthViewProps>
77
+ }
@@ -0,0 +1,30 @@
1
+ import type { passkey } from "@better-auth/passkey"
2
+ import type { Auth } from "better-auth"
3
+ import type { magicLink, multiSession, username } from "better-auth/plugins"
4
+
5
+ export type AuthServer = Pick<Auth, "api">
6
+
7
+ // Per-plugin variants mirror the client-side types in `auth-client.ts` so
8
+ // server-side query factories can depend on a narrow `auth` shape that
9
+ // includes the plugin's API surface without requiring the full `betterAuth`
10
+ // return type to be threaded through as a generic.
11
+
12
+ export type MagicLinkAuthServer = Pick<
13
+ Auth<{ plugins: [ReturnType<typeof magicLink>] }>,
14
+ "api"
15
+ >
16
+
17
+ export type MultiSessionAuthServer = Pick<
18
+ Auth<{ plugins: [ReturnType<typeof multiSession>] }>,
19
+ "api"
20
+ >
21
+
22
+ export type PasskeyAuthServer = Pick<
23
+ Auth<{ plugins: [ReturnType<typeof passkey>] }>,
24
+ "api"
25
+ >
26
+
27
+ export type UsernameAuthServer = Pick<
28
+ Auth<{ plugins: [ReturnType<typeof username>] }>,
29
+ "api"
30
+ >
@@ -0,0 +1,58 @@
1
+ import { authMutationKeys } from "@better-auth-ui/core"
2
+ import { mutationOptions, useMutation } from "@tanstack/react-query"
3
+ import type { BetterFetchError } from "better-auth/react"
4
+
5
+ import type { AuthClient } from "../../lib/auth-client"
6
+
7
+ export type RequestPasswordResetParams<TAuthClient extends AuthClient> =
8
+ Parameters<TAuthClient["requestPasswordReset"]>[0]
9
+
10
+ export type RequestPasswordResetOptions<TAuthClient extends AuthClient> = Omit<
11
+ ReturnType<typeof requestPasswordResetOptions<TAuthClient>>,
12
+ "mutationKey" | "mutationFn"
13
+ >
14
+
15
+ /**
16
+ * Mutation options factory for requesting a password reset email.
17
+ *
18
+ * @param authClient - The Better Auth client.
19
+ */
20
+ export function requestPasswordResetOptions<TAuthClient extends AuthClient>(
21
+ authClient: TAuthClient
22
+ ) {
23
+ const mutationKey = authMutationKeys.requestPasswordReset
24
+
25
+ const mutationFn = (params: RequestPasswordResetParams<TAuthClient>) =>
26
+ authClient.requestPasswordReset({
27
+ ...params,
28
+ fetchOptions: { ...params?.fetchOptions, throw: true }
29
+ })
30
+
31
+ return mutationOptions<
32
+ Awaited<ReturnType<typeof mutationFn>>,
33
+ BetterFetchError,
34
+ Parameters<typeof mutationFn>[0]
35
+ >({
36
+ mutationKey,
37
+ mutationFn
38
+ })
39
+ }
40
+
41
+ /**
42
+ * Create a mutation for requesting a password reset email.
43
+ *
44
+ * Wraps `authClient.requestPasswordReset` and forwards React Query mutation
45
+ * options such as `onSuccess`, `onError`, and `retry`.
46
+ *
47
+ * @param authClient - The Better Auth client.
48
+ * @param options - React Query options forwarded to `useMutation`.
49
+ */
50
+ export function useRequestPasswordReset<TAuthClient extends AuthClient>(
51
+ authClient: TAuthClient,
52
+ options?: RequestPasswordResetOptions<TAuthClient>
53
+ ) {
54
+ return useMutation({
55
+ ...requestPasswordResetOptions(authClient),
56
+ ...options
57
+ })
58
+ }
@@ -0,0 +1,60 @@
1
+ import { authMutationKeys } from "@better-auth-ui/core"
2
+ import { mutationOptions, useMutation } from "@tanstack/react-query"
3
+ import type { BetterFetchError } from "better-auth/react"
4
+
5
+ import type { AuthClient } from "../../lib/auth-client"
6
+
7
+ export type ResetPasswordParams<TAuthClient extends AuthClient> = Parameters<
8
+ TAuthClient["resetPassword"]
9
+ >[0]
10
+
11
+ export type ResetPasswordOptions<TAuthClient extends AuthClient> = Omit<
12
+ ReturnType<typeof resetPasswordOptions<TAuthClient>>,
13
+ "mutationKey" | "mutationFn"
14
+ >
15
+
16
+ /**
17
+ * Mutation options factory for completing a password reset.
18
+ *
19
+ * @param authClient - The Better Auth client.
20
+ */
21
+ export function resetPasswordOptions<TAuthClient extends AuthClient>(
22
+ authClient: TAuthClient
23
+ ) {
24
+ const mutationKey = authMutationKeys.resetPassword
25
+
26
+ const mutationFn = (params: ResetPasswordParams<TAuthClient>) =>
27
+ authClient.resetPassword({
28
+ ...params,
29
+ fetchOptions: { ...params?.fetchOptions, throw: true }
30
+ })
31
+
32
+ return mutationOptions<
33
+ Awaited<ReturnType<typeof mutationFn>>,
34
+ BetterFetchError,
35
+ Parameters<typeof mutationFn>[0]
36
+ >({
37
+ mutationKey,
38
+ mutationFn
39
+ })
40
+ }
41
+
42
+ /**
43
+ * Create a mutation for completing a password reset.
44
+ *
45
+ * Wraps `authClient.resetPassword` (using the token from the reset email)
46
+ * and forwards React Query mutation options such as `onSuccess`, `onError`,
47
+ * and `retry`.
48
+ *
49
+ * @param authClient - The Better Auth client.
50
+ * @param options - React Query options forwarded to `useMutation`.
51
+ */
52
+ export function useResetPassword<TAuthClient extends AuthClient>(
53
+ authClient: TAuthClient,
54
+ options?: ResetPasswordOptions<TAuthClient>
55
+ ) {
56
+ return useMutation({
57
+ ...resetPasswordOptions(authClient),
58
+ ...options
59
+ })
60
+ }
@@ -0,0 +1,58 @@
1
+ import { authMutationKeys } from "@better-auth-ui/core"
2
+ import { mutationOptions, useMutation } from "@tanstack/react-query"
3
+ import type { BetterFetchError } from "better-auth/react"
4
+
5
+ import type { AuthClient } from "../../lib/auth-client"
6
+
7
+ export type SendVerificationEmailParams<TAuthClient extends AuthClient> =
8
+ Parameters<TAuthClient["sendVerificationEmail"]>[0]
9
+
10
+ export type SendVerificationEmailOptions<TAuthClient extends AuthClient> = Omit<
11
+ ReturnType<typeof sendVerificationEmailOptions<TAuthClient>>,
12
+ "mutationKey" | "mutationFn"
13
+ >
14
+
15
+ /**
16
+ * Mutation options factory for sending a verification email.
17
+ *
18
+ * @param authClient - The Better Auth client.
19
+ */
20
+ export function sendVerificationEmailOptions<TAuthClient extends AuthClient>(
21
+ authClient: TAuthClient
22
+ ) {
23
+ const mutationKey = authMutationKeys.sendVerificationEmail
24
+
25
+ const mutationFn = (params: SendVerificationEmailParams<TAuthClient>) =>
26
+ authClient.sendVerificationEmail({
27
+ ...params,
28
+ fetchOptions: { ...params?.fetchOptions, throw: true }
29
+ })
30
+
31
+ return mutationOptions<
32
+ Awaited<ReturnType<typeof mutationFn>>,
33
+ BetterFetchError,
34
+ Parameters<typeof mutationFn>[0]
35
+ >({
36
+ mutationKey,
37
+ mutationFn
38
+ })
39
+ }
40
+
41
+ /**
42
+ * Create a mutation for sending an email-verification link.
43
+ *
44
+ * Wraps `authClient.sendVerificationEmail` and forwards React Query mutation
45
+ * options such as `onSuccess`, `onError`, and `retry`.
46
+ *
47
+ * @param authClient - The Better Auth client.
48
+ * @param options - React Query options forwarded to `useMutation`.
49
+ */
50
+ export function useSendVerificationEmail<TAuthClient extends AuthClient>(
51
+ authClient: TAuthClient,
52
+ options?: SendVerificationEmailOptions<TAuthClient>
53
+ ) {
54
+ return useMutation({
55
+ ...sendVerificationEmailOptions(authClient),
56
+ ...options
57
+ })
58
+ }
@@ -0,0 +1,78 @@
1
+ import { authMutationKeys } from "@better-auth-ui/core"
2
+ import {
3
+ mutationOptions,
4
+ useMutation,
5
+ useQueryClient
6
+ } from "@tanstack/react-query"
7
+ import type { BetterFetchError } from "better-auth/react"
8
+
9
+ import type { AuthClient } from "../../lib/auth-client"
10
+ import { sessionOptions } from "../../queries/auth/session-query"
11
+
12
+ export type SignInEmailParams<TAuthClient extends AuthClient> = Parameters<
13
+ TAuthClient["signIn"]["email"]
14
+ >[0]
15
+
16
+ export type SignInEmailOptions<TAuthClient extends AuthClient> = Omit<
17
+ ReturnType<typeof signInEmailOptions<TAuthClient>>,
18
+ "mutationKey" | "mutationFn"
19
+ >
20
+
21
+ /**
22
+ * Mutation options factory for email/password sign-in.
23
+ *
24
+ * The returned `mutationKey` (`authMutationKeys.signIn.email`) is stable and
25
+ * can be passed to `useIsMutating` or matched inside a global
26
+ * `MutationCache` observer for toast handling.
27
+ *
28
+ * @param authClient - The Better Auth client.
29
+ */
30
+ export function signInEmailOptions<TAuthClient extends AuthClient>(
31
+ authClient: TAuthClient
32
+ ) {
33
+ const mutationKey = authMutationKeys.signIn.email
34
+
35
+ const mutationFn = (params: SignInEmailParams<TAuthClient>) =>
36
+ authClient.signIn.email({
37
+ ...params,
38
+ fetchOptions: { ...params?.fetchOptions, throw: true }
39
+ })
40
+
41
+ return mutationOptions<
42
+ Awaited<ReturnType<typeof mutationFn>>,
43
+ BetterFetchError,
44
+ Parameters<typeof mutationFn>[0]
45
+ >({
46
+ mutationKey,
47
+ mutationFn
48
+ })
49
+ }
50
+
51
+ /**
52
+ * Create a mutation for email/password sign-in.
53
+ *
54
+ * Wraps `authClient.signIn.email`, resets the session query on success so
55
+ * the new session is refetched, and forwards React Query mutation options
56
+ * such as `onSuccess`, `onError`, and `retry`.
57
+ *
58
+ * @param authClient - The Better Auth client.
59
+ * @param options - React Query options forwarded to `useMutation`.
60
+ */
61
+ export function useSignInEmail<TAuthClient extends AuthClient>(
62
+ authClient: TAuthClient,
63
+ options?: SignInEmailOptions<TAuthClient>
64
+ ) {
65
+ const queryClient = useQueryClient()
66
+
67
+ return useMutation({
68
+ ...signInEmailOptions(authClient),
69
+ ...options,
70
+ onSuccess: async (...args) => {
71
+ queryClient.resetQueries({
72
+ queryKey: sessionOptions(authClient).queryKey
73
+ })
74
+
75
+ await options?.onSuccess?.(...args)
76
+ }
77
+ })
78
+ }
@@ -0,0 +1,64 @@
1
+ import { authMutationKeys } from "@better-auth-ui/core"
2
+ import { mutationOptions, useMutation } from "@tanstack/react-query"
3
+ import type { BetterFetchError } from "better-auth/react"
4
+
5
+ import type { AuthClient } from "../../lib/auth-client"
6
+
7
+ export type SignInSocialParams<TAuthClient extends AuthClient> = Parameters<
8
+ TAuthClient["signIn"]["social"]
9
+ >[0]
10
+
11
+ export type SignInSocialOptions<TAuthClient extends AuthClient> = Omit<
12
+ ReturnType<typeof signInSocialOptions<TAuthClient>>,
13
+ "mutationKey" | "mutationFn"
14
+ >
15
+
16
+ /**
17
+ * Mutation options factory for social sign-in.
18
+ *
19
+ * The returned `mutationKey` (`["auth", "signIn", "social"]`) is stable and
20
+ * can be passed to `useIsMutating` or matched inside a global
21
+ * `MutationCache` observer for toast handling.
22
+ *
23
+ * @param authClient - The Better Auth client.
24
+ */
25
+ export function signInSocialOptions<TAuthClient extends AuthClient>(
26
+ authClient: TAuthClient
27
+ ) {
28
+ const mutationKey = authMutationKeys.signIn.social
29
+
30
+ const mutationFn = (params: SignInSocialParams<TAuthClient>) =>
31
+ authClient.signIn.social({
32
+ ...params,
33
+ fetchOptions: { ...params?.fetchOptions, throw: true }
34
+ })
35
+
36
+ return mutationOptions<
37
+ Awaited<ReturnType<typeof mutationFn>>,
38
+ BetterFetchError,
39
+ Parameters<typeof mutationFn>[0]
40
+ >({
41
+ mutationKey,
42
+ mutationFn
43
+ })
44
+ }
45
+
46
+ /**
47
+ * Create a mutation for social sign-in.
48
+ *
49
+ * Wraps `authClient.signIn.social` to initiate a provider redirect and
50
+ * forwards React Query mutation options such as `onSuccess`, `onError`,
51
+ * and `retry`.
52
+ *
53
+ * @param authClient - The Better Auth client.
54
+ * @param options - React Query options forwarded to `useMutation`.
55
+ */
56
+ export function useSignInSocial<TAuthClient extends AuthClient>(
57
+ authClient: TAuthClient,
58
+ options?: SignInSocialOptions<TAuthClient>
59
+ ) {
60
+ return useMutation({
61
+ ...signInSocialOptions(authClient),
62
+ ...options
63
+ })
64
+ }
@@ -0,0 +1,71 @@
1
+ import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
2
+ import {
3
+ mutationOptions,
4
+ useMutation,
5
+ useQueryClient
6
+ } from "@tanstack/react-query"
7
+ import type { BetterFetchError } from "better-auth/react"
8
+
9
+ import type { AuthClient } from "../../lib/auth-client"
10
+
11
+ export type SignOutParams<TAuthClient extends AuthClient> = Parameters<
12
+ TAuthClient["signOut"]
13
+ >[0]
14
+
15
+ export type SignOutOptions<TAuthClient extends AuthClient> = Omit<
16
+ ReturnType<typeof signOutOptions<TAuthClient>>,
17
+ "mutationKey" | "mutationFn"
18
+ >
19
+
20
+ /**
21
+ * Mutation options factory for signing out.
22
+ *
23
+ * @param authClient - The Better Auth client.
24
+ */
25
+ export function signOutOptions<TAuthClient extends AuthClient>(
26
+ authClient: TAuthClient
27
+ ) {
28
+ const mutationKey = authMutationKeys.signOut
29
+
30
+ // biome-ignore lint/suspicious/noConfusingVoidType: void allows no-arg mutate
31
+ const mutationFn = (params?: SignOutParams<TAuthClient> | void) =>
32
+ authClient.signOut({
33
+ ...(params ?? {}),
34
+ fetchOptions: { ...params?.fetchOptions, throw: true }
35
+ })
36
+
37
+ return mutationOptions<
38
+ Awaited<ReturnType<typeof mutationFn>>,
39
+ BetterFetchError,
40
+ Parameters<typeof mutationFn>[0]
41
+ >({
42
+ mutationKey,
43
+ mutationFn
44
+ })
45
+ }
46
+
47
+ /**
48
+ * Create a mutation for signing the current user out.
49
+ *
50
+ * Wraps `authClient.signOut`, removes all cached auth queries on success,
51
+ * and forwards React Query mutation options such as `onSuccess`, `onError`,
52
+ * and `retry`.
53
+ *
54
+ * @param authClient - The Better Auth client.
55
+ * @param options - React Query options forwarded to `useMutation`.
56
+ */
57
+ export function useSignOut<TAuthClient extends AuthClient>(
58
+ authClient: TAuthClient,
59
+ options?: SignOutOptions<TAuthClient>
60
+ ) {
61
+ const queryClient = useQueryClient()
62
+
63
+ return useMutation({
64
+ ...signOutOptions(authClient),
65
+ ...options,
66
+ onSuccess: async (...args) => {
67
+ queryClient.removeQueries({ queryKey: authQueryKeys.all })
68
+ await options?.onSuccess?.(...args)
69
+ }
70
+ })
71
+ }