@better-auth-ui/solid 1.6.28 → 1.6.29

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.
@@ -0,0 +1,15 @@
1
+ import { LastLoginMethodLocalization } from '@better-auth-ui/core/plugins';
2
+ import { Accessor } from 'solid-js';
3
+ export type LastLoginMethodState = {
4
+ /** Most recently used method, such as `"email"`, `"google"`, or `"github"`. */
5
+ method: Accessor<string | null>;
6
+ /** Localization contributed by `lastLoginMethodPlugin()`. */
7
+ localization: LastLoginMethodLocalization;
8
+ };
9
+ /**
10
+ * Reads Better Auth's last-login-method cookie after hydration.
11
+ *
12
+ * Returns `null` until `lastLoginMethodPlugin()` is registered and the
13
+ * matching Better Auth client plugin has a stored method.
14
+ */
15
+ export declare function useLastLoginMethod(): LastLoginMethodState;
@@ -0,0 +1,20 @@
1
+ import { useAuth as e } from "../../lib/auth-provider.js";
2
+ import { createSignal as t, onMount as n } from "solid-js";
3
+ import { lastLoginMethodLocalization as r, lastLoginMethodPlugin as i } from "@better-auth-ui/core/plugins";
4
+ //#region src/hooks/auth/use-last-login-method.ts
5
+ function a() {
6
+ let a = e(), o = a.plugins.find((e) => e.id === i.id), s = {
7
+ ...r,
8
+ ...o?.localization
9
+ }, [c, l] = t(null);
10
+ return n(() => {
11
+ if (!o) return;
12
+ let e = a.authClient;
13
+ l(e.getLastUsedLoginMethod?.() ?? null);
14
+ }), {
15
+ method: c,
16
+ localization: s
17
+ };
18
+ }
19
+ //#endregion
20
+ export { a as useLastLoginMethod };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { createAuthClient } from 'better-auth/solid';
2
2
  export * from './hooks/auth/use-authenticate';
3
+ export * from './hooks/auth/use-last-login-method';
3
4
  export * from './hooks/auth/use-sign-out';
4
5
  export * from './hooks/auth/use-user';
5
6
  export * from './hooks/use-auth-mutation';
package/dist/index.js CHANGED
@@ -5,64 +5,65 @@ import { MutationInvalidator as a, invalidateAuthMutationMeta as o } from "./lib
5
5
  import { AuthProvider as s, useAuth as c } from "./lib/auth-provider.js";
6
6
  import { ensureSession as l, fetchSession as u, prefetchSession as d, sessionOptions as f, useSession as p } from "./queries/auth/session-query.js";
7
7
  import { useAuthenticate as m } from "./hooks/auth/use-authenticate.js";
