@better-auth-ui/heroui 1.6.0 → 1.6.2
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.
- package/dist/components/auth/auth-provider.d.ts +1 -1
- package/dist/components/auth/auth-provider.js +15 -11
- package/dist/components/auth/auth.d.ts +3 -3
- package/dist/components/auth/auth.js +36 -41
- package/dist/components/auth/field-separator.d.ts +1 -1
- package/dist/components/auth/field-separator.js +17 -4
- package/dist/components/auth/forgot-password.d.ts +1 -1
- package/dist/components/auth/forgot-password.js +69 -27
- package/dist/components/auth/magic-link-button.d.ts +1 -1
- package/dist/components/auth/magic-link-button.js +15 -18
- package/dist/components/auth/magic-link.d.ts +2 -2
- package/dist/components/auth/magic-link.js +110 -42
- package/dist/components/auth/passkey-button.d.ts +4 -0
- package/dist/components/auth/passkey-button.js +24 -0
- package/dist/components/auth/provider-buttons.d.ts +1 -1
- package/dist/components/auth/provider-buttons.js +26 -33
- package/dist/components/auth/reset-password.d.ts +1 -1
- package/dist/components/auth/reset-password.js +146 -57
- package/dist/components/auth/sign-in.d.ts +2 -2
- package/dist/components/auth/sign-in.js +163 -63
- package/dist/components/auth/sign-out.js +26 -32
- package/dist/components/auth/sign-up.d.ts +2 -2
- package/dist/components/auth/sign-up.js +240 -70
- package/dist/components/email/email-changed-email.d.ts +2 -2
- package/dist/components/email/email-changed-email.js +29 -22
- package/dist/components/email/email-verification-email.d.ts +2 -2
- package/dist/components/email/email-verification-email.js +29 -22
- package/dist/components/email/magic-link-email.d.ts +2 -2
- package/dist/components/email/magic-link-email.js +29 -22
- package/dist/components/email/new-device-email.d.ts +2 -2
- package/dist/components/email/new-device-email.js +29 -22
- package/dist/components/email/otp-email.d.ts +2 -2
- package/dist/components/email/otp-email.js +28 -21
- package/dist/components/email/password-changed-email.d.ts +2 -2
- package/dist/components/email/password-changed-email.js +29 -22
- package/dist/components/email/reset-password-email.d.ts +2 -2
- package/dist/components/email/reset-password-email.js +29 -22
- package/dist/components/settings/account/account-settings.d.ts +2 -2
- package/dist/components/settings/account/account-settings.js +22 -19
- package/dist/components/settings/account/appearance.d.ts +1 -1
- package/dist/components/settings/account/appearance.js +70 -27
- package/dist/components/settings/account/change-avatar.js +88 -55
- package/dist/components/settings/account/change-email.d.ts +1 -1
- package/dist/components/settings/account/change-email.js +56 -28
- package/dist/components/settings/account/manage-account.d.ts +1 -1
- package/dist/components/settings/account/manage-account.js +50 -31
- package/dist/components/settings/account/manage-accounts.d.ts +1 -1
- package/dist/components/settings/account/manage-accounts.js +32 -36
- package/dist/components/settings/account/user-profile.d.ts +3 -3
- package/dist/components/settings/account/user-profile.js +105 -22
- package/dist/components/settings/security/active-session.d.ts +1 -1
- package/dist/components/settings/security/active-session.js +60 -51
- package/dist/components/settings/security/active-sessions.d.ts +1 -1
- package/dist/components/settings/security/active-sessions.js +32 -26
- package/dist/components/settings/security/change-password.d.ts +1 -1
- package/dist/components/settings/security/change-password.js +189 -76
- package/dist/components/settings/security/danger-zone.d.ts +2 -2
- package/dist/components/settings/security/danger-zone.js +17 -11
- package/dist/components/settings/security/delete-user.d.ts +1 -1
- package/dist/components/settings/security/delete-user.js +96 -46
- package/dist/components/settings/security/linked-account.d.ts +1 -1
- package/dist/components/settings/security/linked-account.js +61 -47
- package/dist/components/settings/security/linked-accounts.d.ts +1 -1
- package/dist/components/settings/security/linked-accounts.js +43 -40
- package/dist/components/settings/security/passkey.d.ts +8 -0
- package/dist/components/settings/security/passkey.js +43 -0
- package/dist/components/settings/security/passkeys.d.ts +6 -0
- package/dist/components/settings/security/passkeys.js +53 -0
- package/dist/components/settings/security/security-settings.d.ts +2 -2
- package/dist/components/settings/security/security-settings.js +24 -20
- package/dist/components/settings/settings.d.ts +3 -3
- package/dist/components/settings/settings.js +44 -27
- package/dist/components/user/switch-account-item.d.ts +1 -1
- package/dist/components/user/switch-account-item.js +19 -15
- package/dist/components/user/switch-account-menu.js +27 -28
- package/dist/components/user/user-avatar.d.ts +3 -3
- package/dist/components/user/user-avatar.js +28 -30
- package/dist/components/user/user-button.d.ts +1 -1
- package/dist/components/user/user-button.js +90 -23
- package/dist/components/user/user-view.d.ts +3 -3
- package/dist/components/user/user-view.js +36 -23
- package/dist/core.d.ts +1 -1
- package/dist/index.d.ts +35 -33
- package/dist/index.js +36 -33
- package/dist/react-exports.d.ts +1 -1
- package/package.json +17 -10
- package/src/components/auth/auth.tsx +1 -1
- package/src/components/auth/magic-link.tsx +4 -0
- package/src/components/auth/passkey-button.tsx +36 -0
- package/src/components/auth/sign-in.tsx +67 -30
- package/src/components/auth/sign-up.tsx +97 -3
- package/src/components/settings/account/user-profile.tsx +121 -6
- package/src/components/settings/security/passkey.tsx +51 -0
- package/src/components/settings/security/passkeys.tsx +104 -0
- package/src/components/settings/security/security-settings.tsx +3 -1
- package/src/components/settings/settings.tsx +1 -1
- package/src/index.tsx +2 -0
- package/dist/components/account/account.d.ts +0 -18
- package/dist/components/account/account.js +0 -24
- package/dist/components/account/settings/account-settings.d.ts +0 -5
- package/dist/components/account/settings/account-settings.js +0 -6
- package/dist/components/account/settings/settings.d.ts +0 -5
- package/dist/components/account/settings/settings.js +0 -5
- package/dist/components/account/settings/user-profile.d.ts +0 -5
- package/dist/components/account/settings/user-profile.js +0 -20
- package/dist/components/settings/account/accounts.d.ts +0 -14
- package/dist/components/settings/account/accounts.js +0 -26
- package/dist/components/settings/account/theme-selector.d.ts +0 -16
- package/dist/components/settings/account/theme-selector.js +0 -33
- package/dist/components/settings/account/theme-settings.d.ts +0 -16
- package/dist/components/settings/account/theme-settings.js +0 -31
- package/dist/components/settings/account-settings.d.ts +0 -5
- package/dist/components/settings/account-settings.js +0 -6
- package/dist/components/settings/account.d.ts +0 -18
- package/dist/components/settings/account.js +0 -24
- package/dist/components/settings/security/connected-account.d.ts +0 -16
- package/dist/components/settings/security/connected-account.js +0 -46
- package/dist/components/settings/security/connected-accounts.d.ts +0 -15
- package/dist/components/settings/security/connected-accounts.js +0 -31
- package/dist/components/settings/security/sessions.d.ts +0 -14
- package/dist/components/settings/security/sessions.js +0 -40
- package/dist/components/settings/settings/account-settings.d.ts +0 -5
- package/dist/components/settings/settings/account-settings.js +0 -6
- package/dist/components/settings/settings/user-profile.d.ts +0 -5
- package/dist/components/settings/settings/user-profile.js +0 -20
- package/dist/components/settings/user-profile.d.ts +0 -5
- package/dist/components/settings/user-profile.js +0 -20
- package/dist/components/user/switch-account-popover.d.ts +0 -10
- package/dist/components/user/switch-account-popover.js +0 -25
- package/dist/components/user/switch-account-submenu.d.ts +0 -10
- package/dist/components/user/switch-account-submenu.js +0 -25
- package/dist/hooks/use-auth.d.ts +0 -2
- package/dist/hooks/use-auth.js +0 -8
- package/dist/hooks/use-redirect-to.d.ts +0 -8
- package/dist/hooks/use-redirect-to.js +0 -19
- package/dist/hooks/use-sign-in.d.ts +0 -8
- package/dist/hooks/use-sign-in.js +0 -53
- package/dist/lib/utils.d.ts +0 -2
- package/dist/lib/utils.js +0 -5
- package/dist/server.d.ts +0 -1
- package/dist/server.js +0 -1
- package/dist/src/components/auth/auth-provider.d.ts +0 -8
- package/dist/src/components/auth/auth-provider.js +0 -13
- package/dist/src/components/auth/auth.d.ts +0 -22
- package/dist/src/components/auth/auth.js +0 -42
- package/dist/src/components/auth/field-separator.d.ts +0 -4
- package/dist/src/components/auth/field-separator.js +0 -5
- package/dist/src/components/auth/forgot-password.d.ts +0 -15
- package/dist/src/components/auth/forgot-password.js +0 -29
- package/dist/src/components/auth/magic-link-button.d.ts +0 -13
- package/dist/src/components/auth/magic-link-button.js +0 -20
- package/dist/src/components/auth/magic-link.d.ts +0 -17
- package/dist/src/components/auth/magic-link.js +0 -37
- package/dist/src/components/auth/provider-buttons.d.ts +0 -19
- package/dist/src/components/auth/provider-buttons.js +0 -35
- package/dist/src/components/auth/reset-password.d.ts +0 -11
- package/dist/src/components/auth/reset-password.js +0 -59
- package/dist/src/components/auth/sign-in.d.ts +0 -14
- package/dist/src/components/auth/sign-in.js +0 -58
- package/dist/src/components/auth/sign-out.d.ts +0 -11
- package/dist/src/components/auth/sign-out.js +0 -34
- package/dist/src/components/auth/sign-up.d.ts +0 -19
- package/dist/src/components/auth/sign-up.js +0 -65
- package/dist/src/components/email/email-changed-email.d.ts +0 -3
- package/dist/src/components/email/email-changed-email.js +0 -23
- package/dist/src/components/email/email-verification-email.d.ts +0 -3
- package/dist/src/components/email/email-verification-email.js +0 -23
- package/dist/src/components/email/magic-link-email.d.ts +0 -3
- package/dist/src/components/email/magic-link-email.js +0 -23
- package/dist/src/components/email/new-device-email.d.ts +0 -3
- package/dist/src/components/email/new-device-email.js +0 -23
- package/dist/src/components/email/otp-email.d.ts +0 -3
- package/dist/src/components/email/otp-email.js +0 -22
- package/dist/src/components/email/password-changed-email.d.ts +0 -3
- package/dist/src/components/email/password-changed-email.js +0 -23
- package/dist/src/components/email/reset-password-email.d.ts +0 -3
- package/dist/src/components/email/reset-password-email.js +0 -23
- package/dist/src/components/settings/account/account-settings.d.ts +0 -13
- package/dist/src/components/settings/account/account-settings.js +0 -19
- package/dist/src/components/settings/account/appearance.d.ts +0 -16
- package/dist/src/components/settings/account/appearance.js +0 -28
- package/dist/src/components/settings/account/change-email.d.ts +0 -15
- package/dist/src/components/settings/account/change-email.js +0 -35
- package/dist/src/components/settings/account/manage-account.d.ts +0 -19
- package/dist/src/components/settings/account/manage-account.js +0 -27
- package/dist/src/components/settings/account/manage-accounts.d.ts +0 -14
- package/dist/src/components/settings/account/manage-accounts.js +0 -27
- package/dist/src/components/settings/account/user-profile.d.ts +0 -13
- package/dist/src/components/settings/account/user-profile.js +0 -29
- package/dist/src/components/settings/security/active-session.d.ts +0 -14
- package/dist/src/components/settings/security/active-session.js +0 -35
- package/dist/src/components/settings/security/active-sessions.d.ts +0 -14
- package/dist/src/components/settings/security/active-sessions.js +0 -29
- package/dist/src/components/settings/security/change-password.d.ts +0 -15
- package/dist/src/components/settings/security/change-password.js +0 -57
- package/dist/src/components/settings/security/linked-account.d.ts +0 -16
- package/dist/src/components/settings/security/linked-account.js +0 -46
- package/dist/src/components/settings/security/linked-accounts.d.ts +0 -15
- package/dist/src/components/settings/security/linked-accounts.js +0 -31
- package/dist/src/components/settings/security/security-settings.d.ts +0 -15
- package/dist/src/components/settings/security/security-settings.js +0 -18
- package/dist/src/components/settings/settings.d.ts +0 -29
- package/dist/src/components/settings/settings.js +0 -39
- package/dist/src/components/user/switch-account-item.d.ts +0 -16
- package/dist/src/components/user/switch-account-item.js +0 -14
- package/dist/src/components/user/switch-account-menu.d.ts +0 -10
- package/dist/src/components/user/switch-account-menu.js +0 -23
- package/dist/src/components/user/user-avatar.d.ts +0 -24
- package/dist/src/components/user/user-avatar.js +0 -31
- package/dist/src/components/user/user-button.d.ts +0 -21
- package/dist/src/components/user/user-button.js +0 -24
- package/dist/src/components/user/user-view.d.ts +0 -21
- package/dist/src/components/user/user-view.js +0 -24
- package/dist/src/core.d.ts +0 -1
- package/dist/src/core.js +0 -1
- package/dist/src/index.d.ts +0 -31
- package/dist/src/index.js +0 -32
- package/dist/src/lib/utils.d.ts +0 -2
- package/dist/src/lib/utils.js +0 -5
- package/dist/src/react-exports.d.ts +0 -1
- package/dist/src/react-exports.js +0 -1
|
@@ -1,42 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useAuth, useListAccounts } from "@better-auth-ui/react";
|
|
3
|
-
import { Card
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
key: provider,
|
|
32
|
-
account: undefined,
|
|
33
|
-
provider
|
|
34
|
-
})) ?? [])
|
|
35
|
-
];
|
|
36
|
-
return (_jsxs("div", { children: [_jsx("h2", { className: cn("text-sm font-semibold mb-3"), children: localization.settings.linkedAccounts }), _jsx(Card, { className: cn(className), variant: variant, ...props, children: _jsx(Card.Content, { className: "gap-0", children: isPending
|
|
37
|
-
? socialProviders?.map((provider, index) => (_jsxs("div", { children: [index > 0 && (_jsx("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" })), _jsx(AccountRowSkeleton, {})] }, provider)))
|
|
38
|
-
: allRows.map((row, index) => (_jsxs("div", { children: [index > 0 && (_jsx("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" })), _jsx(LinkedAccount, { account: row.account, provider: row.provider })] }, row.key))) }) })] }));
|
|
1
|
+
import { LinkedAccount as e } from "./linked-account.js";
|
|
2
|
+
import { useAuth as t, useListAccounts as n } from "@better-auth-ui/react";
|
|
3
|
+
import { Card as r, Skeleton as i, cn as a, toast as o } from "@heroui/react";
|
|
4
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/settings/security/linked-accounts.tsx
|
|
6
|
+
function l({ className: i, variant: l, ...d }) {
|
|
7
|
+
let { localization: f, socialProviders: p } = t(), { data: m, isPending: h } = n({ throwOnError: (e) => (e.error && o.danger(e.error.message), !1) }), g = [...(m?.filter((e) => e.providerId !== "credential"))?.map((e) => ({
|
|
8
|
+
key: e.id,
|
|
9
|
+
account: e,
|
|
10
|
+
provider: e.providerId
|
|
11
|
+
})) ?? [], ...p?.map((e) => ({
|
|
12
|
+
key: e,
|
|
13
|
+
account: void 0,
|
|
14
|
+
provider: e
|
|
15
|
+
})) ?? []];
|
|
16
|
+
return /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h2", {
|
|
17
|
+
className: a("text-sm font-semibold mb-3"),
|
|
18
|
+
children: f.settings.linkedAccounts
|
|
19
|
+
}), /* @__PURE__ */ s(r, {
|
|
20
|
+
className: a(i),
|
|
21
|
+
variant: l,
|
|
22
|
+
...d,
|
|
23
|
+
children: /* @__PURE__ */ s(r.Content, {
|
|
24
|
+
className: "gap-0",
|
|
25
|
+
children: h ? p?.map((e, t) => /* @__PURE__ */ c("div", { children: [t > 0 && /* @__PURE__ */ s("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" }), /* @__PURE__ */ s(u, {})] }, e)) : g.map((t, n) => /* @__PURE__ */ c("div", { children: [n > 0 && /* @__PURE__ */ s("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" }), /* @__PURE__ */ s(e, {
|
|
26
|
+
account: t.account,
|
|
27
|
+
provider: t.provider
|
|
28
|
+
})] }, t.key))
|
|
29
|
+
})
|
|
30
|
+
})] });
|
|
39
31
|
}
|
|
40
|
-
function
|
|
41
|
-
|
|
32
|
+
function u() {
|
|
33
|
+
return /* @__PURE__ */ s("div", {
|
|
34
|
+
className: "flex items-center justify-between",
|
|
35
|
+
children: /* @__PURE__ */ c("div", {
|
|
36
|
+
className: "flex items-center gap-3",
|
|
37
|
+
children: [/* @__PURE__ */ s(i, { className: "size-10 rounded-xl" }), /* @__PURE__ */ c("div", {
|
|
38
|
+
className: "flex flex-col gap-1",
|
|
39
|
+
children: [/* @__PURE__ */ s(i, { className: "h-4 w-20 rounded-lg" }), /* @__PURE__ */ s(i, { className: "h-3 w-32 rounded-lg" })]
|
|
40
|
+
})]
|
|
41
|
+
})
|
|
42
|
+
});
|
|
42
43
|
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { l as LinkedAccounts };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useAuth as e, useDeletePasskey as t } from "@better-auth-ui/react";
|
|
2
|
+
import { Button as n, Spinner as r, toast as i } from "@heroui/react";
|
|
3
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
4
|
+
import { Fingerprint as s, Xmark as c } from "@gravity-ui/icons";
|
|
5
|
+
//#region src/components/settings/security/passkey.tsx
|
|
6
|
+
function l({ passkey: l }) {
|
|
7
|
+
let { localization: u } = e(), { mutate: d, isPending: f } = t({ onError: (e) => i.danger(e.error?.message || e.message) });
|
|
8
|
+
return /* @__PURE__ */ o("div", {
|
|
9
|
+
className: "flex items-center gap-3",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ a("div", {
|
|
12
|
+
className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-secondary",
|
|
13
|
+
children: /* @__PURE__ */ a(s, { className: "size-4.5" })
|
|
14
|
+
}),
|
|
15
|
+
/* @__PURE__ */ o("div", {
|
|
16
|
+
className: "flex flex-col min-w-0",
|
|
17
|
+
children: [/* @__PURE__ */ a("span", {
|
|
18
|
+
className: "text-sm font-medium leading-tight",
|
|
19
|
+
children: l.name || u.auth.passkey
|
|
20
|
+
}), /* @__PURE__ */ a("span", {
|
|
21
|
+
className: "text-xs text-muted",
|
|
22
|
+
children: new Date(l.createdAt).toLocaleString(void 0, {
|
|
23
|
+
dateStyle: "medium",
|
|
24
|
+
timeStyle: "short"
|
|
25
|
+
})
|
|
26
|
+
})]
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ o(n, {
|
|
29
|
+
className: "ml-auto shrink-0",
|
|
30
|
+
variant: "outline",
|
|
31
|
+
size: "sm",
|
|
32
|
+
isPending: f,
|
|
33
|
+
onPress: () => d({ id: l.id }),
|
|
34
|
+
children: [f ? /* @__PURE__ */ a(r, {
|
|
35
|
+
color: "current",
|
|
36
|
+
size: "sm"
|
|
37
|
+
}) : /* @__PURE__ */ a(c, {}), u.settings.delete]
|
|
38
|
+
})
|
|
39
|
+
]
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { l as Passkey };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CardProps } from '@heroui/react';
|
|
2
|
+
export type PasskeysProps = {
|
|
3
|
+
className?: string;
|
|
4
|
+
variant?: CardProps["variant"];
|
|
5
|
+
};
|
|
6
|
+
export declare function Passkeys({ className, variant, ...props }: PasskeysProps & CardProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Passkey as e } from "./passkey.js";
|
|
2
|
+
import { useAddPasskey as t, useAuth as n, useListUserPasskeys as r } from "@better-auth-ui/react";
|
|
3
|
+
import { Button as i, Card as a, Skeleton as o, Spinner as s, cn as c, toast as l } from "@heroui/react";
|
|
4
|
+
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/settings/security/passkeys.tsx
|
|
6
|
+
function p({ className: o, variant: p, ...h }) {
|
|
7
|
+
let { localization: g } = n(), { data: _, isPending: v } = r({ throwOnError: (e) => (e.error && l.danger(e.error.message), !1) }), { mutate: y, isPending: b } = t({ onError: (e) => l.danger(e.error?.message || e.message) });
|
|
8
|
+
return /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("h2", {
|
|
9
|
+
className: c("text-sm font-semibold mb-3"),
|
|
10
|
+
children: g.settings.passkeys
|
|
11
|
+
}), /* @__PURE__ */ d(a, {
|
|
12
|
+
className: c(o),
|
|
13
|
+
variant: p,
|
|
14
|
+
...h,
|
|
15
|
+
children: /* @__PURE__ */ f(a.Content, {
|
|
16
|
+
className: "gap-0",
|
|
17
|
+
children: [/* @__PURE__ */ f("div", {
|
|
18
|
+
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
19
|
+
children: [/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("p", {
|
|
20
|
+
className: "text-sm font-medium leading-tight",
|
|
21
|
+
children: g.settings.passkeysDescription
|
|
22
|
+
}), /* @__PURE__ */ d("p", {
|
|
23
|
+
className: "text-muted text-xs mt-0.5",
|
|
24
|
+
children: g.settings.passkeysInstructions
|
|
25
|
+
})] }), /* @__PURE__ */ f(i, {
|
|
26
|
+
className: "shrink-0",
|
|
27
|
+
size: "sm",
|
|
28
|
+
isPending: b,
|
|
29
|
+
isDisabled: v,
|
|
30
|
+
onPress: () => y(),
|
|
31
|
+
children: [b && /* @__PURE__ */ d(s, {
|
|
32
|
+
color: "current",
|
|
33
|
+
size: "sm"
|
|
34
|
+
}), g.settings.addPasskey]
|
|
35
|
+
})]
|
|
36
|
+
}), v ? /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" }), /* @__PURE__ */ d(m, {})] }) : _?.map((t) => /* @__PURE__ */ f("div", { children: [/* @__PURE__ */ d("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" }), /* @__PURE__ */ d(e, { passkey: t })] }, t.id))]
|
|
37
|
+
})
|
|
38
|
+
})] });
|
|
39
|
+
}
|
|
40
|
+
function m() {
|
|
41
|
+
return /* @__PURE__ */ d("div", {
|
|
42
|
+
className: "flex items-center justify-between",
|
|
43
|
+
children: /* @__PURE__ */ f("div", {
|
|
44
|
+
className: "flex items-center gap-3",
|
|
45
|
+
children: [/* @__PURE__ */ d(o, { className: "size-10 rounded-xl" }), /* @__PURE__ */ f("div", {
|
|
46
|
+
className: "flex flex-col gap-1",
|
|
47
|
+
children: [/* @__PURE__ */ d(o, { className: "h-4 w-24 rounded-lg" }), /* @__PURE__ */ d(o, { className: "h-3 w-20 rounded-lg" })]
|
|
48
|
+
})]
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { p as Passkeys };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { CardProps } from '@heroui/react';
|
|
2
|
+
import { ComponentProps } from 'react';
|
|
3
3
|
export type SecuritySettingsProps = {
|
|
4
4
|
className?: string;
|
|
5
5
|
variant?: CardProps["variant"];
|
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { ActiveSessions as e } from "./active-sessions.js";
|
|
2
|
+
import { ChangePassword as t } from "./change-password.js";
|
|
3
|
+
import { DangerZone as n } from "./danger-zone.js";
|
|
4
|
+
import { LinkedAccounts as r } from "./linked-accounts.js";
|
|
5
|
+
import { Passkeys as i } from "./passkeys.js";
|
|
6
|
+
import { useAuth as a } from "@better-auth-ui/react";
|
|
7
|
+
import { cn as o } from "@heroui/react";
|
|
8
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
9
|
+
//#region src/components/settings/security/security-settings.tsx
|
|
10
|
+
function l({ className: l, variant: u, ...d }) {
|
|
11
|
+
let { deleteUser: f, emailAndPassword: p, passkey: m, socialProviders: h } = a();
|
|
12
|
+
return /* @__PURE__ */ c("div", {
|
|
13
|
+
className: o("flex w-full flex-col gap-4 md:gap-6", l),
|
|
14
|
+
...d,
|
|
15
|
+
children: [
|
|
16
|
+
p?.enabled && /* @__PURE__ */ s(t, { variant: u }),
|
|
17
|
+
!!h?.length && /* @__PURE__ */ s(r, { variant: u }),
|
|
18
|
+
m && /* @__PURE__ */ s(i, { variant: u }),
|
|
19
|
+
/* @__PURE__ */ s(e, { variant: u }),
|
|
20
|
+
f?.enabled && /* @__PURE__ */ s(n, { variant: u })
|
|
21
|
+
]
|
|
22
|
+
});
|
|
21
23
|
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { l as SecuritySettings };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { SettingsView } from '@better-auth-ui/core';
|
|
2
|
+
import { CardProps } from '@heroui/react';
|
|
3
|
+
import { ComponentProps } from 'react';
|
|
4
4
|
export type SettingsProps = {
|
|
5
5
|
className?: string;
|
|
6
6
|
hideNav?: boolean;
|
|
@@ -1,28 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
import { AccountSettings as e } from "./account/account-settings.js";
|
|
2
|
+
import { SecuritySettings as t } from "./security/security-settings.js";
|
|
3
|
+
import { useAuth as n, useAuthenticate as r } from "@better-auth-ui/react";
|
|
4
|
+
import { Tabs as i, cn as a } from "@heroui/react";
|
|
5
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
|
+
import { useMemo as c } from "react";
|
|
7
|
+
//#region src/components/settings/settings.tsx
|
|
8
|
+
function l({ className: l, hideNav: u, path: d, variant: f, view: p, ...m }) {
|
|
9
|
+
let { basePaths: h, localization: g, viewPaths: _ } = n();
|
|
10
|
+
if (r(), !p && !d) throw Error("[Better Auth UI] Either `view` or `path` must be provided");
|
|
11
|
+
let v = c(() => Object.fromEntries(Object.entries(_.settings).map(([e, t]) => [t, e])), [_.settings]), y = p || (d ? v[d] : void 0);
|
|
12
|
+
return /* @__PURE__ */ s(i, {
|
|
13
|
+
className: a(l),
|
|
14
|
+
orientation: "horizontal",
|
|
15
|
+
selectedKey: y,
|
|
16
|
+
...m,
|
|
17
|
+
children: [
|
|
18
|
+
/* @__PURE__ */ o(i.ListContainer, { children: /* @__PURE__ */ s(i.List, {
|
|
19
|
+
"aria-label": g.settings.settings,
|
|
20
|
+
className: "overflow-auto w-fit",
|
|
21
|
+
children: [/* @__PURE__ */ s(i.Tab, {
|
|
22
|
+
id: "account",
|
|
23
|
+
href: `${h.settings}/${_.settings.account}`,
|
|
24
|
+
children: [g.settings.account, /* @__PURE__ */ o(i.Indicator, {})]
|
|
25
|
+
}), /* @__PURE__ */ s(i.Tab, {
|
|
26
|
+
id: "security",
|
|
27
|
+
href: `${h.settings}/${_.settings.security}`,
|
|
28
|
+
children: [g.settings.security, /* @__PURE__ */ o(i.Indicator, {})]
|
|
29
|
+
})]
|
|
30
|
+
}) }),
|
|
31
|
+
/* @__PURE__ */ o(i.Panel, {
|
|
32
|
+
id: "account",
|
|
33
|
+
className: "px-0",
|
|
34
|
+
children: /* @__PURE__ */ o(e, { variant: f })
|
|
35
|
+
}),
|
|
36
|
+
/* @__PURE__ */ o(i.Panel, {
|
|
37
|
+
id: "security",
|
|
38
|
+
className: "px-0",
|
|
39
|
+
children: /* @__PURE__ */ o(t, { variant: f })
|
|
40
|
+
})
|
|
41
|
+
]
|
|
42
|
+
});
|
|
28
43
|
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { l as Settings };
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useSetActiveSession } from "@better-auth-ui/react";
|
|
3
|
-
import { Dropdown, Spinner, toast } from "@heroui/react";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { UserView as e } from "./user-view.js";
|
|
2
|
+
import { useSetActiveSession as t } from "@better-auth-ui/react";
|
|
3
|
+
import { Dropdown as n, Spinner as r, toast as i } from "@heroui/react";
|
|
4
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/user/switch-account-item.tsx
|
|
6
|
+
function s({ deviceSession: s }) {
|
|
7
|
+
let { mutate: c, isPending: l } = t({ onError: (e) => i.danger(e.error?.message || e.message) });
|
|
8
|
+
return /* @__PURE__ */ o(n.Item, {
|
|
9
|
+
className: "px-2",
|
|
10
|
+
isDisabled: l,
|
|
11
|
+
onPress: () => c({ sessionToken: s.session.token }),
|
|
12
|
+
children: [/* @__PURE__ */ a(e, { user: s.user }), l && /* @__PURE__ */ a(r, {
|
|
13
|
+
color: "current",
|
|
14
|
+
size: "sm",
|
|
15
|
+
className: "ml-auto"
|
|
16
|
+
})]
|
|
17
|
+
});
|
|
16
18
|
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { s as SwitchAccountItem };
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Dropdown, Label, Separator, toast } from "@heroui/react";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return (_jsx(Dropdown.Popover, { className: "min-w-40 md:min-w-56 max-w-[48svw]", children: _jsxs(Dropdown.Menu, { children: [_jsxs(Dropdown.Item, { className: "px-2", children: [_jsx(UserView, { isPending: isPending }), !isPending && _jsx(Check, { className: "ml-auto" })] }), deviceSessions
|
|
27
|
-
?.filter((deviceSession) => deviceSession.session.id !== session?.session?.id)
|
|
28
|
-
.map((deviceSession) => (_jsx(SwitchAccountItem, { deviceSession: deviceSession }, deviceSession.session.id))), _jsx(Separator, {}), _jsxs(Dropdown.Item, { textValue: localization.auth.addAccount, href: `${basePaths.auth}/${viewPaths.auth.signIn}`, children: [_jsx(CirclePlus, { className: "text-muted" }), _jsx(Label, { children: localization.auth.addAccount })] })] }) }));
|
|
1
|
+
import { UserView as e } from "./user-view.js";
|
|
2
|
+
import { SwitchAccountItem as t } from "./switch-account-item.js";
|
|
3
|
+
import { useAuth as n, useListDeviceSessions as r, useSession as i } from "@better-auth-ui/react";
|
|
4
|
+
import { Dropdown as a, Label as o, Separator as s, toast as c } from "@heroui/react";
|
|
5
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
|
+
import { Check as d, CirclePlus as f } from "@gravity-ui/icons";
|
|
7
|
+
//#region src/components/user/switch-account-menu.tsx
|
|
8
|
+
function p() {
|
|
9
|
+
let { basePaths: p, viewPaths: m, localization: h } = n(), { data: g } = i(), { data: _, isPending: v } = r({ throwOnError: (e) => (e.error && c.danger(e.error.message), !1) });
|
|
10
|
+
return /* @__PURE__ */ l(a.Popover, {
|
|
11
|
+
className: "min-w-40 md:min-w-56 max-w-[48svw]",
|
|
12
|
+
children: /* @__PURE__ */ u(a.Menu, { children: [
|
|
13
|
+
/* @__PURE__ */ u(a.Item, {
|
|
14
|
+
className: "px-2",
|
|
15
|
+
children: [/* @__PURE__ */ l(e, { isPending: v }), !v && /* @__PURE__ */ l(d, { className: "ml-auto" })]
|
|
16
|
+
}),
|
|
17
|
+
_?.filter((e) => e.session.id !== g?.session?.id).map((e) => /* @__PURE__ */ l(t, { deviceSession: e }, e.session.id)),
|
|
18
|
+
/* @__PURE__ */ l(s, {}),
|
|
19
|
+
/* @__PURE__ */ u(a.Item, {
|
|
20
|
+
textValue: h.auth.addAccount,
|
|
21
|
+
href: `${p.auth}/${m.auth.signIn}`,
|
|
22
|
+
children: [/* @__PURE__ */ l(f, { className: "text-muted" }), /* @__PURE__ */ l(o, { children: h.auth.addAccount })]
|
|
23
|
+
})
|
|
24
|
+
] })
|
|
25
|
+
});
|
|
29
26
|
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { p as SwitchAccountMenu };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { AvatarProps } from '@heroui/react';
|
|
2
|
+
import { User } from 'better-auth';
|
|
3
|
+
import { ReactNode } from 'react';
|
|
4
4
|
export type UserAvatarProps = {
|
|
5
5
|
className?: string;
|
|
6
6
|
fallback?: ReactNode;
|
|
@@ -1,31 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
.toUpperCase();
|
|
28
|
-
return (_jsxs(Avatar, { size: size, className: cn("rounded-full", className), style: style, ...props, children: [_jsx(Avatar.Image, { alt: resolvedUser?.displayUsername ||
|
|
29
|
-
resolvedUser?.name ||
|
|
30
|
-
resolvedUser?.email, src: resolvedUser?.image ?? undefined }), _jsx(Avatar.Fallback, { className: cn(size === "lg" ? "text-xl" : size === "md" ? "text-base" : "text-sm"), delayMs: resolvedUser?.image ? 600 : undefined, children: fallback || initials || _jsx(Person, { className: "size-4" }) })] }));
|
|
1
|
+
import { useSession as e } from "@better-auth-ui/react";
|
|
2
|
+
import { Avatar as t, Skeleton as n, cn as r } from "@heroui/react";
|
|
3
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
4
|
+
import { Person as o } from "@gravity-ui/icons";
|
|
5
|
+
//#region src/components/user/user-avatar.tsx
|
|
6
|
+
function s({ className: s, fallback: c, isPending: l, user: u, size: d = "sm", style: f, ...p }) {
|
|
7
|
+
let { data: m, isPending: h } = e({ enabled: !u && !l });
|
|
8
|
+
if ((l || h) && !u) return /* @__PURE__ */ i(n, {
|
|
9
|
+
className: r("rounded-full", d === "sm" ? "size-8" : d === "md" ? "size-10" : "size-12", s),
|
|
10
|
+
style: f
|
|
11
|
+
});
|
|
12
|
+
let g = u ?? m?.user, _ = (g?.username || g?.name || g?.email)?.slice(0, 2).toUpperCase();
|
|
13
|
+
return /* @__PURE__ */ a(t, {
|
|
14
|
+
size: d,
|
|
15
|
+
className: r("rounded-full", s),
|
|
16
|
+
style: f,
|
|
17
|
+
...p,
|
|
18
|
+
children: [/* @__PURE__ */ i(t.Image, {
|
|
19
|
+
alt: g?.displayUsername || g?.name || g?.email,
|
|
20
|
+
src: g?.image ?? void 0
|
|
21
|
+
}), /* @__PURE__ */ i(t.Fallback, {
|
|
22
|
+
className: r(d === "lg" ? "text-xl" : d === "md" ? "text-base" : "text-sm"),
|
|
23
|
+
delayMs: g?.image ? 600 : void 0,
|
|
24
|
+
children: c || _ || /* @__PURE__ */ i(o, { className: "size-4" })
|
|
25
|
+
})]
|
|
26
|
+
});
|
|
31
27
|
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { s as UserAvatar };
|