@explita/cloud-auth-client 0.1.2 → 0.1.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.
@@ -66,8 +66,8 @@ function ChangePassword({ user, open, onOpenChange, onSubmit, onSuccess, }) {
66
66
  user?.email)))),
67
67
  react_1.default.createElement("div", { className: "ecpauth:px-6 ecpauth:pb-8" },
68
68
  state?.status === "success" ? (react_1.default.createElement("div", { className: "ecpauth:mb-6" },
69
- react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-green-50 ecpauth:dark:bg-green-900/10 ecpauth:border ecpauth:border-green-100 ecpauth:dark:border-green-800/30 ecpauth:text-green-700 ecpauth:dark:text-green-400", variant: "success" }))) : state?.message ? (react_1.default.createElement("div", { className: "ecpauth:mb-6" },
70
- react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-red-50 ecpauth:dark:bg-red-900/10 ecpauth:border ecpauth:border-red-100 ecpauth:dark:border-red-800/30 ecpauth:text-red-700 ecpauth:dark:text-red-400" }))) : null,
69
+ react_1.default.createElement(message_1.Message, { message: state?.message, variant: "success" }))) : state?.message ? (react_1.default.createElement("div", { className: "ecpauth:mb-6" },
70
+ react_1.default.createElement(message_1.Message, { message: state?.message }))) : null,
71
71
  react_1.default.createElement("div", { className: "ecpauth:space-y-5" },
72
72
  react_1.default.createElement("div", { className: "ecpauth:space-y-2" },
73
73
  react_1.default.createElement(label_1.Label, { htmlFor: "password", className: "ecpauth:text-sm ecpauth:font-semibold ecpauth:text-gray-700 ecpauth:dark:text-gray-300 ecpauth:ml-0.5" }, "New Password"),
@@ -97,12 +97,12 @@ function Login({ className, logo, ...props }) {
97
97
  react_1.default.createElement("div", { className: "ecpauth:space-y-2" },
98
98
  react_1.default.createElement(label_1.Label, { htmlFor: "email", className: "ecpauth:text-sm ecpauth:font-medium ecpauth:text-gray-700 ecpauth:dark:text-gray-300" }, "Email Address or Username"),
99
99
  react_1.default.createElement(input_1.Input, { id: "email", type: "text", placeholder: "e.g. user@example.com", name: "email" }),
100
- react_1.default.createElement(message_1.Message, { message: error?.errors?.email, className: "ecpauth:mt-1 ecpauth:text-[11px] ecpauth:text-red-500" })),
100
+ react_1.default.createElement(message_1.Message, { message: error?.errors?.email, className: "ecpauth:mt-1 ecpauth:text-[11px]" })),
101
101
  react_1.default.createElement("div", { className: "ecpauth:space-y-2" },
102
102
  react_1.default.createElement("div", { className: "ecpauth:flex ecpauth:items-center ecpauth:justify-between" },
103
103
  react_1.default.createElement(label_1.Label, { htmlFor: "password", className: "ecpauth:text-sm ecpauth:font-medium ecpauth:text-gray-700 ecpauth:dark:text-gray-300" }, "Password")),
104
104
  react_1.default.createElement(input_1.Input, { id: "password", type: "password", name: "password", placeholder: "Enter your password" }),
105
- react_1.default.createElement(message_1.Message, { message: error?.errors?.password, className: "ecpauth:mt-1 ecpauth:text-[11px] ecpauth:text-red-500" }),
105
+ react_1.default.createElement(message_1.Message, { message: error?.errors?.password, className: "ecpauth:mt-1 ecpauth:text-[11px]" }),
106
106
  react_1.default.createElement("div", { className: "ecpauth:flex ecpauth:justify-end" }, resetPasswordUrl && (react_1.default.createElement("a", { href: resetPasswordUrl, className: "ecpauth:text-xs ecpauth:font-semibold ecpauth:text-blue-600 ecpauth:hover:text-blue-700 ecpauth:hover:underline" }, "Forgot Password?"))))),
107
107
  react_1.default.createElement(button_1.Button, { type: "submit", className: "ecpauth:w-full ecpauth:h-11 ecpauth:bg-blue-600! ecpauth:hover:bg-blue-700! ecpauth:text-white! ecpauth:font-semibold ecpauth:text-base ecpauth:shadow-lg ecpauth:shadow-blue-600/20 ecpauth:rounded-lg ecpauth:transition-all ecpauth:active:scale-[0.98]", disabled: isPending || isAuthenticated }, isPending ? "Logging In..." : "Log In")),
108
108
  signupUrl && (react_1.default.createElement("div", { className: "ecpauth:text-center ecpauth:text-sm ecpauth:text-gray-500 ecpauth:border-t ecpauth:border-gray-100 ecpauth:dark:border-gray-800 ecpauth:pt-6" },
@@ -10,6 +10,6 @@ function Message({ message, variant = "error", className = "ecpauth:-mt-2", }) {
10
10
  if (!message)
11
11
  return null;
12
12
  return (react_1.default.createElement("div", { className: (0, utils_1.cn)("ecpauth:text-sm", variant === "success"
13
- ? "ecpauth:text-green-500"
14
- : "ecpauth:text-red-500", className) }, message));
13
+ ? "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-green-50 ecpauth:dark:bg-green-900/10 ecpauth:border ecpauth:border-green-100 ecpauth:dark:border-green-800/30 ecpauth:text-green-700 ecpauth:dark:text-green-400"
14
+ : "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-red-50 ecpauth:dark:bg-red-900/10 ecpauth:border ecpauth:border-red-100 ecpauth:dark:border-red-800/30 ecpauth:text-red-700 ecpauth:dark:text-red-400", className) }, message));
15
15
  }