8
- import { useSignOut as h } from "./hooks/auth/use-sign-out.js";
9
- import { useUser as g } from "./hooks/auth/use-user.js";
10
- import { authMutationOptions as _ } from "./mutations/auth-mutation-options.js";
11
- import { useAuthMutation as v } from "./hooks/use-auth-mutation.js";
12
- import { authQueryOptions as y } from "./queries/auth-query-options.js";
13
- import { useAuthQuery as b } from "./hooks/use-auth-query.js";
14
- import { providerIconNames as x } from "./lib/provider-icons.js";
15
- import { createApiKeyOptions as S, useCreateApiKey as C } from "./mutations/api-key/create-api-key-mutation.js";
16
- import { deleteApiKeyOptions as w, useDeleteApiKey as T } from "./mutations/api-key/delete-api-key-mutation.js";
17
- import { requestPasswordResetOptions as E } from "./mutations/auth/request-password-reset-mutation.js";
18
- import { resetPasswordOptions as D } from "./mutations/auth/reset-password-mutation.js";
19
- import { sendVerificationEmailOptions as O } from "./mutations/auth/send-verification-email-mutation.js";
20
- import { signInEmailOptions as k } from "./mutations/auth/sign-in-email-mutation.js";
21
- import { signInSocialOptions as A } from "./mutations/auth/sign-in-social-mutation.js";
22
- import { signOutOptions as j } from "./mutations/auth/sign-out-mutation.js";
23
- import { signUpEmailOptions as M } from "./mutations/auth/sign-up-email-mutation.js";
24
- import { signInMagicLinkOptions as N } from "./mutations/magic-link/sign-in-magic-link-mutation.js";
25
- import { revokeMultiSessionOptions as P, useRevokeMultiSession as F } from "./mutations/multi-session/revoke-multi-session-mutation.js";
26
- import { setActiveSessionOptions as I, useSetActiveSession as L } from "./mutations/multi-session/set-active-session-mutation.js";
27
- import { acceptInvitationMeta as R, cancelInvitationMeta as z, createOrganizationMeta as B, deleteOrganizationMeta as V, inviteMemberMeta as H, leaveOrganizationMeta as U, memberRoleMeta as W, rejectInvitationMeta as G, removeMemberMeta as K, setActiveOrganizationMeta as q, updateOrganizationMeta as J } from "./mutations/organization/metadata.js";
28
- import { acceptInvitationOptions as Y, useAcceptInvitation as X } from "./mutations/organization/accept-invitation-mutation.js";
29
- import { cancelInvitationOptions as Z, useCancelInvitation as Q } from "./mutations/organization/cancel-invitation-mutation.js";
30
- import { checkOrganizationSlugOptions as $, useCheckOrganizationSlug as ee } from "./mutations/organization/check-slug-mutation.js";
31
- import { createOrganizationOptions as te, useCreateOrganization as ne } from "./mutations/organization/create-organization-mutation.js";
32
- import { deleteOrganizationOptions as re, useDeleteOrganization as ie } from "./mutations/organization/delete-organization-mutation.js";
33
- import { inviteMemberOptions as ae, useInviteMember as oe } from "./mutations/organization/invite-member-mutation.js";
34
- import { leaveOrganizationOptions as se, useLeaveOrganization as ce } from "./mutations/organization/leave-organization-mutation.js";
35
- import { rejectInvitationOptions as le, useRejectInvitation as ue } from "./mutations/organization/reject-invitation-mutation.js";
36
- import { removeMemberOptions as de, useRemoveMember as fe } from "./mutations/organization/remove-member-mutation.js";
37
- import { activeOrganizationOptions as pe, ensureActiveOrganization as me, fetchActiveOrganization as he, prefetchActiveOrganization as ge, useActiveOrganization as _e } from "./queries/organization/active-organization-query.js";
38
- import { ensureFullOrganization as ve, fetchFullOrganization as ye, fullOrganizationOptions as be, prefetchFullOrganization as xe, useFullOrganization as Se } from "./queries/organization/full-organization-query.js";
39
- import { ensureHasPermission as Ce, fetchHasPermission as we, hasPermissionOptions as Te, prefetchHasPermission as Ee, useHasPermission as De } from "./queries/organization/has-permission-query.js";
40
- import { ensureListOrganizationInvitations as Oe, fetchListOrganizationInvitations as ke, listOrganizationInvitationsOptions as Ae, prefetchListOrganizationInvitations as je, useListOrganizationInvitations as Me } from "./queries/organization/list-invitations-query.js";
41
- import { ensureListOrganizationMembers as Ne, fetchListOrganizationMembers as Pe, listOrganizationMembersOptions as Fe, prefetchListOrganizationMembers as Ie, useListOrganizationMembers as Le } from "./queries/organization/list-members-query.js";
42
- import { ensureListOrganizations as Re, fetchListOrganizations as ze, listOrganizationsOptions as Be, prefetchListOrganizations as Ve, useListOrganizations as He } from "./queries/organization/list-organizations-query.js";
43
- import { ensureListUserInvitations as Ue, fetchListUserInvitations as We, listUserInvitationsOptions as Ge, prefetchListUserInvitations as Ke, useListUserInvitations as qe } from "./queries/organization/list-user-invitations-query.js";
8
+ import { useLastLoginMethod as h } from "./hooks/auth/use-last-login-method.js";
9
+ import { useSignOut as g } from "./hooks/auth/use-sign-out.js";
10
+ import { useUser as _ } from "./hooks/auth/use-user.js";
11
+ import { authMutationOptions as v } from "./mutations/auth-mutation-options.js";
12
+ import { useAuthMutation as y } from "./hooks/use-auth-mutation.js";
13
+ import { authQueryOptions as b } from "./queries/auth-query-options.js";
14
+ import { useAuthQuery as x } from "./hooks/use-auth-query.js";
15
+ import { providerIconNames as S } from "./lib/provider-icons.js";
16
+ import { createApiKeyOptions as C, useCreateApiKey as w } from "./mutations/api-key/create-api-key-mutation.js";
17
+ import { deleteApiKeyOptions as T, useDeleteApiKey as E } from "./mutations/api-key/delete-api-key-mutation.js";
18
+ import { requestPasswordResetOptions as D } from "./mutations/auth/request-password-reset-mutation.js";
19
+ import { resetPasswordOptions as O } from "./mutations/auth/reset-password-mutation.js";
20
+ import { sendVerificationEmailOptions as k } from "./mutations/auth/send-verification-email-mutation.js";
21
+ import { signInEmailOptions as A } from "./mutations/auth/sign-in-email-mutation.js";
22
+ import { signInSocialOptions as j } from "./mutations/auth/sign-in-social-mutation.js";
23
+ import { signOutOptions as M } from "./mutations/auth/sign-out-mutation.js";
24
+ import { signUpEmailOptions as N } from "./mutations/auth/sign-up-email-mutation.js";
25
+ import { signInMagicLinkOptions as P } from "./mutations/magic-link/sign-in-magic-link-mutation.js";
26
+ import { revokeMultiSessionOptions as F, useRevokeMultiSession as I } from "./mutations/multi-session/revoke-multi-session-mutation.js";
27
+ import { setActiveSessionOptions as L, useSetActiveSession as R } from "./mutations/multi-session/set-active-session-mutation.js";
28
+ import { acceptInvitationMeta as z, cancelInvitationMeta as B, createOrganizationMeta as V, deleteOrganizationMeta as H, inviteMemberMeta as U, leaveOrganizationMeta as W, memberRoleMeta as G, rejectInvitationMeta as K, removeMemberMeta as q, setActiveOrganizationMeta as J, updateOrganizationMeta as Y } from "./mutations/organization/metadata.js";
29
+ import { acceptInvitationOptions as X, useAcceptInvitation as Z } from "./mutations/organization/accept-invitation-mutation.js";
30
+ import { cancelInvitationOptions as Q, useCancelInvitation as $ } from "./mutations/organization/cancel-invitation-mutation.js";
31
+ import { checkOrganizationSlugOptions as ee, useCheckOrganizationSlug as te } from "./mutations/organization/check-slug-mutation.js";
32
+ import { createOrganizationOptions as ne, useCreateOrganization as re } from "./mutations/organization/create-organization-mutation.js";
33
+ import { deleteOrganizationOptions as ie, useDeleteOrganization as ae } from "./mutations/organization/delete-organization-mutation.js";
34
+ import { inviteMemberOptions as oe, useInviteMember as se } from "./mutations/organization/invite-member-mutation.js";
35
+ import { leaveOrganizationOptions as ce, useLeaveOrganization as le } from "./mutations/organization/leave-organization-mutation.js";
36
+ import { rejectInvitationOptions as ue, useRejectInvitation as de } from "./mutations/organization/reject-invitation-mutation.js";
37
+ import { removeMemberOptions as fe, useRemoveMember as pe } from "./mutations/organization/remove-member-mutation.js";
38
+ import { activeOrganizationOptions as me, ensureActiveOrganization as he, fetchActiveOrganization as ge, prefetchActiveOrganization as _e, useActiveOrganization as ve } from "./queries/organization/active-organization-query.js";
39
+ import { ensureFullOrganization as ye, fetchFullOrganization as be, fullOrganizationOptions as xe, prefetchFullOrganization as Se, useFullOrganization as Ce } from "./queries/organization/full-organization-query.js";
40
+ import { ensureHasPermission as we, fetchHasPermission as Te, hasPermissionOptions as Ee, prefetchHasPermission as De, useHasPermission as Oe } from "./queries/organization/has-permission-query.js";
41
+ import { ensureListOrganizationInvitations as ke, fetchListOrganizationInvitations as Ae, listOrganizationInvitationsOptions as je, prefetchListOrganizationInvitations as Me, useListOrganizationInvitations as Ne } from "./queries/organization/list-invitations-query.js";
42
+ import { ensureListOrganizationMembers as Pe, fetchListOrganizationMembers as Fe, listOrganizationMembersOptions as Ie, prefetchListOrganizationMembers as Le, useListOrganizationMembers as Re } from "./queries/organization/list-members-query.js";
43
+ import { ensureListOrganizations as ze, fetchListOrganizations as Be, listOrganizationsOptions as Ve, prefetchListOrganizations as He, useListOrganizations as Ue } from "./queries/organization/list-organizations-query.js";
44
+ import { ensureListUserInvitations as We, fetchListUserInvitations as Ge, listUserInvitationsOptions as Ke, prefetchListUserInvitations as qe, useListUserInvitations as Je } from "./queries/organization/list-user-invitations-query.js";
44
45
  import "./queries/organization/index.js";
