@nextsparkjs/core 0.1.0-beta.107 → 0.1.0-beta.109

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.
@@ -1 +1 @@
1
- {"version":3,"file":"SignupForm.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/forms/SignupForm.tsx"],"names":[],"mappings":"AA6BA,wBAAgB,UAAU,4CA8fzB"}
1
+ {"version":3,"file":"SignupForm.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/forms/SignupForm.tsx"],"names":[],"mappings":"AA6BA,wBAAgB,UAAU,4CAmgBzB"}
@@ -77,21 +77,21 @@ function SignupForm() {
77
77
  const result = await response.json();
78
78
  if (!response.ok) {
79
79
  if (result.code === "USER_ALREADY_EXISTS") {
80
- setError("An account with this email already exists. Please sign in instead.");
80
+ setError(t("signup.errors.userAlreadyExists"));
81
81
  } else if (result.code === "EMAIL_MISMATCH") {
82
- setError("This invitation was sent to a different email address.");
82
+ setError(t("signup.errors.emailMismatch"));
83
83
  } else if (result.code === "INVITATION_EXPIRED") {
84
- setError("This invitation has expired. Please request a new one.");
84
+ setError(t("signup.errors.invitationExpired"));
85
85
  } else if (result.code === "INVITATION_NOT_FOUND") {
86
- setError("Invalid invitation. Please request a new one.");
86
+ setError(t("signup.errors.invitationNotFound"));
87
87
  } else {
88
- setError(result.error || "Failed to create account");
88
+ setError(result.error || t("signup.errors.failedToCreate"));
89
89
  }
90
90
  setStatusMessage(t("signup.messages.createError", { error: result.error || "Unknown error" }));
91
91
  return;
92
92
  }
93
- toast.success("Account created successfully!", {
94
- description: "You have joined the team."
93
+ toast.success(t("signup.messages.inviteSuccess"), {
94
+ description: t("signup.messages.inviteJoinedTeam")
95
95
  });
96
96
  router.push(((_a = result.data) == null ? void 0 : _a.redirectTo) || "/dashboard/settings/teams");
97
97
  return;
@@ -106,7 +106,7 @@ function SignupForm() {
106
106
  setEmailSent(true);
107
107
  setStatusMessage(t("signup.messages.accountCreated"));
108
108
  } catch (err) {
109
- const errorMessage = err instanceof Error ? err.message : "Failed to create account";
109
+ const errorMessage = err instanceof Error ? err.message : t("signup.errors.failedToCreate");
110
110
  setError(errorMessage);
111
111
  setStatusMessage(t("signup.messages.createError", { error: errorMessage }));
112
112
  } finally {
@@ -119,7 +119,7 @@ function SignupForm() {
119
119
  try {
120
120
  await googleSignIn(callbackUrl || void 0);
121
121
  } catch (err) {
122
- setError(err instanceof Error ? err.message : "Google sign up failed");
122
+ setError(err instanceof Error ? err.message : t("signup.errors.googleFailed"));
123
123
  } finally {
124
124
  setLoadingProvider(null);
125
125
  }
@@ -132,10 +132,10 @@ function SignupForm() {
132
132
  if (result.success) {
133
133
  setEmailSent(true);
134
134
  } else {
135
- setError(result.error || "Failed to resend verification email");
135
+ setError(result.error || t("signup.errors.failedToResend"));
136
136
  }
137
137
  } catch (err) {
138
- setError(err instanceof Error ? err.message : "Failed to resend verification email");
138
+ setError(err instanceof Error ? err.message : t("signup.errors.failedToResend"));
139
139
  } finally {
140
140
  setResendingEmail(false);
141
141
  }
@@ -169,7 +169,7 @@ function SignupForm() {
169
169
  {
170
170
  className: "mx-auto w-12 h-12 bg-green-100 rounded-full flex items-center justify-center mb-4",
171
171
  role: "img",
172
- "aria-label": "Email enviado exitosamente",
172
+ "aria-label": t("signup.emailVerification.emailSentAria"),
173
173
  children: /* @__PURE__ */ jsx(MailCheck, { className: "w-6 h-6 text-green-600", "aria-hidden": "true" })
174
174
  }
175
175
  ),
@@ -195,20 +195,20 @@ function SignupForm() {
195
195
  /* @__PURE__ */ jsx("div", { className: "p-3 bg-muted rounded-lg", children: /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-center break-all", children: registeredEmail }) }),
196
196
  /* @__PURE__ */ jsxs(Alert, { "data-cy": sel("auth.verifyEmail.successMessage"), children: [
197
197
  /* @__PURE__ */ jsx(CheckCircle2, { className: "h-4 w-4" }),
198
- /* @__PURE__ */ jsx(AlertDescription, { children: "Please check your inbox and click the verification link to activate your account. The link will expire in 24 hours." })
198
+ /* @__PURE__ */ jsx(AlertDescription, { children: t("signup.emailVerification.checkInbox") })
199
199
  ] }),
200
200
  /* @__PURE__ */ jsxs("div", { className: "space-y-2 text-sm text-muted-foreground", children: [
201
201
  /* @__PURE__ */ jsxs("p", { className: "flex items-start gap-2", children: [
202
202
  /* @__PURE__ */ jsx("span", { className: "text-primary font-medium", children: "1." }),
203
- "Open your email inbox"
203
+ t("signup.emailVerification.step1")
204
204
  ] }),
205
205
  /* @__PURE__ */ jsxs("p", { className: "flex items-start gap-2", children: [
206
206
  /* @__PURE__ */ jsx("span", { className: "text-primary font-medium", children: "2." }),
207
- "Find the email from us (check spam if needed)"
207
+ t("signup.emailVerification.step2")
208
208
  ] }),
209
209
  /* @__PURE__ */ jsxs("p", { className: "flex items-start gap-2", children: [
210
210
  /* @__PURE__ */ jsx("span", { className: "text-primary font-medium", children: "3." }),
211
- "Click the verification button"
211
+ t("signup.emailVerification.step3")
212
212
  ] })
213
213
  ] }),
214
214
  error && /* @__PURE__ */ jsxs(Alert, { variant: "destructive", children: [
@@ -217,7 +217,7 @@ function SignupForm() {
217
217
  ] }),
218
218
  /* @__PURE__ */ jsx(Separator, {}),
219
219
  /* @__PURE__ */ jsxs("div", { className: "text-center space-y-2", children: [
220
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Didn't receive the email?" }),
220
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: t("signup.emailVerification.didntReceive") }),
221
221
  /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
222
222
  /* @__PURE__ */ jsxs(
223
223
  Button,
@@ -230,7 +230,7 @@ function SignupForm() {
230
230
  className: "flex-1",
231
231
  children: [
232
232
  /* @__PURE__ */ jsx(ArrowRight, { className: "mr-2 h-4 w-4 rotate-180" }),
233
- "Back"
233
+ t("signup.emailVerification.back")
234
234
  ]
235
235
  }
236
236
  ),
@@ -243,10 +243,10 @@ function SignupForm() {
243
243
  className: "flex-1",
244
244
  children: resendingEmail ? /* @__PURE__ */ jsxs(Fragment, { children: [
245
245
  /* @__PURE__ */ jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
246
- "Sending..."
246
+ t("signup.emailVerification.sending")
247
247
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
248
248
  /* @__PURE__ */ jsx(Mail, { className: "mr-2 h-4 w-4" }),
249
- "Resend Email"
249
+ t("signup.emailVerification.resendEmail")
250
250
  ] })
251
251
  }
252
252
  )
@@ -254,9 +254,9 @@ function SignupForm() {
254
254
  ] })
255
255
  ] }),
256
256
  /* @__PURE__ */ jsx(CardFooter, { children: /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground text-center w-full", children: [
257
- "Already verified?",
257
+ t("signup.emailVerification.alreadyVerified"),
258
258
  " ",
259
- /* @__PURE__ */ jsx(Link, { href: "/login", className: "text-primary hover:underline font-medium", children: "Sign in" })
259
+ /* @__PURE__ */ jsx(Link, { href: "/login", className: "text-primary hover:underline font-medium", children: t("signup.emailVerification.signIn") })
260
260
  ] }) })
261
261
  ]
