create-nevela 0.3.0 → 0.4.1

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.
Files changed (61) hide show
  1. package/index.mjs +12 -1
  2. package/package.json +1 -1
  3. package/template/laravel/composer.json +2 -1
  4. package/template/laravel/config/nevela.php +66 -1
  5. package/template/laravel/database/migrations/2026_10_05_000000_create_nevela_auth_tables.php +66 -0
  6. package/template/laravel/src/Auth/Account.php +140 -0
  7. package/template/laravel/src/Auth/AuthMail.php +77 -0
  8. package/template/laravel/src/Auth/Challenges.php +135 -0
  9. package/template/laravel/src/Auth/Passkeys.php +206 -0
  10. package/template/laravel/src/Auth/Totp.php +106 -0
  11. package/template/laravel/src/Auth/Web.php +75 -0
  12. package/template/laravel/src/Console/GenerateCommand.php +1 -0
  13. package/template/laravel/src/Console/UpdateCommand.php +56 -4
  14. package/template/laravel/src/Generator/ResourceGenerator.php +60 -0
  15. package/template/laravel/src/Http/Auth/AccountController.php +252 -0
  16. package/template/laravel/src/Http/Auth/Answers.php +33 -0
  17. package/template/laravel/src/Http/Auth/SecurityController.php +188 -0
  18. package/template/laravel/src/Http/Auth/SignInController.php +302 -0
  19. package/template/laravel/src/Http/TokenController.php +19 -37
  20. package/template/laravel/src/Http/UploadController.php +24 -12
  21. package/template/laravel/src/Models/Passkey.php +38 -0
  22. package/template/laravel/src/Models/TwoFactor.php +64 -0
  23. package/template/laravel/src/Nevela.php +1 -1
  24. package/template/laravel/src/NevelaServiceProvider.php +72 -4
  25. package/template/web/app/api/[...path]/route.ts +5 -1
  26. package/template/web/app/api/auth/[...action]/route.ts +196 -0
  27. package/template/web/app/auth-actions.ts +4 -43
  28. package/template/web/app/dashboard/account/layout.tsx +29 -0
  29. package/template/web/app/dashboard/account/page.tsx +19 -0
  30. package/template/web/app/dashboard/account/password/page.tsx +10 -0
  31. package/template/web/app/dashboard/account/security/page.tsx +19 -0
  32. package/template/web/app/dashboard/account/sessions/page.tsx +9 -0
  33. package/template/web/app/dashboard/layout.tsx +2 -1
  34. package/template/web/app/forgot-password/page.tsx +22 -0
  35. package/template/web/app/reset-password/page.tsx +31 -0
  36. package/template/web/app/sign-in/page.tsx +34 -4
  37. package/template/web/app/sign-up/page.tsx +43 -0
  38. package/template/web/app/two-factor/page.tsx +34 -0
  39. package/template/web/app/verify-email/page.tsx +33 -0
  40. package/template/web/components/account/account-nav.tsx +39 -0
  41. package/template/web/components/account/sections.tsx +573 -0
  42. package/template/web/components/auth/otp-input.tsx +95 -0
  43. package/template/web/components/auth/password-field.tsx +116 -0
  44. package/template/web/components/auth/password-forms.tsx +76 -0
  45. package/template/web/components/auth/provider-icons.tsx +39 -0
  46. package/template/web/components/auth/sign-in-flow.tsx +307 -0
  47. package/template/web/components/auth/sign-up-form.tsx +93 -0
  48. package/template/web/components/auth/social-buttons.tsx +56 -0
  49. package/template/web/components/auth/two-factor-form.tsx +144 -0
  50. package/template/web/components/auth/use-resend.ts +44 -0
  51. package/template/web/components/auth/verify-email-form.tsx +147 -0
  52. package/template/web/components/dashboard/dashboard-sidebar.tsx +2 -2
  53. package/template/web/components/dashboard/user-menu.tsx +33 -1
  54. package/template/web/lib/auth-client.ts +279 -0
  55. package/template/web/lib/auth-config.ts +43 -0
  56. package/template/web/lib/laravel.ts +26 -1
  57. package/template/web/lib/password-rules.ts +167 -0
  58. package/template/web/lib/second-step.ts +35 -0
  59. package/template/web/lib/session.ts +12 -4
  60. package/template/web/package.json +3 -2
  61. package/template/web/components/auth/sign-in-form.tsx +0 -50
@@ -1,50 +0,0 @@
1
- "use client";
2
-
3
- import { useState } from "react";
4
- import { signInAction } from "@/app/auth-actions";
5
- import { AuthInput, AuthLabel, FormMessage, PrimaryButton } from "./ui";
6
-
7
- /** Email and password, checked by Laravel. */
8
- export function SignInForm({ next, initialError }: { next: string; initialError?: string | null }) {
9
- const [email, setEmail] = useState("");
10
- const [password, setPassword] = useState("");
11
- const [error, setError] = useState<string | null>(initialError ?? null);
12
- const [pending, setPending] = useState(false);
13
-
14
- const submit = async (event: React.FormEvent) => {
15
- event.preventDefault();
16
- setPending(true);
17
- setError(null);
18
- const result = await signInAction(email, password);
19
- if (result.ok) {
20
- window.location.href = next;
21
- return;
22
- }
23
- setError(result.error);
24
- setPending(false);
25
- };
26
-
27
- return (
28
- <form onSubmit={submit} className="flex flex-col gap-4">
29
- {error && <FormMessage tone="error">{error}</FormMessage>}
30
- <div className="flex flex-col gap-1.5">
31
- <AuthLabel htmlFor="email">Email</AuthLabel>
32
- <AuthInput id="email" type="email" autoComplete="email" required autoFocus value={email} onChange={(event) => setEmail(event.target.value)} />
33
- </div>
34
- <div className="flex flex-col gap-1.5">
35
- <AuthLabel htmlFor="password">Password</AuthLabel>
36
- <AuthInput
37
- id="password"
38
- type="password"
39
- autoComplete="current-password"
40
- required
41
- value={password}
42
- onChange={(event) => setPassword(event.target.value)}
43
- />
44
- </div>
45
- <PrimaryButton type="submit" pending={pending}>
46
- Sign in
47
- </PrimaryButton>
48
- </form>
49
- );
50
- }