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.
Files changed (242) hide show
  1. package/README.md +4 -24
  2. package/dist/components/AspectRatio.svelte +26 -0
  3. package/dist/components/AspectRatio.svelte.d.ts +8 -0
  4. package/dist/components/Dialog.svelte +78 -0
  5. package/dist/components/Dialog.svelte.d.ts +14 -0
  6. package/dist/components/Layout.svelte +32 -0
  7. package/dist/components/Layout.svelte.d.ts +11 -0
  8. package/dist/components/PageContent.svelte +108 -0
  9. package/dist/components/PageContent.svelte.d.ts +38 -0
  10. package/dist/components/Theme.svelte +87 -0
  11. package/dist/components/Theme.svelte.d.ts +17 -0
  12. package/dist/{display → components}/Tooltip.svelte +33 -8
  13. package/dist/components/Tooltip.svelte.d.ts +12 -0
  14. package/dist/config.d.ts +30 -0
  15. package/dist/config.js +18 -0
  16. package/dist/css/0-layers.css +1 -0
  17. package/dist/css/1-props.css +775 -0
  18. package/dist/css/2-base.css +209 -0
  19. package/dist/css/3-typo.css +65 -0
  20. package/dist/css/4-layout.css +5 -0
  21. package/dist/css/5-media.css +21 -0
  22. package/dist/css/lutra.css +6 -0
  23. package/dist/index.d.ts +5 -1
  24. package/dist/index.js +5 -2
  25. package/dist/types.d.ts +39 -0
  26. package/dist/types.js +25 -0
  27. package/package.json +29 -82
  28. package/dist/color.css +0 -0
  29. package/dist/display/Avatar.svelte +0 -61
  30. package/dist/display/Avatar.svelte.d.ts +0 -19
  31. package/dist/display/Badge.svelte +0 -91
  32. package/dist/display/Badge.svelte.d.ts +0 -30
  33. package/dist/display/Callout.svelte +0 -109
  34. package/dist/display/Callout.svelte.d.ts +0 -28
  35. package/dist/display/Close.svelte +0 -58
  36. package/dist/display/Close.svelte.d.ts +0 -18
  37. package/dist/display/Code.svelte +0 -190
  38. package/dist/display/Code.svelte.d.ts +0 -32
  39. package/dist/display/ContextTip.svelte +0 -23
  40. package/dist/display/ContextTip.svelte.d.ts +0 -18
  41. package/dist/display/DataList.svelte +0 -16
  42. package/dist/display/DataList.svelte.d.ts +0 -21
  43. package/dist/display/Details.svelte +0 -49
  44. package/dist/display/Details.svelte.d.ts +0 -27
  45. package/dist/display/Hero.svelte +0 -50
  46. package/dist/display/Hero.svelte.d.ts +0 -26
  47. package/dist/display/Icon.svelte +0 -39
  48. package/dist/display/Icon.svelte.d.ts +0 -19
  49. package/dist/display/IconButton.svelte +0 -91
  50. package/dist/display/IconButton.svelte.d.ts +0 -27
  51. package/dist/display/Image.svelte +0 -91
  52. package/dist/display/Image.svelte.d.ts +0 -26
  53. package/dist/display/Indicator.svelte +0 -352
  54. package/dist/display/Indicator.svelte.d.ts +0 -23
  55. package/dist/display/Inset.svelte +0 -18
  56. package/dist/display/Inset.svelte.d.ts +0 -18
  57. package/dist/display/LineChart.svelte +0 -385
  58. package/dist/display/LineChart.svelte.d.ts +0 -24
  59. package/dist/display/LoadingIndicator.svelte +0 -33
  60. package/dist/display/LoadingIndicator.svelte.d.ts +0 -15
  61. package/dist/display/Modal.svelte +0 -116
  62. package/dist/display/Modal.svelte.d.ts +0 -27
  63. package/dist/display/Notification.svelte +0 -104
  64. package/dist/display/Notification.svelte.d.ts +0 -23
  65. package/dist/display/Panel.svelte +0 -23
  66. package/dist/display/Panel.svelte.d.ts +0 -19
  67. package/dist/display/Popup.svelte +0 -111
  68. package/dist/display/Popup.svelte.d.ts +0 -25
  69. package/dist/display/Stat.svelte +0 -81
  70. package/dist/display/Stat.svelte.d.ts +0 -30
  71. package/dist/display/Table.svelte +0 -28
  72. package/dist/display/Table.svelte.d.ts +0 -24
  73. package/dist/display/TablePaginator.svelte +0 -51
  74. package/dist/display/TablePaginator.svelte.d.ts +0 -21
  75. package/dist/display/Tag.svelte +0 -90
  76. package/dist/display/Tag.svelte.d.ts +0 -32
  77. package/dist/display/Tooltip.svelte.d.ts +0 -23
  78. package/dist/display/chart.d.ts +0 -78
  79. package/dist/display/chart.js +0 -212
  80. package/dist/display/index.d.ts +0 -24
  81. package/dist/display/index.js +0 -24
  82. package/dist/display/notifications.svelte.d.ts +0 -21
  83. package/dist/display/notifications.svelte.js +0 -31
  84. package/dist/form/Button.svelte +0 -39
  85. package/dist/form/Button.svelte.d.ts +0 -26
  86. package/dist/form/FieldActions.svelte +0 -68
  87. package/dist/form/FieldActions.svelte.d.ts +0 -20
  88. package/dist/form/FieldContainer.svelte +0 -37
  89. package/dist/form/FieldContainer.svelte.d.ts +0 -19
  90. package/dist/form/FieldContent.svelte +0 -153
  91. package/dist/form/FieldContent.svelte.d.ts +0 -31
  92. package/dist/form/FieldError.svelte +0 -14
  93. package/dist/form/FieldError.svelte.d.ts +0 -18
  94. package/dist/form/FieldSection.svelte +0 -86
  95. package/dist/form/FieldSection.svelte.d.ts +0 -20
  96. package/dist/form/Fieldset.svelte +0 -68
  97. package/dist/form/Fieldset.svelte.d.ts +0 -31
  98. package/dist/form/Form.svelte +0 -136
  99. package/dist/form/Form.svelte.d.ts +0 -38
  100. package/dist/form/ImageUpload.svelte +0 -259
  101. package/dist/form/ImageUpload.svelte.d.ts +0 -31
  102. package/dist/form/Input.svelte +0 -326
  103. package/dist/form/Input.svelte.d.ts +0 -117
  104. package/dist/form/InputLength.svelte +0 -32
  105. package/dist/form/InputLength.svelte.d.ts +0 -20
  106. package/dist/form/Label.svelte +0 -44
  107. package/dist/form/Label.svelte.d.ts +0 -25
  108. package/dist/form/LogoUpload.svelte +0 -100
  109. package/dist/form/LogoUpload.svelte.d.ts +0 -29
  110. package/dist/form/Select.svelte +0 -136
  111. package/dist/form/Select.svelte.d.ts +0 -70
  112. package/dist/form/Textarea.svelte +0 -163
  113. package/dist/form/Textarea.svelte.d.ts +0 -108
  114. package/dist/form/Toggle.svelte +0 -2
  115. package/dist/form/Toggle.svelte.d.ts +0 -15
  116. package/dist/form/client.svelte.d.ts +0 -44
  117. package/dist/form/client.svelte.js +0 -98
  118. package/dist/form/form.d.ts +0 -54
  119. package/dist/form/form.js +0 -340
  120. package/dist/form/index.d.ts +0 -18
  121. package/dist/form/index.js +0 -18
  122. package/dist/form/types.d.ts +0 -62
  123. package/dist/form/types.js +0 -1
  124. package/dist/icons/IconAlert.svelte +0 -3
  125. package/dist/icons/IconAlert.svelte.d.ts +0 -23
  126. package/dist/icons/IconCopy.svelte +0 -3
  127. package/dist/icons/IconCopy.svelte.d.ts +0 -23
  128. package/dist/icons/IconDone.svelte +0 -3
  129. package/dist/icons/IconDone.svelte.d.ts +0 -23
  130. package/dist/icons/IconError.svelte +0 -3
  131. package/dist/icons/IconError.svelte.d.ts +0 -23
  132. package/dist/icons/IconHelp.svelte +0 -3
  133. package/dist/icons/IconHelp.svelte.d.ts +0 -23
  134. package/dist/icons/IconHide.svelte +0 -3
  135. package/dist/icons/IconHide.svelte.d.ts +0 -23
  136. package/dist/icons/IconInfo.svelte +0 -3
  137. package/dist/icons/IconInfo.svelte.d.ts +0 -23
  138. package/dist/icons/IconLink.svelte +0 -3
  139. package/dist/icons/IconLink.svelte.d.ts +0 -23
  140. package/dist/icons/IconMenuBurger.svelte +0 -3
  141. package/dist/icons/IconMenuBurger.svelte.d.ts +0 -23
  142. package/dist/icons/IconMenuDots.svelte +0 -3
  143. package/dist/icons/IconMenuDots.svelte.d.ts +0 -23
  144. package/dist/icons/IconSearch.svelte +0 -3
  145. package/dist/icons/IconSearch.svelte.d.ts +0 -23
  146. package/dist/icons/IconShow.svelte +0 -3
  147. package/dist/icons/IconShow.svelte.d.ts +0 -23
  148. package/dist/icons/IconSuccess.svelte +0 -3
  149. package/dist/icons/IconSuccess.svelte.d.ts +0 -23
  150. package/dist/icons/IconWarning.svelte +0 -3
  151. package/dist/icons/IconWarning.svelte.d.ts +0 -23
  152. package/dist/icons/index.d.ts +0 -14
  153. package/dist/icons/index.js +0 -14
  154. package/dist/layout/Layout.svelte +0 -47
  155. package/dist/layout/Layout.svelte.d.ts +0 -22
  156. package/dist/layout/LayoutFooter.svelte +0 -21
  157. package/dist/layout/LayoutFooter.svelte.d.ts +0 -18
  158. package/dist/layout/LayoutGrid.svelte +0 -51
  159. package/dist/layout/LayoutGrid.svelte.d.ts +0 -27
  160. package/dist/layout/LayoutHeader.svelte +0 -97
  161. package/dist/layout/LayoutHeader.svelte.d.ts +0 -34
  162. package/dist/layout/LayoutSideMenu.svelte +0 -55
  163. package/dist/layout/LayoutSideMenu.svelte.d.ts +0 -21
  164. package/dist/layout/LayoutTypes.d.ts +0 -15
  165. package/dist/layout/LayoutTypes.js +0 -9
  166. package/dist/layout/Overlay.svelte +0 -20
  167. package/dist/layout/Overlay.svelte.d.ts +0 -25
  168. package/dist/layout/OverlayContainer.svelte +0 -28
  169. package/dist/layout/OverlayContainer.svelte.d.ts +0 -15
  170. package/dist/layout/OverlayLayer.svelte +0 -140
  171. package/dist/layout/OverlayLayer.svelte.d.ts +0 -19
  172. package/dist/layout/PageContent.svelte +0 -82
  173. package/dist/layout/PageContent.svelte.d.ts +0 -25
  174. package/dist/layout/Theme.svelte +0 -243
  175. package/dist/layout/Theme.svelte.d.ts +0 -19
  176. package/dist/layout/UIContent.svelte +0 -15
  177. package/dist/layout/UIContent.svelte.d.ts +0 -18
  178. package/dist/layout/index.d.ts +0 -11
  179. package/dist/layout/index.js +0 -11
  180. package/dist/layout/overlays.svelte.d.ts +0 -34
  181. package/dist/layout/overlays.svelte.js +0 -44
  182. package/dist/nav/Breadcrumb.svelte +0 -82
  183. package/dist/nav/Breadcrumb.svelte.d.ts +0 -28
  184. package/dist/nav/Menu.svelte +0 -170
  185. package/dist/nav/Menu.svelte.d.ts +0 -27
  186. package/dist/nav/MenuItem.svelte +0 -147
  187. package/dist/nav/MenuItem.svelte.d.ts +0 -22
  188. package/dist/nav/MenuTypes.d.ts +0 -58
  189. package/dist/nav/MenuTypes.js +0 -1
  190. package/dist/nav/NavMenu.svelte +0 -181
  191. package/dist/nav/NavMenu.svelte.d.ts +0 -19
  192. package/dist/nav/TabbedContent.svelte +0 -43
  193. package/dist/nav/TabbedContent.svelte.d.ts +0 -23
  194. package/dist/nav/Tabs.svelte +0 -158
  195. package/dist/nav/Tabs.svelte.d.ts +0 -25
  196. package/dist/nav/index.d.ts +0 -7
  197. package/dist/nav/index.js +0 -6
  198. package/dist/style.css +0 -950
  199. package/dist/typo/Clamp.svelte +0 -25
  200. package/dist/typo/Clamp.svelte.d.ts +0 -24
  201. package/dist/typo/H.svelte +0 -52
  202. package/dist/typo/H.svelte.d.ts +0 -28
  203. package/dist/typo/H1.svelte +0 -14
  204. package/dist/typo/H1.svelte.d.ts +0 -26
  205. package/dist/typo/H2.svelte +0 -14
  206. package/dist/typo/H2.svelte.d.ts +0 -26
  207. package/dist/typo/H3.svelte +0 -14
  208. package/dist/typo/H3.svelte.d.ts +0 -26
  209. package/dist/typo/H4.svelte +0 -14
  210. package/dist/typo/H4.svelte.d.ts +0 -26
  211. package/dist/typo/H5.svelte +0 -14
  212. package/dist/typo/H5.svelte.d.ts +0 -26
  213. package/dist/typo/H6.svelte +0 -14
  214. package/dist/typo/H6.svelte.d.ts +0 -26
  215. package/dist/typo/P.svelte +0 -34
  216. package/dist/typo/P.svelte.d.ts +0 -26
  217. package/dist/typo/index.d.ts +0 -9
  218. package/dist/typo/index.js +0 -9
  219. package/dist/utils/StringOrComponent.svelte +0 -14
  220. package/dist/utils/StringOrComponent.svelte.d.ts +0 -19
  221. package/dist/utils/StringOrSnippet.svelte +0 -11
  222. package/dist/utils/StringOrSnippet.svelte.d.ts +0 -19
  223. package/dist/utils/attr.d.ts +0 -5
  224. package/dist/utils/attr.js +0 -21
  225. package/dist/utils/color.d.ts +0 -51
  226. package/dist/utils/color.js +0 -97
  227. package/dist/utils/defaults.d.ts +0 -4
  228. package/dist/utils/defaults.js +0 -1
  229. package/dist/utils/dom.d.ts +0 -15
  230. package/dist/utils/dom.js +0 -74
  231. package/dist/utils/hooks.server.d.ts +0 -2
  232. package/dist/utils/hooks.server.js +0 -16
  233. package/dist/utils/id.d.ts +0 -1
  234. package/dist/utils/id.js +0 -3
  235. package/dist/utils/index.d.ts +0 -9
  236. package/dist/utils/index.js +0 -6
  237. package/dist/utils/isSnippet.d.ts +0 -3
  238. package/dist/utils/isSnippet.js +0 -11
  239. package/dist/utils/keyboard.svelte.d.ts +0 -22
  240. package/dist/utils/keyboard.svelte.js +0 -161
  241. /package/dist/{utils → util}/transitions.d.ts +0 -0
  242. /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,14 +0,0 @@
1
- <script lang="ts">let {
2
- code,
3
- message
4
- } = $props();
5
- </script>
6
-
7
- <p class="Error">{message ? message : code}</p>
8
-
9
- <style>
10
- .Error {
11
- color: var(--text-warn);
12
- font-size: max(0.85em, 11px);
13
- }
14
- </style>
@@ -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;
@@ -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;