262
262
  }
@@ -310,7 +310,7 @@ function SignupForm() {
310
310
  /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit(onSubmit), className: "space-y-4", children: [
311
311
  /* @__PURE__ */ jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [
312
312
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
313
- /* @__PURE__ */ jsx(Label, { htmlFor: "firstName", children: "First name" }),
313
+ /* @__PURE__ */ jsx(Label, { htmlFor: "firstName", children: t("signup.form.firstName") }),
314
314
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
315
315
  /* @__PURE__ */ jsx(User, { className: "absolute left-3 top-3 h-4 w-4 text-muted-foreground" }),
316
316
  /* @__PURE__ */ jsx(
@@ -320,7 +320,7 @@ function SignupForm() {
320
320
  id: "firstName",
321
321
  type: "text",
322
322
  autoComplete: "given-name",
323
- placeholder: "John",
323
+ placeholder: t("signup.form.firstNamePlaceholder"),
324
324
  className: "pl-9",
325
325
  "data-cy": sel("auth.signup.firstName")
326
326
  }
@@ -329,7 +329,7 @@ function SignupForm() {
329
329
  errors.firstName && /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive", children: errors.firstName.message })
330
330
  ] }),
331
331
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
332
- /* @__PURE__ */ jsx(Label, { htmlFor: "lastName", children: "Last name" }),
332
+ /* @__PURE__ */ jsx(Label, { htmlFor: "lastName", children: t("signup.form.lastName") }),
333
333
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
334
334
  /* @__PURE__ */ jsx(User, { className: "absolute left-3 top-3 h-4 w-4 text-muted-foreground" }),
335
335
  /* @__PURE__ */ jsx(
@@ -339,7 +339,7 @@ function SignupForm() {
339
339
  id: "lastName",
340
340
  type: "text",
341
341
  autoComplete: "family-name",
342
- placeholder: "Doe",
342
+ placeholder: t("signup.form.lastNamePlaceholder"),
343
343
  className: "pl-9",
344
344
  "data-cy": sel("auth.signup.lastName")
345
345
  }
@@ -349,7 +349,7 @@ function SignupForm() {
349
349
  ] })
350
350
  ] }),
