@better-auth-ui/heroui 1.6.1 → 1.6.3
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 +16 -11
- package/dist/components/auth/auth.d.ts +4 -4
- package/dist/components/auth/auth.js +36 -41
- package/dist/components/auth/error-toaster.d.ts +1 -0
- package/dist/components/auth/error-toaster.js +17 -0
- 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 +2 -2
- package/dist/components/auth/forgot-password.js +66 -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 +3 -3
- package/dist/components/auth/magic-link.js +98 -43
- package/dist/components/auth/passkey-button.js +20 -12
- package/dist/components/auth/provider-button.d.ts +15 -0
- package/dist/components/auth/provider-button.js +29 -0
- package/dist/components/auth/provider-buttons.d.ts +4 -10
- package/dist/components/auth/provider-buttons.js +19 -33
- package/dist/components/auth/reset-password.d.ts +2 -2
- package/dist/components/auth/reset-password.js +143 -57
- package/dist/components/auth/sign-in.d.ts +3 -3
- package/dist/components/auth/sign-in.js +151 -64
- package/dist/components/auth/sign-out.js +26 -32
- package/dist/components/auth/sign-up.d.ts +3 -3
- package/dist/components/auth/sign-up.js +231 -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 +2 -2
- 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 +2 -2
- package/dist/components/settings/account/change-email.js +53 -28
- package/dist/components/settings/account/manage-account.d.ts +1 -1
- package/dist/components/settings/account/manage-account.js +47 -31
- package/dist/components/settings/account/manage-accounts.d.ts +2 -2
- package/dist/components/settings/account/manage-accounts.js +32 -36
- package/dist/components/settings/account/user-profile.d.ts +4 -4
- package/dist/components/settings/account/user-profile.js +102 -22
- package/dist/components/settings/security/active-session.d.ts +1 -1
- package/dist/components/settings/security/active-session.js +57 -51
- package/dist/components/settings/security/active-sessions.d.ts +2 -2
- package/dist/components/settings/security/active-sessions.js +32 -26
- package/dist/components/settings/security/change-password.d.ts +2 -2
- package/dist/components/settings/security/change-password.js +186 -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 +2 -2
- package/dist/components/settings/security/delete-user.js +91 -46
- package/dist/components/settings/security/linked-account.d.ts +1 -1
- package/dist/components/settings/security/linked-account.js +55 -47
- package/dist/components/settings/security/linked-accounts.d.ts +2 -2
- package/dist/components/settings/security/linked-accounts.js +43 -40
- package/dist/components/settings/security/passkey.js +42 -13
- package/dist/components/settings/security/passkeys.d.ts +2 -2
- package/dist/components/settings/security/passkeys.js +51 -19
- package/dist/components/settings/security/security-settings.d.ts +2 -2
- package/dist/components/settings/security/security-settings.js +24 -21
- 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 +36 -35
- package/dist/index.js +37 -35
- package/dist/react-exports.d.ts +1 -1
- package/package.json +15 -11
- package/src/components/auth/auth-provider.tsx +4 -0
- package/src/components/auth/auth.tsx +2 -2
- package/src/components/auth/error-toaster.tsx +25 -0
- package/src/components/auth/forgot-password.tsx +1 -2
- package/src/components/auth/magic-link.tsx +3 -23
- package/src/components/auth/passkey-button.tsx +1 -2
- package/src/components/auth/provider-button.tsx +67 -0
- package/src/components/auth/provider-buttons.tsx +26 -43
- package/src/components/auth/reset-password.tsx +1 -2
- package/src/components/auth/sign-in.tsx +63 -48
- package/src/components/auth/sign-up.tsx +99 -20
- package/src/components/settings/account/appearance.tsx +1 -1
- package/src/components/settings/account/change-avatar.tsx +1 -3
- package/src/components/settings/account/change-email.tsx +2 -3
- package/src/components/settings/account/manage-account.tsx +1 -4
- package/src/components/settings/account/manage-accounts.tsx +3 -8
- package/src/components/settings/account/user-profile.tsx +122 -8
- package/src/components/settings/security/active-session.tsx +0 -1
- package/src/components/settings/security/active-sessions.tsx +3 -8
- package/src/components/settings/security/change-password.tsx +7 -4
- package/src/components/settings/security/delete-user.tsx +1 -4
- package/src/components/settings/security/linked-account.tsx +4 -14
- package/src/components/settings/security/linked-accounts.tsx +3 -8
- package/src/components/settings/security/passkey.tsx +2 -4
- package/src/components/settings/security/passkeys.tsx +4 -12
- package/src/components/settings/settings.tsx +1 -1
- package/src/components/user/switch-account-item.tsx +2 -4
- package/src/components/user/switch-account-menu.tsx +2 -7
- package/src/index.tsx +1 -0
|
@@ -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 } from "@heroui/react";
|
|
4
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/settings/security/linked-accounts.tsx
|
|
6
|
+
function c({ className: i, variant: c, ...u }) {
|
|
7
|
+
let { localization: d, socialProviders: f } = t(), { data: p, isPending: m } = n(), h = [...(p?.filter((e) => e.providerId !== "credential"))?.map((e) => ({
|
|
8
|
+
key: e.id,
|
|
9
|
+
account: e,
|
|
10
|
+
provider: e.providerId
|
|
11
|
+
})) ?? [], ...f?.map((e) => ({
|
|
12
|
+
key: e,
|
|
13
|
+
account: void 0,
|
|
14
|
+
provider: e
|
|
15
|
+
})) ?? []];
|
|
16
|
+
return /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("h2", {
|
|
17
|
+
className: a("text-sm font-semibold mb-3"),
|
|
18
|
+
children: d.settings.linkedAccounts
|
|
19
|
+
}), /* @__PURE__ */ o(r, {
|
|
20
|
+
className: a(i),
|
|
21
|
+
variant: c,
|
|
22
|
+
...u,
|
|
23
|
+
children: /* @__PURE__ */ o(r.Content, {
|
|
24
|
+
className: "gap-0",
|
|
25
|
+
children: m ? f?.map((e, t) => /* @__PURE__ */ s("div", { children: [t > 0 && /* @__PURE__ */ o("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" }), /* @__PURE__ */ o(l, {})] }, e)) : h.map((t, n) => /* @__PURE__ */ s("div", { children: [n > 0 && /* @__PURE__ */ o("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" }), /* @__PURE__ */ o(e, {
|
|
26
|
+
account: t.account,
|
|
27
|
+
provider: t.provider
|
|
28
|
+
})] }, t.key))
|
|
29
|
+
})
|
|
30
|
+
})] });
|
|
39
31
|
}
|
|
40
|
-
function
|
|
41
|
-
|
|
32
|
+
function l() {
|
|
33
|
+
return /* @__PURE__ */ o("div", {
|
|
34
|
+
className: "flex items-center justify-between",
|
|
35
|
+
children: /* @__PURE__ */ s("div", {
|
|
36
|
+
className: "flex items-center gap-3",
|
|
37
|
+
children: [/* @__PURE__ */ o(i, { className: "size-10 rounded-xl" }), /* @__PURE__ */ s("div", {
|
|
38
|
+
className: "flex flex-col gap-1",
|
|
39
|
+
children: [/* @__PURE__ */ o(i, { className: "h-4 w-20 rounded-lg" }), /* @__PURE__ */ o(i, { className: "h-3 w-32 rounded-lg" })]
|
|
40
|
+
})]
|
|
41
|
+
})
|
|
42
|
+
});
|
|
42
43
|
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { c as LinkedAccounts };
|
|
@@ -1,14 +1,43 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { useAuth as e, useDeletePasskey as t } from "@better-auth-ui/react";
|
|
2
|
+
import { Button as n, Spinner as r } from "@heroui/react";
|
|
3
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
4
|
+
import { Fingerprint as o, Xmark as s } from "@gravity-ui/icons";
|
|
5
|
+
//#region src/components/settings/security/passkey.tsx
|
|
6
|
+
function c({ passkey: c }) {
|
|
7
|
+
let { localization: l } = e(), { mutate: u, isPending: d } = t();
|
|
8
|
+
return /* @__PURE__ */ a("div", {
|
|
9
|
+
className: "flex items-center gap-3",
|
|
10
|
+
children: [
|
|
11
|
+
/* @__PURE__ */ i("div", {
|
|
12
|
+
className: "flex size-10 shrink-0 items-center justify-center rounded-xl bg-surface-secondary",
|
|
13
|
+
children: /* @__PURE__ */ i(o, { className: "size-4.5" })
|
|
14
|
+
}),
|
|
15
|
+
/* @__PURE__ */ a("div", {
|
|
16
|
+
className: "flex flex-col min-w-0",
|
|
17
|
+
children: [/* @__PURE__ */ i("span", {
|
|
18
|
+
className: "text-sm font-medium leading-tight",
|
|
19
|
+
children: c.name || l.auth.passkey
|
|
20
|
+
}), /* @__PURE__ */ i("span", {
|
|
21
|
+
className: "text-xs text-muted",
|
|
22
|
+
children: new Date(c.createdAt).toLocaleString(void 0, {
|
|
23
|
+
dateStyle: "medium",
|
|
24
|
+
timeStyle: "short"
|
|
25
|
+
})
|
|
26
|
+
})]
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ a(n, {
|
|
29
|
+
className: "ml-auto shrink-0",
|
|
30
|
+
variant: "outline",
|
|
31
|
+
size: "sm",
|
|
32
|
+
isPending: d,
|
|
33
|
+
onPress: () => u({ id: c.id }),
|
|
34
|
+
children: [d ? /* @__PURE__ */ i(r, {
|
|
35
|
+
color: "current",
|
|
36
|
+
size: "sm"
|
|
37
|
+
}) : /* @__PURE__ */ i(s, {}), l.settings.delete]
|
|
38
|
+
})
|
|
39
|
+
]
|
|
40
|
+
});
|
|
14
41
|
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { c as Passkey };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CardProps } from '@heroui/react';
|
|
2
2
|
export type PasskeysProps = {
|
|
3
3
|
className?: string;
|
|
4
4
|
variant?: CardProps["variant"];
|
|
5
5
|
};
|
|
6
|
-
export declare function Passkeys({ className, variant, ...props }: PasskeysProps & CardProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare function Passkeys({ className, variant, ...props }: PasskeysProps & Omit<CardProps, "children">): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,21 +1,53 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useAddPasskey, useAuth, useListUserPasskeys } from "@better-auth-ui/react";
|
|
3
|
-
import { Button, Card
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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 } from "@heroui/react";
|
|
4
|
+
import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/settings/security/passkeys.tsx
|
|
6
|
+
function f({ className: o, variant: f, ...m }) {
|
|
7
|
+
let { localization: h } = n(), { data: g, isPending: _ } = r(), { mutate: v, isPending: y } = t();
|
|
8
|
+
return /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("h2", {
|
|
9
|
+
className: c("text-sm font-semibold mb-3"),
|
|
10
|
+
children: h.settings.passkeys
|
|
11
|
+
}), /* @__PURE__ */ u(a, {
|
|
12
|
+
className: c(o),
|
|
13
|
+
variant: f,
|
|
14
|
+
...m,
|
|
15
|
+
children: /* @__PURE__ */ d(a.Content, {
|
|
16
|
+
className: "gap-0",
|
|
17
|
+
children: [/* @__PURE__ */ d("div", {
|
|
18
|
+
className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
|
|
19
|
+
children: [/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("p", {
|
|
20
|
+
className: "text-sm font-medium leading-tight",
|
|
21
|
+
children: h.settings.passkeysDescription
|
|
22
|
+
}), /* @__PURE__ */ u("p", {
|
|
23
|
+
className: "text-muted text-xs mt-0.5",
|
|
24
|
+
children: h.settings.passkeysInstructions
|
|
25
|
+
})] }), /* @__PURE__ */ d(i, {
|
|
26
|
+
className: "shrink-0",
|
|
27
|
+
size: "sm",
|
|
28
|
+
isPending: y,
|
|
29
|
+
isDisabled: _,
|
|
30
|
+
onPress: () => v(),
|
|
31
|
+
children: [y && /* @__PURE__ */ u(s, {
|
|
32
|
+
color: "current",
|
|
33
|
+
size: "sm"
|
|
34
|
+
}), h.settings.addPasskey]
|
|
35
|
+
})]
|
|
36
|
+
}), _ ? /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" }), /* @__PURE__ */ u(p, {})] }) : g?.map((t) => /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("div", { className: "border-b border-dashed -mx-4 md:-mx-6 my-4" }), /* @__PURE__ */ u(e, { passkey: t })] }, t.id))]
|
|
37
|
+
})
|
|
38
|
+
})] });
|
|
18
39
|
}
|
|
19
|
-
function
|
|
20
|
-
|
|
40
|
+
function p() {
|
|
41
|
+
return /* @__PURE__ */ u("div", {
|
|
42
|
+
className: "flex items-center justify-between",
|
|
43
|
+
children: /* @__PURE__ */ d("div", {
|
|
44
|
+
className: "flex items-center gap-3",
|
|
45
|
+
children: [/* @__PURE__ */ u(o, { className: "size-10 rounded-xl" }), /* @__PURE__ */ d("div", {
|
|
46
|
+
className: "flex flex-col gap-1",
|
|
47
|
+
children: [/* @__PURE__ */ u(o, { className: "h-4 w-24 rounded-lg" }), /* @__PURE__ */ u(o, { className: "h-3 w-20 rounded-lg" })]
|
|
48
|
+
})]
|
|
49
|
+
})
|
|
50
|
+
});
|
|
21
51
|
}
|
|
52
|
+
//#endregion
|
|
53
|
+
export { f 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,22 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
+
});
|
|
22
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
|
|
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 } from "@heroui/react";
|
|
4
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/user/switch-account-item.tsx
|
|
6
|
+
function o({ deviceSession: o }) {
|
|
7
|
+
let { mutate: s, isPending: c } = t();
|
|
8
|
+
return /* @__PURE__ */ a(n.Item, {
|
|
9
|
+
className: "px-2",
|
|
10
|
+
isDisabled: c,
|
|
11
|
+
onPress: () => s({ sessionToken: o.session.token }),
|
|
12
|
+
children: [/* @__PURE__ */ i(e, { user: o.user }), c && /* @__PURE__ */ i(r, {
|
|
13
|
+
color: "current",
|
|
14
|
+
size: "sm",
|
|
15
|
+
className: "ml-auto"
|
|
16
|
+
})]
|
|
17
|
+
});
|
|
16
18
|
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { o as SwitchAccountItem };
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Dropdown, Label, Separator
|
|
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 } from "@heroui/react";
|
|
5
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
6
|
+
import { Check as u, CirclePlus as d } from "@gravity-ui/icons";
|
|
7
|
+
//#region src/components/user/switch-account-menu.tsx
|
|
8
|
+
function f() {
|
|
9
|
+
let { basePaths: f, viewPaths: p, localization: m } = n(), { data: h } = i(), { data: g, isPending: _ } = r();
|
|
10
|
+
return /* @__PURE__ */ c(a.Popover, {
|
|
11
|
+
className: "min-w-40 md:min-w-56 max-w-[48svw]",
|
|
12
|
+
children: /* @__PURE__ */ l(a.Menu, { children: [
|
|
13
|
+
/* @__PURE__ */ l(a.Item, {
|
|
14
|
+
className: "px-2",
|
|
15
|
+
children: [/* @__PURE__ */ c(e, { isPending: _ }), !_ && /* @__PURE__ */ c(u, { className: "ml-auto" })]
|
|
16
|
+
}),
|
|
17
|
+
g?.filter((e) => e.session.id !== h?.session?.id).map((e) => /* @__PURE__ */ c(t, { deviceSession: e }, e.session.id)),
|
|
18
|
+
/* @__PURE__ */ c(s, {}),
|
|
19
|
+
/* @__PURE__ */ l(a.Item, {
|
|
20
|
+
textValue: m.auth.addAccount,
|
|
21
|
+
href: `${f.auth}/${p.auth.signIn}`,
|
|
22
|
+
children: [/* @__PURE__ */ c(d, { className: "text-muted" }), /* @__PURE__ */ c(o, { children: m.auth.addAccount })]
|
|
23
|
+
})
|
|
24
|
+
] })
|
|
25
|
+
});
|
|
29
26
|
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { f 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 };
|