@@ -6,18 +6,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MustLogin = MustLogin;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const button_1 = require("./ui/button");
9
- const message_1 = require("./message");
10
9
  const dialog_1 = require("./ui/dialog");
11
10
  const utils_1 = require("../lib/utils");
11
+ const lock_1 = require("./icons/lock");
12
+ const auth_provider_1 = require("../contexts/auth-provider");
12
13
  function MustLogin({ onOpenChange, }) {
13
- return (react_1.default.createElement(react_1.default.Fragment, null,
14
- react_1.default.createElement(dialog_1.DialogHeader, null,
15
- react_1.default.createElement(dialog_1.DialogTitle, null, "Authentication Error")),
16
- react_1.default.createElement("div", { className: "ecpauth:flex ecpauth:items-center ecpauth:justify-center ecpauth:h-40" },
17
- react_1.default.createElement(message_1.Message, { message: "User not found. Make sure you are logged in.", variant: "error" })),
18
- react_1.default.createElement("div", { className: "ecpauth:flex ecpauth:justify-end ecpauth:gap-2" },
14
+ const { computedRouteContext } = (0, auth_provider_1.useAuth)();
15
+ const { loginUrl } = computedRouteContext;
16
+ return (react_1.default.createElement("div", { className: "ecpauth:flex ecpauth:flex-col" },
17
+ react_1.default.createElement("div", { className: "ecpauth:relative ecpauth:px-6 ecpauth:pt-8 ecpauth:pb-6 ecpauth:text-center" },
18
+ react_1.default.createElement("div", { className: "ecpauth:relative ecpauth:z-10 ecpauth:flex ecpauth:flex-col ecpauth:items-center ecpauth:justify-center" },
19
+ react_1.default.createElement("div", { className: "ecpauth:size-12 ecpauth:rounded-xl ecpauth:bg-blue-50 ecpauth:dark:bg-blue-900/20 ecpauth:text-blue-600 ecpauth:dark:text-blue-400 ecpauth:border ecpauth:border-blue-100 ecpauth:dark:border-blue-800/50 ecpauth:flex ecpauth:items-center ecpauth:justify-center ecpauth:mb-4 ecpauth:shadow-sm" },
20
+ react_1.default.createElement(lock_1.LockIcon, { size: 24 })),
21
+ react_1.default.createElement(dialog_1.DialogHeader, { className: "ecpauth:space-y-1" },
22
+ react_1.default.createElement(dialog_1.DialogTitle, { className: "ecpauth:text-xl ecpauth:font-bold ecpauth:text-gray-900 ecpauth:dark:text-white ecpauth:text-center" }, "Session Required"),
23
+ react_1.default.createElement(dialog_1.DialogDescription, { className: "ecpauth:text-gray-500 ecpauth:dark:text-gray-400 ecpauth:text-center" }, "Please log in to continue")))),
24
+ react_1.default.createElement("div", { className: "ecpauth:px-8 ecpauth:pb-6" },
25
+ react_1.default.createElement("div", { className: "ecpauth:p-4 ecpauth:rounded-xl ecpauth:bg-gray-50 ecpauth:dark:bg-white/5 ecpauth:border ecpauth:border-gray-100 ecpauth:dark:border-white/10" },
26
+ react_1.default.createElement("p", { className: "ecpauth:text-sm ecpauth:leading-relaxed ecpauth:text-gray-600 ecpauth:dark:text-gray-300 ecpauth:text-center" }, "Your current session has expired or authentication is required for this action. Please sign in to your account."))),
27
+ react_1.default.createElement(dialog_1.DialogFooter, { className: "ecpauth:p-6 ecpauth:pt-0 ecpauth:flex ecpauth:flex-row ecpauth:justify-center ecpauth:gap-3" },
19
28
  react_1.default.createElement(button_1.Button, { type: "button", variant: "outline", onClick: () => {
20
29
  onOpenChange(false);
21
30
  (0, utils_1.unstuckPointerEvents)();
22
- } }, "Close"))));
31
+ }, className: "ecpauth:flex-1 ecpauth:h-11 ecpauth:rounded-xl ecpauth:font-semibold ecpauth:border-gray-200 ecpauth:dark:border-gray-800 ecpauth:hover:bg-gray-50 ecpauth:dark:hover:bg-white/5 ecpauth:transition-all" }, "Close"),
32
+ react_1.default.createElement(button_1.Button, { type: "button", onClick: () => {
33
+ window.location.href = loginUrl;
34
+ }, className: "ecpauth:flex-1 ecpauth:h-11 ecpauth:rounded-xl ecpauth:font-bold ecpauth:text-white! ecpauth:bg-blue-600! ecpauth:hover:bg-blue-700! ecpauth:shadow-lg ecpauth:shadow-blue-600/20 ecpauth:transition-all ecpauth:active:scale-[0.98]" }, "Login Now"))));
23
35
  }
