@tanglemedia/svelte-starter-auth-shadcn 0.0.3 → 0.1.0

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 (160) hide show
  1. package/dist/app.css +174 -0
  2. package/dist/app.html +0 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/lib/components/types.d.ts +13 -0
  6. package/dist/lib/components/types.js +1 -0
  7. package/dist/lib/components/ui/auth-layout/auth-layout-content-top.svelte +15 -0
  8. package/dist/lib/components/ui/auth-layout/auth-layout-content-top.svelte.d.ts +8 -0
  9. package/dist/lib/components/ui/auth-layout/auth-layout-content.svelte +15 -0
  10. package/dist/lib/components/ui/auth-layout/auth-layout-content.svelte.d.ts +8 -0
  11. package/dist/lib/components/ui/auth-layout/auth-layout-feature-info.svelte +45 -0
  12. package/dist/lib/components/ui/auth-layout/auth-layout-feature-info.svelte.d.ts +12 -0
  13. package/dist/lib/components/ui/auth-layout/auth-layout-feature.svelte +24 -0
  14. package/dist/lib/components/ui/auth-layout/auth-layout-feature.svelte.d.ts +8 -0
  15. package/dist/lib/components/ui/auth-layout/auth-layout-logo.svelte +99 -0
  16. package/dist/lib/components/ui/auth-layout/auth-layout-logo.svelte.d.ts +63 -0
  17. package/dist/lib/components/ui/auth-layout/auth-layout-main.svelte +17 -0
  18. package/dist/lib/components/ui/auth-layout/auth-layout-main.svelte.d.ts +8 -0
  19. package/dist/lib/components/ui/auth-layout/auth-layout.svelte +22 -88
  20. package/dist/lib/components/ui/auth-layout/auth-layout.svelte.d.ts +4 -12
  21. package/dist/lib/components/ui/auth-layout/index.d.ts +8 -2
  22. package/dist/lib/components/ui/auth-layout/index.js +10 -2
  23. package/dist/lib/components/ui/forgot-password/forgot-password-container.svelte +27 -0
  24. package/dist/lib/components/ui/forgot-password/forgot-password-container.svelte.d.ts +8 -0
  25. package/dist/lib/components/ui/forgot-password/forgot-password-form.svelte +70 -77
  26. package/dist/lib/components/ui/forgot-password/forgot-password-form.svelte.d.ts +12 -7
  27. package/dist/lib/components/ui/forgot-password/forgot-password-header.svelte +34 -0
  28. package/dist/lib/components/ui/forgot-password/forgot-password-header.svelte.d.ts +13 -0
  29. package/dist/lib/components/ui/forgot-password/forgot-password-login.svelte +19 -0
  30. package/dist/lib/components/ui/forgot-password/forgot-password-login.svelte.d.ts +9 -0
  31. package/dist/lib/components/ui/forgot-password/forgot-password-provider.svelte +13 -0
  32. package/dist/lib/components/ui/forgot-password/forgot-password-provider.svelte.d.ts +25 -0
  33. package/dist/lib/components/ui/forgot-password/forgot-password-submit.svelte +17 -0
  34. package/dist/lib/components/ui/forgot-password/forgot-password-submit.svelte.d.ts +7 -0
  35. package/dist/lib/components/ui/forgot-password/forgot-password-user-input.svelte +21 -0
  36. package/dist/lib/components/ui/forgot-password/forgot-password-user-input.svelte.d.ts +26 -0
  37. package/dist/lib/components/ui/forgot-password/forgot-password.schema.d.ts +5 -0
  38. package/dist/lib/components/ui/forgot-password/forgot-password.schema.js +4 -0
  39. package/dist/lib/components/ui/forgot-password/index.d.ts +9 -2
  40. package/dist/lib/components/ui/forgot-password/index.js +9 -2
  41. package/dist/lib/components/ui/index.d.ts +5 -5
  42. package/dist/lib/components/ui/index.js +6 -5
  43. package/dist/lib/components/ui/login-form/index.d.ts +11 -2
  44. package/dist/lib/components/ui/login-form/index.js +13 -2
  45. package/dist/lib/components/ui/login-form/login-container.svelte +27 -0
  46. package/dist/lib/components/ui/login-form/login-container.svelte.d.ts +8 -0
  47. package/dist/lib/components/ui/login-form/login-context.d.ts +2 -0
  48. package/dist/lib/components/ui/login-form/login-context.js +13 -0
  49. package/dist/lib/components/ui/login-form/login-forgot-password.svelte +19 -0
  50. package/dist/lib/components/ui/login-form/login-forgot-password.svelte.d.ts +9 -0
  51. package/dist/lib/components/ui/login-form/login-form.svelte +68 -107
  52. package/dist/lib/components/ui/login-form/login-form.svelte.d.ts +10 -7
  53. package/dist/lib/components/ui/login-form/login-header.svelte +34 -0
  54. package/dist/lib/components/ui/login-form/login-header.svelte.d.ts +13 -0
  55. package/dist/lib/components/ui/login-form/login-password-input.svelte +21 -0
  56. package/dist/lib/components/ui/login-form/login-password-input.svelte.d.ts +26 -0
  57. package/dist/lib/components/ui/login-form/login-provider.svelte +13 -0
  58. package/dist/lib/components/ui/login-form/login-provider.svelte.d.ts +25 -0
  59. package/dist/lib/components/ui/login-form/login-submit.svelte +17 -0
  60. package/dist/lib/components/ui/login-form/login-submit.svelte.d.ts +7 -0
  61. package/dist/lib/components/ui/login-form/login-user-input.svelte +21 -0
  62. package/dist/lib/components/ui/login-form/login-user-input.svelte.d.ts +26 -0
  63. package/dist/lib/components/ui/login-form/login.schema.d.ts +6 -0
  64. package/dist/lib/components/ui/login-form/login.schema.js +5 -0
  65. package/dist/lib/components/ui/register-form/index.d.ts +10 -2
  66. package/dist/lib/components/ui/register-form/index.js +10 -2
  67. package/dist/lib/components/ui/register-form/register-container.svelte +27 -0
  68. package/dist/lib/components/ui/register-form/register-container.svelte.d.ts +8 -0
  69. package/dist/lib/components/ui/register-form/register-form.svelte +67 -166
  70. package/dist/lib/components/ui/register-form/register-form.svelte.d.ts +10 -5
  71. package/dist/lib/components/ui/register-form/register-header.svelte +34 -0
  72. package/dist/lib/components/ui/register-form/register-header.svelte.d.ts +13 -0
  73. package/dist/lib/components/ui/register-form/register-name-input.svelte +21 -0
  74. package/dist/lib/components/ui/register-form/register-name-input.svelte.d.ts +26 -0
  75. package/dist/lib/components/ui/register-form/register-password-input.svelte +21 -0
  76. package/dist/lib/components/ui/register-form/register-password-input.svelte.d.ts +26 -0
  77. package/dist/lib/components/ui/register-form/register-provider.svelte +13 -0
  78. package/dist/lib/components/ui/register-form/register-provider.svelte.d.ts +25 -0
  79. package/dist/lib/components/ui/register-form/register-submit.svelte +17 -0
  80. package/dist/lib/components/ui/register-form/register-submit.svelte.d.ts +7 -0
  81. package/dist/lib/components/ui/register-form/register-user-input.svelte +21 -0
  82. package/dist/lib/components/ui/register-form/register-user-input.svelte.d.ts +26 -0
  83. package/dist/lib/components/ui/register-form/register.schema.d.ts +8 -0
  84. package/dist/lib/components/ui/register-form/register.schema.js +7 -0
  85. package/dist/lib/components/ui/reset-password/index.d.ts +8 -2
  86. package/dist/lib/components/ui/reset-password/index.js +8 -2
  87. package/dist/lib/components/ui/reset-password/reset-password-container.svelte +27 -0
  88. package/dist/lib/components/ui/reset-password/reset-password-container.svelte.d.ts +8 -0
  89. package/dist/lib/components/ui/reset-password/reset-password-form.svelte +91 -0
  90. package/dist/lib/components/ui/reset-password/reset-password-form.svelte.d.ts +20 -0
  91. package/dist/lib/components/ui/reset-password/reset-password-header.svelte +34 -0
  92. package/dist/lib/components/ui/reset-password/reset-password-header.svelte.d.ts +13 -0
  93. package/dist/lib/components/ui/reset-password/reset-password-password-input.svelte +21 -0
  94. package/dist/lib/components/ui/reset-password/reset-password-password-input.svelte.d.ts +26 -0
  95. package/dist/lib/components/ui/reset-password/reset-password-provider.svelte +13 -0
  96. package/dist/lib/components/ui/reset-password/reset-password-provider.svelte.d.ts +25 -0
  97. package/dist/lib/components/ui/reset-password/reset-password-submit.svelte +17 -0
  98. package/dist/lib/components/ui/reset-password/reset-password-submit.svelte.d.ts +7 -0
  99. package/dist/lib/components/ui/reset-password/reset-password.schema.d.ts +6 -0
  100. package/dist/lib/components/ui/reset-password/reset-password.schema.js +9 -0
  101. package/dist/lib/index.d.ts +2 -3
  102. package/dist/lib/index.js +3 -3
  103. package/dist/lib/utils.d.ts +10 -0
  104. package/package.json +39 -30
  105. package/src/app.css +174 -0
  106. package/src/app.html +0 -1
  107. package/src/index.ts +1 -1
  108. package/src/lib/components/types.ts +24 -0
  109. package/src/lib/components/ui/auth-layout/auth-layout-content-top.svelte +15 -0
  110. package/src/lib/components/ui/auth-layout/auth-layout-content.svelte +15 -0
  111. package/src/lib/components/ui/auth-layout/auth-layout-feature-info.svelte +45 -0
  112. package/src/lib/components/ui/auth-layout/auth-layout-feature.svelte +24 -0
  113. package/src/lib/components/ui/auth-layout/auth-layout-logo.svelte +99 -0
  114. package/src/lib/components/ui/auth-layout/auth-layout-main.svelte +17 -0
  115. package/src/lib/components/ui/auth-layout/auth-layout.svelte +22 -88
  116. package/src/lib/components/ui/auth-layout/index.ts +20 -2
  117. package/src/lib/components/ui/forgot-password/forgot-password-container.svelte +27 -0
  118. package/src/lib/components/ui/forgot-password/forgot-password-form.svelte +70 -77
  119. package/src/lib/components/ui/forgot-password/forgot-password-header.svelte +34 -0
  120. package/src/lib/components/ui/forgot-password/forgot-password-login.svelte +19 -0
  121. package/src/lib/components/ui/forgot-password/forgot-password-provider.svelte +13 -0
  122. package/src/lib/components/ui/forgot-password/forgot-password-submit.svelte +17 -0
  123. package/src/lib/components/ui/forgot-password/forgot-password-user-input.svelte +21 -0
  124. package/src/lib/components/ui/forgot-password/forgot-password.schema.ts +7 -0
  125. package/src/lib/components/ui/forgot-password/index.ts +19 -2
  126. package/src/lib/components/ui/index.ts +6 -5
  127. package/src/lib/components/ui/login-form/index.ts +26 -2
  128. package/src/lib/components/ui/login-form/login-container.svelte +27 -0
  129. package/src/lib/components/ui/login-form/login-context.ts +16 -0
  130. package/src/lib/components/ui/login-form/login-forgot-password.svelte +19 -0
  131. package/src/lib/components/ui/login-form/login-form.svelte +68 -107
  132. package/src/lib/components/ui/login-form/login-header.svelte +34 -0
  133. package/src/lib/components/ui/login-form/login-password-input.svelte +21 -0
  134. package/src/lib/components/ui/login-form/login-provider.svelte +13 -0
  135. package/src/lib/components/ui/login-form/login-submit.svelte +17 -0
  136. package/src/lib/components/ui/login-form/login-user-input.svelte +21 -0
  137. package/src/lib/components/ui/login-form/login.schema.ts +8 -0
  138. package/src/lib/components/ui/register-form/index.ts +21 -2
  139. package/src/lib/components/ui/register-form/register-container.svelte +27 -0
  140. package/src/lib/components/ui/register-form/register-form.svelte +67 -166
  141. package/src/lib/components/ui/register-form/register-header.svelte +34 -0
  142. package/src/lib/components/ui/register-form/register-name-input.svelte +21 -0
  143. package/src/lib/components/ui/register-form/register-password-input.svelte +21 -0
  144. package/src/lib/components/ui/register-form/register-provider.svelte +13 -0
  145. package/src/lib/components/ui/register-form/register-submit.svelte +17 -0
  146. package/src/lib/components/ui/register-form/register-user-input.svelte +21 -0
  147. package/src/lib/components/ui/register-form/register.schema.ts +10 -0
  148. package/src/lib/components/ui/reset-password/index.ts +17 -2
  149. package/src/lib/components/ui/reset-password/reset-password-container.svelte +27 -0
  150. package/src/lib/components/ui/reset-password/reset-password-form.svelte +91 -0
  151. package/src/lib/components/ui/reset-password/reset-password-header.svelte +34 -0
  152. package/src/lib/components/ui/reset-password/reset-password-password-input.svelte +21 -0
  153. package/src/lib/components/ui/reset-password/reset-password-provider.svelte +13 -0
  154. package/src/lib/components/ui/reset-password/reset-password-submit.svelte +17 -0
  155. package/src/lib/components/ui/reset-password/reset-password.schema.ts +12 -0
  156. package/src/lib/index.ts +3 -3
  157. package/src/lib/utils.ts +8 -1
  158. package/dist/lib/components/ui/reset-password/reset-form.svelte +0 -116
  159. package/dist/lib/components/ui/reset-password/reset-form.svelte.d.ts +0 -16
  160. package/src/lib/components/ui/reset-password/reset-form.svelte +0 -116
