lutra 0.0.20 → 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 (223) 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 +37 -11
  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 -75
  28. package/dist/data/Stat.svelte +0 -89
  29. package/dist/data/Stat.svelte.d.ts +0 -39
  30. package/dist/data/index.d.ts +0 -1
  31. package/dist/data/index.js +0 -1
  32. package/dist/display/Avatar.svelte +0 -61
  33. package/dist/display/Avatar.svelte.d.ts +0 -23
  34. package/dist/display/Badge.svelte +0 -93
  35. package/dist/display/Badge.svelte.d.ts +0 -34
  36. package/dist/display/Callout.svelte +0 -109
  37. package/dist/display/Callout.svelte.d.ts +0 -36
  38. package/dist/display/Close.svelte +0 -58
  39. package/dist/display/Close.svelte.d.ts +0 -21
  40. package/dist/display/Code.svelte +0 -195
  41. package/dist/display/Code.svelte.d.ts +0 -31
  42. package/dist/display/ContextTip.svelte +0 -26
  43. package/dist/display/ContextTip.svelte.d.ts +0 -22
  44. package/dist/display/Details.svelte +0 -49
  45. package/dist/display/Details.svelte.d.ts +0 -32
  46. package/dist/display/Hero.svelte +0 -50
  47. package/dist/display/Hero.svelte.d.ts +0 -30
  48. package/dist/display/Icon.svelte +0 -40
  49. package/dist/display/Icon.svelte.d.ts +0 -24
  50. package/dist/display/IconButton.svelte +0 -84
  51. package/dist/display/IconButton.svelte.d.ts +0 -30
  52. package/dist/display/Image.svelte +0 -91
  53. package/dist/display/Image.svelte.d.ts +0 -37
  54. package/dist/display/Indicator.svelte +0 -352
  55. package/dist/display/Indicator.svelte.d.ts +0 -24
  56. package/dist/display/Inset.svelte +0 -18
  57. package/dist/display/Inset.svelte.d.ts +0 -22
  58. package/dist/display/Notification.svelte +0 -104
  59. package/dist/display/Notification.svelte.d.ts +0 -42
  60. package/dist/display/Popup.svelte +0 -111
  61. package/dist/display/Popup.svelte.d.ts +0 -30
  62. package/dist/display/Table.svelte +0 -24
  63. package/dist/display/Table.svelte.d.ts +0 -34
  64. package/dist/display/Tag.svelte +0 -90
  65. package/dist/display/Tag.svelte.d.ts +0 -35
  66. package/dist/display/Tooltip.svelte.d.ts +0 -28
  67. package/dist/display/index.d.ts +0 -14
  68. package/dist/display/index.js +0 -14
  69. package/dist/display/notifications.svelte.d.ts +0 -21
  70. package/dist/display/notifications.svelte.js +0 -31
  71. package/dist/form/Button.svelte +0 -34
  72. package/dist/form/Button.svelte.d.ts +0 -36
  73. package/dist/form/FieldActions.svelte +0 -46
  74. package/dist/form/FieldActions.svelte.d.ts +0 -24
  75. package/dist/form/FieldContainer.svelte +0 -37
  76. package/dist/form/FieldContainer.svelte.d.ts +0 -24
  77. package/dist/form/FieldContent.svelte +0 -134
  78. package/dist/form/FieldContent.svelte.d.ts +0 -59
  79. package/dist/form/FieldError.svelte +0 -14
  80. package/dist/form/FieldError.svelte.d.ts +0 -21
  81. package/dist/form/FieldSection.svelte +0 -86
  82. package/dist/form/FieldSection.svelte.d.ts +0 -34
  83. package/dist/form/Fieldset.svelte +0 -68
  84. package/dist/form/Fieldset.svelte.d.ts +0 -42
  85. package/dist/form/Form.svelte +0 -98
  86. package/dist/form/Form.svelte.d.ts +0 -33
  87. package/dist/form/Input.svelte +0 -287
  88. package/dist/form/Input.svelte.d.ts +0 -142
  89. package/dist/form/InputLength.svelte +0 -32
  90. package/dist/form/InputLength.svelte.d.ts +0 -21
  91. package/dist/form/Label.svelte +0 -27
  92. package/dist/form/Label.svelte.d.ts +0 -31
  93. package/dist/form/Select.svelte +0 -88
  94. package/dist/form/Select.svelte.d.ts +0 -97
  95. package/dist/form/client.svelte.d.ts +0 -45
  96. package/dist/form/client.svelte.js +0 -90
  97. package/dist/form/form.d.ts +0 -52
  98. package/dist/form/form.js +0 -326
  99. package/dist/form/index.d.ts +0 -15
  100. package/dist/form/index.js +0 -15
  101. package/dist/form/types.d.ts +0 -52
  102. package/dist/form/types.js +0 -1
  103. package/dist/grid/Column.svelte +0 -11
  104. package/dist/grid/Column.svelte.d.ts +0 -22
  105. package/dist/grid/Grid.svelte +0 -19
  106. package/dist/grid/Grid.svelte.d.ts +0 -24
  107. package/dist/grid/Row.svelte +0 -44
  108. package/dist/grid/Row.svelte.d.ts +0 -24
  109. package/dist/icons/Alert.svelte +0 -3
  110. package/dist/icons/Alert.svelte.d.ts +0 -23
  111. package/dist/icons/Copy.svelte +0 -3
  112. package/dist/icons/Copy.svelte.d.ts +0 -23
  113. package/dist/icons/Done.svelte +0 -3
  114. package/dist/icons/Done.svelte.d.ts +0 -23
  115. package/dist/icons/Error.svelte +0 -3
  116. package/dist/icons/Error.svelte.d.ts +0 -23
  117. package/dist/icons/Help.svelte +0 -3
  118. package/dist/icons/Help.svelte.d.ts +0 -23
  119. package/dist/icons/Hide.svelte +0 -3
  120. package/dist/icons/Hide.svelte.d.ts +0 -23
  121. package/dist/icons/Info.svelte +0 -3
  122. package/dist/icons/Info.svelte.d.ts +0 -23
  123. package/dist/icons/Link.svelte +0 -3
  124. package/dist/icons/Link.svelte.d.ts +0 -23
  125. package/dist/icons/MenuBurger.svelte +0 -3
  126. package/dist/icons/MenuBurger.svelte.d.ts +0 -23
  127. package/dist/icons/MenuDots.svelte +0 -3
  128. package/dist/icons/MenuDots.svelte.d.ts +0 -23
  129. package/dist/icons/Show.svelte +0 -3
  130. package/dist/icons/Show.svelte.d.ts +0 -23
  131. package/dist/icons/Success.svelte +0 -3
  132. package/dist/icons/Success.svelte.d.ts +0 -23
  133. package/dist/icons/Warning.svelte +0 -3
  134. package/dist/icons/Warning.svelte.d.ts +0 -23
  135. package/dist/icons/index.d.ts +0 -11
  136. package/dist/icons/index.js +0 -11
  137. package/dist/layout/Layout.svelte +0 -45
  138. package/dist/layout/Layout.svelte.d.ts +0 -25
  139. package/dist/layout/LayoutFooter.svelte +0 -21
  140. package/dist/layout/LayoutFooter.svelte.d.ts +0 -19
  141. package/dist/layout/LayoutGrid.svelte +0 -51
  142. package/dist/layout/LayoutGrid.svelte.d.ts +0 -38
  143. package/dist/layout/LayoutHeader.svelte +0 -94
  144. package/dist/layout/LayoutHeader.svelte.d.ts +0 -39
  145. package/dist/layout/LayoutSideMenu.svelte +0 -54
  146. package/dist/layout/LayoutSideMenu.svelte.d.ts +0 -25
  147. package/dist/layout/LayoutTypes.d.ts +0 -15
  148. package/dist/layout/LayoutTypes.js +0 -9
  149. package/dist/layout/Overlay.svelte +0 -20
  150. package/dist/layout/Overlay.svelte.d.ts +0 -35
  151. package/dist/layout/OverlayContainer.svelte +0 -28
  152. package/dist/layout/OverlayContainer.svelte.d.ts +0 -16
  153. package/dist/layout/OverlayLayer.svelte +0 -145
  154. package/dist/layout/OverlayLayer.svelte.d.ts +0 -22
  155. package/dist/layout/PageContent.svelte +0 -97
  156. package/dist/layout/PageContent.svelte.d.ts +0 -28
  157. package/dist/layout/Theme.svelte +0 -228
  158. package/dist/layout/Theme.svelte.d.ts +0 -24
  159. package/dist/layout/UIContent.svelte +0 -15
  160. package/dist/layout/UIContent.svelte.d.ts +0 -22
  161. package/dist/layout/index.d.ts +0 -7
  162. package/dist/layout/index.js +0 -7
  163. package/dist/layout/overlays.svelte.d.ts +0 -34
  164. package/dist/layout/overlays.svelte.js +0 -44
  165. package/dist/nav/Breadcrumb.svelte +0 -82
  166. package/dist/nav/Breadcrumb.svelte.d.ts +0 -33
  167. package/dist/nav/Menu.svelte +0 -177
  168. package/dist/nav/Menu.svelte.d.ts +0 -33
  169. package/dist/nav/MenuItem.svelte +0 -140
  170. package/dist/nav/MenuItem.svelte.d.ts +0 -26
  171. package/dist/nav/MenuTypes.d.ts +0 -58
  172. package/dist/nav/MenuTypes.js +0 -1
  173. package/dist/nav/NavMenu.svelte +0 -183
  174. package/dist/nav/NavMenu.svelte.d.ts +0 -20
  175. package/dist/nav/TabbedContent.svelte +0 -43
  176. package/dist/nav/TabbedContent.svelte.d.ts +0 -24
  177. package/dist/nav/Tabs.svelte +0 -118
  178. package/dist/nav/Tabs.svelte.d.ts +0 -26
  179. package/dist/nav/index.d.ts +0 -6
  180. package/dist/nav/index.js +0 -5
  181. package/dist/style.css +0 -853
  182. package/dist/typo/Clamp.svelte +0 -25
  183. package/dist/typo/Clamp.svelte.d.ts +0 -28
  184. package/dist/typo/H.svelte +0 -52
  185. package/dist/typo/H.svelte.d.ts +0 -32
  186. package/dist/typo/H1.svelte +0 -14
  187. package/dist/typo/H1.svelte.d.ts +0 -30
  188. package/dist/typo/H2.svelte +0 -14
  189. package/dist/typo/H2.svelte.d.ts +0 -30
  190. package/dist/typo/H3.svelte +0 -14
  191. package/dist/typo/H3.svelte.d.ts +0 -30
  192. package/dist/typo/H4.svelte +0 -14
  193. package/dist/typo/H4.svelte.d.ts +0 -30
  194. package/dist/typo/H5.svelte +0 -14
  195. package/dist/typo/H5.svelte.d.ts +0 -30
  196. package/dist/typo/H6.svelte +0 -14
  197. package/dist/typo/H6.svelte.d.ts +0 -30
  198. package/dist/typo/P.svelte +0 -34
  199. package/dist/typo/P.svelte.d.ts +0 -30
  200. package/dist/typo/index.d.ts +0 -9
  201. package/dist/typo/index.js +0 -9
  202. package/dist/utils/StringOrComponentOrSnippet.svelte +0 -14
  203. package/dist/utils/StringOrComponentOrSnippet.svelte.d.ts +0 -24
  204. package/dist/utils/attr.d.ts +0 -5
  205. package/dist/utils/attr.js +0 -21
  206. package/dist/utils/color.d.ts +0 -51
  207. package/dist/utils/color.js +0 -97
  208. package/dist/utils/defaults.d.ts +0 -4
  209. package/dist/utils/defaults.js +0 -1
  210. package/dist/utils/dom.d.ts +0 -15
  211. package/dist/utils/dom.js +0 -74
  212. package/dist/utils/hooks.server.d.ts +0 -2
  213. package/dist/utils/hooks.server.js +0 -16
  214. package/dist/utils/id.d.ts +0 -1
  215. package/dist/utils/id.js +0 -3
  216. package/dist/utils/index.d.ts +0 -8
  217. package/dist/utils/index.js +0 -5
  218. package/dist/utils/isSnippet.d.ts +0 -5
  219. package/dist/utils/isSnippet.js +0 -6
  220. package/dist/utils/keyboard.svelte.d.ts +0 -22
  221. package/dist/utils/keyboard.svelte.js +0 -161
  222. /package/dist/{utils → util}/transitions.d.ts +0 -0
  223. /package/dist/{utils → util}/transitions.js +0 -0
