lutra 0.0.33 → 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/README.md +4 -24
- package/dist/components/AspectRatio.svelte +26 -0
- package/dist/components/AspectRatio.svelte.d.ts +8 -0
- package/dist/components/Dialog.svelte +78 -0
- package/dist/components/Dialog.svelte.d.ts +14 -0
- package/dist/components/Layout.svelte +32 -0
- package/dist/components/Layout.svelte.d.ts +11 -0
- package/dist/components/PageContent.svelte +108 -0
- package/dist/components/PageContent.svelte.d.ts +38 -0
- package/dist/components/Theme.svelte +87 -0
- package/dist/components/Theme.svelte.d.ts +17 -0
- package/dist/{display → components}/Tooltip.svelte +33 -8
- package/dist/components/Tooltip.svelte.d.ts +12 -0
- package/dist/config.d.ts +30 -0
- package/dist/config.js +18 -0
- package/dist/css/0-layers.css +1 -0
- package/dist/css/1-props.css +775 -0
- package/dist/css/2-base.css +209 -0
- package/dist/css/3-typo.css +65 -0
- package/dist/css/4-layout.css +5 -0
- package/dist/css/5-media.css +21 -0
- package/dist/css/lutra.css +6 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +5 -2
- package/dist/types.d.ts +39 -0
- package/dist/types.js +25 -0
- package/package.json +29 -82
- package/dist/color.css +0 -0
- package/dist/display/Avatar.svelte +0 -61
- package/dist/display/Avatar.svelte.d.ts +0 -19
- package/dist/display/Badge.svelte +0 -91
- package/dist/display/Badge.svelte.d.ts +0 -30
- package/dist/display/Callout.svelte +0 -109
- package/dist/display/Callout.svelte.d.ts +0 -28
- package/dist/display/Close.svelte +0 -58
- package/dist/display/Close.svelte.d.ts +0 -18
- package/dist/display/Code.svelte +0 -190
- package/dist/display/Code.svelte.d.ts +0 -32
- package/dist/display/ContextTip.svelte +0 -23
- package/dist/display/ContextTip.svelte.d.ts +0 -18
- package/dist/display/DataList.svelte +0 -16
- package/dist/display/DataList.svelte.d.ts +0 -21
- package/dist/display/Details.svelte +0 -49
- package/dist/display/Details.svelte.d.ts +0 -27
- package/dist/display/Hero.svelte +0 -50
- package/dist/display/Hero.svelte.d.ts +0 -26
- package/dist/display/Icon.svelte +0 -39
- package/dist/display/Icon.svelte.d.ts +0 -19
- package/dist/display/IconButton.svelte +0 -91
- package/dist/display/IconButton.svelte.d.ts +0 -27
- package/dist/display/Image.svelte +0 -91
- package/dist/display/Image.svelte.d.ts +0 -26
- package/dist/display/Indicator.svelte +0 -352
- package/dist/display/Indicator.svelte.d.ts +0 -23
- package/dist/display/Inset.svelte +0 -18
- package/dist/display/Inset.svelte.d.ts +0 -18
- package/dist/display/LineChart.svelte +0 -385
- package/dist/display/LineChart.svelte.d.ts +0 -24
- package/dist/display/LoadingIndicator.svelte +0 -33
- package/dist/display/LoadingIndicator.svelte.d.ts +0 -15
- package/dist/display/Modal.svelte +0 -116
- package/dist/display/Modal.svelte.d.ts +0 -27
- package/dist/display/Notification.svelte +0 -104
- package/dist/display/Notification.svelte.d.ts +0 -23
- package/dist/display/Panel.svelte +0 -23
- package/dist/display/Panel.svelte.d.ts +0 -19
- package/dist/display/Popup.svelte +0 -111
- package/dist/display/Popup.svelte.d.ts +0 -25
- package/dist/display/Stat.svelte +0 -81
- package/dist/display/Stat.svelte.d.ts +0 -30
- package/dist/display/Table.svelte +0 -28
- package/dist/display/Table.svelte.d.ts +0 -24
- package/dist/display/TablePaginator.svelte +0 -51
- package/dist/display/TablePaginator.svelte.d.ts +0 -21
- package/dist/display/Tag.svelte +0 -90
- package/dist/display/Tag.svelte.d.ts +0 -32
- package/dist/display/Tooltip.svelte.d.ts +0 -23
- package/dist/display/chart.d.ts +0 -78
- package/dist/display/chart.js +0 -212
- package/dist/display/index.d.ts +0 -24
- package/dist/display/index.js +0 -24
- package/dist/display/notifications.svelte.d.ts +0 -21
- package/dist/display/notifications.svelte.js +0 -31
- package/dist/form/Button.svelte +0 -39
- package/dist/form/Button.svelte.d.ts +0 -26
- package/dist/form/FieldActions.svelte +0 -68
- package/dist/form/FieldActions.svelte.d.ts +0 -20
- package/dist/form/FieldContainer.svelte +0 -37
- package/dist/form/FieldContainer.svelte.d.ts +0 -19
- package/dist/form/FieldContent.svelte +0 -153
- package/dist/form/FieldContent.svelte.d.ts +0 -31
- package/dist/form/FieldError.svelte +0 -14
- package/dist/form/FieldError.svelte.d.ts +0 -18
- package/dist/form/FieldSection.svelte +0 -86
- package/dist/form/FieldSection.svelte.d.ts +0 -20
- package/dist/form/Fieldset.svelte +0 -68
- package/dist/form/Fieldset.svelte.d.ts +0 -31
- package/dist/form/Form.svelte +0 -136
- package/dist/form/Form.svelte.d.ts +0 -38
- package/dist/form/ImageUpload.svelte +0 -259
- package/dist/form/ImageUpload.svelte.d.ts +0 -31
- package/dist/form/Input.svelte +0 -326
- package/dist/form/Input.svelte.d.ts +0 -117
- package/dist/form/InputLength.svelte +0 -32
- package/dist/form/InputLength.svelte.d.ts +0 -20
- package/dist/form/Label.svelte +0 -44
- package/dist/form/Label.svelte.d.ts +0 -25
- package/dist/form/LogoUpload.svelte +0 -100
- package/dist/form/LogoUpload.svelte.d.ts +0 -29
- package/dist/form/Select.svelte +0 -136
- package/dist/form/Select.svelte.d.ts +0 -70
- package/dist/form/Textarea.svelte +0 -163
- package/dist/form/Textarea.svelte.d.ts +0 -108
- package/dist/form/Toggle.svelte +0 -2
- package/dist/form/Toggle.svelte.d.ts +0 -15
- package/dist/form/client.svelte.d.ts +0 -44
- package/dist/form/client.svelte.js +0 -98
- package/dist/form/form.d.ts +0 -54
- package/dist/form/form.js +0 -340
- package/dist/form/index.d.ts +0 -18
- package/dist/form/index.js +0 -18
- package/dist/form/types.d.ts +0 -62
- package/dist/form/types.js +0 -1
- package/dist/icons/IconAlert.svelte +0 -3
- package/dist/icons/IconAlert.svelte.d.ts +0 -23
- package/dist/icons/IconCopy.svelte +0 -3
- package/dist/icons/IconCopy.svelte.d.ts +0 -23
- package/dist/icons/IconDone.svelte +0 -3
- package/dist/icons/IconDone.svelte.d.ts +0 -23
- package/dist/icons/IconError.svelte +0 -3
- package/dist/icons/IconError.svelte.d.ts +0 -23
- package/dist/icons/IconHelp.svelte +0 -3
- package/dist/icons/IconHelp.svelte.d.ts +0 -23
- package/dist/icons/IconHide.svelte +0 -3
- package/dist/icons/IconHide.svelte.d.ts +0 -23
- package/dist/icons/IconInfo.svelte +0 -3
- package/dist/icons/IconInfo.svelte.d.ts +0 -23
- package/dist/icons/IconLink.svelte +0 -3
- package/dist/icons/IconLink.svelte.d.ts +0 -23
- package/dist/icons/IconMenuBurger.svelte +0 -3
- package/dist/icons/IconMenuBurger.svelte.d.ts +0 -23
- package/dist/icons/IconMenuDots.svelte +0 -3
- package/dist/icons/IconMenuDots.svelte.d.ts +0 -23
- package/dist/icons/IconSearch.svelte +0 -3
- package/dist/icons/IconSearch.svelte.d.ts +0 -23
- package/dist/icons/IconShow.svelte +0 -3
- package/dist/icons/IconShow.svelte.d.ts +0 -23
- package/dist/icons/IconSuccess.svelte +0 -3
- package/dist/icons/IconSuccess.svelte.d.ts +0 -23
- package/dist/icons/IconWarning.svelte +0 -3
- package/dist/icons/IconWarning.svelte.d.ts +0 -23
- package/dist/icons/index.d.ts +0 -14
- package/dist/icons/index.js +0 -14
- package/dist/layout/Layout.svelte +0 -47
- package/dist/layout/Layout.svelte.d.ts +0 -22
- package/dist/layout/LayoutFooter.svelte +0 -21
- package/dist/layout/LayoutFooter.svelte.d.ts +0 -18
- package/dist/layout/LayoutGrid.svelte +0 -51
- package/dist/layout/LayoutGrid.svelte.d.ts +0 -27
- package/dist/layout/LayoutHeader.svelte +0 -97
- package/dist/layout/LayoutHeader.svelte.d.ts +0 -34
- package/dist/layout/LayoutSideMenu.svelte +0 -55
- package/dist/layout/LayoutSideMenu.svelte.d.ts +0 -21
- package/dist/layout/LayoutTypes.d.ts +0 -15
- package/dist/layout/LayoutTypes.js +0 -9
- package/dist/layout/Overlay.svelte +0 -20
- package/dist/layout/Overlay.svelte.d.ts +0 -25
- package/dist/layout/OverlayContainer.svelte +0 -28
- package/dist/layout/OverlayContainer.svelte.d.ts +0 -15
- package/dist/layout/OverlayLayer.svelte +0 -140
- package/dist/layout/OverlayLayer.svelte.d.ts +0 -19
- package/dist/layout/PageContent.svelte +0 -82
- package/dist/layout/PageContent.svelte.d.ts +0 -25
- package/dist/layout/Theme.svelte +0 -243
- package/dist/layout/Theme.svelte.d.ts +0 -19
- package/dist/layout/UIContent.svelte +0 -15
- package/dist/layout/UIContent.svelte.d.ts +0 -18
- package/dist/layout/index.d.ts +0 -11
- package/dist/layout/index.js +0 -11
- package/dist/layout/overlays.svelte.d.ts +0 -34
- package/dist/layout/overlays.svelte.js +0 -44
- package/dist/nav/Breadcrumb.svelte +0 -82
- package/dist/nav/Breadcrumb.svelte.d.ts +0 -28
- package/dist/nav/Menu.svelte +0 -170
- package/dist/nav/Menu.svelte.d.ts +0 -27
- package/dist/nav/MenuItem.svelte +0 -147
- package/dist/nav/MenuItem.svelte.d.ts +0 -22
- package/dist/nav/MenuTypes.d.ts +0 -58
- package/dist/nav/MenuTypes.js +0 -1
- package/dist/nav/NavMenu.svelte +0 -181
- package/dist/nav/NavMenu.svelte.d.ts +0 -19
- package/dist/nav/TabbedContent.svelte +0 -43
- package/dist/nav/TabbedContent.svelte.d.ts +0 -23
- package/dist/nav/Tabs.svelte +0 -158
- package/dist/nav/Tabs.svelte.d.ts +0 -25
- package/dist/nav/index.d.ts +0 -7
- package/dist/nav/index.js +0 -6
- package/dist/style.css +0 -950
- package/dist/typo/Clamp.svelte +0 -25
- package/dist/typo/Clamp.svelte.d.ts +0 -24
- package/dist/typo/H.svelte +0 -52
- package/dist/typo/H.svelte.d.ts +0 -28
- package/dist/typo/H1.svelte +0 -14
- package/dist/typo/H1.svelte.d.ts +0 -26
- package/dist/typo/H2.svelte +0 -14
- package/dist/typo/H2.svelte.d.ts +0 -26
- package/dist/typo/H3.svelte +0 -14
- package/dist/typo/H3.svelte.d.ts +0 -26
- package/dist/typo/H4.svelte +0 -14
- package/dist/typo/H4.svelte.d.ts +0 -26
- package/dist/typo/H5.svelte +0 -14
- package/dist/typo/H5.svelte.d.ts +0 -26
- package/dist/typo/H6.svelte +0 -14
- package/dist/typo/H6.svelte.d.ts +0 -26
- package/dist/typo/P.svelte +0 -34
- package/dist/typo/P.svelte.d.ts +0 -26
- package/dist/typo/index.d.ts +0 -9
- package/dist/typo/index.js +0 -9
- package/dist/utils/StringOrComponent.svelte +0 -14
- package/dist/utils/StringOrComponent.svelte.d.ts +0 -19
- package/dist/utils/StringOrSnippet.svelte +0 -11
- package/dist/utils/StringOrSnippet.svelte.d.ts +0 -19
- package/dist/utils/attr.d.ts +0 -5
- package/dist/utils/attr.js +0 -21
- package/dist/utils/color.d.ts +0 -51
- package/dist/utils/color.js +0 -97
- package/dist/utils/defaults.d.ts +0 -4
- package/dist/utils/defaults.js +0 -1
- package/dist/utils/dom.d.ts +0 -15
- package/dist/utils/dom.js +0 -74
- package/dist/utils/hooks.server.d.ts +0 -2
- package/dist/utils/hooks.server.js +0 -16
- package/dist/utils/id.d.ts +0 -1
- package/dist/utils/id.js +0 -3
- package/dist/utils/index.d.ts +0 -9
- package/dist/utils/index.js +0 -6
- package/dist/utils/isSnippet.d.ts +0 -3
- package/dist/utils/isSnippet.js +0 -11
- package/dist/utils/keyboard.svelte.d.ts +0 -22
- package/dist/utils/keyboard.svelte.js +0 -161
- /package/dist/{utils → util}/transitions.d.ts +0 -0
- /package/dist/{utils → util}/transitions.js +0 -0
@@ -1,31 +0,0 @@
|
|
1
|
-
import type { Snippet } from "svelte";
|
2
|
-
import type { FormField, FormIssue } from "./types.js";
|
3
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
4
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
5
|
-
$$bindings?: Bindings;
|
6
|
-
} & Exports;
|
7
|
-
(internal: unknown, props: Props & {
|
8
|
-
$$events?: Events;
|
9
|
-
$$slots?: Slots;
|
10
|
-
}): Exports;
|
11
|
-
z_$$bindings?: Bindings;
|
12
|
-
}
|
13
|
-
declare const FieldContent: $$__sveltets_2_IsomorphicComponent<{
|
14
|
-
id: string;
|
15
|
-
contained?: boolean;
|
16
|
-
prefix?: string | Snippet;
|
17
|
-
suffix?: string | Snippet;
|
18
|
-
help?: string | Snippet;
|
19
|
-
type?: string;
|
20
|
-
label?: string | Snippet;
|
21
|
-
labelTip?: string | Snippet;
|
22
|
-
direction?: "row" | "column";
|
23
|
-
required?: boolean;
|
24
|
-
children: Snippet;
|
25
|
-
field?: FormField;
|
26
|
-
issue?: FormIssue;
|
27
|
-
}, {
|
28
|
-
[evt: string]: CustomEvent<any>;
|
29
|
-
}, {}, {}, "">;
|
30
|
-
type FieldContent = InstanceType<typeof FieldContent>;
|
31
|
-
export default FieldContent;
|
@@ -1,18 +0,0 @@
|
|
1
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
3
|
-
$$bindings?: Bindings;
|
4
|
-
} & Exports;
|
5
|
-
(internal: unknown, props: Props & {
|
6
|
-
$$events?: Events;
|
7
|
-
$$slots?: Slots;
|
8
|
-
}): Exports;
|
9
|
-
z_$$bindings?: Bindings;
|
10
|
-
}
|
11
|
-
declare const FieldError: $$__sveltets_2_IsomorphicComponent<{
|
12
|
-
code: string;
|
13
|
-
message?: string;
|
14
|
-
}, {
|
15
|
-
[evt: string]: CustomEvent<any>;
|
16
|
-
}, {}, {}, "">;
|
17
|
-
type FieldError = InstanceType<typeof FieldError>;
|
18
|
-
export default FieldError;
|
@@ -1,86 +0,0 @@
|
|
1
|
-
<script lang="ts">import H5 from "../typo/H5.svelte";
|
2
|
-
import P from "../typo/P.svelte";
|
3
|
-
let {
|
4
|
-
title,
|
5
|
-
description,
|
6
|
-
children
|
7
|
-
} = $props();
|
8
|
-
</script>
|
9
|
-
|
10
|
-
<div class="FieldSection" class:noTitle={!title && !description}>
|
11
|
-
{#if title || description}
|
12
|
-
<div class="FieldSectionTitle">
|
13
|
-
{#if title}
|
14
|
-
{#if typeof title === "string"}
|
15
|
-
<H5>{title}</H5>
|
16
|
-
{:else}
|
17
|
-
{@render title()}
|
18
|
-
{/if}
|
19
|
-
{/if}
|
20
|
-
{#if description}
|
21
|
-
{#if typeof description === "string"}
|
22
|
-
<small>{description}</small>
|
23
|
-
{:else}
|
24
|
-
{@render description()}
|
25
|
-
{/if}
|
26
|
-
{/if}
|
27
|
-
</div>
|
28
|
-
{/if}
|
29
|
-
<div class="FieldSectionFields">
|
30
|
-
{@render children()}
|
31
|
-
</div>
|
32
|
-
</div>
|
33
|
-
|
34
|
-
<style>
|
35
|
-
.FieldSection {
|
36
|
-
padding: 0;
|
37
|
-
display: grid;
|
38
|
-
grid-template-columns: subgrid;
|
39
|
-
grid-column: 1 / -1;
|
40
|
-
padding: calc(var(--fcc) * 3em);
|
41
|
-
gap: 3em;
|
42
|
-
}
|
43
|
-
.FieldSectionTitle {
|
44
|
-
display: flex;
|
45
|
-
flex-direction: column;
|
46
|
-
background-color: var(--base);
|
47
|
-
gap: 1.25em;
|
48
|
-
text-wrap: balance;
|
49
|
-
}
|
50
|
-
.FieldSection:not(:first-child) {
|
51
|
-
border-top: calc(var(--fcc) * var(--border-size)) var(--border-style) var(--border-color);
|
52
|
-
}
|
53
|
-
.FieldSectionFields {
|
54
|
-
display: grid;
|
55
|
-
gap: var(--gap, 1.5em);
|
56
|
-
}
|
57
|
-
.FieldSection.noTitle .FieldSectionFields {
|
58
|
-
grid-column: 1 / -1;
|
59
|
-
}
|
60
|
-
@media(max-width: 1280px) {
|
61
|
-
.FieldSection {
|
62
|
-
padding: 2em;
|
63
|
-
gap: 1.5em;
|
64
|
-
}
|
65
|
-
.FieldSectionTitle {
|
66
|
-
gap: 0.5em;
|
67
|
-
padding-block-end: 1.5em;
|
68
|
-
}
|
69
|
-
}
|
70
|
-
@media(max-width: 640px) {
|
71
|
-
.FieldSection {
|
72
|
-
padding: 1em;
|
73
|
-
gap: 1.5em;
|
74
|
-
}
|
75
|
-
.FieldSectionTitle {
|
76
|
-
gap: 0.5em;
|
77
|
-
padding-block-end: 1.5em;
|
78
|
-
}
|
79
|
-
}
|
80
|
-
@container (max-width: 800px) {
|
81
|
-
.FieldSectionTitle,
|
82
|
-
.FieldSectionFields {
|
83
|
-
grid-column: 1 / -1;
|
84
|
-
}
|
85
|
-
}
|
86
|
-
</style>
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import type { Snippet } from "svelte";
|
2
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
4
|
-
$$bindings?: Bindings;
|
5
|
-
} & Exports;
|
6
|
-
(internal: unknown, props: Props & {
|
7
|
-
$$events?: Events;
|
8
|
-
$$slots?: Slots;
|
9
|
-
}): Exports;
|
10
|
-
z_$$bindings?: Bindings;
|
11
|
-
}
|
12
|
-
declare const FieldSection: $$__sveltets_2_IsomorphicComponent<{
|
13
|
-
title?: string | Snippet;
|
14
|
-
description?: string | Snippet;
|
15
|
-
children: Snippet;
|
16
|
-
}, {
|
17
|
-
[evt: string]: CustomEvent<any>;
|
18
|
-
}, {}, {}, "">;
|
19
|
-
type FieldSection = InstanceType<typeof FieldSection>;
|
20
|
-
export default FieldSection;
|
@@ -1,68 +0,0 @@
|
|
1
|
-
<script lang="ts">let {
|
2
|
-
fullWidth,
|
3
|
-
description,
|
4
|
-
contained,
|
5
|
-
rounded,
|
6
|
-
legend,
|
7
|
-
columns = 1,
|
8
|
-
children
|
9
|
-
} = $props();
|
10
|
-
let columnsArray = Array.isArray(columns) ? columns : [columns, columns, columns];
|
11
|
-
let lgColumns = columnsArray[0];
|
12
|
-
let mdColumns = columnsArray[1] || lgColumns;
|
13
|
-
let smColumns = columnsArray[2] || mdColumns;
|
14
|
-
</script>
|
15
|
-
|
16
|
-
<div class="FieldsetContainer">
|
17
|
-
<fieldset class:fullWidth class:rounded class:contained class="cols-{columns}" style="--lg-cols: {lgColumns}; --md-cols: {mdColumns}; --sm-cols: {smColumns}">
|
18
|
-
{#if legend}
|
19
|
-
<legend>
|
20
|
-
{#if typeof legend === 'string'}
|
21
|
-
{legend}
|
22
|
-
{:else}
|
23
|
-
{@render legend()}
|
24
|
-
{/if}
|
25
|
-
</legend>
|
26
|
-
{/if}
|
27
|
-
{#if description}
|
28
|
-
{#if typeof description === 'string'}
|
29
|
-
<small>{description}</small>
|
30
|
-
{:else}
|
31
|
-
{@render description()}
|
32
|
-
{/if}
|
33
|
-
{/if}
|
34
|
-
{@render children()}
|
35
|
-
</fieldset>
|
36
|
-
</div>
|
37
|
-
|
38
|
-
<style>
|
39
|
-
.FieldsetContainer {
|
40
|
-
container-type: inline-size;
|
41
|
-
}
|
42
|
-
fieldset {
|
43
|
-
display: grid;
|
44
|
-
width: var(--width, fit-content);
|
45
|
-
grid-template-columns: repeat(var(--lg-cols), 1fr);
|
46
|
-
gap: var(--gap, 1.5em);
|
47
|
-
}
|
48
|
-
legend {
|
49
|
-
font-weight: 500;
|
50
|
-
font-size: var(--font-size, 1em);
|
51
|
-
}
|
52
|
-
fieldset.contained {
|
53
|
-
padding: 1.5em;
|
54
|
-
}
|
55
|
-
fieldset.fullWidth {
|
56
|
-
width: 100%;
|
57
|
-
}
|
58
|
-
@container(max-width: 960px) {
|
59
|
-
fieldset {
|
60
|
-
grid-template-columns: repeat(var(--md-cols), 1fr);
|
61
|
-
}
|
62
|
-
}
|
63
|
-
@container(max-width: 640px) {
|
64
|
-
fieldset {
|
65
|
-
grid-template-columns: repeat(var(--sm-cols), 1fr);
|
66
|
-
}
|
67
|
-
}
|
68
|
-
</style>
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import type { Snippet } from "svelte";
|
2
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
4
|
-
$$bindings?: Bindings;
|
5
|
-
} & Exports;
|
6
|
-
(internal: unknown, props: Props & {
|
7
|
-
$$events?: Events;
|
8
|
-
$$slots?: Slots;
|
9
|
-
}): Exports;
|
10
|
-
z_$$bindings?: Bindings;
|
11
|
-
}
|
12
|
-
declare const Fieldset: $$__sveltets_2_IsomorphicComponent<{
|
13
|
-
/** Whether the fieldset should be full width. */
|
14
|
-
fullWidth?: boolean;
|
15
|
-
/** The description of the fieldset. */
|
16
|
-
description?: string | Snippet;
|
17
|
-
/** Whether the fieldset should be contained. */
|
18
|
-
contained?: boolean;
|
19
|
-
/** Whether the fieldset should be rounded. */
|
20
|
-
rounded?: boolean;
|
21
|
-
/** The legend of the fieldset. */
|
22
|
-
legend?: string | Snippet;
|
23
|
-
/** The number of columns to display the fieldset in. You can pass a single number or an array of numbers. The array will be used to set the number of columns at different breakpoints (lg, md, sm). */
|
24
|
-
columns?: number | [number] | [number, number] | [number, number, number];
|
25
|
-
/** Content to be rendered inside the fieldset. */
|
26
|
-
children: Snippet;
|
27
|
-
}, {
|
28
|
-
[evt: string]: CustomEvent<any>;
|
29
|
-
}, {}, {}, "">;
|
30
|
-
type Fieldset = InstanceType<typeof Fieldset>;
|
31
|
-
export default Fieldset;
|
package/dist/form/Form.svelte
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
<script lang="ts">import { enhance } from "$app/forms";
|
2
|
-
import UiContent from "../layout/UIContent.svelte";
|
3
|
-
import { Bodyguard } from "@auth70/bodyguard";
|
4
|
-
import { onMount, setContext } from "svelte";
|
5
|
-
import { get } from "svelte/store";
|
6
|
-
import { dezerialize } from "@auth70/zodex-esm";
|
7
|
-
import { array } from "zod";
|
8
|
-
import { arrayPathToStringPath, getIndividualValidators, parseFormIssues } from "./form.js";
|
9
|
-
import { useForm } from "./client.svelte.js";
|
10
|
-
let {
|
11
|
-
name = "form",
|
12
|
-
form: _form,
|
13
|
-
action,
|
14
|
-
enctype = "multipart/form-data",
|
15
|
-
method = "POST",
|
16
|
-
beforeSubmit,
|
17
|
-
fullWidth = false,
|
18
|
-
onResult,
|
19
|
-
resetOnUpdate,
|
20
|
-
children
|
21
|
-
} = $props();
|
22
|
-
let form = $state(_form ? useForm(_form) : null);
|
23
|
-
setContext("form", form);
|
24
|
-
setContext("form.validators", form ? getIndividualValidators(form) : null);
|
25
|
-
const beforeSubmitFunctions = [];
|
26
|
-
const addBeforeSubmit = (id, fn) => {
|
27
|
-
if (beforeSubmitFunctions.find((f) => f.id === id)) {
|
28
|
-
return;
|
29
|
-
}
|
30
|
-
beforeSubmitFunctions.push({ id, fn });
|
31
|
-
};
|
32
|
-
setContext("form.beforeSubmit", addBeforeSubmit);
|
33
|
-
const schema = form?.schema ? dezerialize(form?.schema) : null;
|
34
|
-
const bodyguard = new Bodyguard();
|
35
|
-
let formEl;
|
36
|
-
function setFormIssuesAndFields(issues, fields) {
|
37
|
-
console.log("setFormIssuesAndFields", issues, fields);
|
38
|
-
if (form) {
|
39
|
-
form.issues = issues;
|
40
|
-
form.fields = fields;
|
41
|
-
}
|
42
|
-
}
|
43
|
-
async function validate() {
|
44
|
-
if (form && schema) {
|
45
|
-
form.tainted = true;
|
46
|
-
const req = new Request("localhost", {
|
47
|
-
method: "POST",
|
48
|
-
body: new FormData(formEl)
|
49
|
-
});
|
50
|
-
const result = await bodyguard.softForm(req, schema.parse);
|
51
|
-
if (result.success === true) {
|
52
|
-
form.valid = true;
|
53
|
-
form.issues = [];
|
54
|
-
} else {
|
55
|
-
form.valid = false;
|
56
|
-
form.issues = parseFormIssues(result.error.issues);
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
onMount(() => {
|
61
|
-
validate();
|
62
|
-
});
|
63
|
-
</script>
|
64
|
-
|
65
|
-
<UiContent>
|
66
|
-
<form
|
67
|
-
{method}
|
68
|
-
{action}
|
69
|
-
{enctype}
|
70
|
-
bind:this={formEl}
|
71
|
-
onchange={validate}
|
72
|
-
use:enhance={async ({ formElement, formData, action, cancel, submitter }) => {
|
73
|
-
// `formElement` is this `<form>` element
|
74
|
-
// `formData` is its `FormData` object that's about to be submitted
|
75
|
-
// `action` is the URL to which the form is posted
|
76
|
-
// calling `cancel()` will prevent the submission
|
77
|
-
// `submitter` is the `HTMLElement` that caused the form to be submitted
|
78
|
-
if(form) form.state = 'loading';
|
79
|
-
//await Promise.resolve(beforeSubmit(form));
|
80
|
-
if(beforeSubmit) await Promise.resolve(beforeSubmit({ form: formElement, data: formData, cancel: () => {
|
81
|
-
if(form) form.state = 'error';
|
82
|
-
cancel();
|
83
|
-
}}));
|
84
|
-
for(const { id, fn } of beforeSubmitFunctions) {
|
85
|
-
await Promise.resolve(fn({ form: formElement, data: formData, cancel: () => {
|
86
|
-
if(form) form.state = 'error';
|
87
|
-
cancel();
|
88
|
-
}}));
|
89
|
-
}
|
90
|
-
console.log('form state', form?.state);
|
91
|
-
return async (opts) => {
|
92
|
-
const { result, update } = opts;
|
93
|
-
// `result` is an `ActionResult` object
|
94
|
-
// `update` is a function which triggers the default logic that would be triggered if this callback wasn't set
|
95
|
-
console.log('form result', opts);
|
96
|
-
if(onResult) {
|
97
|
-
console.log('calling onResult')
|
98
|
-
onResult(opts);
|
99
|
-
}
|
100
|
-
const resultForm = result.type !== "redirect" && result.type !== "error" ? result?.data![name] : null;
|
101
|
-
console.log('resultForm', resultForm, form)
|
102
|
-
if(result.type === "success") {
|
103
|
-
if(resultForm && form) {
|
104
|
-
form.valid = Object.assign({ valid: false }, resultForm).valid ?? false;
|
105
|
-
}
|
106
|
-
if(form) form.state = 'success';
|
107
|
-
console.log('form state', form?.state);
|
108
|
-
update({ reset: !!resetOnUpdate });
|
109
|
-
} else if(result.type === "failure") {
|
110
|
-
console.log('FAILURE')
|
111
|
-
if(resultForm && form) {
|
112
|
-
console.log('setting form issues and fields')
|
113
|
-
setFormIssuesAndFields(
|
114
|
-
Object.assign({ issues: [] }, resultForm).issues, // Have to assign to avoid type error as we cant use `as` here
|
115
|
-
Object.assign({ fields: [] }, resultForm).fields,
|
116
|
-
);
|
117
|
-
}
|
118
|
-
if(form) form.state = 'error';
|
119
|
-
} else if(result.type === "error") {
|
120
|
-
console.error('[lutra] Error from form enhance call', result.error);
|
121
|
-
if(form) form.state = 'error';
|
122
|
-
} else if(result.type === "redirect") {
|
123
|
-
window.location.href = result.location;
|
124
|
-
if(form) form.state = 'success';
|
125
|
-
}
|
126
|
-
};
|
127
|
-
}}
|
128
|
-
>
|
129
|
-
{@render children()}
|
130
|
-
</form>
|
131
|
-
</UiContent>
|
132
|
-
|
133
|
-
<style>
|
134
|
-
form {
|
135
|
-
}
|
136
|
-
</style>
|
@@ -1,38 +0,0 @@
|
|
1
|
-
import type { ActionResult } from "@sveltejs/kit";
|
2
|
-
import type { Snippet } from "svelte";
|
3
|
-
import type { BeforeSubmitFn, LutraForm } from "./types.js";
|
4
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
5
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
6
|
-
$$bindings?: Bindings;
|
7
|
-
} & Exports;
|
8
|
-
(internal: unknown, props: Props & {
|
9
|
-
$$events?: Events;
|
10
|
-
$$slots?: Slots;
|
11
|
-
}): Exports;
|
12
|
-
z_$$bindings?: Bindings;
|
13
|
-
}
|
14
|
-
declare const Form: $$__sveltets_2_IsomorphicComponent<{
|
15
|
-
name?: string;
|
16
|
-
form?: LutraForm<any>;
|
17
|
-
action?: string;
|
18
|
-
enctype?: "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain";
|
19
|
-
method?: "GET" | "POST";
|
20
|
-
beforeSubmit?: BeforeSubmitFn;
|
21
|
-
fullWidth?: boolean;
|
22
|
-
resetOnUpdate?: boolean;
|
23
|
-
onResult?: (args: {
|
24
|
-
formData: FormData;
|
25
|
-
formElement: HTMLFormElement;
|
26
|
-
action: URL;
|
27
|
-
result: ActionResult<Record<string, unknown> | undefined, Record<string, unknown> | undefined>;
|
28
|
-
update: (options?: {
|
29
|
-
reset?: boolean | undefined;
|
30
|
-
invalidateAll?: boolean | undefined;
|
31
|
-
} | undefined) => void;
|
32
|
-
}) => void;
|
33
|
-
children: Snippet;
|
34
|
-
}, {
|
35
|
-
[evt: string]: CustomEvent<any>;
|
36
|
-
}, {}, {}, "">;
|
37
|
-
type Form = InstanceType<typeof Form>;
|
38
|
-
export default Form;
|