351
351
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
352
- /* @__PURE__ */ jsx(Label, { htmlFor: "email", children: "Email" }),
352
+ /* @__PURE__ */ jsx(Label, { htmlFor: "email", children: t("signup.form.email") }),
353
353
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
354
354
  /* @__PURE__ */ jsx(Mail, { className: "absolute left-3 top-3 h-4 w-4 text-muted-foreground" }),
355
355
  /* @__PURE__ */ jsx(
@@ -359,7 +359,7 @@ function SignupForm() {
359
359
  id: "email",
360
360
  type: "email",
361
361
  autoComplete: "email",
362
- placeholder: "email@example.com",
362
+ placeholder: t("signup.form.emailPlaceholder"),
363
363
  className: `pl-9 ${fromInvite ? "bg-muted cursor-not-allowed" : ""}`,
364
364
  readOnly: fromInvite,
365
365
  "data-cy": sel("auth.signup.email")
@@ -369,7 +369,7 @@ function SignupForm() {
369
369
  errors.email && /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive", children: errors.email.message })
370
370
  ] }),
371
371
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
372
- /* @__PURE__ */ jsx(Label, { htmlFor: "password", children: "Password" }),
372
+ /* @__PURE__ */ jsx(Label, { htmlFor: "password", children: t("signup.form.password") }),
373
373
  /* @__PURE__ */ jsx(
374
374
  PasswordInput,
375
375
  {
@@ -379,13 +379,19 @@ function SignupForm() {
379
379
  placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
380
380
  showRequirements: true,
381
381
  password,
382
+ requirementLabels: {
383
+ minChars: t("signup.form.passwordRequirements.minChars"),
384
+ uppercase: t("signup.form.passwordRequirements.uppercase"),
385
+ lowercase: t("signup.form.passwordRequirements.lowercase"),
386
+ number: t("signup.form.passwordRequirements.number")
387
+ },
382
388
  "data-cy": sel("auth.signup.password")
383
389
  }
384
390
  ),
385
391
  errors.password && /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive", children: errors.password.message })
386
392
  ] }),