@@ -1,287 +0,0 @@
1
- <script lang="ts">import { getContext } from "svelte";
2
- import { createId } from "../utils/id.js";
3
- import Copy from "../icons/Copy.svelte";
4
- import Done from "../icons/Done.svelte";
5
- import Show from "../icons/Show.svelte";
6
- import Hide from "../icons/Hide.svelte";
7
- import Tooltip from "../display/Tooltip.svelte";
8
- import IconButton from "../display/IconButton.svelte";
9
- import { fieldChange, fieldKeydown, ignoreKeys } from "./client.svelte.js";
10
- import FieldError from "./FieldError.svelte";
11
- import { getFromObjWithStringPath } from "./form.js";
12
- import { ZodType } from "zod";
13
- import FieldContent from "./FieldContent.svelte";
14
- let {
15
- alt,
16
- attrs,
17
- autocapitalize,
18
- autocomplete,
19
- autocorrect,
20
- capture,
21
- checked,
22
- contained,
23
- copyable,
24
- defaultValue,
25
- dirname,
26
- disabled,
27
- enterkeyhint,
28
- height,
29
- help,
30
- id = $bindable(createId()),
31
- indeterminate,
32
- inputmode,
33
- label,
34
- labelTip,
35
- list,
36
- maxlength,
37
- minlength,
38
- max,
39
- min,
40
- multiple,
41
- name,
42
- pattern,
43
- placeholder,
44
- suffix,
45
- onblur,
46
- onchange,
47
- onclick,
48
- onfocus,
49
- onkeydown,
50
- onkeyup,
51
- onkeypress,
52
- prefix,
53
- readonly,
54
- required,
55
- results,
56
- shape = "rounded",
57
- size,
58
- src,
59
- step,
60
- tabindex,
61
- title,
62
- type,
63
- value = $bindable(),
64
- viewable,
65
- webkitdirectory,
66
- ...rest
67
- } = $props();
68
- let el = $state();
69
- let copyTitle = $state("Copy");
70
- let viewTitle = $state("Show");
71
- let copyTooltipOpen = $state(false);
72
- let copyBtnIcon = $state(Copy);
73
- let viewBtnIcon = $state(Show);
74
- const form = getContext("form");
75
- const field = $derived(form?.fields[name]);
76
- const issue = $derived(form?.issues?.find((issue2) => issue2.name === name));
77
- const validator = getContext("form.validators")?.[name];
78
- const data = form?.data;
79
- const originalData = form?.originalData;
80
- function view(e) {
81
- e.preventDefault();
82
- if (!el)
83
- return;
84
- if (el.type === "password") {
85
- el.type = "text";
86
- viewBtnIcon = Hide;
87
- viewTitle = "Hide";
88
- } else {
89
- el.type = "password";
90
- viewBtnIcon = Show;
91
- viewTitle = "Show";
92
- }
93
- el.focus();
94
- }
95
- function copy(e) {
96
- e.preventDefault();
97
- if (!el)
98
- return;
99
- if (navigator.clipboard) {
100
- navigator.clipboard.writeText(value);
101
- } else {
102
- el.focus();
103
- el.select();
104
- document.execCommand("copy");
105
- }
106
- copyBtnIcon = Done;
107
- copyTitle = "Copied!";
108
- copyTooltipOpen = true;
109
- setTimeout(() => {
110
- copyBtnIcon = Copy;
111
- copyTitle = "Copy";
112
- copyTooltipOpen = false;
113
- }, 1500);
114
- el.focus();
115
- }
116
- </script>
117
-
118
- {#snippet input()}
119
- <input
120
- bind:this={el}
121
- {alt}
122
- autocapitalize={typeof autocapitalize === 'string' ? autocapitalize : (typeof autocapitalize === 'boolean' ? (autocapitalize ? 'on' : 'off') : undefined)}
123
- {autocomplete}
124
- autocorrect={typeof autocorrect === 'boolean' ? (autocorrect ? 'on' : 'off') : undefined}
125
- {capture}
126
- {checked}
127
- {dirname}
128
- {disabled}
129
- {enterkeyhint}
130
- {height}
131
- {id}
132
- {indeterminate}
133
- {inputmode}
134
- {list}
135
- maxlength={maxlength ? maxlength : field?.maxlength}
136
- minlength={minlength ? minlength : field?.minlength}
137
- max={max ? max : field?.max}
138
- min={min ? min : field?.min}
139
- {multiple}
140
- {name}
141
- {onblur}
142
- {onclick}
143
- onchange={fieldChange(form, name, () => el, validator, onchange)}
144
- {onfocus}
145
- onkeydown={fieldKeydown(form, name, () => el, validator, onkeydown)}
146
- {onkeyup}
147
- {onkeypress}
148
- pattern={pattern ? pattern : field?.pattern}
149
- {placeholder}
150
- {readonly}
151
- required={required || field?.required}
152
- {results}
153
- {size}
154
- {src}
155
- {step}
156
- {tabindex}
157
- {title}
158
- {type}
159
- value={value || getFromObjWithStringPath(Object.assign(originalData ?? {}, data ?? {}), name) || form?.fields?.[name]?.defaultValue || ''}
160
- {webkitdirectory}
161
- {...rest}
162
- />
163
- {/snippet}
164
-
165
- <FieldContent
166
- {id}
167
- {label}
168
- {labelTip}
169
- contained={type === "checkbox" || type === "radio" ? false : true}
170
- direction={(type === "checkbox" || type === "radio") ? 'row' : 'column'}
171
- {field}
172
- {issue}
173
- {prefix}
174
- {suffix}
175
- >
176
-
177
- {#if type === "checkbox" || type === "radio"}
178
- {@render input()}
179
- {:else}
180
-
181
- {@render input()}
182
-
183
- {#if copyable}
184
- <Tooltip tip={copyTitle} open={copyTooltipOpen}>
185
- <IconButton icon={copyBtnIcon} onclick={copy} disabled={copyTooltipOpen} />
186
- </Tooltip>
187
- {/if}
188
-
189
- {#if type === "password" && viewable}
190
- <Tooltip tip={viewTitle}>
191
- <IconButton icon={viewBtnIcon} onclick={view} />
192
- </Tooltip>
193
- {/if}
194
-
195
- {/if}
196
- </FieldContent>
197
-
198
- <style>
199
- .FieldContainer {
200
- display: flex;
201
- gap: 0.75em;
202
- flex-direction: column;
203
- font-size: var(--font-size, 1em);
204
- }
205
- .Field {
206
- background-color: var(--field-bg);
207
- border: var(--field-border-size) var(--field-border-style) var(--field-border-color);
208
- border-radius: var(--field-radius);
209
- display: flex;
210
- padding-inline: 0.15em;
211
- }
212
- .Field:has(input:user-invalid),
213
- .Field.invalid {
214
- border-color: var(--field-border-color-error);
215
- }
216
- .Field > *:not(input) {
217
- flex-grow: 0;
218
- flex-shrink: 0;
219
- }
220
- .Fix {
221
- display: flex;
222
- align-items: center;
223
- padding-inline: 0.65em;
224
- font-size: 1em;
225
- line-height: 1.5;
226
- color: var(--text-subtle);
227
- }
228
- .Suffix {
229
- padding-inline-start: 0;
230
- }
231
- .Prefix {
232
- padding-inline-end: 0;
233
- }
234
- .Field:has(input:focus-visible) {
235
- outline: var(--focus-outline);
236
- }
237
- .Field:has(input:focus-visible:user-invalid),
238
- .Field.invalid:has(input:focus-visible) {
239
- outline-color: var(--focus-color-error);
240
- }
241
- /**
242
- * Input element
243
- */
244
- input:not([type="checkbox"]):not([type="radio"]) {
245
- border: none;
246
- flex-grow: 1;
247
- flex-shrink: 0;
248
- }
249
- input:not([type="checkbox"]):not([type="radio"]):focus-visible,
250
- input:not([type="checkbox"]):not([type="radio"]):active {
251
- outline: none;
252
- }
253
- .Field.hasPrefix input {
254
- padding-inline-start: 0.35em;
255
- }
256
- /**
257
- * Buttons
258
- */
259
- .Field :global(button:focus-visible) {
260
- outline: var(--focus-outline);
261
- outline-offset: 3px;
262
- border-radius: calc(var(--field-radius) - 2px);
263
- }
264
- /**
265
- * Checkbox and radio
266
- */
267
- input[type="checkbox"] {
268
- border-radius: 6px;
269
- }
270
-
271
- .FieldContainer.checkOrRadio {
272
- flex-direction: row-reverse;
273
- align-items: center;
274
- justify-content: start;
275
- gap: 1em;
276
- width: fit-content;
277
- }
278
- .FieldContainer.checkOrRadio .Field {
279
- display: flex;
280
- align-items: center;
281
- border: none;
282
- }
283
- .FieldContainer.checkOrRadio input:focus-visible,
284
- .FieldContainer.checkOrRadio input:hover {
285
- outline: var(--focus-outline);
286
- }
287
- </style>
@@ -1,142 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { Autocomplete } from "./types.js";
3
- declare const __propDef: {
4
- props: {
5
- alt?: string | undefined;
6
- attrs?: Record<string, string> | undefined;
7
- autocapitalize?: boolean | "none" | "off" | "on" | "sentences" | "words" | "characters" | undefined;
8
- autocomplete?: Autocomplete | undefined;
9
- autocorrect?: boolean | undefined;
10
- capture?: "user" | "environment" | undefined;
11
- checked?: boolean | undefined;
12
- contained?: boolean | undefined;
13
- copyable?: boolean | undefined;
14
- defaultValue?: string | undefined;
15
- dirname?: string | undefined;
16
- disabled?: boolean | undefined;
17
- enterkeyhint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
18
- height?: number | undefined;
19
- help?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
20
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
21
- }) | undefined;
22
- id?: import("svelte").Bindable<string | undefined>;
23
- indeterminate?: boolean | undefined;
24
- inputmode?: "none" | "search" | "text" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
25
- label?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
26
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
27
- }) | undefined;
28
- labelTip?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
29
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
30
- }) | undefined;
31
- list?: string | undefined;
32
- maxlength?: number | undefined;
33
- minlength?: number | undefined;
34
- max?: number | undefined;
35
- min?: number | undefined;
36
- multiple?: boolean | undefined;
37
- name: string;
38
- onblur?: ((e: FocusEvent) => void) | undefined;
39
- onchange?: ((e: Event) => void) | undefined;
40
- onclick?: ((e: MouseEvent) => void) | undefined;
41
- onfocus?: ((e: FocusEvent) => void) | undefined;
42
- onkeyup?: ((e: KeyboardEvent) => void) | undefined;
43
- onkeydown?: ((e: KeyboardEvent) => void) | undefined;
44
- onkeypress?: ((e: KeyboardEvent) => void) | undefined;
45
- pattern?: string | undefined;
46
- placeholder?: string | undefined;
47
- suffix?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
48
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
49
- }) | undefined;
50
- prefix?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
51
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
52
- }) | undefined;
53
- readonly?: boolean | undefined;
54
- required?: boolean | undefined;
55
- results?: number | undefined;
56
- shape?: "default" | "circle" | "rounded" | "pill" | undefined;
57
- size?: number | undefined;
58
- src?: string | undefined;
59
- spellcheck?: boolean | undefined;
60
- step?: number | undefined;
61
- tabindex?: number | undefined;
62
- title?: string | undefined;
63
- type?: "number" | "color" | "button" | "search" | "time" | "image" | "text" | "submit" | "email" | "tel" | "url" | "date" | "checkbox" | "radio" | "hidden" | "password" | "file" | "range" | "datetime-local" | "month" | "week" | undefined;
64
- value?: import("svelte").Bindable<string | undefined>;
65
- viewable?: boolean | undefined;
66
- webkitdirectory?: boolean | undefined;
67
- };
68
- events: {
69
- [evt: string]: CustomEvent<any>;
70
- };
71
- slots: {};
72
- };
73
- export type InputProps = typeof __propDef.props;
74
- export type InputEvents = typeof __propDef.events;
75
- export type InputSlots = typeof __propDef.slots;
76
- export default class Input extends SvelteComponent<InputProps, InputEvents, InputSlots> {
77
- constructor(options?: import("svelte").ComponentConstructorOptions<{
78
- alt?: string | undefined;
79
- attrs?: Record<string, string> | undefined;
80
- autocapitalize?: boolean | "none" | "off" | "on" | "sentences" | "words" | "characters" | undefined;
81
- autocomplete?: Autocomplete | undefined;
82
- autocorrect?: boolean | undefined;
83
- capture?: "user" | "environment" | undefined;
84
- checked?: boolean | undefined;
85
- contained?: boolean | undefined;
86
- copyable?: boolean | undefined;
87
- defaultValue?: string | undefined;
88
- dirname?: string | undefined;
89
- disabled?: boolean | undefined;
90
- enterkeyhint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
91
- height?: number | undefined;
92
- help?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
93
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
94
- }) | undefined;
95
- id?: import("svelte").Bindable<string | undefined>;
96
- indeterminate?: boolean | undefined;
97
- inputmode?: "none" | "search" | "text" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
98
- label?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
99
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
100
- }) | undefined;
101
- labelTip?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
102
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
103
- }) | undefined;
104
- list?: string | undefined;
105
- maxlength?: number | undefined;
106
- minlength?: number | undefined;
107
- max?: number | undefined;
108
- min?: number | undefined;
109
- multiple?: boolean | undefined;
110
- name: string;
111
- onblur?: ((e: FocusEvent) => void) | undefined;
112
- onchange?: ((e: Event) => void) | undefined;
113
- onclick?: ((e: MouseEvent) => void) | undefined;
114
- onfocus?: ((e: FocusEvent) => void) | undefined;
115
- onkeyup?: ((e: KeyboardEvent) => void) | undefined;
116
- onkeydown?: ((e: KeyboardEvent) => void) | undefined;
117
- onkeypress?: ((e: KeyboardEvent) => void) | undefined;
118
- pattern?: string | undefined;
119
- placeholder?: string | undefined;
120
- suffix?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
121
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
122
- }) | undefined;
123
- prefix?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
124
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
125
- }) | undefined;
126
- readonly?: boolean | undefined;
127
- required?: boolean | undefined;
128
- results?: number | undefined;
129
- shape?: "default" | "circle" | "rounded" | "pill" | undefined;
130
- size?: number | undefined;
131
- src?: string | undefined;
132
- spellcheck?: boolean | undefined;
133
- step?: number | undefined;
134
- tabindex?: number | undefined;
135
- title?: string | undefined;
136
- type?: "number" | "color" | "button" | "search" | "time" | "image" | "text" | "submit" | "email" | "tel" | "url" | "date" | "checkbox" | "radio" | "hidden" | "password" | "file" | "range" | "datetime-local" | "month" | "week" | undefined;
137
- value?: import("svelte").Bindable<string | undefined>;
138
- viewable?: boolean | undefined;
139
- webkitdirectory?: boolean | undefined;
140
- }>);
141
- }
142
- export {};
@@ -1,32 +0,0 @@
1
- <script lang="ts">let {
2
- value,
3
- maxlength
4
- } = $props();
5
- </script>
6
-
7
- {#if maxlength}
8
- <div class="InputLength">
9
- <div class="Length" class:warn={(value?.length || 0) > maxlength - 5}>
10
- {value?.length || 0}/{maxlength}
11
- </div>
12
- </div>
13
- {/if}
14
-
15
- <style>
16
- .InputLength {
17
- display: flex;
18
- justify-content: flex-end;
19
- align-items: center;
20
- font-size: 0.8rem;
21
- font-weight: 500;
22
- color: var(--text-subtle);
23
- }
24
- .InputLength .Length {
25
- display: flex;
26
- align-items: center;
27
- gap: 0.25rem;
28
- }
29
- .InputLength .Length.warn {
30
- color: var(--text-warn);
31
- }
32
- </style>
@@ -1,21 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- value: string;
5
- maxlength: number;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- };
12
- export type InputLengthProps = typeof __propDef.props;
13
- export type InputLengthEvents = typeof __propDef.events;
14
- export type InputLengthSlots = typeof __propDef.slots;
15
- export default class InputLength extends SvelteComponent<InputLengthProps, InputLengthEvents, InputLengthSlots> {
16
- constructor(options?: import("svelte").ComponentConstructorOptions<{
17
- value: string;
18
- maxlength: number;
19
- }>);
20
- }
21
- export {};
@@ -1,27 +0,0 @@
1
- <script lang="ts">import ContextTip from "../display/ContextTip.svelte";
2
- let {
3
- id,
4
- label,
5
- tip
6
- } = $props();
7
- </script>
8
-
9
- {#if label}
10
- <label for={id}>
11
- {#if typeof label === 'string'}
12
- {label}
13
- {:else}
14
- {@render label()}
15
- {/if}
16
- {#if tip}
17
- <ContextTip {tip} />
18
- {/if}
19
- </label>
20
- {/if}
21
-
22
- <style>
23
- label {
24
- cursor: var(--cursor, default);
25
- text-wrap: balance;
26
- }
27
- </style>
@@ -1,31 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- id?: string | undefined;
5
- label?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
6
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
7
- }) | undefined;
8
- tip?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
9
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
10
- }) | undefined;
11
- };
12
- events: {
13
- [evt: string]: CustomEvent<any>;
14
- };
15
- slots: {};
16
- };
17
- export type LabelProps = typeof __propDef.props;
18
- export type LabelEvents = typeof __propDef.events;
19
- export type LabelSlots = typeof __propDef.slots;
20
- export default class Label extends SvelteComponent<LabelProps, LabelEvents, LabelSlots> {
21
- constructor(options?: import("svelte").ComponentConstructorOptions<{
22
- id?: string | undefined;
23
- label?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
24
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
25
- }) | undefined;
26
- tip?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
27
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
28
- }) | undefined;
29
- }>);
30
- }
31
- export {};
@@ -1,88 +0,0 @@
1
- <script lang="ts">import { getContext } from "svelte";
2
- import Label from "./Label.svelte";
3
- import { createId } from "../utils/id.js";
4
- import Copy from "../icons/Copy.svelte";
5
- import Done from "../icons/Done.svelte";
6
- import Show from "../icons/Show.svelte";
7
- import Hide from "../icons/Hide.svelte";
8
- import Tooltip from "../display/Tooltip.svelte";
9
- import IconButton from "../display/IconButton.svelte";
10
- import { fieldChange, fieldKeydown, ignoreKeys } from "./client.svelte.js";
11
- import FieldError from "./FieldError.svelte";
12
- import { getFromObjWithStringPath } from "./form.js";
13
- import { ZodType } from "zod";
14
- import FieldContent from "./FieldContent.svelte";
15
- let {
16
- attrs,
17
- children,
18
- disabled,
19
- help,
20
- id = $bindable(createId()),
21
- label,
22
- labelTip,
23
- name,
24
- onblur,
25
- onchange,
26
- onclick,
27
- onfocus,
28
- onkeydown,
29
- onkeyup,
30
- onkeypress,
31
- options,
32
- placeholder,
33
- required,
34
- results,
35
- shape = "default",
36
- tabindex,
37
- value = $bindable()
38
- } = $props();
39
- let el = $state();
40
- const form = getContext("form");
41
- const field = $derived(form?.fields[name]);
42
- const issue = $derived(form?.issues?.find((issue2) => issue2.name === name));
43
- const validator = getContext("form.validators")?.[name];
44
- const data = form?.data;
45
- const originalData = form?.originalData;
46
- </script>
47
-
48
- <FieldContent
49
- {id}
50
- {label}
51
- {labelTip}
52
- {field}
53
- {issue}
54
- >
55
- <select
56
- bind:this={el}
57
- {disabled}
58
- {id}
59
- {name}
60
- {onblur}
61
- {onclick}
62
- onchange={fieldChange(form, name, () => el, validator, onchange)}
63
- {onfocus}
64
- onkeydown={fieldKeydown(form, name, () => el, validator, onkeydown)}
65
- {onkeyup}
66
- {onkeypress}
67
- {placeholder}
68
- required={required || field?.required}
69
- {results}
70
- {tabindex}
71
- value={value || getFromObjWithStringPath(Object.assign(originalData ?? {}, data ?? {}), name) || form?.fields?.[name]?.defaultValue || ''}
72
- >
73
- {#if children}
74
- {@render children()}
75
- {:else if options}
76
- {#each options as option}
77
- {#if typeof option === 'string'}
78
- <option value={option}>{option}</option>
79
- {:else}
80
- <option value={option.value}>{option.label}</option>
81
- {/if}
82
- {/each}
83
- {/if}
84
- </select>
85
- </FieldContent>
86
-
87
- <style>
88
- </style>