@braintwopoint0/playback-commons 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/index.js +84 -105
- package/dist/ui/index.js.map +1 -1
- package/package.json +1 -1
package/dist/ui/index.js
CHANGED
|
@@ -2969,45 +2969,6 @@ import {
|
|
|
2969
2969
|
Mail
|
|
2970
2970
|
} from "lucide-react";
|
|
2971
2971
|
|
|
2972
|
-
// src/auth/context.tsx
|
|
2973
|
-
import {
|
|
2974
|
-
createContext as createContext2,
|
|
2975
|
-
useContext as useContext2,
|
|
2976
|
-
useEffect as useEffect6,
|
|
2977
|
-
useState as useState14,
|
|
2978
|
-
useMemo as useMemo2,
|
|
2979
|
-
useCallback as useCallback2,
|
|
2980
|
-
useRef as useRef6
|
|
2981
|
-
} from "react";
|
|
2982
|
-
import { useRouter } from "next/navigation";
|
|
2983
|
-
|
|
2984
|
-
// src/supabase/client.ts
|
|
2985
|
-
import { createBrowserClient } from "@supabase/ssr";
|
|
2986
|
-
function createClient() {
|
|
2987
|
-
const cookieDomain = process.env.NEXT_PUBLIC_COOKIE_DOMAIN;
|
|
2988
|
-
return createBrowserClient(
|
|
2989
|
-
process.env.NEXT_PUBLIC_SUPABASE_URL,
|
|
2990
|
-
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
|
|
2991
|
-
{
|
|
2992
|
-
...cookieDomain && {
|
|
2993
|
-
cookieOptions: { domain: cookieDomain }
|
|
2994
|
-
}
|
|
2995
|
-
}
|
|
2996
|
-
);
|
|
2997
|
-
}
|
|
2998
|
-
|
|
2999
|
-
// src/auth/context.tsx
|
|
3000
|
-
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
3001
|
-
var AuthContext = createContext2(void 0);
|
|
3002
|
-
var CACHE_TIMEOUT = 5 * 60 * 1e3;
|
|
3003
|
-
function useAuth() {
|
|
3004
|
-
const context = useContext2(AuthContext);
|
|
3005
|
-
if (context === void 0) {
|
|
3006
|
-
throw new Error("useAuth must be used within an AuthProvider");
|
|
3007
|
-
}
|
|
3008
|
-
return context;
|
|
3009
|
-
}
|
|
3010
|
-
|
|
3011
2972
|
// src/auth/shared.ts
|
|
3012
2973
|
function validateEmail(email) {
|
|
3013
2974
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -3048,8 +3009,23 @@ function getAuthErrorMessage(error) {
|
|
|
3048
3009
|
return errorMappings[message] || message;
|
|
3049
3010
|
}
|
|
3050
3011
|
|
|
3012
|
+
// src/supabase/client.ts
|
|
3013
|
+
import { createBrowserClient } from "@supabase/ssr";
|
|
3014
|
+
function createClient() {
|
|
3015
|
+
const cookieDomain = process.env.NEXT_PUBLIC_COOKIE_DOMAIN;
|
|
3016
|
+
return createBrowserClient(
|
|
3017
|
+
process.env.NEXT_PUBLIC_SUPABASE_URL,
|
|
3018
|
+
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
|
|
3019
|
+
{
|
|
3020
|
+
...cookieDomain && {
|
|
3021
|
+
cookieOptions: { domain: cookieDomain }
|
|
3022
|
+
}
|
|
3023
|
+
}
|
|
3024
|
+
);
|
|
3025
|
+
}
|
|
3026
|
+
|
|
3051
3027
|
// src/ui/sign-in-form.tsx
|
|
3052
|
-
import { Fragment as Fragment6, jsx as
|
|
3028
|
+
import { Fragment as Fragment6, jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3053
3029
|
var COOLDOWN_THRESHOLD = 3;
|
|
3054
3030
|
var COOLDOWN_DURATION_MS = 3e4;
|
|
3055
3031
|
function SignInForm({
|
|
@@ -3068,7 +3044,7 @@ function SignInForm({
|
|
|
3068
3044
|
const [loading, setLoading] = React28.useState(false);
|
|
3069
3045
|
const [consecutiveErrors, setConsecutiveErrors] = React28.useState(0);
|
|
3070
3046
|
const [cooldownUntil, setCooldownUntil] = React28.useState(null);
|
|
3071
|
-
const
|
|
3047
|
+
const [supabase] = React28.useState(() => createClient());
|
|
3072
3048
|
React28.useEffect(() => {
|
|
3073
3049
|
if (initialError) setError(initialError);
|
|
3074
3050
|
}, [initialError]);
|
|
@@ -3090,7 +3066,10 @@ function SignInForm({
|
|
|
3090
3066
|
}
|
|
3091
3067
|
setLoading(true);
|
|
3092
3068
|
try {
|
|
3093
|
-
const { error: signInError } = await
|
|
3069
|
+
const { error: signInError } = await supabase.auth.signInWithPassword({
|
|
3070
|
+
email,
|
|
3071
|
+
password
|
|
3072
|
+
});
|
|
3094
3073
|
if (signInError) {
|
|
3095
3074
|
setError(getAuthErrorMessage(signInError));
|
|
3096
3075
|
const newCount = consecutiveErrors + 1;
|
|
@@ -3112,11 +3091,11 @@ function SignInForm({
|
|
|
3112
3091
|
};
|
|
3113
3092
|
return /* @__PURE__ */ jsxs23("div", { className: "bg-card border border-border rounded-xl p-8 space-y-6", children: [
|
|
3114
3093
|
/* @__PURE__ */ jsxs23("div", { className: "text-center", children: [
|
|
3115
|
-
/* @__PURE__ */
|
|
3116
|
-
/* @__PURE__ */
|
|
3094
|
+
/* @__PURE__ */ jsx39("h1", { className: "text-2xl font-bold text-[var(--timberwolf)] mb-2", children: title }),
|
|
3095
|
+
/* @__PURE__ */ jsx39("p", { className: "text-sm text-muted-foreground", children: subtitle })
|
|
3117
3096
|
] }),
|
|
3118
3097
|
/* @__PURE__ */ jsxs23("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
|
|
3119
|
-
error && /* @__PURE__ */
|
|
3098
|
+
error && /* @__PURE__ */ jsx39(
|
|
3120
3099
|
"div",
|
|
3121
3100
|
{
|
|
3122
3101
|
id: "signin-error",
|
|
@@ -3124,15 +3103,15 @@ function SignInForm({
|
|
|
3124
3103
|
"aria-live": "polite",
|
|
3125
3104
|
className: "bg-red-900/20 border border-red-700/30 rounded-lg p-3",
|
|
3126
3105
|
children: /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-2 text-red-400 text-sm", children: [
|
|
3127
|
-
/* @__PURE__ */
|
|
3128
|
-
/* @__PURE__ */
|
|
3106
|
+
/* @__PURE__ */ jsx39(AlertCircle, { className: "h-4 w-4 flex-shrink-0" }),
|
|
3107
|
+
/* @__PURE__ */ jsx39("span", { children: error })
|
|
3129
3108
|
] })
|
|
3130
3109
|
}
|
|
3131
3110
|
),
|
|
3132
3111
|
/* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
|
|
3133
|
-
/* @__PURE__ */
|
|
3112
|
+
/* @__PURE__ */ jsx39(Label, { htmlFor: "email", className: "text-[var(--timberwolf)]", children: "Email" }),
|
|
3134
3113
|
/* @__PURE__ */ jsxs23("div", { className: "relative", children: [
|
|
3135
|
-
/* @__PURE__ */
|
|
3114
|
+
/* @__PURE__ */ jsx39(
|
|
3136
3115
|
Input,
|
|
3137
3116
|
{
|
|
3138
3117
|
id: "email",
|
|
@@ -3147,13 +3126,13 @@ function SignInForm({
|
|
|
3147
3126
|
"aria-describedby": error ? "signin-error" : void 0
|
|
3148
3127
|
}
|
|
3149
3128
|
),
|
|
3150
|
-
/* @__PURE__ */
|
|
3129
|
+
/* @__PURE__ */ jsx39(Mail, { className: "h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground" })
|
|
3151
3130
|
] })
|
|
3152
3131
|
] }),
|
|
3153
3132
|
/* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
|
|
3154
|
-
/* @__PURE__ */
|
|
3133
|
+
/* @__PURE__ */ jsx39(Label, { htmlFor: "password", className: "text-[var(--timberwolf)]", children: "Password" }),
|
|
3155
3134
|
/* @__PURE__ */ jsxs23("div", { className: "relative", children: [
|
|
3156
|
-
/* @__PURE__ */
|
|
3135
|
+
/* @__PURE__ */ jsx39(
|
|
3157
3136
|
Input,
|
|
3158
3137
|
{
|
|
3159
3138
|
id: "password",
|
|
@@ -3168,8 +3147,8 @@ function SignInForm({
|
|
|
3168
3147
|
"aria-describedby": error ? "signin-error" : void 0
|
|
3169
3148
|
}
|
|
3170
3149
|
),
|
|
3171
|
-
/* @__PURE__ */
|
|
3172
|
-
/* @__PURE__ */
|
|
3150
|
+
/* @__PURE__ */ jsx39(Lock, { className: "h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground" }),
|
|
3151
|
+
/* @__PURE__ */ jsx39(
|
|
3173
3152
|
"button",
|
|
3174
3153
|
{
|
|
3175
3154
|
type: "button",
|
|
@@ -3178,12 +3157,12 @@ function SignInForm({
|
|
|
3178
3157
|
disabled: loading,
|
|
3179
3158
|
"aria-label": showPassword ? "Hide password" : "Show password",
|
|
3180
3159
|
"aria-pressed": showPassword,
|
|
3181
|
-
children: showPassword ? /* @__PURE__ */
|
|
3160
|
+
children: showPassword ? /* @__PURE__ */ jsx39(EyeOff, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx39(Eye, { className: "h-4 w-4" })
|
|
3182
3161
|
}
|
|
3183
3162
|
)
|
|
3184
3163
|
] })
|
|
3185
3164
|
] }),
|
|
3186
|
-
forgotPasswordHref ? /* @__PURE__ */
|
|
3165
|
+
forgotPasswordHref ? /* @__PURE__ */ jsx39("div", { className: "flex justify-end -mt-1", children: /* @__PURE__ */ jsx39(
|
|
3187
3166
|
Link4,
|
|
3188
3167
|
{
|
|
3189
3168
|
href: forgotPasswordHref,
|
|
@@ -3191,23 +3170,23 @@ function SignInForm({
|
|
|
3191
3170
|
children: "Forgot your password?"
|
|
3192
3171
|
}
|
|
3193
3172
|
) }) : null,
|
|
3194
|
-
/* @__PURE__ */
|
|
3173
|
+
/* @__PURE__ */ jsx39(
|
|
3195
3174
|
Button,
|
|
3196
3175
|
{
|
|
3197
3176
|
type: "submit",
|
|
3198
3177
|
className: "w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]",
|
|
3199
3178
|
disabled: loading,
|
|
3200
3179
|
children: loading ? /* @__PURE__ */ jsxs23(Fragment6, { children: [
|
|
3201
|
-
/* @__PURE__ */
|
|
3180
|
+
/* @__PURE__ */ jsx39(Loader2, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
3202
3181
|
"Signing in..."
|
|
3203
3182
|
] }) : "Sign in"
|
|
3204
3183
|
}
|
|
3205
3184
|
)
|
|
3206
3185
|
] }),
|
|
3207
|
-
signUpHref ? /* @__PURE__ */
|
|
3186
|
+
signUpHref ? /* @__PURE__ */ jsx39("div", { className: "text-center text-sm", children: /* @__PURE__ */ jsxs23("p", { className: "text-muted-foreground", children: [
|
|
3208
3187
|
"Don't have an account?",
|
|
3209
3188
|
" ",
|
|
3210
|
-
/* @__PURE__ */
|
|
3189
|
+
/* @__PURE__ */ jsx39(
|
|
3211
3190
|
Link4,
|
|
3212
3191
|
{
|
|
3213
3192
|
href: signUpHref,
|
|
@@ -3229,7 +3208,7 @@ import {
|
|
|
3229
3208
|
Loader2 as Loader22,
|
|
3230
3209
|
Mail as Mail2
|
|
3231
3210
|
} from "lucide-react";
|
|
3232
|
-
import { Fragment as Fragment7, jsx as
|
|
3211
|
+
import { Fragment as Fragment7, jsx as jsx40, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3233
3212
|
var RESEND_COOLDOWN_MS = 3e4;
|
|
3234
3213
|
var COOLDOWN_STORAGE_KEY = "playback:pwreset-cooldown-until";
|
|
3235
3214
|
function ForgotPasswordForm({
|
|
@@ -3308,18 +3287,18 @@ function ForgotPasswordForm({
|
|
|
3308
3287
|
};
|
|
3309
3288
|
if (emailSent) {
|
|
3310
3289
|
return /* @__PURE__ */ jsxs24("div", { className: "bg-card border border-border rounded-xl p-8 space-y-6 text-center", children: [
|
|
3311
|
-
/* @__PURE__ */
|
|
3290
|
+
/* @__PURE__ */ jsx40("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx40("div", { className: "h-12 w-12 rounded-full bg-[var(--timberwolf)]/10 border border-[var(--timberwolf)]/20 flex items-center justify-center", children: /* @__PURE__ */ jsx40(CheckCircle, { className: "h-6 w-6 text-[var(--timberwolf)]" }) }) }),
|
|
3312
3291
|
/* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
|
|
3313
|
-
/* @__PURE__ */
|
|
3292
|
+
/* @__PURE__ */ jsx40("h1", { className: "text-2xl font-bold text-[var(--timberwolf)]", children: "Check your email" }),
|
|
3314
3293
|
/* @__PURE__ */ jsxs24("p", { className: "text-sm text-muted-foreground", children: [
|
|
3315
3294
|
"We sent a reset link to",
|
|
3316
3295
|
" ",
|
|
3317
|
-
/* @__PURE__ */
|
|
3296
|
+
/* @__PURE__ */ jsx40("span", { className: "text-[var(--timberwolf)] font-medium", children: email }),
|
|
3318
3297
|
". If it's not in your inbox, check spam."
|
|
3319
3298
|
] })
|
|
3320
3299
|
] }),
|
|
3321
3300
|
/* @__PURE__ */ jsxs24("div", { className: "space-y-3 pt-2", children: [
|
|
3322
|
-
/* @__PURE__ */
|
|
3301
|
+
/* @__PURE__ */ jsx40(
|
|
3323
3302
|
Button,
|
|
3324
3303
|
{
|
|
3325
3304
|
onClick: () => {
|
|
@@ -3333,8 +3312,8 @@ function ForgotPasswordForm({
|
|
|
3333
3312
|
children: cooldownSecondsLeft > 0 ? `Send another email in ${cooldownSecondsLeft}s` : "Send another email"
|
|
3334
3313
|
}
|
|
3335
3314
|
),
|
|
3336
|
-
/* @__PURE__ */
|
|
3337
|
-
/* @__PURE__ */
|
|
3315
|
+
/* @__PURE__ */ jsx40(Link5, { href: loginHref, className: "block", children: /* @__PURE__ */ jsxs24(Button, { className: "w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]", children: [
|
|
3316
|
+
/* @__PURE__ */ jsx40(ArrowLeft, { className: "h-4 w-4 mr-2" }),
|
|
3338
3317
|
"Back to sign in"
|
|
3339
3318
|
] }) })
|
|
3340
3319
|
] })
|
|
@@ -3342,11 +3321,11 @@ function ForgotPasswordForm({
|
|
|
3342
3321
|
}
|
|
3343
3322
|
return /* @__PURE__ */ jsxs24("div", { className: "bg-card border border-border rounded-xl p-8 space-y-6", children: [
|
|
3344
3323
|
/* @__PURE__ */ jsxs24("div", { className: "text-center", children: [
|
|
3345
|
-
/* @__PURE__ */
|
|
3346
|
-
/* @__PURE__ */
|
|
3324
|
+
/* @__PURE__ */ jsx40("h1", { className: "text-2xl font-bold text-[var(--timberwolf)] mb-2", children: title }),
|
|
3325
|
+
/* @__PURE__ */ jsx40("p", { className: "text-sm text-muted-foreground", children: subtitle })
|
|
3347
3326
|
] }),
|
|
3348
3327
|
/* @__PURE__ */ jsxs24("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
|
|
3349
|
-
error && /* @__PURE__ */
|
|
3328
|
+
error && /* @__PURE__ */ jsx40(
|
|
3350
3329
|
"div",
|
|
3351
3330
|
{
|
|
3352
3331
|
id: "forgot-error",
|
|
@@ -3354,15 +3333,15 @@ function ForgotPasswordForm({
|
|
|
3354
3333
|
"aria-live": "polite",
|
|
3355
3334
|
className: "bg-red-900/20 border border-red-700/30 rounded-lg p-3",
|
|
3356
3335
|
children: /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2 text-red-400 text-sm", children: [
|
|
3357
|
-
/* @__PURE__ */
|
|
3358
|
-
/* @__PURE__ */
|
|
3336
|
+
/* @__PURE__ */ jsx40(AlertCircle2, { className: "h-4 w-4 flex-shrink-0" }),
|
|
3337
|
+
/* @__PURE__ */ jsx40("span", { children: error })
|
|
3359
3338
|
] })
|
|
3360
3339
|
}
|
|
3361
3340
|
),
|
|
3362
3341
|
/* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
|
|
3363
|
-
/* @__PURE__ */
|
|
3342
|
+
/* @__PURE__ */ jsx40(Label, { htmlFor: "email", className: "text-[var(--timberwolf)]", children: "Email" }),
|
|
3364
3343
|
/* @__PURE__ */ jsxs24("div", { className: "relative", children: [
|
|
3365
|
-
/* @__PURE__ */
|
|
3344
|
+
/* @__PURE__ */ jsx40(
|
|
3366
3345
|
Input,
|
|
3367
3346
|
{
|
|
3368
3347
|
id: "email",
|
|
@@ -3378,29 +3357,29 @@ function ForgotPasswordForm({
|
|
|
3378
3357
|
"aria-describedby": error ? "forgot-error" : void 0
|
|
3379
3358
|
}
|
|
3380
3359
|
),
|
|
3381
|
-
/* @__PURE__ */
|
|
3360
|
+
/* @__PURE__ */ jsx40(Mail2, { className: "h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground" })
|
|
3382
3361
|
] })
|
|
3383
3362
|
] }),
|
|
3384
|
-
/* @__PURE__ */
|
|
3363
|
+
/* @__PURE__ */ jsx40(
|
|
3385
3364
|
Button,
|
|
3386
3365
|
{
|
|
3387
3366
|
type: "submit",
|
|
3388
3367
|
className: "w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]",
|
|
3389
3368
|
disabled: loading || cooldownSecondsLeft > 0,
|
|
3390
3369
|
children: loading ? /* @__PURE__ */ jsxs24(Fragment7, { children: [
|
|
3391
|
-
/* @__PURE__ */
|
|
3370
|
+
/* @__PURE__ */ jsx40(Loader22, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
3392
3371
|
"Sending email..."
|
|
3393
3372
|
] }) : cooldownSecondsLeft > 0 ? `Try again in ${cooldownSecondsLeft}s` : "Send reset link"
|
|
3394
3373
|
}
|
|
3395
3374
|
)
|
|
3396
3375
|
] }),
|
|
3397
|
-
/* @__PURE__ */
|
|
3376
|
+
/* @__PURE__ */ jsx40("div", { className: "text-center text-sm", children: /* @__PURE__ */ jsxs24(
|
|
3398
3377
|
Link5,
|
|
3399
3378
|
{
|
|
3400
3379
|
href: loginHref,
|
|
3401
3380
|
className: "inline-flex items-center gap-1.5 text-muted-foreground hover:text-[var(--timberwolf)] transition-colors",
|
|
3402
3381
|
children: [
|
|
3403
|
-
/* @__PURE__ */
|
|
3382
|
+
/* @__PURE__ */ jsx40(ArrowLeft, { className: "h-3.5 w-3.5" }),
|
|
3404
3383
|
"Back to sign in"
|
|
3405
3384
|
]
|
|
3406
3385
|
}
|
|
@@ -3411,7 +3390,7 @@ function ForgotPasswordForm({
|
|
|
3411
3390
|
// src/ui/reset-password-form.tsx
|
|
3412
3391
|
import * as React30 from "react";
|
|
3413
3392
|
import Link6 from "next/link";
|
|
3414
|
-
import { useRouter
|
|
3393
|
+
import { useRouter } from "next/navigation";
|
|
3415
3394
|
import {
|
|
3416
3395
|
AlertCircle as AlertCircle3,
|
|
3417
3396
|
CheckCircle as CheckCircle2,
|
|
@@ -3420,7 +3399,7 @@ import {
|
|
|
3420
3399
|
Loader2 as Loader23,
|
|
3421
3400
|
Lock as Lock2
|
|
3422
3401
|
} from "lucide-react";
|
|
3423
|
-
import { Fragment as Fragment8, jsx as
|
|
3402
|
+
import { Fragment as Fragment8, jsx as jsx41, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3424
3403
|
function ResetPasswordForm({
|
|
3425
3404
|
loginHref = "/auth/login",
|
|
3426
3405
|
initialError,
|
|
@@ -3435,7 +3414,7 @@ function ResetPasswordForm({
|
|
|
3435
3414
|
const [error, setError] = React30.useState(initialError ?? "");
|
|
3436
3415
|
const [loading, setLoading] = React30.useState(false);
|
|
3437
3416
|
const [passwordReset, setPasswordReset] = React30.useState(false);
|
|
3438
|
-
const router =
|
|
3417
|
+
const router = useRouter();
|
|
3439
3418
|
const [supabase] = React30.useState(() => createClient());
|
|
3440
3419
|
React30.useEffect(() => {
|
|
3441
3420
|
if (initialError) setError(initialError);
|
|
@@ -3489,21 +3468,21 @@ function ResetPasswordForm({
|
|
|
3489
3468
|
};
|
|
3490
3469
|
if (passwordReset) {
|
|
3491
3470
|
return /* @__PURE__ */ jsxs25("div", { className: "bg-card border border-border rounded-xl p-8 space-y-6 text-center", children: [
|
|
3492
|
-
/* @__PURE__ */
|
|
3471
|
+
/* @__PURE__ */ jsx41("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx41("div", { className: "h-12 w-12 rounded-full bg-[var(--timberwolf)]/10 border border-[var(--timberwolf)]/20 flex items-center justify-center", children: /* @__PURE__ */ jsx41(CheckCircle2, { className: "h-6 w-6 text-[var(--timberwolf)]" }) }) }),
|
|
3493
3472
|
/* @__PURE__ */ jsxs25("div", { className: "space-y-2", children: [
|
|
3494
|
-
/* @__PURE__ */
|
|
3495
|
-
/* @__PURE__ */
|
|
3473
|
+
/* @__PURE__ */ jsx41("h1", { className: "text-2xl font-bold text-[var(--timberwolf)]", children: "Password updated" }),
|
|
3474
|
+
/* @__PURE__ */ jsx41("p", { className: "text-sm text-muted-foreground", children: "Redirecting you to sign in\u2026" })
|
|
3496
3475
|
] }),
|
|
3497
|
-
/* @__PURE__ */
|
|
3476
|
+
/* @__PURE__ */ jsx41(Link6, { href: loginHref, className: "block pt-2", children: /* @__PURE__ */ jsx41(Button, { className: "w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]", children: "Continue to sign in" }) })
|
|
3498
3477
|
] });
|
|
3499
3478
|
}
|
|
3500
3479
|
return /* @__PURE__ */ jsxs25("div", { className: "bg-card border border-border rounded-xl p-8 space-y-6", children: [
|
|
3501
3480
|
/* @__PURE__ */ jsxs25("div", { className: "text-center", children: [
|
|
3502
|
-
/* @__PURE__ */
|
|
3503
|
-
/* @__PURE__ */
|
|
3481
|
+
/* @__PURE__ */ jsx41("h1", { className: "text-2xl font-bold text-[var(--timberwolf)] mb-2", children: title }),
|
|
3482
|
+
/* @__PURE__ */ jsx41("p", { className: "text-sm text-muted-foreground", children: subtitle })
|
|
3504
3483
|
] }),
|
|
3505
3484
|
/* @__PURE__ */ jsxs25("form", { onSubmit: handleSubmit, className: "space-y-4", children: [
|
|
3506
|
-
error && /* @__PURE__ */
|
|
3485
|
+
error && /* @__PURE__ */ jsx41(
|
|
3507
3486
|
"div",
|
|
3508
3487
|
{
|
|
3509
3488
|
id: "reset-error",
|
|
@@ -3511,15 +3490,15 @@ function ResetPasswordForm({
|
|
|
3511
3490
|
"aria-live": "polite",
|
|
3512
3491
|
className: "bg-red-900/20 border border-red-700/30 rounded-lg p-3",
|
|
3513
3492
|
children: /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-red-400 text-sm", children: [
|
|
3514
|
-
/* @__PURE__ */
|
|
3515
|
-
/* @__PURE__ */
|
|
3493
|
+
/* @__PURE__ */ jsx41(AlertCircle3, { className: "h-4 w-4 flex-shrink-0" }),
|
|
3494
|
+
/* @__PURE__ */ jsx41("span", { children: error })
|
|
3516
3495
|
] })
|
|
3517
3496
|
}
|
|
3518
3497
|
),
|
|
3519
3498
|
/* @__PURE__ */ jsxs25("div", { className: "space-y-2", children: [
|
|
3520
|
-
/* @__PURE__ */
|
|
3499
|
+
/* @__PURE__ */ jsx41(Label, { htmlFor: "password", className: "text-[var(--timberwolf)]", children: "New password" }),
|
|
3521
3500
|
/* @__PURE__ */ jsxs25("div", { className: "relative", children: [
|
|
3522
|
-
/* @__PURE__ */
|
|
3501
|
+
/* @__PURE__ */ jsx41(
|
|
3523
3502
|
Input,
|
|
3524
3503
|
{
|
|
3525
3504
|
id: "password",
|
|
@@ -3535,8 +3514,8 @@ function ResetPasswordForm({
|
|
|
3535
3514
|
"aria-describedby": error ? "reset-error" : void 0
|
|
3536
3515
|
}
|
|
3537
3516
|
),
|
|
3538
|
-
/* @__PURE__ */
|
|
3539
|
-
/* @__PURE__ */
|
|
3517
|
+
/* @__PURE__ */ jsx41(Lock2, { className: "h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground" }),
|
|
3518
|
+
/* @__PURE__ */ jsx41(
|
|
3540
3519
|
"button",
|
|
3541
3520
|
{
|
|
3542
3521
|
type: "button",
|
|
@@ -3545,13 +3524,13 @@ function ResetPasswordForm({
|
|
|
3545
3524
|
disabled: loading,
|
|
3546
3525
|
"aria-label": showPassword ? "Hide password" : "Show password",
|
|
3547
3526
|
"aria-pressed": showPassword,
|
|
3548
|
-
children: showPassword ? /* @__PURE__ */
|
|
3527
|
+
children: showPassword ? /* @__PURE__ */ jsx41(EyeOff2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx41(Eye2, { className: "h-4 w-4" })
|
|
3549
3528
|
}
|
|
3550
3529
|
)
|
|
3551
3530
|
] })
|
|
3552
3531
|
] }),
|
|
3553
3532
|
/* @__PURE__ */ jsxs25("div", { className: "space-y-2", children: [
|
|
3554
|
-
/* @__PURE__ */
|
|
3533
|
+
/* @__PURE__ */ jsx41(
|
|
3555
3534
|
Label,
|
|
3556
3535
|
{
|
|
3557
3536
|
htmlFor: "confirmPassword",
|
|
@@ -3560,7 +3539,7 @@ function ResetPasswordForm({
|
|
|
3560
3539
|
}
|
|
3561
3540
|
),
|
|
3562
3541
|
/* @__PURE__ */ jsxs25("div", { className: "relative", children: [
|
|
3563
|
-
/* @__PURE__ */
|
|
3542
|
+
/* @__PURE__ */ jsx41(
|
|
3564
3543
|
Input,
|
|
3565
3544
|
{
|
|
3566
3545
|
id: "confirmPassword",
|
|
@@ -3575,8 +3554,8 @@ function ResetPasswordForm({
|
|
|
3575
3554
|
"aria-describedby": error ? "reset-error" : void 0
|
|
3576
3555
|
}
|
|
3577
3556
|
),
|
|
3578
|
-
/* @__PURE__ */
|
|
3579
|
-
/* @__PURE__ */
|
|
3557
|
+
/* @__PURE__ */ jsx41(Lock2, { className: "h-4 w-4 absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground" }),
|
|
3558
|
+
/* @__PURE__ */ jsx41(
|
|
3580
3559
|
"button",
|
|
3581
3560
|
{
|
|
3582
3561
|
type: "button",
|
|
@@ -3585,26 +3564,26 @@ function ResetPasswordForm({
|
|
|
3585
3564
|
disabled: loading,
|
|
3586
3565
|
"aria-label": showConfirmPassword ? "Hide password" : "Show password",
|
|
3587
3566
|
"aria-pressed": showConfirmPassword,
|
|
3588
|
-
children: showConfirmPassword ? /* @__PURE__ */
|
|
3567
|
+
children: showConfirmPassword ? /* @__PURE__ */ jsx41(EyeOff2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx41(Eye2, { className: "h-4 w-4" })
|
|
3589
3568
|
}
|
|
3590
3569
|
)
|
|
3591
3570
|
] })
|
|
3592
3571
|
] }),
|
|
3593
|
-
/* @__PURE__ */
|
|
3594
|
-
/* @__PURE__ */
|
|
3572
|
+
/* @__PURE__ */ jsx41("p", { className: "text-xs text-muted-foreground", children: "At least 8 characters with an uppercase letter, a lowercase letter, and a number." }),
|
|
3573
|
+
/* @__PURE__ */ jsx41(
|
|
3595
3574
|
Button,
|
|
3596
3575
|
{
|
|
3597
3576
|
type: "submit",
|
|
3598
3577
|
className: "w-full h-11 bg-[var(--timberwolf)] text-[var(--night)] hover:bg-[var(--ash-grey)]",
|
|
3599
3578
|
disabled: loading,
|
|
3600
3579
|
children: loading ? /* @__PURE__ */ jsxs25(Fragment8, { children: [
|
|
3601
|
-
/* @__PURE__ */
|
|
3580
|
+
/* @__PURE__ */ jsx41(Loader23, { className: "h-4 w-4 mr-2 animate-spin" }),
|
|
3602
3581
|
"Updating password..."
|
|
3603
3582
|
] }) : "Update password"
|
|
3604
3583
|
}
|
|
3605
3584
|
)
|
|
3606
3585
|
] }),
|
|
3607
|
-
/* @__PURE__ */
|
|
3586
|
+
/* @__PURE__ */ jsx41("div", { className: "text-center text-sm", children: /* @__PURE__ */ jsx41(
|
|
3608
3587
|
Link6,
|
|
3609
3588
|
{
|
|
3610
3589
|
href: loginHref,
|