387
393
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
388
- /* @__PURE__ */ jsx(Label, { htmlFor: "confirmPassword", children: "Confirm password" }),
394
+ /* @__PURE__ */ jsx(Label, { htmlFor: "confirmPassword", children: t("signup.form.confirmPassword") }),
389
395
  /* @__PURE__ */ jsx(
390
396
  PasswordInput,
391
397
  {
@@ -418,9 +424,9 @@ function SignupForm() {
418
424
  htmlFor: "terms",
419
425
  className: "text-sm font-normal cursor-pointer",
420
426
  children: [
421
- "I agree to the",
427
+ t("signup.form.agreeToThe"),
422
428
  " ",
423
- /* @__PURE__ */ jsx(Link, { href: "/terms", className: "text-primary hover:underline", children: "terms and conditions" })
429
+ /* @__PURE__ */ jsx(Link, { href: "/terms", className: "text-primary hover:underline", children: t("signup.form.termsAndConditions") })
424
430
  ]
425
431
  }
426
432
  )
@@ -434,15 +440,15 @@ function SignupForm() {
434
440
  "data-cy": sel("auth.signup.submitButton"),
435
441
  children: loadingProvider === "email" ? /* @__PURE__ */ jsxs(Fragment, { children: [
436
442
  /* @__PURE__ */ jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" }),
437
- "Creating account..."
438
- ] }) : "Create account"
443
+ t("signup.form.creatingAccount")
444
+ ] }) : t("signup.form.createAccount")
439
445
  }
440
446
  )
441
447
  ] }),
442
448
  PUBLIC_AUTH_CONFIG.providers.google.enabled && /* @__PURE__ */ jsxs(Fragment, { children: [
443
449
  /* @__PURE__ */ jsxs("div", { className: "relative my-4", children: [
444
450
  /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center", children: /* @__PURE__ */ jsx(Separator, { className: "w-full" }) }),
445
- /* @__PURE__ */ jsx("div", { className: "relative flex justify-center text-xs uppercase", children: /* @__PURE__ */ jsx("span", { className: "bg-background px-2 text-muted-foreground", children: "Or continue with" }) })
451
+ /* @__PURE__ */ jsx("div", { className: "relative flex justify-center text-xs uppercase", children: /* @__PURE__ */ jsx("span", { className: "bg-background px-2 text-muted-foreground", children: t("signup.form.orContinueWith") }) })
446
452
  ] }),
447
453
  /* @__PURE__ */ jsxs(
448
454
  Button,
@@ -460,7 +466,7 @@ function SignupForm() {
460
466
  /* @__PURE__ */ jsx("path", { fill: "#FBBC05", d: "M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" }),
461
467
  /* @__PURE__ */ jsx("path", { fill: "#EA4335", d: "M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" })
462
468
  ] }),
463
- "Continue with Google"
469
+ t("signup.form.continueWithGoogle")
464
470
  ]
465
471
  }
466
472
  )