@@ -94,8 +94,8 @@ function ResetPassword({ className, onChangePassword, logo, ...props }) {
94
94
  ? "Enter your new password below."
95
95
  : "Provide your email to receive a reset link.")),
96
96
  state?.status === "success" ? (react_1.default.createElement("div", { className: "ecpauth:mt-3" },
97
- react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-green-50 ecpauth:dark:bg-green-900/10 ecpauth:border ecpauth:border-green-100 ecpauth:dark:border-green-800/30 ecpauth:text-green-700 ecpauth:dark:text-green-400", variant: "success" }))) : state?.message ? (react_1.default.createElement("div", { className: "ecpauth:mt-3" },
98
- react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-red-50 ecpauth:dark:bg-red-900/10 ecpauth:border ecpauth:border-red-100 ecpauth:dark:border-red-800/30 ecpauth:text-red-700 ecpauth:dark:text-red-400" }))) : null),
97
+ react_1.default.createElement(message_1.Message, { message: state?.message, variant: "success" }))) : state?.message ? (react_1.default.createElement("div", { className: "ecpauth:mt-3" },
98
+ react_1.default.createElement(message_1.Message, { message: state?.message }))) : null),
99
99
  react_1.default.createElement(card_1.CardContent, { className: "ecpauth:space-y-6 ecpauth:p-8 ecpauth:px-12" },
100
100
  !token ? (react_1.default.createElement("form", { onSubmit: handleSubmit, className: "ecpauth:space-y-6" },
101
101
  react_1.default.createElement("div", { className: "ecpauth:space-y-2" },
@@ -106,8 +106,8 @@ function Signup({ className, onSubmit, groupId, metadata, acceptUsername = true,
106
106
  react_1.default.createElement(card_1.CardTitle, { className: "ecpauth:text-2xl ecpauth:font-black ecpauth:tracking-tight ecpauth:text-gray-900 ecpauth:dark:text-white" }, "Create Account"),
107
107
  react_1.default.createElement(card_1.CardDescription, { className: "ecpauth:text-sm ecpauth:text-gray-500 ecpauth:dark:text-gray-400" }, "Provide your details to sign up for your account.")),
108
108
  state?.status === "success" ? (react_1.default.createElement("div", { className: "ecpauth:mt-3" },
109
- react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-green-50 ecpauth:dark:bg-green-900/10 ecpauth:border ecpauth:border-green-100 ecpauth:dark:border-green-800/30 ecpauth:text-green-700 ecpauth:dark:text-green-400", variant: "success" }))) : state?.message ? (react_1.default.createElement("div", { className: "ecpauth:mt-3" },
110
- react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-red-50 ecpauth:dark:bg-red-900/10 ecpauth:border ecpauth:border-red-100 ecpauth:dark:border-red-800/30 ecpauth:text-red-700 ecpauth:dark:text-red-400" }))) : null),
109
+ react_1.default.createElement(message_1.Message, { message: state?.message, variant: "success" }))) : state?.message ? (react_1.default.createElement("div", { className: "ecpauth:mt-3" },
110
+ react_1.default.createElement(message_1.Message, { message: state?.message }))) : null),
111
111
  react_1.default.createElement(card_1.CardContent, { className: "ecpauth:space-y-6 ecpauth:p-8 ecpauth:px-12" },
112
112
  react_1.default.createElement("form", { onSubmit: handleSubmit, className: "ecpauth:space-y-6" },
113
113
  react_1.default.createElement("div", { className: "ecpauth:grid ecpauth:grid-cols-1 ecpauth:md:grid-cols-2 ecpauth:gap-4" },
@@ -75,7 +75,7 @@ function Toggle2FA({ onSubmit }) {
75
75
  react_1.default.createElement(shield_1.ShieldIcon, { size: 18, className: "ecpauth:text-blue-600 ecpauth:dark:text-blue-400" }),
76
76
  "Two-Factor Authentication"),
77
77
  react_1.default.createElement("p", { className: "ecpauth:text-sm ecpauth:text-gray-500 ecpauth:dark:text-gray-400" }, "Add an extra layer of security to your account by requiring a verification code.")),
78
- state?.status === "success" ? (react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-green-50 ecpauth:dark:bg-green-900/10 ecpauth:border ecpauth:border-green-100 ecpauth:dark:border-green-800/30 ecpauth:text-green-700 ecpauth:dark:text-green-400", variant: "success" })) : state?.message ? (react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-lg ecpauth:bg-red-50 ecpauth:dark:bg-red-900/10 ecpauth:border ecpauth:border-red-100 ecpauth:dark:border-red-800/30 ecpauth:text-red-700 ecpauth:dark:text-red-400" })) : null,
78
+ state?.status === "success" ? (react_1.default.createElement(message_1.Message, { message: state?.message, variant: "success" })) : state?.message ? (react_1.default.createElement(message_1.Message, { message: state?.message })) : null,
79
79
  react_1.default.createElement("div", { className: "ecpauth:group ecpauth:relative ecpauth:p-4 ecpauth:rounded-xl ecpauth:border ecpauth:border-gray-200 ecpauth:dark:border-gray-800 ecpauth:bg-gray-50/50 ecpauth:dark:bg-white/5 ecpauth:transition-all ecpauth:hover:border-blue-200 ecpauth:dark:hover:border-blue-900/30" },
80
80
  react_1.default.createElement("div", { className: "ecpauth:flex ecpauth:items-start ecpauth:justify-between ecpauth:gap-4" },
81
81
  react_1.default.createElement("div", { className: "ecpauth:space-y-1" },
@@ -20,7 +20,8 @@ function ToggleAccountStatus({ user, open, onOpenChange, onSuccess, onSubmit, })
20
20
  //@ts-ignore
21
21
  status: "",
22
22
  });
23
- async function handleSubmit() {
23
+ async function handleSubmit(e) {
24
+ e.preventDefault();
24
25
  if (!user) {
25
26
  return {
26
27
  message: "Please provide a user to toggle account status.",
@@ -34,7 +35,7 @@ function ToggleAccountStatus({ user, open, onOpenChange, onSuccess, onSubmit, })
34
35
  };
35
36
  }
36
37
  setIsPending(true);
37
- const result = await onSubmit(user.id);
38
+ const result = await onSubmit(user.subId);
38
39
  setIsPending(false);
39
40
  if (result.status !== "failure") {
40
41
  onSuccess?.();
@@ -64,8 +65,8 @@ function ToggleAccountStatus({ user, open, onOpenChange, onSuccess, onSubmit, })
64
65
  " ",
65
66
  user?.lastName)))),
66
67
  react_1.default.createElement("div", { className: "ecpauth:px-8 ecpauth:pb-6" }, state?.status === "success" ? (react_1.default.createElement("div", { className: "ecpauth:mb-6" },
67
- react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-xl ecpauth:bg-green-50 ecpauth:dark:bg-green-900/10 ecpauth:border ecpauth:border-green-100 ecpauth:dark:border-green-800/30 ecpauth:text-green-700 ecpauth:dark:text-green-400", variant: "success" }))) : state?.message ? (react_1.default.createElement("div", { className: "ecpauth:mb-6" },
68
- react_1.default.createElement(message_1.Message, { message: state?.message, className: "ecpauth:font-medium ecpauth:text-sm ecpauth:p-3 ecpauth:rounded-xl ecpauth:bg-red-50 ecpauth:dark:bg-red-900/10 ecpauth:border ecpauth:border-red-100 ecpauth:dark:border-red-800/30 ecpauth:text-red-700 ecpauth:dark:text-red-400" }))) : (react_1.default.createElement("div", { className: "ecpauth:p-4 ecpauth:rounded-xl ecpauth:bg-gray-50 ecpauth:dark:bg-white/5 ecpauth:border ecpauth:border-gray-100 ecpauth:dark:border-white/10" },
68
+ react_1.default.createElement(message_1.Message, { message: state?.message, variant: "success" }))) : state?.message ? (react_1.default.createElement("div", { className: "ecpauth:mb-6" },
69
+ react_1.default.createElement(message_1.Message, { message: state?.message }))) : (react_1.default.createElement("div", { className: "ecpauth:p-4 ecpauth:rounded-xl ecpauth:bg-gray-50 ecpauth:dark:bg-white/5 ecpauth:border ecpauth:border-gray-100 ecpauth:dark:border-white/10" },
69
70
  react_1.default.createElement("p", { className: "ecpauth:text-sm ecpauth:leading-relaxed ecpauth:text-gray-600 ecpauth:dark:text-gray-300 ecpauth:text-center" },
70
71
  "Are you sure you want to",
71
72
  " ",