45
- import { setActiveOrganizationOptions as Je, useSetActiveOrganization as Ye } from "./mutations/organization/set-active-organization-mutation.js";
46
- import { updateMemberRoleOptions as Xe, useUpdateMemberRole as Ze } from "./mutations/organization/update-member-role-mutation.js";
47
- import { updateOrganizationOptions as Qe, useUpdateOrganization as $e } from "./mutations/organization/update-organization-mutation.js";
46
+ import { setActiveOrganizationOptions as Ye, useSetActiveOrganization as Xe } from "./mutations/organization/set-active-organization-mutation.js";
47
+ import { updateMemberRoleOptions as Ze, useUpdateMemberRole as Qe } from "./mutations/organization/update-member-role-mutation.js";
48
+ import { updateOrganizationOptions as $e, useUpdateOrganization as et } from "./mutations/organization/update-organization-mutation.js";
48
49
  import "./mutations/organization/index.js";
49
- import { addPasskeyOptions as et, useAddPasskey as tt } from "./mutations/passkey/add-passkey-mutation.js";
50
- import { deletePasskeyOptions as nt, useDeletePasskey as rt } from "./mutations/passkey/delete-passkey-mutation.js";
51
- import { signInPasskeyOptions as it } from "./mutations/passkey/sign-in-passkey-mutation.js";
52
- import { changeEmailOptions as at } from "./mutations/settings/change-email-mutation.js";
53
- import { changePasswordOptions as ot } from "./mutations/settings/change-password-mutation.js";
54
- import { deleteUserOptions as st } from "./mutations/settings/delete-user-mutation.js";
55
- import { linkSocialOptions as ct } from "./mutations/settings/link-social-mutation.js";
56
- import { revokeSessionOptions as lt, useRevokeSession as ut } from "./mutations/settings/revoke-session-mutation.js";
57
- import { unlinkAccountOptions as dt, useUnlinkAccount as ft } from "./mutations/settings/unlink-account-mutation.js";
58
- import { updateUserOptions as pt } from "./mutations/settings/update-user-mutation.js";
59
- import { isUsernameAvailableOptions as mt } from "./mutations/username/is-username-available-mutation.js";
60
- import { signInUsernameOptions as ht } from "./mutations/username/sign-in-username-mutation.js";
61
- import { ensureListApiKeys as gt, fetchListApiKeys as _t, listApiKeysOptions as vt, prefetchListApiKeys as yt, useListApiKeys as bt } from "./queries/api-key/list-api-keys-query.js";
62
- import { ensureListDeviceSessions as xt, fetchListDeviceSessions as St, listDeviceSessionsOptions as Ct, prefetchListDeviceSessions as wt, useListDeviceSessions as Tt } from "./queries/multi-session/list-device-sessions-query.js";
63
- import { ensureListPasskeys as Et, fetchListPasskeys as Dt, listPasskeysOptions as Ot, prefetchListPasskeys as kt, useListPasskeys as At } from "./queries/passkey/list-passkeys-query.js";
64
- import { accountInfoOptions as jt, ensureAccountInfo as Mt, fetchAccountInfo as Nt, prefetchAccountInfo as Pt, useAccountInfo as Ft } from "./queries/settings/account-info-query.js";
65
- import { ensureListAccounts as It, fetchListAccounts as Lt, listAccountsOptions as Rt, prefetchListAccounts as zt, useListAccounts as Bt } from "./queries/settings/list-accounts-query.js";
66
- import { ensureListSessions as Vt, fetchListSessions as Ht, listSessionsOptions as Ut, prefetchListSessions as Wt, useListSessions as Gt } from "./queries/settings/list-sessions-query.js";
67
- import { createAuthClient as Kt } from "better-auth/solid";
68
- export { s as AuthProvider, r as FetchOptionsProvider, a as MutationInvalidator, R as acceptInvitationMeta, Y as acceptInvitationOptions, jt as accountInfoOptions, pe as activeOrganizationOptions, et as addPasskeyOptions, _ as authMutationOptions, y as authQueryOptions, z as cancelInvitationMeta, Z as cancelInvitationOptions, at as changeEmailOptions, ot as changePasswordOptions, $ as checkOrganizationSlugOptions, S as createApiKeyOptions, Kt as createAuthClient, B as createOrganizationMeta, te as createOrganizationOptions, w as deleteApiKeyOptions, V as deleteOrganizationMeta, re as deleteOrganizationOptions, nt as deletePasskeyOptions, st as deleteUserOptions, Mt as ensureAccountInfo, me as ensureActiveOrganization, ve as ensureFullOrganization, Ce as ensureHasPermission, It as ensureListAccounts, gt as ensureListApiKeys, xt as ensureListDeviceSessions, Oe as ensureListOrganizationInvitations, Ne as ensureListOrganizationMembers, Re as ensureListOrganizations, Et as ensureListPasskeys, Vt as ensureListSessions, Ue as ensureListUserInvitations, l as ensureSession, Nt as fetchAccountInfo, he as fetchActiveOrganization, ye as fetchFullOrganization, we as fetchHasPermission, Lt as fetchListAccounts, _t as fetchListApiKeys, St as fetchListDeviceSessions, ke as fetchListOrganizationInvitations, Pe as fetchListOrganizationMembers, ze as fetchListOrganizations, Dt as fetchListPasskeys, Ht as fetchListSessions, We as fetchListUserInvitations, u as fetchSession, be as fullOrganizationOptions, Te as hasPermissionOptions, o as invalidateAuthMutationMeta, H as inviteMemberMeta, ae as inviteMemberOptions, mt as isUsernameAvailableOptions, U as leaveOrganizationMeta, se as leaveOrganizationOptions, ct as linkSocialOptions, Rt as listAccountsOptions, vt as listApiKeysOptions, Ct as listDeviceSessionsOptions, Ae as listOrganizationInvitationsOptions, Fe as listOrganizationMembersOptions, Be as listOrganizationsOptions, Ot as listPasskeysOptions, Ut as listSessionsOptions, Ge as listUserInvitationsOptions, W as memberRoleMeta, e as mergeAdditionalFields, Pt as prefetchAccountInfo, ge as prefetchActiveOrganization, xe as prefetchFullOrganization, Ee as prefetchHasPermission, zt as prefetchListAccounts, yt as prefetchListApiKeys, wt as prefetchListDeviceSessions, je as prefetchListOrganizationInvitations, Ie as prefetchListOrganizationMembers, Ve as prefetchListOrganizations, kt as prefetchListPasskeys, Wt as prefetchListSessions, Ke as prefetchListUserInvitations, d as prefetchSession, x as providerIconNames, G as rejectInvitationMeta, le as rejectInvitationOptions, K as removeMemberMeta, de as removeMemberOptions, E as requestPasswordResetOptions, D as resetPasswordOptions, n as resolveAuthConfig, t as resolveRedirectTo, P as revokeMultiSessionOptions, lt as revokeSessionOptions, O as sendVerificationEmailOptions, f as sessionOptions, q as setActiveOrganizationMeta, Je as setActiveOrganizationOptions, I as setActiveSessionOptions, k as signInEmailOptions, N as signInMagicLinkOptions, it as signInPasskeyOptions, A as signInSocialOptions, ht as signInUsernameOptions, j as signOutOptions, M as signUpEmailOptions, dt as unlinkAccountOptions, Xe as updateMemberRoleOptions, J as updateOrganizationMeta, Qe as updateOrganizationOptions, pt as updateUserOptions, X as useAcceptInvitation, Ft as useAccountInfo, _e as useActiveOrganization, tt as useAddPasskey, c as useAuth, v as useAuthMutation, b as useAuthQuery, m as useAuthenticate, Q as useCancelInvitation, ee as useCheckOrganizationSlug, C as useCreateApiKey, ne as useCreateOrganization, T as useDeleteApiKey, ie as useDeleteOrganization, rt as useDeletePasskey, i as useFetchOptions, Se as useFullOrganization, De as useHasPermission, oe as useInviteMember, ce as useLeaveOrganization, Bt as useListAccounts, bt as useListApiKeys, Tt as useListDeviceSessions, Me as useListOrganizationInvitations, Le as useListOrganizationMembers, He as useListOrganizations, At as useListPasskeys, Gt as useListSessions, qe as useListUserInvitations, ue as useRejectInvitation, fe as useRemoveMember, F as useRevokeMultiSession, ut as useRevokeSession, p as useSession, Ye as useSetActiveOrganization, L as useSetActiveSession, h as useSignOut, ft as useUnlinkAccount, Ze as useUpdateMemberRole, $e as useUpdateOrganization, g as useUser };
50
+ import { addPasskeyOptions as tt, useAddPasskey as nt } from "./mutations/passkey/add-passkey-mutation.js";
51
+ import { deletePasskeyOptions as rt, useDeletePasskey as it } from "./mutations/passkey/delete-passkey-mutation.js";
52
+ import { signInPasskeyOptions as at } from "./mutations/passkey/sign-in-passkey-mutation.js";
53
+ import { changeEmailOptions as ot } from "./mutations/settings/change-email-mutation.js";
54
+ import { changePasswordOptions as st } from "./mutations/settings/change-password-mutation.js";
55
+ import { deleteUserOptions as ct } from "./mutations/settings/delete-user-mutation.js";
56
+ import { linkSocialOptions as lt } from "./mutations/settings/link-social-mutation.js";
57
+ import { revokeSessionOptions as ut, useRevokeSession as dt } from "./mutations/settings/revoke-session-mutation.js";
58
+ import { unlinkAccountOptions as ft, useUnlinkAccount as pt } from "./mutations/settings/unlink-account-mutation.js";
59
+ import { updateUserOptions as mt } from "./mutations/settings/update-user-mutation.js";
60
+ import { isUsernameAvailableOptions as ht } from "./mutations/username/is-username-available-mutation.js";
61
+ import { signInUsernameOptions as gt } from "./mutations/username/sign-in-username-mutation.js";
62
+ import { ensureListApiKeys as _t, fetchListApiKeys as vt, listApiKeysOptions as yt, prefetchListApiKeys as bt, useListApiKeys as xt } from "./queries/api-key/list-api-keys-query.js";
63
+ import { ensureListDeviceSessions as St, fetchListDeviceSessions as Ct, listDeviceSessionsOptions as wt, prefetchListDeviceSessions as Tt, useListDeviceSessions as Et } from "./queries/multi-session/list-device-sessions-query.js";
64
+ import { ensureListPasskeys as Dt, fetchListPasskeys as Ot, listPasskeysOptions as kt, prefetchListPasskeys as At, useListPasskeys as jt } from "./queries/passkey/list-passkeys-query.js";
65
+ import { accountInfoOptions as Mt, ensureAccountInfo as Nt, fetchAccountInfo as Pt, prefetchAccountInfo as Ft, useAccountInfo as It } from "./queries/settings/account-info-query.js";
66
+ import { ensureListAccounts as Lt, fetchListAccounts as Rt, listAccountsOptions as zt, prefetchListAccounts as Bt, useListAccounts as Vt } from "./queries/settings/list-accounts-query.js";
67
+ import { ensureListSessions as Ht, fetchListSessions as Ut, listSessionsOptions as Wt, prefetchListSessions as Gt, useListSessions as Kt } from "./queries/settings/list-sessions-query.js";
68
+ import { createAuthClient as qt } from "better-auth/solid";
69
+ export { s as AuthProvider, r as FetchOptionsProvider, a as MutationInvalidator, z as acceptInvitationMeta, X as acceptInvitationOptions, Mt as accountInfoOptions, me as activeOrganizationOptions, tt as addPasskeyOptions, v as authMutationOptions, b as authQueryOptions, B as cancelInvitationMeta, Q as cancelInvitationOptions, ot as changeEmailOptions, st as changePasswordOptions, ee as checkOrganizationSlugOptions, C as createApiKeyOptions, qt as createAuthClient, V as createOrganizationMeta, ne as createOrganizationOptions, T as deleteApiKeyOptions, H as deleteOrganizationMeta, ie as deleteOrganizationOptions, rt as deletePasskeyOptions, ct as deleteUserOptions, Nt as ensureAccountInfo, he as ensureActiveOrganization, ye as ensureFullOrganization, we as ensureHasPermission, Lt as ensureListAccounts, _t as ensureListApiKeys, St as ensureListDeviceSessions, ke as ensureListOrganizationInvitations, Pe as ensureListOrganizationMembers, ze as ensureListOrganizations, Dt as ensureListPasskeys, Ht as ensureListSessions, We as ensureListUserInvitations, l as ensureSession, Pt as fetchAccountInfo, ge as fetchActiveOrganization, be as fetchFullOrganization, Te as fetchHasPermission, Rt as fetchListAccounts, vt as fetchListApiKeys, Ct as fetchListDeviceSessions, Ae as fetchListOrganizationInvitations, Fe as fetchListOrganizationMembers, Be as fetchListOrganizations, Ot as fetchListPasskeys, Ut as fetchListSessions, Ge as fetchListUserInvitations, u as fetchSession, xe as fullOrganizationOptions, Ee as hasPermissionOptions, o as invalidateAuthMutationMeta, U as inviteMemberMeta, oe as inviteMemberOptions, ht as isUsernameAvailableOptions, W as leaveOrganizationMeta, ce as leaveOrganizationOptions, lt as linkSocialOptions, zt as listAccountsOptions, yt as listApiKeysOptions, wt as listDeviceSessionsOptions, je as listOrganizationInvitationsOptions, Ie as listOrganizationMembersOptions, Ve as listOrganizationsOptions, kt as listPasskeysOptions, Wt as listSessionsOptions, Ke as listUserInvitationsOptions, G as memberRoleMeta, e as mergeAdditionalFields, Ft as prefetchAccountInfo, _e as prefetchActiveOrganization, Se as prefetchFullOrganization, De as prefetchHasPermission, Bt as prefetchListAccounts, bt as prefetchListApiKeys, Tt as prefetchListDeviceSessions, Me as prefetchListOrganizationInvitations, Le as prefetchListOrganizationMembers, He as prefetchListOrganizations, At as prefetchListPasskeys, Gt as prefetchListSessions, qe as prefetchListUserInvitations, d as prefetchSession, S as providerIconNames, K as rejectInvitationMeta, ue as rejectInvitationOptions, q as removeMemberMeta, fe as removeMemberOptions, D as requestPasswordResetOptions, O as resetPasswordOptions, n as resolveAuthConfig, t as resolveRedirectTo, F as revokeMultiSessionOptions, ut as revokeSessionOptions, k as sendVerificationEmailOptions, f as sessionOptions, J as setActiveOrganizationMeta, Ye as setActiveOrganizationOptions, L as setActiveSessionOptions, A as signInEmailOptions, P as signInMagicLinkOptions, at as signInPasskeyOptions, j as signInSocialOptions, gt as signInUsernameOptions, M as signOutOptions, N as signUpEmailOptions, ft as unlinkAccountOptions, Ze as updateMemberRoleOptions, Y as updateOrganizationMeta, $e as updateOrganizationOptions, mt as updateUserOptions, Z as useAcceptInvitation, It as useAccountInfo, ve as useActiveOrganization, nt as useAddPasskey, c as useAuth, y as useAuthMutation, x as useAuthQuery, m as useAuthenticate, $ as useCancelInvitation, te as useCheckOrganizationSlug, w as useCreateApiKey, re as useCreateOrganization, E as useDeleteApiKey, ae as useDeleteOrganization, it as useDeletePasskey, i as useFetchOptions, Ce as useFullOrganization, Oe as useHasPermission, se as useInviteMember, h as useLastLoginMethod, le as useLeaveOrganization, Vt as useListAccounts, xt as useListApiKeys, Et as useListDeviceSessions, Ne as useListOrganizationInvitations, Re as useListOrganizationMembers, Ue as useListOrganizations, jt as useListPasskeys, Kt as useListSessions, Je as useListUserInvitations, de as useRejectInvitation, pe as useRemoveMember, I as useRevokeMultiSession, dt as useRevokeSession, p as useSession, Xe as useSetActiveOrganization, R as useSetActiveSession, g as useSignOut, pt as useUnlinkAccount, Qe as useUpdateMemberRole, et as useUpdateOrganization, _ as useUser };
@@ -1,11 +1,14 @@
1
1
  import { apiKeyClient } from '@better-auth/api-key/client';
