@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.
- package/dist/app.css +174 -0
- package/dist/app.html +0 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/components/types.d.ts +13 -0
- package/dist/lib/components/types.js +1 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-content-top.svelte +15 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-content-top.svelte.d.ts +8 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-content.svelte +15 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-content.svelte.d.ts +8 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-feature-info.svelte +45 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-feature-info.svelte.d.ts +12 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-feature.svelte +24 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-feature.svelte.d.ts +8 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-logo.svelte +99 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-logo.svelte.d.ts +63 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-main.svelte +17 -0
- package/dist/lib/components/ui/auth-layout/auth-layout-main.svelte.d.ts +8 -0
- package/dist/lib/components/ui/auth-layout/auth-layout.svelte +22 -88
- package/dist/lib/components/ui/auth-layout/auth-layout.svelte.d.ts +4 -12
- package/dist/lib/components/ui/auth-layout/index.d.ts +8 -2
- package/dist/lib/components/ui/auth-layout/index.js +10 -2
- package/dist/lib/components/ui/forgot-password/forgot-password-container.svelte +27 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-container.svelte.d.ts +8 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-form.svelte +70 -77
- package/dist/lib/components/ui/forgot-password/forgot-password-form.svelte.d.ts +12 -7
- package/dist/lib/components/ui/forgot-password/forgot-password-header.svelte +34 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-header.svelte.d.ts +13 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-login.svelte +19 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-login.svelte.d.ts +9 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-provider.svelte +13 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-provider.svelte.d.ts +25 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-submit.svelte +17 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-submit.svelte.d.ts +7 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-user-input.svelte +21 -0
- package/dist/lib/components/ui/forgot-password/forgot-password-user-input.svelte.d.ts +26 -0
- package/dist/lib/components/ui/forgot-password/forgot-password.schema.d.ts +5 -0
- package/dist/lib/components/ui/forgot-password/forgot-password.schema.js +4 -0
- package/dist/lib/components/ui/forgot-password/index.d.ts +9 -2
- package/dist/lib/components/ui/forgot-password/index.js +9 -2
- package/dist/lib/components/ui/index.d.ts +5 -5
- package/dist/lib/components/ui/index.js +6 -5
- package/dist/lib/components/ui/login-form/index.d.ts +11 -2
- package/dist/lib/components/ui/login-form/index.js +13 -2
- package/dist/lib/components/ui/login-form/login-container.svelte +27 -0
- package/dist/lib/components/ui/login-form/login-container.svelte.d.ts +8 -0
- package/dist/lib/components/ui/login-form/login-context.d.ts +2 -0
- package/dist/lib/components/ui/login-form/login-context.js +13 -0
- package/dist/lib/components/ui/login-form/login-forgot-password.svelte +19 -0
- package/dist/lib/components/ui/login-form/login-forgot-password.svelte.d.ts +9 -0
- package/dist/lib/components/ui/login-form/login-form.svelte +68 -107
- package/dist/lib/components/ui/login-form/login-form.svelte.d.ts +10 -7
- package/dist/lib/components/ui/login-form/login-header.svelte +34 -0
- package/dist/lib/components/ui/login-form/login-header.svelte.d.ts +13 -0
- package/dist/lib/components/ui/login-form/login-password-input.svelte +21 -0
- package/dist/lib/components/ui/login-form/login-password-input.svelte.d.ts +26 -0
- package/dist/lib/components/ui/login-form/login-provider.svelte +13 -0
- package/dist/lib/components/ui/login-form/login-provider.svelte.d.ts +25 -0
- package/dist/lib/components/ui/login-form/login-submit.svelte +17 -0
- package/dist/lib/components/ui/login-form/login-submit.svelte.d.ts +7 -0
- package/dist/lib/components/ui/login-form/login-user-input.svelte +21 -0
- package/dist/lib/components/ui/login-form/login-user-input.svelte.d.ts +26 -0
- package/dist/lib/components/ui/login-form/login.schema.d.ts +6 -0
- package/dist/lib/components/ui/login-form/login.schema.js +5 -0
- package/dist/lib/components/ui/register-form/index.d.ts +10 -2
- package/dist/lib/components/ui/register-form/index.js +10 -2
- package/dist/lib/components/ui/register-form/register-container.svelte +27 -0
- package/dist/lib/components/ui/register-form/register-container.svelte.d.ts +8 -0
- package/dist/lib/components/ui/register-form/register-form.svelte +67 -166
- package/dist/lib/components/ui/register-form/register-form.svelte.d.ts +10 -5
- package/dist/lib/components/ui/register-form/register-header.svelte +34 -0
- package/dist/lib/components/ui/register-form/register-header.svelte.d.ts +13 -0
- package/dist/lib/components/ui/register-form/register-name-input.svelte +21 -0
- package/dist/lib/components/ui/register-form/register-name-input.svelte.d.ts +26 -0
- package/dist/lib/components/ui/register-form/register-password-input.svelte +21 -0
- package/dist/lib/components/ui/register-form/register-password-input.svelte.d.ts +26 -0
- package/dist/lib/components/ui/register-form/register-provider.svelte +13 -0
- package/dist/lib/components/ui/register-form/register-provider.svelte.d.ts +25 -0
- package/dist/lib/components/ui/register-form/register-submit.svelte +17 -0
- package/dist/lib/components/ui/register-form/register-submit.svelte.d.ts +7 -0
- package/dist/lib/components/ui/register-form/register-user-input.svelte +21 -0
- package/dist/lib/components/ui/register-form/register-user-input.svelte.d.ts +26 -0
- package/dist/lib/components/ui/register-form/register.schema.d.ts +8 -0
- package/dist/lib/components/ui/register-form/register.schema.js +7 -0
- package/dist/lib/components/ui/reset-password/index.d.ts +8 -2
- package/dist/lib/components/ui/reset-password/index.js +8 -2
- package/dist/lib/components/ui/reset-password/reset-password-container.svelte +27 -0
- package/dist/lib/components/ui/reset-password/reset-password-container.svelte.d.ts +8 -0
- package/dist/lib/components/ui/reset-password/reset-password-form.svelte +91 -0
- package/dist/lib/components/ui/reset-password/reset-password-form.svelte.d.ts +20 -0
- package/dist/lib/components/ui/reset-password/reset-password-header.svelte +34 -0
- package/dist/lib/components/ui/reset-password/reset-password-header.svelte.d.ts +13 -0
- package/dist/lib/components/ui/reset-password/reset-password-password-input.svelte +21 -0
- package/dist/lib/components/ui/reset-password/reset-password-password-input.svelte.d.ts +26 -0
- package/dist/lib/components/ui/reset-password/reset-password-provider.svelte +13 -0
- package/dist/lib/components/ui/reset-password/reset-password-provider.svelte.d.ts +25 -0
- package/dist/lib/components/ui/reset-password/reset-password-submit.svelte +17 -0
- package/dist/lib/components/ui/reset-password/reset-password-submit.svelte.d.ts +7 -0
- package/dist/lib/components/ui/reset-password/reset-password.schema.d.ts +6 -0
- package/dist/lib/components/ui/reset-password/reset-password.schema.js +9 -0
- package/dist/lib/index.d.ts +2 -3
- package/dist/lib/index.js +3 -3
- package/dist/lib/utils.d.ts +10 -0
- package/package.json +39 -30
- package/src/app.css +174 -0
- package/src/app.html +0 -1
- package/src/index.ts +1 -1
- package/src/lib/components/types.ts +24 -0
- package/src/lib/components/ui/auth-layout/auth-layout-content-top.svelte +15 -0
- package/src/lib/components/ui/auth-layout/auth-layout-content.svelte +15 -0
- package/src/lib/components/ui/auth-layout/auth-layout-feature-info.svelte +45 -0
- package/src/lib/components/ui/auth-layout/auth-layout-feature.svelte +24 -0
- package/src/lib/components/ui/auth-layout/auth-layout-logo.svelte +99 -0
- package/src/lib/components/ui/auth-layout/auth-layout-main.svelte +17 -0
- package/src/lib/components/ui/auth-layout/auth-layout.svelte +22 -88
- package/src/lib/components/ui/auth-layout/index.ts +20 -2
- package/src/lib/components/ui/forgot-password/forgot-password-container.svelte +27 -0
- package/src/lib/components/ui/forgot-password/forgot-password-form.svelte +70 -77
- package/src/lib/components/ui/forgot-password/forgot-password-header.svelte +34 -0
- package/src/lib/components/ui/forgot-password/forgot-password-login.svelte +19 -0
- package/src/lib/components/ui/forgot-password/forgot-password-provider.svelte +13 -0
- package/src/lib/components/ui/forgot-password/forgot-password-submit.svelte +17 -0
- package/src/lib/components/ui/forgot-password/forgot-password-user-input.svelte +21 -0
- package/src/lib/components/ui/forgot-password/forgot-password.schema.ts +7 -0
- package/src/lib/components/ui/forgot-password/index.ts +19 -2
- package/src/lib/components/ui/index.ts +6 -5
- package/src/lib/components/ui/login-form/index.ts +26 -2
- package/src/lib/components/ui/login-form/login-container.svelte +27 -0
- package/src/lib/components/ui/login-form/login-context.ts +16 -0
- package/src/lib/components/ui/login-form/login-forgot-password.svelte +19 -0
- package/src/lib/components/ui/login-form/login-form.svelte +68 -107
- package/src/lib/components/ui/login-form/login-header.svelte +34 -0
- package/src/lib/components/ui/login-form/login-password-input.svelte +21 -0
- package/src/lib/components/ui/login-form/login-provider.svelte +13 -0
- package/src/lib/components/ui/login-form/login-submit.svelte +17 -0
- package/src/lib/components/ui/login-form/login-user-input.svelte +21 -0
- package/src/lib/components/ui/login-form/login.schema.ts +8 -0
- package/src/lib/components/ui/register-form/index.ts +21 -2
- package/src/lib/components/ui/register-form/register-container.svelte +27 -0
- package/src/lib/components/ui/register-form/register-form.svelte +67 -166
- package/src/lib/components/ui/register-form/register-header.svelte +34 -0
- package/src/lib/components/ui/register-form/register-name-input.svelte +21 -0
- package/src/lib/components/ui/register-form/register-password-input.svelte +21 -0
- package/src/lib/components/ui/register-form/register-provider.svelte +13 -0
- package/src/lib/components/ui/register-form/register-submit.svelte +17 -0
- package/src/lib/components/ui/register-form/register-user-input.svelte +21 -0
- package/src/lib/components/ui/register-form/register.schema.ts +10 -0
- package/src/lib/components/ui/reset-password/index.ts +17 -2
- package/src/lib/components/ui/reset-password/reset-password-container.svelte +27 -0
- package/src/lib/components/ui/reset-password/reset-password-form.svelte +91 -0
- package/src/lib/components/ui/reset-password/reset-password-header.svelte +34 -0
- package/src/lib/components/ui/reset-password/reset-password-password-input.svelte +21 -0
- package/src/lib/components/ui/reset-password/reset-password-provider.svelte +13 -0
- package/src/lib/components/ui/reset-password/reset-password-submit.svelte +17 -0
- package/src/lib/components/ui/reset-password/reset-password.schema.ts +12 -0
- package/src/lib/index.ts +3 -3
- package/src/lib/utils.ts +8 -1
- package/dist/lib/components/ui/reset-password/reset-form.svelte +0 -116
- package/dist/lib/components/ui/reset-password/reset-form.svelte.d.ts +0 -16
- package/src/lib/components/ui/reset-password/reset-form.svelte +0 -116
|
@@ -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 LoginForgotPassword: import("svelte").Component<LoginForgotPasswordProps, {}, "">;
|
|
8
|
+
type LoginForgotPassword = ReturnType<typeof LoginForgotPassword>;
|
|
9
|
+
export default LoginForgotPassword;
|
|
@@ -1,134 +1,95 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import type { Snippet } from
|
|
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 LoginContainer from "./login-container.svelte";
|
|
13
|
+
import LoginForgotPassword from "./login-forgot-password.svelte";
|
|
14
|
+
import LoginHeader from "./login-header.svelte";
|
|
15
|
+
import LoginPasswordInput from "./login-password-input.svelte";
|
|
16
|
+
import LoginProvider from "./login-provider.svelte";
|
|
17
|
+
import LoginSubmit from "./login-submit.svelte";
|
|
18
|
+
import LoginUserInput from "./login-user-input.svelte";
|
|
19
|
+
import { loginSchema, type LoginSchema } from "./login.schema.js";
|
|
20
|
+
import { ServerError } from "@tanglemedia/svelte-starter-form-shadcn";
|
|
21
|
+
// import { Field } from "@tanglemedia/svelte-starter-form-shadcn";
|
|
4
22
|
|
|
5
23
|
interface Props {
|
|
6
|
-
superform
|
|
24
|
+
superform?: SuperForm<Infer<LoginSchema>> | null;
|
|
7
25
|
card?: boolean;
|
|
8
|
-
cardClass?: string;
|
|
26
|
+
// cardClass?: string;
|
|
9
27
|
title?: string;
|
|
10
28
|
description?: string;
|
|
11
|
-
forgotPassword?: boolean;
|
|
29
|
+
// forgotPassword?: boolean;
|
|
12
30
|
forgotPasswordLink?: string;
|
|
13
31
|
register?: boolean;
|
|
14
32
|
registerLink?: string;
|
|
15
|
-
|
|
16
|
-
|
|
33
|
+
lead?: Snippet;
|
|
34
|
+
tail?: Snippet;
|
|
17
35
|
children?: Snippet;
|
|
36
|
+
form?: SuperValidated<Infer<LoginSchema>>;
|
|
37
|
+
action?: string;
|
|
38
|
+
|
|
39
|
+
debug?: boolean;
|
|
18
40
|
}
|
|
19
41
|
|
|
20
|
-
let {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
42
|
+
let {
|
|
43
|
+
debug = false,
|
|
44
|
+
form,
|
|
45
|
+
superform: superforms = $bindable(null),
|
|
46
|
+
card = true,
|
|
47
|
+
title = "Login",
|
|
48
|
+
description = "Enter your credentails below",
|
|
49
|
+
// forgotPassword = true,
|
|
27
50
|
forgotPasswordLink = "/forgot-password",
|
|
28
51
|
register = true,
|
|
29
52
|
registerLink = "/register",
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
53
|
+
lead,
|
|
54
|
+
tail,
|
|
55
|
+
action = "?/login",
|
|
33
56
|
}: Props = $props();
|
|
34
57
|
|
|
35
|
-
|
|
58
|
+
// https://github.com/ciscoheat/sveltekit-superforms/issues/630
|
|
59
|
+
superforms = superforms || superForm(form || defaults(zod4(loginSchema)));
|
|
60
|
+
|
|
61
|
+
const { errors, message } = superforms;
|
|
36
62
|
</script>
|
|
37
63
|
|
|
38
|
-
{
|
|
39
|
-
<
|
|
40
|
-
<
|
|
41
|
-
<Card.Title class="text-2xl">{title}</Card.Title>
|
|
42
|
-
<Card.Description>{description}</Card.Description>
|
|
43
|
-
</Card.Header>
|
|
64
|
+
<LoginProvider {superforms} {action}>
|
|
65
|
+
<LoginContainer {card}>
|
|
66
|
+
<LoginHeader text={title} desc={description} />
|
|
44
67
|
<Card.Content>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
{
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
<Input {...props} bind:value={$formData.email} type="email" required />
|
|
55
|
-
{/snippet}
|
|
56
|
-
</Form.Control>
|
|
57
|
-
<Form.FieldErrors />
|
|
58
|
-
</Form.Field>
|
|
59
|
-
<Form.Field form={superform} name="password">
|
|
60
|
-
<Form.Control>
|
|
61
|
-
{#snippet children({ props })}
|
|
62
|
-
<div class="flex items-center">
|
|
63
|
-
<Form.Label>Password</Form.Label>
|
|
64
|
-
{#if forgotPassword}
|
|
65
|
-
<a href={forgotPasswordLink} class="ml-auto inline-block text-sm underline">
|
|
66
|
-
Forgot your password?
|
|
67
|
-
</a>
|
|
68
|
-
{/if}
|
|
69
|
-
</div>
|
|
70
|
-
<Input {...props} bind:value={$formData.password} type="password" required />
|
|
71
|
-
{/snippet}
|
|
72
|
-
</Form.Control>
|
|
73
|
-
<Form.FieldErrors />
|
|
74
|
-
</Form.Field>
|
|
75
|
-
{/if}
|
|
76
|
-
<Form.Button type="submit" class="w-full">Login</Form.Button>
|
|
77
|
-
{@render formTail?.()}
|
|
78
|
-
</form>
|
|
68
|
+
{@render lead?.()}
|
|
69
|
+
<ServerError class="mb-4" />
|
|
70
|
+
<LoginUserInput autocomplete="username" name={"username"} />
|
|
71
|
+
<LoginPasswordInput name={"password"} label={"Password"}>
|
|
72
|
+
{#snippet asideLabel()}
|
|
73
|
+
<LoginForgotPassword href={forgotPasswordLink} />
|
|
74
|
+
{/snippet}
|
|
75
|
+
</LoginPasswordInput>
|
|
76
|
+
<LoginSubmit />
|
|
79
77
|
{#if register}
|
|
80
78
|
<div class="mt-4 text-center text-sm">
|
|
81
79
|
Don't have an account?
|
|
82
80
|
<a href={registerLink} class="underline"> Sign up </a>
|
|
83
81
|
</div>
|
|
84
82
|
{/if}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
{
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
{@render formHead?.()}
|
|
95
|
-
{#if children}
|
|
96
|
-
{@render children?.()}
|
|
97
|
-
{:else}
|
|
98
|
-
<Form.Field form={superform} name="email">
|
|
99
|
-
<Form.Control>
|
|
100
|
-
{#snippet children({ props })}
|
|
101
|
-
<Form.Label>Email</Form.Label>
|
|
102
|
-
<Input {...props} bind:value={$formData.email} type="email" required />
|
|
103
|
-
{/snippet}
|
|
104
|
-
</Form.Control>
|
|
105
|
-
<Form.FieldErrors />
|
|
106
|
-
</Form.Field>
|
|
107
|
-
<Form.Field form={superform} name="password">
|
|
108
|
-
<Form.Control>
|
|
109
|
-
{#snippet children({ props })}
|
|
110
|
-
<div class="flex items-center">
|
|
111
|
-
<Form.Label>Password</Form.Label>
|
|
112
|
-
{#if forgotPassword}
|
|
113
|
-
<a href={forgotPasswordLink} class="ml-auto inline-block text-sm underline">
|
|
114
|
-
Forgot your password?
|
|
115
|
-
</a>
|
|
116
|
-
{/if}
|
|
117
|
-
</div>
|
|
118
|
-
<Input {...props} bind:value={$formData.password} type="password" required />
|
|
119
|
-
{/snippet}
|
|
120
|
-
</Form.Control>
|
|
121
|
-
<Form.FieldErrors />
|
|
122
|
-
</Form.Field>
|
|
83
|
+
{@render tail?.()}
|
|
84
|
+
|
|
85
|
+
{#if debug}
|
|
86
|
+
<div class="mb-6">
|
|
87
|
+
<h4>Errors</h4>
|
|
88
|
+
<SuperDebug data={errors} />
|
|
89
|
+
</div>
|
|
90
|
+
<h4>Message</h4>
|
|
91
|
+
<SuperDebug data={$message} />
|
|
123
92
|
{/if}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
{#if register}
|
|
128
|
-
<div class="mt-4 text-center text-sm">
|
|
129
|
-
Don't have an account?
|
|
130
|
-
<a href={registerLink} class="underline"> Sign up </a>
|
|
131
|
-
</div>
|
|
132
|
-
{/if}
|
|
133
|
-
</div>
|
|
134
|
-
{/if}
|
|
93
|
+
</Card.Content>
|
|
94
|
+
</LoginContainer>
|
|
95
|
+
</LoginProvider>
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import type { Snippet } from
|
|
1
|
+
import type { Snippet } from "svelte";
|
|
2
|
+
import { type Infer, type SuperForm, type SuperValidated } from "sveltekit-superforms";
|
|
3
|
+
import { type LoginSchema } from "./login.schema.js";
|
|
2
4
|
interface Props {
|
|
3
|
-
superform
|
|
5
|
+
superform?: SuperForm<Infer<LoginSchema>> | null;
|
|
4
6
|
card?: boolean;
|
|
5
|
-
cardClass?: string;
|
|
6
7
|
title?: string;
|
|
7
8
|
description?: string;
|
|
8
|
-
forgotPassword?: boolean;
|
|
9
9
|
forgotPasswordLink?: string;
|
|
10
10
|
register?: boolean;
|
|
11
11
|
registerLink?: string;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
lead?: Snippet;
|
|
13
|
+
tail?: Snippet;
|
|
14
14
|
children?: Snippet;
|
|
15
|
+
form?: SuperValidated<Infer<LoginSchema>>;
|
|
16
|
+
action?: string;
|
|
17
|
+
debug?: boolean;
|
|
15
18
|
}
|
|
16
|
-
declare const LoginForm: import("svelte").Component<Props, {}, "">;
|
|
19
|
+
declare const LoginForm: import("svelte").Component<Props, {}, "superform">;
|
|
17
20
|
type LoginForm = ReturnType<typeof LoginForm>;
|
|
18
21
|
export default LoginForm;
|
|
@@ -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 LoginHeader: import("svelte").Component<LoginHeaderProps, {}, "">;
|
|
12
|
+
type LoginHeader = ReturnType<typeof LoginHeader>;
|
|
13
|
+
export default LoginHeader;
|
|
@@ -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 PasswordFieldProps,
|
|
15
|
+
} from '@tanglemedia/svelte-starter-form-shadcn';
|
|
16
|
+
|
|
17
|
+
type LoginPasswordInputProps = PasswordFieldProps<T, U>;
|
|
18
|
+
const { name = 'password' as U, ...rest }: LoginPasswordInputProps = $props();
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<Field.Password {name} {...rest}></Field.Password>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type FormPathLeaves as _FormPathLeaves } from 'sveltekit-superforms';
|
|
2
|
+
import { type PasswordFieldProps } from '@tanglemedia/svelte-starter-form-shadcn';
|
|
3
|
+
declare function $$render<T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>>(): {
|
|
4
|
+
props: PasswordFieldProps<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 LoginPasswordInput: $$IsomorphicComponent;
|
|
25
|
+
type LoginPasswordInput<T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>> = InstanceType<typeof LoginPasswordInput<T, U>>;
|
|
26
|
+
export default LoginPasswordInput;
|
|
@@ -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 LoginProvider: $$IsomorphicComponent;
|
|
24
|
+
type LoginProvider<T extends Record<string, unknown>> = InstanceType<typeof LoginProvider<T>>;
|
|
25
|
+
export default LoginProvider;
|
|
@@ -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
|
+
Login
|
|
16
|
+
{/if}
|
|
17
|
+
</Form.Submit>
|
|
@@ -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 = 'username' as U, label, ...rest }: LoginUserInputProps = $props();
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<Field.Input type={'email'} {name} label={label || 'Username'} {...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 LoginUserInput: $$IsomorphicComponent;
|
|
25
|
+
type LoginUserInput<T extends Record<string, unknown>, U extends _FormPathLeaves<T, any>> = InstanceType<typeof LoginUserInput<T, U>>;
|
|
26
|
+
export default LoginUserInput;
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import Form from './register-form.svelte';
|
|
2
|
+
import Provider from './register-provider.svelte';
|
|
3
|
+
import Header from './register-header.svelte';
|
|
4
|
+
import { registerSchema as schema, type RegisterSchema } from './register.schema.ts';
|
|
5
|
+
import Container from './register-container.svelte';
|
|
6
|
+
import Submit from './register-submit.svelte';
|
|
7
|
+
import UserInput from './register-user-input.svelte';
|
|
8
|
+
import PasswordInput from './register-password-input.svelte';
|
|
9
|
+
import NameInput from './register-name-input.svelte';
|
|
10
|
+
export { Form, Provider, Header, Container, schema, Submit, UserInput, PasswordInput, NameInput, type RegisterSchema, };
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import Form from './register-form.svelte';
|
|
2
|
+
import Provider from './register-provider.svelte';
|
|
3
|
+
import Header from './register-header.svelte';
|
|
4
|
+
import { registerSchema as schema } from "./register.schema.js";
|
|
5
|
+
import Container from './register-container.svelte';
|
|
6
|
+
import Submit from './register-submit.svelte';
|
|
7
|
+
import UserInput from './register-user-input.svelte';
|
|
8
|
+
import PasswordInput from './register-password-input.svelte';
|
|
9
|
+
import NameInput from './register-name-input.svelte';
|
|
10
|
+
export { Form, Provider, Header, Container, schema, Submit, UserInput, PasswordInput, NameInput, };
|
|
@@ -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 RegisterContainer: import("svelte").Component<LoginContainerProps, {}, "">;
|
|
7
|
+
type RegisterContainer = ReturnType<typeof RegisterContainer>;
|
|
8
|
+
export default RegisterContainer;
|