@@ -471,16 +477,16 @@ function SignupForm() {
471
477
  {
472
478
  "data-cy": sel("auth.signup.footer"),
473
479
  children: /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground text-center w-full", children: [
474
- "Already have an account?",
480
+ t("signup.footer.alreadyHaveAccount"),
475
481
  " ",
476
482
  /* @__PURE__ */ jsx(
477
483
  Link,
478
484
  {
479
485
  href: "/login",
480
486
  className: "text-primary hover:underline font-medium focus:outline-none focus:ring-2 focus:ring-accent",
481
- "aria-label": "Ir a p\xE1gina de inicio de sesi\xF3n",
487
+ "aria-label": t("signup.footer.signInAria"),
482
488
  "data-cy": sel("auth.signup.loginLink"),
483
- children: "Sign in"
489
+ children: t("signup.footer.signIn")
484
490
  }
485
491
  )
486
492
  ] })
@@ -1 +1 @@
1
- {"version":3,"file":"AuthGuard.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/layouts/AuthGuard.tsx"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,2CA0BrD"}
1
+ {"version":3,"file":"AuthGuard.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/layouts/AuthGuard.tsx"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAOD,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,2CA8BrD"}
@@ -1,16 +1,19 @@
1
1
  "use client";
2
- import { Fragment, jsx } from "react/jsx-runtime";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useAuth } from "../../../hooks/useAuth.js";
4
4
  import { useRouter } from "next/navigation";
5
5
  import { useEffect } from "react";
6
6
  import { Loader2 } from "lucide-react";
7
7
  import { useEnsureUserMetadata } from "../../../hooks/useEnsureUserMetadata.js";
8
8
  import { useAuthMethodDetector } from "../../../hooks/useAuthMethodDetector.js";
9
+ function EnsureUserMetadata() {
10
+ useEnsureUserMetadata();
11
+ return null;
12
+ }
9
13
  function AuthGuard({ children }) {
10
14
  const { user, isLoading } = useAuth();
11
15
  const router = useRouter();
12
16
  useAuthMethodDetector();
13
- useEnsureUserMetadata();
14
17
  useEffect(() => {
15
18
  if (!isLoading && !user) {
16
19
  router.push("/login");
@@ -22,7 +25,10 @@ function AuthGuard({ children }) {
22
25
  if (!user) {
23
26
  return null;
24
27
  }
25
- return /* @__PURE__ */ jsx(Fragment, { children });
28
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
29
+ /* @__PURE__ */ jsx(EnsureUserMetadata, {}),
30
+ children
31
+ ] });
26
32
  }
27
33
  export {
28
34
  AuthGuard
@@ -1,7 +1,14 @@
1
+ export interface PasswordRequirementLabels {
2
+ minChars: string;
3
+ uppercase: string;
4
+ lowercase: string;
5
+ number: string;
6
+ }
1
7
  export interface PasswordInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {
2
8
  showRequirements?: boolean;
3
9
  showToggle?: boolean;
4
10
  password?: string;
11
+ requirementLabels?: PasswordRequirementLabels;
5
12
  }
6
13
  declare const PasswordInput: import("react").ForwardRefExoticComponent<PasswordInputProps & import("react").RefAttributes<HTMLInputElement>>;
7
14
  export { PasswordInput };
@@ -1 +1 @@
1
- {"version":3,"file":"password-input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/password-input.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACjE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,QAAA,MAAM,aAAa,iHAyDlB,CAAA;AAID,OAAO,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"password-input.d.ts","sourceRoot":"","sources":["../../../src/components/ui/password-input.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AASD,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACjE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,yBAAyB,CAAA;CAC9C;AAED,QAAA,MAAM,aAAa,iHA2DlB,CAAA;AAID,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -5,14 +5,21 @@ import { Eye, EyeOff, Lock, CheckCircle2, XCircle } from "lucide-react";
5
5
  import { Input } from "./input.js";
6
6
  import { Badge } from "./badge.js";
7
7
  import { cn } from "../../lib/utils/index.js";
8
+ const DEFAULT_REQUIREMENT_LABELS = {
9
+ minChars: "8+ characters",
10
+ uppercase: "One uppercase",
11
+ lowercase: "One lowercase",
12
+ number: "One number"
13
+ };
8
14
  const PasswordInput = forwardRef(
9
- ({ className, showRequirements = false, showToggle = true, password = "", ...props }, ref) => {
15
+ ({ className, showRequirements = false, showToggle = true, password = "", requirementLabels, ...props }, ref) => {
10
16
  const [showPassword, setShowPassword] = useState(false);
17
+ const labels = requirementLabels ?? DEFAULT_REQUIREMENT_LABELS;
11
18
  const passwordRequirements = [
12
- { met: password.length >= 8, text: "8+ characters" },
13
- { met: /[A-Z]/.test(password), text: "One uppercase" },
14
- { met: /[a-z]/.test(password), text: "One lowercase" },
15
- { met: /[0-9]/.test(password), text: "One number" }
19
+ { met: password.length >= 8, text: labels.minChars },
20
+ { met: /[A-Z]/.test(password), text: labels.uppercase },
21
+ { met: /[a-z]/.test(password), text: labels.lowercase },
22
+ { met: /[0-9]/.test(password), text: labels.number }
16
23
  ];
17
24
  return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
18
25
  /* @__PURE__ */ jsxs("div", { className: "relative", children: [
@@ -60,18 +60,65 @@
60
60
  "title": "Konto erstellen",
61
61
  "description": "Geben Sie Ihre Informationen ein, um zu beginnen",
62
62
  "inviteBanner": "Erstellen Sie ein Konto, um Ihre Teameinladung anzunehmen",
63
+ "form": {
64
+ "firstName": "Vorname",
65
+ "firstNamePlaceholder": "Hans",
66
+ "lastName": "Nachname",
67
+ "lastNamePlaceholder": "Mueller",
68
+ "email": "E-Mail",
69
+ "emailPlaceholder": "email@beispiel.de",
70
+ "password": "Passwort",
71
+ "confirmPassword": "Passwort bestaetigen",
72
+ "agreeToThe": "Ich stimme den",
73
+ "termsAndConditions": "Nutzungsbedingungen zu",
74
+ "creatingAccount": "Konto wird erstellt...",
75
+ "createAccount": "Konto erstellen",
76
+ "orContinueWith": "Oder fortfahren mit",
77
+ "continueWithGoogle": "Mit Google fortfahren",
78
+ "passwordRequirements": {
79
+ "minChars": "8+ Zeichen",
80
+ "uppercase": "Ein Grossbuchstabe",
81
+ "lowercase": "Ein Kleinbuchstabe",
82
+ "number": "Eine Zahl"
83
+ }
84
+ },
85
+ "footer": {
86
+ "alreadyHaveAccount": "Haben Sie bereits ein Konto?",
87
+ "signIn": "Anmelden",
88
+ "signInAria": "Zur Anmeldeseite gehen"
89
+ },
63
90
  "emailVerification": {
64
91
  "title": "Ueberpruefen Sie Ihre E-Mail!",
65
- "description": "Wir haben einen Bestaetigungslink gesendet an"
92
+ "description": "Wir haben einen Bestaetigungslink gesendet an",
93
+ "checkInbox": "Bitte pruefen Sie Ihren Posteingang und klicken Sie auf den Bestaetigungslink, um Ihr Konto zu aktivieren. Der Link laueft in 24 Stunden ab.",
94
+ "emailSentAria": "E-Mail erfolgreich gesendet",
95
+ "step1": "Oeffnen Sie Ihren E-Mail-Posteingang",
96
+ "step2": "Suchen Sie unsere E-Mail (pruefen Sie auch den Spam-Ordner)",
97
+ "step3": "Klicken Sie auf den Bestaetigungsbutton",
98
+ "didntReceive": "Keine E-Mail erhalten?",
99
+ "back": "Zurueck",
100
+ "sending": "Senden...",
101
+ "resendEmail": "E-Mail erneut senden",
102
+ "alreadyVerified": "Bereits bestaetigt?",
103
+ "signIn": "Anmelden"
66
104
  },
67
105
  "messages": {
68
106
  "termsError": "Fehler: Sie muessen die Nutzungsbedingungen akzeptieren",
69
107
  "creatingAccount": "Konto wird erstellt...",
70
108
  "accountCreated": "Konto erfolgreich erstellt. Ueberpruefen Sie Ihre E-Mail.",
71
- "createError": "Fehler beim Erstellen des Kontos: {error}"
109
+ "createError": "Fehler beim Erstellen des Kontos: {error}",
110
+ "inviteSuccess": "Konto erfolgreich erstellt!",
111
+ "inviteJoinedTeam": "Sie sind dem Team beigetreten."
72
112
  },
73
113
  "errors": {
74
- "mustAgreeToTerms": "Sie muessen die Nutzungsbedingungen akzeptieren"
114
+ "mustAgreeToTerms": "Sie muessen die Nutzungsbedingungen akzeptieren",
115
+ "userAlreadyExists": "Es existiert bereits ein Konto mit dieser E-Mail. Bitte melden Sie sich an.",
116
+ "emailMismatch": "Diese Einladung wurde an eine andere E-Mail-Adresse gesendet.",
117
+ "invitationExpired": "Diese Einladung ist abgelaufen. Bitte fordern Sie eine neue an.",
118
+ "invitationNotFound": "Ungueltige Einladung. Bitte fordern Sie eine neue an.",
119
+ "failedToCreate": "Fehler beim Erstellen des Kontos",
120
+ "googleFailed": "Registrierung mit Google fehlgeschlagen",
121
+ "failedToResend": "Fehler beim erneuten Senden der Bestaetigungs-E-Mail"
75
122
  }
76
123
  },
77
124
  "forgotPassword": {
@@ -280,18 +280,65 @@ declare const _default: {
280
280
  title: string;
281
281
  description: string;
282
282
  inviteBanner: string;
283
+ form: {
284
+ firstName: string;
285
+ firstNamePlaceholder: string;
286
+ lastName: string;
287
+ lastNamePlaceholder: string;
288
+ email: string;
289
+ emailPlaceholder: string;
290
+ password: string;
291
+ confirmPassword: string;
292
+ agreeToThe: string;
293
+ termsAndConditions: string;
294
+ creatingAccount: string;
295
+ createAccount: string;
296
+ orContinueWith: string;
297
+ continueWithGoogle: string;
298
+ passwordRequirements: {
299
+ minChars: string;
300
+ uppercase: string;
301
+ lowercase: string;
302
+ number: string;
303
+ };
304
+ };
305
+ footer: {
306
+ alreadyHaveAccount: string;
307
+ signIn: string;
308
+ signInAria: string;
309
+ };
283
310
  emailVerification: {
284
311
  title: string;
285
312
  description: string;
313
+ checkInbox: string;
314
+ emailSentAria: string;
315
+ step1: string;
316
+ step2: string;
317
+ step3: string;
318
+ didntReceive: string;
319
+ back: string;
320
+ sending: string;
321
+ resendEmail: string;
322
+ alreadyVerified: string;
323
+ signIn: string;
286
324
  };
287
325
  messages: {
288
326
  termsError: string;
289
327
  creatingAccount: string;
290
328
  accountCreated: string;
291
329
  createError: string;
330
+ inviteSuccess: string;
331
+ inviteJoinedTeam: string;
292
332
  };
293
333
  errors: {
294
334
  mustAgreeToTerms: string;
335
+ userAlreadyExists: string;
336
+ emailMismatch: string;
337
+ invitationExpired: string;
338
+ invitationNotFound: string;
339
+ failedToCreate: string;
340
+ googleFailed: string;
341
+ failedToResend: string;
295
342
  };
296
343
  };
297
344
  forgotPassword: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/de/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,wBAoBU"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/messages/de/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,wBAoBU"}