@tollwyn/baukasten 0.0.2 → 1.2.2

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 (213) hide show
  1. package/README.md +254 -1
  2. package/dist/bin/check.d.ts +2 -0
  3. package/dist/bin/check.js +38 -0
  4. package/dist/bin/migrate.d.ts +2 -0
  5. package/dist/bin/migrate.js +111 -0
  6. package/dist/bin/stubs.d.ts +2 -0
  7. package/dist/bin/stubs.js +38 -0
  8. package/dist/bin/test-accounts.d.ts +2 -0
  9. package/dist/bin/test-accounts.js +62 -0
  10. package/dist/check.d.ts +20 -0
  11. package/dist/check.js +285 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.js +9 -0
  14. package/dist/product.d.ts +161 -0
  15. package/dist/product.js +152 -0
  16. package/dist/server/accounts.d.ts +128 -0
  17. package/dist/server/accounts.js +282 -0
  18. package/dist/server/adapter/db.d.ts +5 -0
  19. package/dist/server/adapter/db.js +63 -0
  20. package/dist/server/adapter/log.d.ts +3 -0
  21. package/dist/server/adapter/log.js +12 -0
  22. package/dist/server/adapter/mailer.d.ts +4 -0
  23. package/dist/server/adapter/mailer.js +56 -0
  24. package/dist/server/adapter/migrate.d.ts +21 -0
  25. package/dist/server/adapter/migrate.js +113 -0
  26. package/dist/server/adapter/secrets.d.ts +2 -0
  27. package/dist/server/adapter/secrets.js +40 -0
  28. package/dist/server/adapter/stripe.d.ts +11 -0
  29. package/dist/server/adapter/stripe.js +333 -0
  30. package/dist/server/api.d.ts +25 -0
  31. package/dist/server/api.js +98 -0
  32. package/dist/server/baukasten-migrations.d.ts +4 -0
  33. package/dist/server/baukasten-migrations.js +126 -0
  34. package/dist/server/billing.d.ts +94 -0
  35. package/dist/server/billing.js +349 -0
  36. package/dist/server/catalog.d.ts +39 -0
  37. package/dist/server/catalog.js +193 -0
  38. package/dist/server/config.d.ts +108 -0
  39. package/dist/server/config.js +244 -0
  40. package/dist/server/endpoints.d.ts +44 -0
  41. package/dist/server/endpoints.js +159 -0
  42. package/dist/server/fields.d.ts +7 -0
  43. package/dist/server/fields.js +18 -0
  44. package/dist/server/headers.d.ts +1 -0
  45. package/dist/server/headers.js +9 -0
  46. package/dist/server/health.d.ts +34 -0
  47. package/dist/server/health.js +116 -0
  48. package/dist/server/hook.d.ts +92 -0
  49. package/dist/server/hook.js +293 -0
  50. package/dist/server/index.d.ts +18 -0
  51. package/dist/server/index.js +11 -0
  52. package/dist/server/legal/de.d.ts +2 -0
  53. package/dist/server/legal/de.js +251 -0
  54. package/dist/server/legal/document.d.ts +37 -0
  55. package/dist/server/legal/document.js +30 -0
  56. package/dist/server/legal/en.d.ts +2 -0
  57. package/dist/server/legal/en.js +251 -0
  58. package/dist/server/legal/fleet.d.ts +114 -0
  59. package/dist/server/legal/fleet.js +89 -0
  60. package/dist/server/legal/index.d.ts +3 -0
  61. package/dist/server/legal/index.js +11 -0
  62. package/dist/server/limits.d.ts +58 -0
  63. package/dist/server/limits.js +76 -0
  64. package/dist/server/log.d.ts +26 -0
  65. package/dist/server/log.js +61 -0
  66. package/dist/server/machine.d.ts +4 -0
  67. package/dist/server/machine.js +57 -0
  68. package/dist/server/mail.d.ts +20 -0
  69. package/dist/server/mail.js +29 -0
  70. package/dist/server/messages.d.ts +105 -0
  71. package/dist/server/messages.js +232 -0
  72. package/dist/server/migrations.d.ts +28 -0
  73. package/dist/server/migrations.js +59 -0
  74. package/dist/server/openapi.d.ts +24 -0
  75. package/dist/server/openapi.js +173 -0
  76. package/dist/server/pages.d.ts +158 -0
  77. package/dist/server/pages.js +491 -0
  78. package/dist/server/ports.d.ts +273 -0
  79. package/dist/server/ports.js +1 -0
  80. package/dist/server/runs.d.ts +30 -0
  81. package/dist/server/runs.js +55 -0
  82. package/dist/server/sales.d.ts +38 -0
  83. package/dist/server/sales.js +132 -0
  84. package/dist/server/services.d.ts +57 -0
  85. package/dist/server/services.js +44 -0
  86. package/dist/server/start.d.ts +14 -0
  87. package/dist/server/start.js +65 -0
  88. package/dist/server/stripe.d.ts +33 -0
  89. package/dist/server/stripe.js +29 -0
  90. package/dist/server/terms.d.ts +7 -0
  91. package/dist/server/terms.js +9 -0
  92. package/dist/server/test-accounts.d.ts +28 -0
  93. package/dist/server/test-accounts.js +62 -0
  94. package/dist/server/via.d.ts +9 -0
  95. package/dist/server/via.js +15 -0
  96. package/dist/server/web.d.ts +48 -0
  97. package/dist/server/web.js +105 -0
  98. package/dist/shopify/adapter/shopify.d.ts +8 -0
  99. package/dist/shopify/adapter/shopify.js +232 -0
  100. package/dist/shopify/admin.d.ts +33 -0
  101. package/dist/shopify/admin.js +47 -0
  102. package/dist/shopify/app.d.ts +60 -0
  103. package/dist/shopify/app.js +67 -0
  104. package/dist/shopify/config.d.ts +53 -0
  105. package/dist/shopify/config.js +133 -0
  106. package/dist/shopify/constants.d.ts +27 -0
  107. package/dist/shopify/constants.js +27 -0
  108. package/dist/shopify/headers.d.ts +1 -0
  109. package/dist/shopify/headers.js +8 -0
  110. package/dist/shopify/hmac.d.ts +1 -0
  111. package/dist/shopify/hmac.js +9 -0
  112. package/dist/shopify/hook.d.ts +60 -0
  113. package/dist/shopify/hook.js +508 -0
  114. package/dist/shopify/id-token.d.ts +12 -0
  115. package/dist/shopify/id-token.js +66 -0
  116. package/dist/shopify/index.d.ts +19 -0
  117. package/dist/shopify/index.js +15 -0
  118. package/dist/shopify/legal/de.d.ts +3 -0
  119. package/dist/shopify/legal/de.js +123 -0
  120. package/dist/shopify/legal/en.d.ts +3 -0
  121. package/dist/shopify/legal/en.js +121 -0
  122. package/dist/shopify/legal/index.d.ts +19 -0
  123. package/dist/shopify/legal/index.js +8 -0
  124. package/dist/shopify/legal/shopify.d.ts +16 -0
  125. package/dist/shopify/legal/shopify.js +21 -0
  126. package/dist/shopify/migrations.d.ts +4 -0
  127. package/dist/shopify/migrations.js +67 -0
  128. package/dist/shopify/pages.d.ts +45 -0
  129. package/dist/shopify/pages.js +146 -0
  130. package/dist/shopify/ports.d.ts +77 -0
  131. package/dist/shopify/ports.js +1 -0
  132. package/dist/shopify/sales.d.ts +4 -0
  133. package/dist/shopify/sales.js +27 -0
  134. package/dist/shopify/scopes.d.ts +2 -0
  135. package/dist/shopify/scopes.js +13 -0
  136. package/dist/shopify/seal.d.ts +12 -0
  137. package/dist/shopify/seal.js +60 -0
  138. package/dist/shopify/shop.d.ts +4 -0
  139. package/dist/shopify/shop.js +15 -0
  140. package/dist/shopify/shops.d.ts +76 -0
  141. package/dist/shopify/shops.js +256 -0
  142. package/dist/shopify/sveltekit.d.ts +19 -0
  143. package/dist/shopify/sveltekit.js +18 -0
  144. package/dist/shopify/texts.d.ts +28 -0
  145. package/dist/shopify/texts.js +49 -0
  146. package/dist/shopify/toml.d.ts +22 -0
  147. package/dist/shopify/toml.js +125 -0
  148. package/dist/shopify/webhooks.d.ts +65 -0
  149. package/dist/shopify/webhooks.js +220 -0
  150. package/dist/stubs.d.ts +15 -0
  151. package/dist/stubs.js +287 -0
  152. package/dist/sveltekit.d.ts +20 -0
  153. package/dist/sveltekit.js +18 -0
  154. package/dist/testing/app.d.ts +36 -0
  155. package/dist/testing/app.js +155 -0
  156. package/dist/testing/browser.d.ts +21 -0
  157. package/dist/testing/browser.js +21 -0
  158. package/dist/testing/connection.d.ts +7 -0
  159. package/dist/testing/connection.js +303 -0
  160. package/dist/testing/database.d.ts +21 -0
  161. package/dist/testing/database.js +54 -0
  162. package/dist/testing/env-example.d.ts +4 -0
  163. package/dist/testing/env-example.js +33 -0
  164. package/dist/testing/index.d.ts +9 -0
  165. package/dist/testing/index.js +9 -0
  166. package/dist/testing/shopify-connection.d.ts +8 -0
  167. package/dist/testing/shopify-connection.js +313 -0
  168. package/dist/testing/shopify.d.ts +71 -0
  169. package/dist/testing/shopify.js +278 -0
  170. package/dist/testing/smtp.d.ts +38 -0
  171. package/dist/testing/smtp.js +165 -0
  172. package/dist/testing/stripe.d.ts +128 -0
  173. package/dist/testing/stripe.js +511 -0
  174. package/dist/texts.d.ts +139 -0
  175. package/dist/texts.js +265 -0
  176. package/dist/ui/AccountPage.svelte +143 -0
  177. package/dist/ui/AccountPage.svelte.d.ts +10 -0
  178. package/dist/ui/ConfirmEmailPage.svelte +21 -0
  179. package/dist/ui/ConfirmEmailPage.svelte.d.ts +10 -0
  180. package/dist/ui/ErrorPage.svelte +14 -0
  181. package/dist/ui/ErrorPage.svelte.d.ts +3 -0
  182. package/dist/ui/Field.svelte +12 -0
  183. package/dist/ui/Field.svelte.d.ts +10 -0
  184. package/dist/ui/ForgotPasswordPage.svelte +32 -0
  185. package/dist/ui/ForgotPasswordPage.svelte.d.ts +7 -0
  186. package/dist/ui/Form.svelte +30 -0
  187. package/dist/ui/Form.svelte.d.ts +11 -0
  188. package/dist/ui/Frame.svelte +84 -0
  189. package/dist/ui/Frame.svelte.d.ts +12 -0
  190. package/dist/ui/LegalPage.svelte +38 -0
  191. package/dist/ui/LegalPage.svelte.d.ts +9 -0
  192. package/dist/ui/Linked.svelte +5 -0
  193. package/dist/ui/Linked.svelte.d.ts +8 -0
  194. package/dist/ui/LoginPage.svelte +41 -0
  195. package/dist/ui/LoginPage.svelte.d.ts +10 -0
  196. package/dist/ui/LogoutPage.svelte +19 -0
  197. package/dist/ui/LogoutPage.svelte.d.ts +9 -0
  198. package/dist/ui/ResetPasswordPage.svelte +30 -0
  199. package/dist/ui/ResetPasswordPage.svelte.d.ts +10 -0
  200. package/dist/ui/SignupPage.svelte +52 -0
  201. package/dist/ui/SignupPage.svelte.d.ts +10 -0
  202. package/dist/ui/VerifyEmailPage.svelte +50 -0
  203. package/dist/ui/VerifyEmailPage.svelte.d.ts +10 -0
  204. package/dist/ui/base.css +287 -0
  205. package/dist/ui/data.d.ts +167 -0
  206. package/dist/ui/data.js +1 -0
  207. package/dist/ui/frame.d.ts +17 -0
  208. package/dist/ui/frame.js +27 -0
  209. package/dist/ui/index.d.ts +15 -0
  210. package/dist/ui/index.js +15 -0
  211. package/dist/variables.d.ts +20 -0
  212. package/dist/variables.js +62 -0
  213. package/package.json +88 -4