2
2
  import { passkeyClient } from '@better-auth/passkey/client';
3
- import { magicLinkClient, multiSessionClient, organizationClient, usernameClient } from 'better-auth/client/plugins';
3
+ import { lastLoginMethodClient, magicLinkClient, multiSessionClient, organizationClient, usernameClient } from 'better-auth/client/plugins';
4
4
  import { createAuthClient } from 'better-auth/solid';
5
5
  export type AuthClient = ReturnType<typeof createAuthClient>;
6
6
  export type MagicLinkAuthClient = ReturnType<typeof createAuthClient<{
7
7
  plugins: [ReturnType<typeof magicLinkClient>];
8
8
  }>>;
9
+ export type LastLoginMethodAuthClient = ReturnType<typeof createAuthClient<{
10
+ plugins: [ReturnType<typeof lastLoginMethodClient>];
11
+ }>>;
9
12
  export type MultiSessionAuthClient = ReturnType<typeof createAuthClient<{
10
13
  plugins: [ReturnType<typeof multiSessionClient>];
11
14
  }>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-auth-ui/solid",
3
- "version": "1.6.28",
3
+ "version": "1.6.29",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "vite build && vite build --config vite.email.config.ts",
@@ -0,0 +1,44 @@
1
+ import {
2
+ type LastLoginMethodLocalization,
3
+ lastLoginMethodLocalization,
4
+ lastLoginMethodPlugin
5
+ } from "@better-auth-ui/core/plugins"
6
+ import { type Accessor, createSignal, onMount } from "solid-js"
7
+ import type { LastLoginMethodAuthClient } from "../../lib/auth-client"
8
+ import { useAuth } from "../../lib/auth-provider"
9
+
10
+ export type LastLoginMethodState = {
11
+ /** Most recently used method, such as `"email"`, `"google"`, or `"github"`. */
12
+ method: Accessor<string | null>
13
+ /** Localization contributed by `lastLoginMethodPlugin()`. */
14
+ localization: LastLoginMethodLocalization
15
+ }
16
+
17
+ /**
18
+ * Reads Better Auth's last-login-method cookie after hydration.
19
+ *
20
+ * Returns `null` until `lastLoginMethodPlugin()` is registered and the
21
+ * matching Better Auth client plugin has a stored method.
22
+ */
23
+ export function useLastLoginMethod(): LastLoginMethodState {
24
+ const auth = useAuth()
25
+ const plugin = auth.plugins.find(
26
+ (candidate) => candidate.id === lastLoginMethodPlugin.id
27
+ )
28
+ const localization = {
29
+ ...lastLoginMethodLocalization,
30
+ ...(plugin?.localization as
31
+ | Partial<LastLoginMethodLocalization>
32
+ | undefined)
33
+ }
34
+ const [method, setMethod] = createSignal<string | null>(null)
35
+
36
+ onMount(() => {
37
+ if (!plugin) return
38
+
39
+ const client = auth.authClient as Partial<LastLoginMethodAuthClient>
40
+ setMethod(client.getLastUsedLoginMethod?.() ?? null)
41
+ })
42
+
43
+ return { method, localization }
44
+ }
package/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { createAuthClient } from "better-auth/solid"
2
2
  export * from "./hooks/auth/use-authenticate"
3
+ export * from "./hooks/auth/use-last-login-method"
3
4
  export * from "./hooks/auth/use-sign-out"
4
5
  export * from "./hooks/auth/use-user"
5
6
  export * from "./hooks/use-auth-mutation"
@@ -1,6 +1,7 @@
1
1
  import type { apiKeyClient } from "@better-auth/api-key/client"
2
2
  import type { passkeyClient } from "@better-auth/passkey/client"
3
3
  import type {
4
+ lastLoginMethodClient,
4
5
  magicLinkClient,
5
6
  multiSessionClient,
6
7
  organizationClient,
@@ -14,6 +15,12 @@ export type MagicLinkAuthClient = ReturnType<
14
15
  typeof createAuthClient<{ plugins: [ReturnType<typeof magicLinkClient>] }>
15
16
  >
16
17
 
18
+ export type LastLoginMethodAuthClient = ReturnType<
19
+ typeof createAuthClient<{
20
+ plugins: [ReturnType<typeof lastLoginMethodClient>]
21
+ }>
22
+ >
23
+
17
24
  export type MultiSessionAuthClient = ReturnType<
18
25
  typeof createAuthClient<{ plugins: [ReturnType<typeof multiSessionClient>] }>
19
26
  >