@@ -1,2 +1,8 @@
1
- import AuthLayout from './auth-layout.svelte';
2
- export { AuthLayout };
1
+ import Root from "./auth-layout.svelte";
2
+ import Feature from "./auth-layout-feature.svelte";
3
+ import Info from "./auth-layout-feature-info.svelte";
4
+ import Content from './auth-layout-content.svelte';
5
+ import Main from './auth-layout-main.svelte';
6
+ import ContentTop from './auth-layout-content-top.svelte';
7
+ import Logo from './auth-layout-logo.svelte';
8
+ export { Root, Feature, Info, Content, ContentTop, Main, Logo, Root as AuthLayout, Feature as AuthLayoutFeature, Info as AuthLayoutFeatureInfo };
@@ -1,2 +1,10 @@
1
- import AuthLayout from './auth-layout.svelte';
2
- export { AuthLayout };
1
+ import Root from "./auth-layout.svelte";
2
+ import Feature from "./auth-layout-feature.svelte";
3
+ import Info from "./auth-layout-feature-info.svelte";
4
+ import Content from './auth-layout-content.svelte';
5
+ import Main from './auth-layout-main.svelte';
6
+ import ContentTop from './auth-layout-content-top.svelte';
7
+ import Logo from './auth-layout-logo.svelte';
8
+ export { Root, Feature, Info, Content, ContentTop, Main, Logo,
9
+ //
10
+ Root as AuthLayout, Feature as AuthLayoutFeature, Info as AuthLayoutFeatureInfo };
@@ -0,0 +1,27 @@
1
+ <script lang="ts">
2
+ import { Card } from '@tanglemedia/svelte-starter-ui-shadcn';
3
+ import type { WithChild } from 'svelte-toolbelt';
4
+ import { cn } from '../../../utils.js';
5
+
6
+ type ForgotPasswordContainerProps = Omit<WithChild, 'child'> & {
7
+ class?: string;
8
+ card?: boolean;
9
+ };
10
+
11
+ const {
12
+ children,
13
+ class: cls,
14
+ card = true,
15
+ ...rest
16
+ }: ForgotPasswordContainerProps = $props();
17
+ </script>
18
+
19
+ {#if !card}
20
+ <div class={cn('mx-auto max-w-sm', cls)} {...rest}>
21
+ {@render children?.()}
22
+ </div>
23
+ {:else}
24
+ <Card.Root class={cn('mx-auto max-w-sm', cls)} {...rest}>
25
+ {@render children?.()}
26
+ </Card.Root>
27
+ {/if}
@@ -0,0 +1,8 @@
1
+ import type { WithChild } from 'svelte-toolbelt';
2
+ type ForgotPasswordContainerProps = Omit<WithChild, 'child'> & {
3
+ class?: string;
4
+ card?: boolean;
5
+ };
6
+ declare const ForgotPasswordContainer: import("svelte").Component<ForgotPasswordContainerProps, {}, "">;
7
+ type ForgotPasswordContainer = ReturnType<typeof ForgotPasswordContainer>;
8
+ export default ForgotPasswordContainer;
@@ -1,98 +1,91 @@
1
1
  <script lang="ts">
2
- import { Button, Card, Input, Label, Form } from '@tanglemedia/svelte-starter-ui-shadcn';
3
- import type { Snippet } from 'svelte';
2
+ import { Card } from "@tanglemedia/svelte-starter-ui-shadcn";
3
+ import type { Snippet } from "svelte";
4
+ import SuperDebug, {
5
+ defaults,
6
+ superForm,
7
+ type Infer,
8
+ type SuperForm,
9
+ type SuperValidated,
10
+ } from "sveltekit-superforms";
11
+ import { zod4 } from "sveltekit-superforms/adapters";
12
+ import ForgotPasswordContainer from "./forgot-password-container.svelte";
13
+ import ForgotPasswordUserInput from "./forgot-password-user-input.svelte";
14
+ import ForgotPasswordHeader from "./forgot-password-header.svelte";
15
+ import ForgotPasswordProvider from "./forgot-password-provider.svelte";
16
+ import ForgotPasswordSubmit from "./forgot-password-submit.svelte";
17
+ import ForgotPasswordLogin from "./forgot-password-login.svelte";
18
+ import { forgotPasswordSchema, type ForgotPasswordSchema } from "./forgot-password.schema.js";
19
+ import { ServerError } from "@tanglemedia/svelte-starter-form-shadcn";
4
20
 
5
21
  interface Props {
6
- superform: any;
22
+ superform?: SuperForm<Infer<ForgotPasswordSchema>> | null;
7
23
  card?: boolean;
8
- cardClass?: string;
24
+ // cardClass?: string;
9
25
  title?: string;
10
26
  description?: string;
11
- login?: boolean;
27
+ // forgotPassword?: boolean;
12
28
  loginLink?: string;
13
- formTail?: Snippet;
14
- formHead?: Snippet;
29
+ register?: boolean;
30
+ registerLink?: string;
31
+ lead?: Snippet;
32
+ tail?: Snippet;
15
33
  children?: Snippet;
34
+ form?: SuperValidated<Infer<ForgotPasswordSchema>>;
35
+ action?: string;
36
+
37
+ debug?: boolean;
16
38
  }
17
39
 
18
- let {
19
- superform,
20
- card = false,
21
- cardClass = "mx-auto max-w-sm",
22
- title = "Forgot Password",
40
+ let {
41
+ debug = false,
42
+ form,
43
+ superform: superforms = $bindable(null),
44
+ card = true,
45
+ title = "Forgot Password",
23
46
  description = "Enter your email below to request a password reset",
24
- login = true,
47
+ // forgotPassword = true,
25
48
  loginLink = "/login",
26
- formTail,
27
- formHead,
28
- children
49
+ register = true,
50
+ registerLink = "/register",
51
+ lead,
52
+ tail,
53
+ action = "?/forgot-password",
29
54
  }: Props = $props();
30
55
 
31
- const { form: formData, enhance } = superform;
56
+ superforms = superforms || superForm(form || defaults(zod4(forgotPasswordSchema)));
57
+
58
+ const { errors, message } = superforms;
32
59
  </script>
33
60
 
34
- {#if card}
35
- <Card.Root class={cardClass}>
36
- <Card.Header>
37
- <Card.Title class="text-2xl">{title}</Card.Title>
38
- <Card.Description>{description}</Card.Description>
39
- </Card.Header>
61
+ <ForgotPasswordProvider {superforms} {action}>
62
+ <ForgotPasswordContainer {card}>
63
+ <ForgotPasswordHeader text={title} desc={description} />
40
64
  <Card.Content>
41
- <form method="POST" use:enhance class="grid gap-4">
42
- {@render formHead?.()}
43
- {#if children}
44
- {@render children?.()}
45
- {:else}
46
- <Form.Field form={superform} name="email">
47
- <Form.Control>
48
- {#snippet children({ props })}
49
- <Form.Label>Email</Form.Label>
50
- <Input {...props} bind:value={$formData.email} type="email" required />
51
- {/snippet}
52
- </Form.Control>
53
- <Form.FieldErrors />
54
- </Form.Field>
55
- {/if}
56
- <Form.Button type="submit" class="w-full">Request Password</Form.Button>
57
- {@render formTail?.()}
58
- </form>
59
- {#if login}
65
+ {@render lead?.()}
66
+ <ServerError class="mb-4" />
67
+ <ForgotPasswordUserInput name={"email"}>
68
+ {#snippet asideLabel()}
69
+ <ForgotPasswordLogin href={loginLink} />
70
+ {/snippet}
71
+ </ForgotPasswordUserInput>
72
+ <ForgotPasswordSubmit />
73
+ {#if register}
60
74
  <div class="mt-4 text-center text-sm">
61
- Remember your password?
62
- <a href={loginLink} class="underline"> Sign in </a>
75
+ Don't have an account?
76
+ <a href={registerLink} class="underline"> Sign up </a>
63
77
  </div>
64
78
  {/if}
65
- </Card.Content>
66
- </Card.Root>
67
- {:else}
68
- <div class={cardClass}>
69
- <div class="flex flex-col space-y-1.5 p-6 pb-0">
70
- <h3 class="font-semibold tracking-tight text-2xl">{title}</h3>
71
- <p class="text-muted-foreground text-sm">{description}</p>
72
- </div>
73
- <form method="POST" use:enhance class="grid gap-4 p-6">
74
- {@render formHead?.()}
75
- {#if children}
76
- {@render children?.()}
77
- {:else}
78
- <Form.Field form={superform} name="email">
79
- <Form.Control>
80
- {#snippet children({ props })}
81
- <Form.Label>Email</Form.Label>
82
- <Input {...props} bind:value={$formData.email} type="email" required />
83
- {/snippet}
84
- </Form.Control>
85
- <Form.FieldErrors />
86
- </Form.Field>
79
+ {@render tail?.()}
80
+
81
+ {#if debug}
82
+ <div class="mb-6">
83
+ <h4>Errors</h4>
84
+ <SuperDebug data={errors} />
85
+ </div>
86
+ <h4>Message</h4>
87
+ <SuperDebug data={$message} />
87
88
  {/if}
88
- <Form.Button type="submit" class="w-full">Request Password</Form.Button>
89
- {@render formTail?.()}
90
- </form>
91
- {#if login}
92
- <div class="mt-4 text-center text-sm">
93
- Remember your password?
94
- <a href={loginLink} class="underline"> Sign in </a>
95
- </div>
96
- {/if}
97
- </div>
98
- {/if}
89
+ </Card.Content>
90
+ </ForgotPasswordContainer>
91
+ </ForgotPasswordProvider>
@@ -1,16 +1,21 @@
1
- import type { Snippet } from 'svelte';
1
+ import type { Snippet } from "svelte";
2
+ import { type Infer, type SuperForm, type SuperValidated } from "sveltekit-superforms";
3
+ import { type ForgotPasswordSchema } from "./forgot-password.schema.js";
2
4
  interface Props {
3
- superform: any;
5
+ superform?: SuperForm<Infer<ForgotPasswordSchema>> | null;
4
6
  card?: boolean;
5
- cardClass?: string;
6
7
  title?: string;
7
8
  description?: string;
8
- login?: boolean;
9
9
  loginLink?: string;
10
- formTail?: Snippet;
11
- formHead?: Snippet;
10
+ register?: boolean;
11
+ registerLink?: string;
12
+ lead?: Snippet;
13
+ tail?: Snippet;
12
14
  children?: Snippet;
15
+ form?: SuperValidated<Infer<ForgotPasswordSchema>>;
16
+ action?: string;
17
+ debug?: boolean;
13
18
  }
14
- declare const ForgotPasswordForm: import("svelte").Component<Props, {}, "">;
19
+ declare const ForgotPasswordForm: import("svelte").Component<Props, {}, "superform">;
15
20
  type ForgotPasswordForm = ReturnType<typeof ForgotPasswordForm>;
16
21
  export default ForgotPasswordForm;
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import { Card } from '@tanglemedia/svelte-starter-ui-shadcn';
3
+ import type { Snippet } from 'svelte';
4
+
5
+ type LoginHeaderAttr = {
6
+ text?: string;
7
+ desc?: string;
8
+ };
9
+
10
+ type LoginHeaderProps = LoginHeaderAttr & {
11
+ title?: Snippet<[LoginHeaderAttr]>;
12
+ description?: Snippet<[LoginHeaderAttr]>;
13
+ children?: Snippet<[LoginHeaderAttr]>;
14
+ };
15
+
16
+ let { title, children, description, ...restProps }: LoginHeaderProps = $props();
17
+ </script>
18
+
19
+ <Card.Header>
20
+ <Card.Title class="text-2xl">
21
+ {#if title}
22
+ {@render title(restProps)}
23
+ {:else if children}
24
+ {@render children?.(restProps)}
25
+ {:else}
26
+ {restProps.text}
27
+ {/if}
28
+ </Card.Title>
29
+ {#if description}
30
+ <Card.Description>{@render description(restProps)}</Card.Description>
31
+ {:else if restProps.desc}
32
+ <Card.Description>{restProps.desc}</Card.Description>
33
+ {/if}
34
+ </Card.Header>
@@ -0,0 +1,13 @@
1
+ import type { Snippet } from 'svelte';
2
+ type LoginHeaderAttr = {
3
+ text?: string;
4
+ desc?: string;
5
+ };
6
+ type LoginHeaderProps = LoginHeaderAttr & {
7
+ title?: Snippet<[LoginHeaderAttr]>;
8
+ description?: Snippet<[LoginHeaderAttr]>;
9
+ children?: Snippet<[LoginHeaderAttr]>;
10
+ };
11
+ declare const ForgotPasswordHeader: import("svelte").Component<LoginHeaderProps, {}, "">;
12
+ type ForgotPasswordHeader = ReturnType<typeof ForgotPasswordHeader>;
13
+ export default ForgotPasswordHeader;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import { cn } from "../../../utils.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ type LoginForgotPasswordProps = {
6
+ href: string;
7
+ class?: string;
8
+ children?: Snippet;
9
+ };
10
+ const { href, class: cls, children }: LoginForgotPasswordProps = $props();
11
+ </script>
12
+
13
+ <a {href} class={cn("ml-auto inline-block text-sm underline", cls)}>
14
+ {#if children}
15
+ {@render children?.()}
16
+ {:else}
17
+ Back to login
18
+ {/if}
19
+ </a>
@@ -0,0 +1,9 @@
1
+ import type { Snippet } from "svelte";
2
+ type LoginForgotPasswordProps = {
3
+ href: string;
4
+ class?: string;
5
+ children?: Snippet;
6
+ };
7
+ declare const ForgotPasswordLogin: import("svelte").Component<LoginForgotPasswordProps, {}, "">;
8
+ type ForgotPasswordLogin = ReturnType<typeof ForgotPasswordLogin>;
9
+ export default ForgotPasswordLogin;
@@ -0,0 +1,13 @@
1
+ <script lang="ts" module>
2
+ type T = Record<string, unknown>;
3
+ </script>
4
+
5
+ <script lang="ts" generics="T extends Record<string, unknown>">
6
+ import {
7
+ Form,
8
+ type FormProviderProps,
9
+ } from "@tanglemedia/svelte-starter-form-shadcn";
10
+ let rest: FormProviderProps<T> = $props();
11
+ </script>
12
+
13
+ <Form.Provider {...rest} />
@@ -0,0 +1,25 @@
1
+ import { type FormProviderProps } from "@tanglemedia/svelte-starter-form-shadcn";
2
+ declare function $$render<T extends Record<string, unknown>>(): {
3
+ props: FormProviderProps<T>;
4
+ exports: {};
5
+ bindings: "";
6
+ slots: {};
7
+ events: {};
8
+ };
9
+ declare class __sveltets_Render<T extends Record<string, unknown>> {
10
+ props(): ReturnType<typeof $$render<T>>['props'];
11
+ events(): ReturnType<typeof $$render<T>>['events'];
12
+ slots(): ReturnType<typeof $$render<T>>['slots'];
13
+ bindings(): "";
14
+ exports(): {};
15
+ }
16
+ interface $$IsomorphicComponent {
17
+ new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
18
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
19
+ } & ReturnType<__sveltets_Render<T>['exports']>;
20
+ <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
21
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
22
+ }
23
+ declare const ForgotPasswordProvider: $$IsomorphicComponent;
24
+ type ForgotPasswordProvider<T extends Record<string, unknown>> = InstanceType<typeof ForgotPasswordProvider<T>>;
25
+ export default ForgotPasswordProvider;
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import { Form } from "@tanglemedia/svelte-starter-form-shadcn";
3
+ import type { Snippet } from "svelte";
4
+
5
+ type LoginSubmitProps = {
6
+ children?: Snippet;
7
+ };
8
+ const { children }: LoginSubmitProps = $props();
9
+ </script>
10
+
11
+ <Form.Submit class="w-full">
12
+ {#if children}
13
+ {@render children?.()}
14
+ {:else}
15
+ Submit
16
+ {/if}
17
+ </Form.Submit>
@@ -0,0 +1,7 @@
1
+ import type { Snippet } from "svelte";
2
+ type LoginSubmitProps = {
3
+ children?: Snippet;
4
+ };
5
+ declare const ForgotPasswordSubmit: import("svelte").Component<LoginSubmitProps, {}, "">;
6
+ type ForgotPasswordSubmit = ReturnType<typeof ForgotPasswordSubmit>;
7
+ export default ForgotPasswordSubmit;
@@ -0,0 +1,21 @@
1
+ <script lang="ts" module>
2
+ import { type FormPathLeaves as _FormPathLeaves } from 'sveltekit-superforms';
3
+
4
+ type T = Record<string, unknown>;
5
+ type U = _FormPathLeaves<T, any>;
6
+ </script>
7
+
8
+ <script
9
+ lang="ts"
10
+ generics="T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>"
11
+ >
12
+ import {
13
+ Field,
14
+ type InputFieldProps,
15
+ } from '@tanglemedia/svelte-starter-form-shadcn';
16
+
17
+ type LoginUserInputProps = InputFieldProps<T, U>;
18
+ const { name = 'email' as U, label, ...rest }: LoginUserInputProps = $props();
19
+ </script>
20
+
21
+ <Field.Input type={'email'} {name} label={label || 'Email'} {...rest}></Field.Input>
@@ -0,0 +1,26 @@
1
+ import { type FormPathLeaves as _FormPathLeaves } from 'sveltekit-superforms';
2
+ import { type InputFieldProps } from '@tanglemedia/svelte-starter-form-shadcn';
3
+ declare function $$render<T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>>(): {
4
+ props: InputFieldProps<T, U>;
5
+ exports: {};
6
+ bindings: "";
7
+ slots: {};
8
+ events: {};
9
+ };
10
+ declare class __sveltets_Render<T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>> {
11
+ props(): ReturnType<typeof $$render<T, U>>['props'];
12
+ events(): ReturnType<typeof $$render<T, U>>['events'];
13
+ slots(): ReturnType<typeof $$render<T, U>>['slots'];
14
+ bindings(): "";
15
+ exports(): {};
16
+ }
17
+ interface $$IsomorphicComponent {
18
+ new <T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U>['props']>, ReturnType<__sveltets_Render<T, U>['events']>, ReturnType<__sveltets_Render<T, U>['slots']>> & {
19
+ $$bindings?: ReturnType<__sveltets_Render<T, U>['bindings']>;
20
+ } & ReturnType<__sveltets_Render<T, U>['exports']>;
21
+ <T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>>(internal: unknown, props: ReturnType<__sveltets_Render<T, U>['props']> & {}): ReturnType<__sveltets_Render<T, U>['exports']>;
22
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
23
+ }
24
+ declare const ForgotPasswordUserInput: $$IsomorphicComponent;
25
+ type ForgotPasswordUserInput<T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>> = InstanceType<typeof ForgotPasswordUserInput<T, U>>;
26
+ export default ForgotPasswordUserInput;
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ export declare const forgotPasswordSchema: z.ZodObject<{
3
+ username: z.ZodString;
4
+ }, z.core.$strip>;
5
+ export type ForgotPasswordSchema = typeof forgotPasswordSchema;
@@ -0,0 +1,4 @@
1
+ import { z } from "zod";
2
+ export const forgotPasswordSchema = z.object({
3
+ username: z.string().min(1, { message: "Username is required" }),
4
+ });
@@ -1,2 +1,9 @@
1
- import ForgotPasswordForm from './forgot-password-form.svelte';
2
- export { ForgotPasswordForm };
1
+ import Form from './forgot-password-form.svelte';
2
+ import Provider from './forgot-password-provider.svelte';
3
+ import Header from './forgot-password-header.svelte';
4
+ import { forgotPasswordSchema as schema, type ForgotPasswordSchema } from './forgot-password.schema.ts';
5
+ import Container from './forgot-password-container.svelte';
6
+ import ForgotPasswordLogin from './forgot-password-login.svelte';
7
+ import Submit from './forgot-password-submit.svelte';
8
+ import UserInput from './forgot-password-user-input.svelte';
9
+ export { Form, Provider, Header, Container, schema, ForgotPasswordLogin, Submit, UserInput, type ForgotPasswordSchema, };
@@ -1,2 +1,9 @@
1
- import ForgotPasswordForm from './forgot-password-form.svelte';
2
- export { ForgotPasswordForm };
1
+ import Form from './forgot-password-form.svelte';
2
+ import Provider from './forgot-password-provider.svelte';
3
+ import Header from './forgot-password-header.svelte';
4
+ import { forgotPasswordSchema as schema } from "./forgot-password.schema.js";
5
+ import Container from './forgot-password-container.svelte';
6
+ import ForgotPasswordLogin from './forgot-password-login.svelte';
7
+ import Submit from './forgot-password-submit.svelte';
8
+ import UserInput from './forgot-password-user-input.svelte';
9
+ export { Form, Provider, Header, Container, schema, ForgotPasswordLogin, Submit, UserInput, };
@@ -1,5 +1,5 @@
1
- export * from './auth-layout';
2
- export * from './login-form';
3
- export * from './register-form';
4
- export * from './reset-password';
5
- export * from './forgot-password';
1
+ export * as Auth from './auth-layout/index.ts';
2
+ export * as Login from './login-form/index.ts';
3
+ export * as ForgotPassword from './forgot-password/index.ts';
4
+ export * as Register from './register-form/index.ts';
5
+ export * as ResetPassword from './reset-password/index.ts';
@@ -1,5 +1,6 @@
1
- export * from './auth-layout';
2
- export * from './login-form';
3
- export * from './register-form';
4
- export * from './reset-password';
5
- export * from './forgot-password';
1
+ export * as Auth from "./auth-layout/index.js";
2
+ export * as Login from "./login-form/index.js";
3
+ export * as ForgotPassword from "./forgot-password/index.js";
4
+ export * as Register from "./register-form/index.js";
5
+ export * as ResetPassword from "./reset-password/index.js";
6
+ // export * from './forgot-password/index.ts';
@@ -1,2 +1,11 @@
1
- import LoginForm from './login-form.svelte';
2
- export { LoginForm };
1
+ import Form from './login-form.svelte';
2
+ import Provider from './login-provider.svelte';
3
+ import Header from './login-header.svelte';
4
+ import { loginSchema as schema, type LoginSchema } from './login.schema.ts';
5
+ import Container from './login-container.svelte';
6
+ import ForgotPasswordLink from './login-forgot-password.svelte';
7
+ import Submit from './login-submit.svelte';
8
+ import UserInput from './login-user-input.svelte';
9
+ import PasswordInput from './login-password-input.svelte';
10
+ export * from './login-context.ts';
11
+ export { Form, Provider, Header, Container, schema, ForgotPasswordLink, Submit, UserInput, PasswordInput, type LoginSchema, };
@@ -1,2 +1,13 @@
1
- import LoginForm from './login-form.svelte';
2
- export { LoginForm };
1
+ import Form from './login-form.svelte';
2
+ import Provider from './login-provider.svelte';
3
+ import Header from './login-header.svelte';
4
+ import { loginSchema as schema } from "./login.schema.js";
5
+ import Container from './login-container.svelte';
6
+ import ForgotPasswordLink from './login-forgot-password.svelte';
7
+ import Submit from './login-submit.svelte';
8
+ import UserInput from './login-user-input.svelte';
9
+ import PasswordInput from './login-password-input.svelte';
10
+ // import { Field } from '@tanglemedia/svelte-starter-form-shadcn';
11
+ export * from "./login-context.js";
12
+ // const PasswordField = Field.PasswordField;
13
+ export { Form, Provider, Header, Container, schema, ForgotPasswordLink, Submit, UserInput, PasswordInput, };
@@ -0,0 +1,27 @@
1
+ <script lang="ts">
2
+ import { Card } from '@tanglemedia/svelte-starter-ui-shadcn';
3
+ import type { WithChild } from 'svelte-toolbelt';
4
+ import { cn } from '../../../utils.js';
5
+
6
+ type LoginContainerProps = Omit<WithChild, 'child'> & {
7
+ class?: string;
8
+ card?: boolean;
9
+ };
10
+
11
+ const {
12
+ children,
13
+ class: cls,
14
+ card = true,
15
+ ...rest
16
+ }: LoginContainerProps = $props();
17
+ </script>
18
+
19
+ {#if !card}
20
+ <div class={cn('mx-auto max-w-sm', cls)} {...rest}>
21
+ {@render children?.()}
22
+ </div>
23
+ {:else}
24
+ <Card.Root class={cn('mx-auto max-w-sm', cls)} {...rest}>
25
+ {@render children?.()}
26
+ </Card.Root>
27
+ {/if}
@@ -0,0 +1,8 @@
1
+ import type { WithChild } from 'svelte-toolbelt';
2
+ type LoginContainerProps = Omit<WithChild, 'child'> & {
3
+ class?: string;
4
+ card?: boolean;
5
+ };
6
+ declare const LoginContainer: import("svelte").Component<LoginContainerProps, {}, "">;
7
+ type LoginContainer = ReturnType<typeof LoginContainer>;
8
+ export default LoginContainer;
@@ -0,0 +1,2 @@
1
+ import { useForm } from '@tanglemedia/svelte-starter-form-shadcn';
2
+ export { useForm };
@@ -0,0 +1,13 @@
1
+ import { useForm } from '@tanglemedia/svelte-starter-form-shadcn';
2
+ export { useForm };
3
+ // import { getContext, setContext } from 'svelte';
4
+ // import type { SuperForm } from 'sveltekit-superforms';
5
+ // const ctx = '--auth-superform';
6
+ // export function setForm<T extends Record<string, unknown>>(
7
+ // superform: SuperForm<T>
8
+ // ) {
9
+ // setContext(ctx, superform);
10
+ // }
11
+ // export function useForm<T extends Record<string, unknown>>() {
12
+ // return getContext<SuperForm<T>>(ctx);
13
+ // }
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import { cn } from "../../../utils.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ type LoginForgotPasswordProps = {
6
+ href: string;
7
+ class?: string;
8
+ children?: Snippet;
9
+ };
10
+ const { href, class: cls, children }: LoginForgotPasswordProps = $props();
11
+ </script>
12
+
13
+ <a {href} class={cn("ml-auto inline-block text-sm underline", cls)}>
14
+ {#if children}
15
+ {@render children?.()}
16
+ {:else}
17
+ Forgot your password?
18
+ {/if}
19
+ </a>