@@ -0,0 +1,12 @@
1
+ import './base.css';
2
+ import { type Snippet } from 'svelte';
3
+ import type { FrameData } from './data.js';
4
+ type $$ComponentProps = {
5
+ data: {
6
+ frame: FrameData;
7
+ };
8
+ children: Snippet;
9
+ };
10
+ declare const Frame: import("svelte").Component<$$ComponentProps, {}, "">;
11
+ type Frame = ReturnType<typeof Frame>;
12
+ export default Frame;
@@ -0,0 +1,38 @@
1
+ <script lang="ts">import { useFrame } from "./frame.js";
2
+ let { data } = $props();
3
+ const { name } = useFrame();
4
+ const legal = $derived(data.legal);
5
+ </script>
6
+
7
+ <!-- One line: whitespace between the pieces would show as a blank in the sentence. -->
8
+ <!-- prettier-ignore -->
9
+ {#snippet inline(parts: LegalInline[])}{#each parts as part, index (index)}{#if typeof part === 'string'}{part}{:else if part.kind === 'strong'}<strong>{part.text}</strong>{:else if part.kind === 'code'}<code>{part.text}</code>{:else}<a href={part.href}>{part.text}</a>{/if}{/each}{/snippet}
10
+
11
+ <svelte:head>
12
+ <title>{legal.title} – {name}</title>
13
+ </svelte:head>
14
+
15
+ <article class="bk-ui bk-legal">
16
+ <h1>{legal.title}</h1>
17
+ {#each legal.blocks as block, index (index)}
18
+ {#if block.kind === 'heading'}
19
+ <h2>{block.text}</h2>
20
+ {:else if block.kind === 'paragraph'}
21
+ <p>{@render inline(block.parts)}</p>
22
+ {:else if block.kind === 'note'}
23
+ <p class="bk-muted">{@render inline(block.parts)}</p>
24
+ {:else if block.kind === 'list'}
25
+ <ul>
26
+ {#each block.items as item, at (at)}
27
+ <li>{@render inline(item)}</li>
28
+ {/each}
29
+ </ul>
30
+ {:else}
31
+ <ol type="a">
32
+ {#each block.items as item, at (at)}
33
+ <li>{@render inline(item)}</li>
34
+ {/each}
35
+ </ol>
36
+ {/if}
37
+ {/each}
38
+ </article>
@@ -0,0 +1,9 @@
1
+ import type { LegalData } from './data.js';
2
+ type $$ComponentProps = {
3
+ data: {
4
+ legal: LegalData;
5
+ };
6
+ };
7
+ declare const LegalPage: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type LegalPage = ReturnType<typeof LegalPage>;
9
+ export default LegalPage;
@@ -0,0 +1,5 @@
1
+ <script lang="ts">let { text, href } = $props();
2
+ export {};
3
+ </script>
4
+
5
+ {text.before}<a {href}>{text.link}</a>{text.after}
@@ -0,0 +1,8 @@
1
+ import type { Linked } from '../texts.js';
2
+ type $$ComponentProps = {
3
+ text: Linked;
4
+ href: string;
5
+ };
6
+ declare const Linked: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type Linked = ReturnType<typeof Linked>;
8
+ export default Linked;
@@ -0,0 +1,41 @@
1
+ <script lang="ts">import Field from "./Field.svelte";
2
+ import Form from "./Form.svelte";
3
+ import { useFrame } from "./frame.js";
4
+ import Linked from "./Linked.svelte";
5
+ let { data, form } = $props();
6
+ const { t, name, link } = useFrame();
7
+ </script>
8
+
9
+ <svelte:head>
10
+ <title>{t.login.title} – {name}</title>
11
+ </svelte:head>
12
+
13
+ <div class="bk-ui bk-narrow">
14
+ <h1>{t.login.title}</h1>
15
+ {#if data.login.notice === 'verified'}
16
+ <p class="bk-success" role="status">{t.login.verified}</p>
17
+ {:else if data.login.notice === 'emailChanged'}
18
+ <p class="bk-success" role="status">{t.login.emailChanged}</p>
19
+ {/if}
20
+ <Form button={t.login.button} error={form?.error}>
21
+ <Field
22
+ label={t.login.email}
23
+ name="email"
24
+ type="email"
25
+ autocomplete="email"
26
+ required
27
+ value={form?.email ?? ''}
28
+ />
29
+ <Field
30
+ label={t.login.password}
31
+ name="password"
32
+ type="password"
33
+ autocomplete="current-password"
34
+ required
35
+ />
36
+ </Form>
37
+ <p class="bk-muted">
38
+ <a href={link('/forgot-password')}>{t.login.forgot}</a> ·
39
+ <Linked text={t.login.noAccount} href={link('/signup')} />
40
+ </p>
41
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { LoginData, LoginForm } from './data.js';
2
+ type $$ComponentProps = {
3
+ data: {
4
+ login: LoginData;
5
+ };
6
+ form?: LoginForm | null;
7
+ };
8
+ declare const LoginPage: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type LoginPage = ReturnType<typeof LoginPage>;
10
+ export default LoginPage;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">import Form from "./Form.svelte";
2
+ import { useFrame } from "./frame.js";
3
+ let { data } = $props();
4
+ const { t, name } = useFrame();
5
+ </script>
6
+
7
+ <svelte:head>
8
+ <title>{t.logout.title} – {name}</title>
9
+ </svelte:head>
10
+
11
+ <div class="bk-ui bk-narrow">
12
+ {#if data.logout.loggedIn}
13
+ <h1>{t.logout.title}</h1>
14
+ <Form button={t.logout.button} />
15
+ {:else}
16
+ <h1>{data.logout.deleted ? t.logout.deleted : t.logout.done}</h1>
17
+ <p><a href="/login">{t.logout.again}</a></p>
18
+ {/if}
19
+ </div>
@@ -0,0 +1,9 @@
1
+ import type { LogoutData } from './data.js';
2
+ type $$ComponentProps = {
3
+ data: {
4
+ logout: LogoutData;
5
+ };
6
+ };
7
+ declare const LogoutPage: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type LogoutPage = ReturnType<typeof LogoutPage>;
9
+ export default LogoutPage;
@@ -0,0 +1,30 @@
1
+ <script lang="ts">import Field from "./Field.svelte";
2
+ import Form from "./Form.svelte";
3
+ import { useFrame } from "./frame.js";
4
+ import Linked from "./Linked.svelte";
5
+ let { data, form } = $props();
6
+ const { t, name } = useFrame();
7
+ </script>
8
+
9
+ <svelte:head>
10
+ <title>{t.reset.title} – {name}</title>
11
+ </svelte:head>
12
+
13
+ <div class="bk-ui bk-narrow">
14
+ <h1>{t.reset.title}</h1>
15
+ {#if data.reset.valid}
16
+ <Form button={t.reset.button} error={form?.error}>
17
+ <input type="hidden" name="token" value={data.reset.token} />
18
+ <Field
19
+ label={t.reset.password}
20
+ name="password"
21
+ type="password"
22
+ autocomplete="new-password"
23
+ minlength={10}
24
+ required
25
+ />
26
+ </Form>
27
+ {:else}
28
+ <p class="bk-error" role="alert"><Linked text={t.reset.invalid} href="/forgot-password" /></p>
29
+ {/if}
30
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { ResetData, ResetForm } from './data.js';
2
+ type $$ComponentProps = {
3
+ data: {
4
+ reset: ResetData;
5
+ };
6
+ form?: ResetForm | null;
7
+ };
8
+ declare const ResetPasswordPage: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type ResetPasswordPage = ReturnType<typeof ResetPasswordPage>;
10
+ export default ResetPasswordPage;
@@ -0,0 +1,52 @@
1
+ <script lang="ts">import Field from "./Field.svelte";
2
+ import Form from "./Form.svelte";
3
+ import { useFrame } from "./frame.js";
4
+ import Linked from "./Linked.svelte";
5
+ let { data, form } = $props();
6
+ const { t, name, link } = useFrame();
7
+ </script>
8
+
9
+ <svelte:head>
10
+ <title>{data.signup.heading} – {name}</title>
11
+ </svelte:head>
12
+
13
+ <div class="bk-ui bk-narrow">
14
+ <h1>{data.signup.heading}</h1>
15
+ <p class="bk-lead">{data.signup.lead}</p>
16
+ <Form button={t.signup.button} error={form?.error}>
17
+ {#if data.signup.via !== null}
18
+ <input type="hidden" name="via" value={data.signup.via} />
19
+ {/if}
20
+ <Field
21
+ label={t.signup.email}
22
+ name="email"
23
+ type="email"
24
+ autocomplete="email"
25
+ required
26
+ value={form?.email ?? ''}
27
+ />
28
+ <Field
29
+ label={t.signup.password}
30
+ name="password"
31
+ type="password"
32
+ autocomplete="new-password"
33
+ minlength={10}
34
+ required
35
+ />
36
+ <label class="bk-check">
37
+ <input type="checkbox" name="terms" value="accepted" required />
38
+ <span><Linked text={t.signup.terms} href={link('/terms')} /></span>
39
+ </label>
40
+ <label class="bk-check">
41
+ <input type="checkbox" name="business" value="confirmed" required />
42
+ <span>{t.signup.business}</span>
43
+ </label>
44
+ </Form>
45
+ {#if form?.taken}
46
+ <p>
47
+ <a href={link('/login')}>{t.signup.takenLogIn}</a> ·
48
+ <a href={link('/forgot-password')}>{t.signup.takenReset}</a>
49
+ </p>
50
+ {/if}
51
+ <p class="bk-muted"><Linked text={t.signup.haveAccount} href={link('/login')} /></p>
52
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { SignupData, SignupForm } from './data.js';
2
+ type $$ComponentProps = {
3
+ data: {
4
+ signup: SignupData;
5
+ };
6
+ form?: SignupForm | null;
7
+ };
8
+ declare const SignupPage: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type SignupPage = ReturnType<typeof SignupPage>;
10
+ export default SignupPage;
@@ -0,0 +1,50 @@
1
+ <script lang="ts">import Field from "./Field.svelte";
2
+ import Form from "./Form.svelte";
3
+ import { useFrame } from "./frame.js";
4
+ import Linked from "./Linked.svelte";
5
+ let { data, form } = $props();
6
+ const { t, name } = useFrame();
7
+ const verify = $derived(data.verify);
8
+ </script>
9
+
10
+ <svelte:head>
11
+ <title>{t.verify.title} – {name}</title>
12
+ </svelte:head>
13
+
14
+ <div class="bk-ui bk-narrow">
15
+ <h1>{t.verify.title}</h1>
16
+ {#if verify.kind === 'link'}
17
+ {#if verify.valid}
18
+ <Form action="?/confirm" button={t.verify.button} error={form?.error}>
19
+ <input type="hidden" name="token" value={verify.token} />
20
+ {#if verify.needsPassword}
21
+ <p class="bk-muted">{t.verify.apiAccount}</p>
22
+ <Field
23
+ label={t.verify.password}
24
+ name="password"
25
+ type="password"
26
+ autocomplete="new-password"
27
+ minlength={10}
28
+ />
29
+ {/if}
30
+ </Form>
31
+ {:else}
32
+ <p class="bk-error" role="alert">{t.verify.invalid}</p>
33
+ <p><Linked text={t.verify.newLink} href="/verify-email" /></p>
34
+ {/if}
35
+ {:else if verify.kind === 'pending'}
36
+ {#if form?.resent}
37
+ <p class="bk-success" role="status">{t.verify.resent(form.resent)}</p>
38
+ {:else if verify.unsent}
39
+ <p class="bk-error" role="status">{t.verify.unsent}</p>
40
+ {:else}
41
+ <p role="status">{t.verify.pending(verify.email)}</p>
42
+ {/if}
43
+ <Form action="?/resend" button={t.verify.resend} error={form?.error} />
44
+ {:else if verify.kind === 'confirmed'}
45
+ <p class="bk-success" role="status">{t.verify.confirmed}</p>
46
+ <p><a href="/account">{t.verify.continue}</a></p>
47
+ {:else}
48
+ <p><Linked text={t.verify.logIn} href="/login?next=%2Fverify-email" /></p>
49
+ {/if}
50
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { VerifyData, VerifyForm } from './data.js';
2
+ type $$ComponentProps = {
3
+ data: {
4
+ verify: VerifyData;
5
+ };
6
+ form?: VerifyForm | null;
7
+ };
8
+ declare const VerifyEmailPage: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type VerifyEmailPage = ReturnType<typeof VerifyEmailPage>;
10
+ export default VerifyEmailPage;
@@ -0,0 +1,287 @@
1
+ /*
2
+ * This statement comes first, so it fixes the order of the layers, those of Tailwind 4 and Skeleton
3
+ * too (`properties` holds Tailwind's fallbacks for old browsers and must stay below its utilities).
4
+ * `bk-root` lies below everything, so that whatever the product brings wins over it. `bk` lies above
5
+ * Tailwind's base and below its components and utilities, and its element styles apply only inside
6
+ * the frame and the pages of the baukasten: the preflight does not strip their headings, lists and
7
+ * buttons, and a product's own pages get none of them.
8
+ */
9
+ @layer bk-root, properties, theme, base, bk, components, utilities;
10
+
11
+ @layer bk-root {
12
+ :root {
13
+ --bk-text: #1f2328;
14
+ --bk-muted: #5c6670;
15
+ --bk-background: #ffffff;
16
+ --bk-surface: #f5f7f9;
17
+ --bk-border: #d5dbe1;
18
+ --bk-accent: #1f5fbf;
19
+ --bk-accent-text: #ffffff;
20
+ --bk-error: #b42318;
21
+ --bk-success: #1a7f37;
22
+ --bk-radius: 6px;
23
+ --bk-width: 64rem;
24
+ --bk-narrow: 28rem;
25
+ --bk-font: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
26
+ color-scheme: light;
27
+ }
28
+
29
+ *,
30
+ *::before,
31
+ *::after {
32
+ box-sizing: border-box;
33
+ }
34
+
35
+ body {
36
+ margin: 0;
37
+ font-family: var(--bk-font);
38
+ line-height: 1.5;
39
+ color: var(--bk-text);
40
+ background: var(--bk-background);
41
+ }
42
+
43
+ a {
44
+ color: var(--bk-accent);
45
+ }
46
+ }
47
+
48
+ @layer bk {
49
+ .bk-page {
50
+ min-height: 100vh;
51
+ display: flex;
52
+ flex-direction: column;
53
+ }
54
+
55
+ .bk-head,
56
+ .bk-foot {
57
+ display: flex;
58
+ flex-wrap: wrap;
59
+ align-items: center;
60
+ gap: 0.5rem 1.5rem;
61
+ padding: 0.75rem 1.25rem;
62
+ border-bottom: 1px solid var(--bk-border);
63
+ }
64
+
65
+ .bk-foot {
66
+ margin-top: auto;
67
+ border-top: 1px solid var(--bk-border);
68
+ border-bottom: none;
69
+ font-size: 0.875rem;
70
+ }
71
+
72
+ .bk-name {
73
+ display: inline-flex;
74
+ align-items: center;
75
+ font-weight: 700;
76
+ color: var(--bk-text);
77
+ text-decoration: none;
78
+ }
79
+
80
+ .bk-logo {
81
+ display: block;
82
+ max-height: 2.5rem;
83
+ width: auto;
84
+ }
85
+
86
+ .bk-nav {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ align-items: center;
90
+ gap: 1rem;
91
+ }
92
+
93
+ .bk-account {
94
+ margin-left: auto;
95
+ }
96
+
97
+ .bk-account form {
98
+ margin: 0;
99
+ }
100
+
101
+ .bk-main {
102
+ width: 100%;
103
+ max-width: var(--bk-width);
104
+ margin: 0 auto;
105
+ padding: 1.5rem 1.25rem 3rem;
106
+ }
107
+
108
+ .bk-narrow {
109
+ max-width: var(--bk-narrow);
110
+ }
111
+
112
+ .bk-lead,
113
+ .bk-muted {
114
+ color: var(--bk-muted);
115
+ }
116
+
117
+ .bk-notice {
118
+ margin: 0;
119
+ padding: 0.6rem 1.25rem;
120
+ background: var(--bk-surface);
121
+ border-bottom: 1px solid var(--bk-border);
122
+ }
123
+
124
+ .bk-form {
125
+ display: flex;
126
+ flex-direction: column;
127
+ gap: 0.85rem;
128
+ margin: 1rem 0;
129
+ }
130
+
131
+ .bk-field {
132
+ display: flex;
133
+ flex-direction: column;
134
+ gap: 0.3rem;
135
+ }
136
+
137
+ .bk-check {
138
+ display: flex;
139
+ gap: 0.5rem;
140
+ align-items: flex-start;
141
+ }
142
+
143
+ /* What the browser gives these elements and Tailwind's preflight takes away, on the pages of the
144
+ baukasten only. */
145
+ .bk-ui h1 {
146
+ margin: 0.67em 0;
147
+ font-size: 2em;
148
+ font-weight: 700;
149
+ line-height: 1.2;
150
+ }
151
+
152
+ .bk-ui h2 {
153
+ margin: 0.83em 0;
154
+ font-size: 1.5em;
155
+ font-weight: 700;
156
+ line-height: 1.25;
157
+ }
158
+
159
+ .bk-ui p {
160
+ margin: 1em 0;
161
+ }
162
+
163
+ .bk-ui ul,
164
+ .bk-ui ol {
165
+ margin: 1em 0;
166
+ padding-left: 2.5em;
167
+ }
168
+
169
+ .bk-ui ul {
170
+ list-style: disc;
171
+ }
172
+
173
+ .bk-ui ol {
174
+ list-style: decimal;
175
+ }
176
+
177
+ .bk-ui ol[type='a'] {
178
+ list-style-type: lower-alpha;
179
+ }
180
+
181
+ .bk-ui code {
182
+ font-family: ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
183
+ font-size: 0.95em;
184
+ }
185
+
186
+ .bk-ui section {
187
+ margin-top: 2.25rem;
188
+ }
189
+
190
+ .bk-ui a,
191
+ .bk-head a,
192
+ .bk-foot a,
193
+ .bk-notice a {
194
+ color: var(--bk-accent);
195
+ text-decoration: underline;
196
+ }
197
+
198
+ .bk-head .bk-name {
199
+ color: var(--bk-text);
200
+ text-decoration: none;
201
+ }
202
+
203
+ :is(.bk-ui, .bk-form) input:not([type='checkbox']) {
204
+ font: inherit;
205
+ padding: 0.5rem 0.6rem;
206
+ border: 1px solid var(--bk-border);
207
+ border-radius: var(--bk-radius);
208
+ background: var(--bk-background);
209
+ color: var(--bk-text);
210
+ }
211
+
212
+ :is(.bk-ui, .bk-head, .bk-form) button,
213
+ .bk-button {
214
+ font: inherit;
215
+ align-self: flex-start;
216
+ padding: 0.5rem 1rem;
217
+ border: none;
218
+ border-radius: var(--bk-radius);
219
+ background: var(--bk-accent);
220
+ color: var(--bk-accent-text);
221
+ text-decoration: none;
222
+ cursor: pointer;
223
+ }
224
+
225
+ :is(.bk-ui, .bk-head, .bk-form) button:disabled {
226
+ opacity: 0.6;
227
+ cursor: progress;
228
+ }
229
+
230
+ .bk-head .bk-button {
231
+ color: var(--bk-accent-text);
232
+ text-decoration: none;
233
+ }
234
+
235
+ :is(.bk-ui, .bk-head, .bk-form) .bk-link {
236
+ padding: 0;
237
+ background: none;
238
+ color: var(--bk-accent);
239
+ text-decoration: underline;
240
+ }
241
+
242
+ .bk-error {
243
+ color: var(--bk-error);
244
+ }
245
+
246
+ .bk-success {
247
+ color: var(--bk-success);
248
+ }
249
+
250
+ .bk-secret {
251
+ display: block;
252
+ margin-top: 0.4rem;
253
+ padding: 0.5rem;
254
+ background: var(--bk-surface);
255
+ border-radius: var(--bk-radius);
256
+ overflow-wrap: anywhere;
257
+ }
258
+
259
+ .bk-table {
260
+ border-collapse: collapse;
261
+ margin: 0.5rem 0;
262
+ }
263
+
264
+ .bk-table th,
265
+ .bk-table td {
266
+ padding: 0.35rem 0.75rem 0.35rem 0;
267
+ text-align: left;
268
+ border-bottom: 1px solid var(--bk-border);
269
+ }
270
+
271
+ .bk-table .bk-form {
272
+ margin: 0;
273
+ }
274
+
275
+ .bk-legal {
276
+ max-width: 46rem;
277
+ }
278
+
279
+ .bk-legal h2 {
280
+ margin-top: 2rem;
281
+ font-size: 1.15rem;
282
+ }
283
+
284
+ .bk-legal li {
285
+ margin: 0.4rem 0;
286
+ }
287
+ }