@webamoki/web-svelte 0.7.4 → 1.0.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 (120) hide show
  1. package/README.md +83 -3
  2. package/dist/components/form/Button.svelte +24 -23
  3. package/dist/components/form/Button.svelte.d.ts +2 -2
  4. package/dist/components/form/Errors.svelte +13 -13
  5. package/dist/components/form/FieldWrapper.svelte +57 -55
  6. package/dist/components/form/FieldWrapper.svelte.d.ts +4 -4
  7. package/dist/components/form/Form.svelte +18 -14
  8. package/dist/components/form/Form.svelte.d.ts +31 -22
  9. package/dist/components/form/IconInputWrapper.svelte +30 -29
  10. package/dist/components/form/IconInputWrapper.svelte.d.ts +7 -7
  11. package/dist/components/form/fields/ChoiceField.svelte +45 -43
  12. package/dist/components/form/fields/ChoiceField.svelte.d.ts +28 -23
  13. package/dist/components/form/fields/ChoiceMultiField.svelte +44 -42
  14. package/dist/components/form/fields/ChoiceMultiField.svelte.d.ts +28 -23
  15. package/dist/components/form/fields/DateField.svelte +42 -40
  16. package/dist/components/form/fields/DateField.svelte.d.ts +29 -22
  17. package/dist/components/form/fields/HexColorField.svelte +21 -19
  18. package/dist/components/form/fields/HexColorField.svelte.d.ts +24 -19
  19. package/dist/components/form/fields/MessageField.svelte +39 -60
  20. package/dist/components/form/fields/MessageField.svelte.d.ts +33 -24
  21. package/dist/components/form/fields/NumberField.svelte +38 -36
  22. package/dist/components/form/fields/NumberField.svelte.d.ts +32 -23
  23. package/dist/components/form/fields/PasswordField.svelte +45 -39
  24. package/dist/components/form/fields/PasswordField.svelte.d.ts +28 -21
  25. package/dist/components/form/fields/SelectField.svelte +84 -79
  26. package/dist/components/form/fields/SelectField.svelte.d.ts +39 -26
  27. package/dist/components/form/fields/SelectMultiField.svelte +90 -85
  28. package/dist/components/form/fields/SelectMultiField.svelte.d.ts +38 -25
  29. package/dist/components/form/fields/TextField.svelte +31 -29
  30. package/dist/components/form/fields/TextField.svelte.d.ts +32 -23
  31. package/dist/components/form/fields/TextFieldNullable.svelte +49 -47
  32. package/dist/components/form/fields/TextFieldNullable.svelte.d.ts +32 -23
  33. package/dist/components/form/fields/TimeField.svelte +66 -64
  34. package/dist/components/form/fields/TimeField.svelte.d.ts +33 -24
  35. package/dist/components/form/fields/WeekdayChoiceField.svelte +37 -35
  36. package/dist/components/form/fields/WeekdayChoiceField.svelte.d.ts +27 -22
  37. package/dist/components/form/fields/WeekdayChoiceMultiField.svelte +37 -35
  38. package/dist/components/form/fields/WeekdayChoiceMultiField.svelte.d.ts +27 -22
  39. package/dist/components/showcase/CodeBlock.svelte +41 -41
  40. package/dist/components/showcase/Container.svelte +7 -7
  41. package/dist/components/showcase/Preview.svelte +4 -4
  42. package/dist/components/showcase/Sidebar.svelte +4 -4
  43. package/dist/components/showcase/SidebarLink.svelte +3 -3
  44. package/dist/components/ui/choice/Choice.svelte +25 -22
  45. package/dist/components/ui/choice/Choice.svelte.d.ts +7 -7
  46. package/dist/components/ui/choice/ChoiceInternal.svelte +73 -69
  47. package/dist/components/ui/choice/ChoiceInternal.svelte.d.ts +9 -9
  48. package/dist/components/ui/choice/ChoiceMulti.svelte +59 -53
  49. package/dist/components/ui/choice/ChoiceMulti.svelte.d.ts +7 -7
  50. package/dist/components/ui/choice/WeekdayChoice.svelte +22 -21
  51. package/dist/components/ui/choice/WeekdayChoice.svelte.d.ts +6 -6
  52. package/dist/components/ui/choice/WeekdayChoiceMulti.svelte +24 -22
  53. package/dist/components/ui/choice/WeekdayChoiceMulti.svelte.d.ts +6 -6
  54. package/dist/components/ui/context-menu/ContextMenu.svelte +51 -50
  55. package/dist/components/ui/context-menu/ContextMenu.svelte.d.ts +1 -1
  56. package/dist/components/ui/context-menu/ContextMenuContent.svelte +92 -91
  57. package/dist/components/ui/context-menu/ContextMenuItem.svelte +26 -25
  58. package/dist/components/ui/context-menu/ContextMenuItem.svelte.d.ts +1 -1
  59. package/dist/components/ui/context-menu/ContextMenuTrigger.svelte +16 -15
  60. package/dist/components/ui/context-menu/context-menu-state.svelte.d.ts +3 -3
  61. package/dist/components/ui/context-menu/context-menu-state.svelte.js +15 -15
  62. package/dist/components/ui/drag-drop/Draggable.svelte +73 -72
  63. package/dist/components/ui/drag-drop/Draggable.svelte.d.ts +2 -2
  64. package/dist/components/ui/drag-drop/Dropzone.svelte +56 -54
  65. package/dist/components/ui/drag-drop/Dropzone.svelte.d.ts +3 -3
  66. package/dist/components/ui/drag-drop/drag-manager.d.ts +2 -2
  67. package/dist/components/ui/drag-drop/drag-manager.js +9 -9
  68. package/dist/components/ui/index.d.ts +2 -2
  69. package/dist/components/ui/index.js +5 -5
  70. package/dist/components/ui/search/SearchBar.svelte +18 -18
  71. package/dist/components/ui/search/SearchBar.svelte.d.ts +2 -2
  72. package/dist/highlight.js +2 -2
  73. package/dist/server/form-handler.d.ts +12 -12
  74. package/dist/server/form-handler.js +17 -17
  75. package/dist/server/form-processor.d.ts +1 -1
  76. package/dist/server/form-processor.js +0 -1
  77. package/dist/shadcn/components/ui/button/button.svelte +72 -71
  78. package/dist/shadcn/components/ui/button/button.svelte.d.ts +23 -23
  79. package/dist/shadcn/components/ui/button/index.d.ts +1 -1
  80. package/dist/shadcn/components/ui/button/index.js +2 -2
  81. package/dist/shadcn/components/ui/input/index.d.ts +1 -1
  82. package/dist/shadcn/components/ui/input/index.js +2 -2
  83. package/dist/shadcn/components/ui/input/input.svelte +35 -32
  84. package/dist/shadcn/components/ui/input/input.svelte.d.ts +2 -2
  85. package/dist/shadcn/components/ui/select/index.d.ts +6 -6
  86. package/dist/shadcn/components/ui/select/index.js +7 -7
  87. package/dist/shadcn/components/ui/select/select-content.svelte +35 -34
  88. package/dist/shadcn/components/ui/select/select-content.svelte.d.ts +1 -1
  89. package/dist/shadcn/components/ui/select/select-group-heading.svelte +15 -14
  90. package/dist/shadcn/components/ui/select/select-group.svelte +2 -2
  91. package/dist/shadcn/components/ui/select/select-item.svelte +31 -31
  92. package/dist/shadcn/components/ui/select/select-label.svelte +14 -13
  93. package/dist/shadcn/components/ui/select/select-label.svelte.d.ts +1 -1
  94. package/dist/shadcn/components/ui/select/select-scroll-down-button.svelte +13 -13
  95. package/dist/shadcn/components/ui/select/select-scroll-up-button.svelte +13 -13
  96. package/dist/shadcn/components/ui/select/select-separator.svelte +13 -12
  97. package/dist/shadcn/components/ui/select/select-trigger.svelte +26 -26
  98. package/dist/shadcn/components/ui/select/select-trigger.svelte.d.ts +2 -2
  99. package/dist/shadcn/components/ui/separator/separator.svelte +14 -14
  100. package/dist/shadcn/components/ui/textarea/textarea.svelte +22 -21
  101. package/dist/shadcn/components/ui/textarea/textarea.svelte.d.ts +1 -1
  102. package/dist/shadcn/utils.d.ts +4 -4
  103. package/dist/utils/datetime/index.d.ts +68 -68
  104. package/dist/utils/datetime/index.js +124 -124
  105. package/dist/utils/email/README.md +60 -60
  106. package/dist/utils/email/aws-signer.d.ts +1 -1
  107. package/dist/utils/email/aws-signer.js +39 -39
  108. package/dist/utils/email/ses.d.ts +8 -10
  109. package/dist/utils/email/ses.js +15 -23
  110. package/dist/utils/form/index.d.ts +11 -11
  111. package/dist/utils/form/index.js +23 -24
  112. package/dist/utils/form/virtual-form.d.ts +5 -5
  113. package/dist/utils/form/virtual-form.js +58 -58
  114. package/dist/utils/search.d.ts +1 -1
  115. package/dist/utils/search.js +22 -22
  116. package/dist/utils/types/arktype.d.ts +2 -2
  117. package/dist/utils/types/arktype.js +3 -3
  118. package/dist/utils/types/db.d.ts +2 -1
  119. package/dist/utils/types/db.js +7 -7
  120. package/package.json +69 -54
@@ -1,35 +1,44 @@
1
- import type { Component } from 'svelte';
2
- import type { FormPath } from 'sveltekit-superforms';
3
- import { type FieldWrapperProps } from '../FieldWrapper.svelte';
1
+ export default MessageField;
2
+ type MessageField<T extends Record<string, unknown>, U extends FormPath<T>, M> = SvelteComponent<Props, {}, {}> & {
3
+ $$bindings?: "value" | undefined;
4
+ } & {};
5
+ declare const MessageField: $$IsomorphicComponent;
6
+ import { FormPath } from 'sveltekit-superforms';
7
+ type Props = FieldWrapperProps<T, U, M> & {
8
+ class?: string | undefined;
9
+ defaultHeight?: number | undefined;
10
+ icon?: Component<any, any, string> | undefined;
11
+ placeholder?: string | undefined;
12
+ resize?: boolean | undefined;
13
+ value?: string | undefined;
14
+ };
15
+ interface $$IsomorphicComponent {
16
+ new <T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import("svelte").ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U, M>["props"]>>): import("svelte").SvelteComponent<ReturnType<__sveltets_Render<T, U, M>["props"]>, ReturnType<__sveltets_Render<T, U, M>["events"]>, ReturnType<__sveltets_Render<T, U, M>["slots"]>> & {
17
+ $$bindings?: ReturnType<__sveltets_Render<T, U, M>["bindings"]>;
18
+ } & ReturnType<__sveltets_Render<T, U, M>["exports"]>;
19
+ <T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<T, U, M>["props"]> & {}): ReturnType<__sveltets_Render<T, U, M>["exports"]>;
20
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>["bindings"]>;
21
+ }
22
+ declare class __sveltets_Render<T extends Record<string, unknown>, U extends FormPath<T>, M> {
23
+ props(): ReturnType<typeof $$render<T, U, M>>["props"];
24
+ events(): ReturnType<typeof $$render<T, U, M>>["events"];
25
+ slots(): ReturnType<typeof $$render<T, U, M>>["slots"];
26
+ bindings(): "value";
27
+ exports(): {};
28
+ }
4
29
  declare function $$render<T extends Record<string, unknown>, U extends FormPath<T>, M>(): {
5
30
  props: FieldWrapperProps<T, U, M> & {
6
- value?: string;
7
31
  class?: string;
8
- placeholder?: string;
9
32
  defaultHeight?: number;
10
- showLock?: boolean;
11
- defaultLocked?: boolean;
12
33
  icon?: Component;
34
+ placeholder?: string;
35
+ resize?: boolean;
36
+ value?: string;
13
37
  };
14
38
  exports: {};
15
39
  bindings: "value";
16
40
  slots: {};
17
41
  events: {};
18
42
  };
19
- declare class __sveltets_Render<T extends Record<string, unknown>, U extends FormPath<T>, M> {
20
- props(): ReturnType<typeof $$render<T, U, M>>['props'];
21
- events(): ReturnType<typeof $$render<T, U, M>>['events'];
22
- slots(): ReturnType<typeof $$render<T, U, M>>['slots'];
23
- bindings(): "value";
24
- exports(): {};
25
- }
26
- interface $$IsomorphicComponent {
27
- new <T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U, M>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U, M>['props']>, ReturnType<__sveltets_Render<T, U, M>['events']>, ReturnType<__sveltets_Render<T, U, M>['slots']>> & {
28
- $$bindings?: ReturnType<__sveltets_Render<T, U, M>['bindings']>;
29
- } & ReturnType<__sveltets_Render<T, U, M>['exports']>;
30
- <T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<T, U, M>['props']> & {}): ReturnType<__sveltets_Render<T, U, M>['exports']>;
31
- z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
32
- }
33
- declare const MessageField: $$IsomorphicComponent;
34
- type MessageField<T extends Record<string, unknown>, U extends FormPath<T>, M> = InstanceType<typeof MessageField<T, U, M>>;
35
- export default MessageField;
43
+ import { FieldWrapperProps } from '../FieldWrapper.svelte';
44
+ import { Component } from 'svelte';
@@ -1,41 +1,43 @@
1
- <script lang="ts" generics="V,T extends Record<string, unknown>, U extends FormPath<T>, M">
2
- import IconInputWrapper from '../IconInputWrapper.svelte';
3
- import { Input } from '../../../shadcn/components/ui/input/index.js';
4
- import { cn } from '../../../shadcn/utils.js';
5
- import type { Component } from 'svelte';
6
- import type { FormPath } from 'sveltekit-superforms';
7
- import FieldWrapper, { type FieldWrapperProps } from '../FieldWrapper.svelte';
1
+ <script generics="V,T extends Record<string, unknown>, U extends FormPath<T>, M" lang="ts">
2
+ import type { Component } from 'svelte';
3
+ import type { FormPath } from 'sveltekit-superforms';
8
4
 
9
- interface Props extends FieldWrapperProps<T, U, M> {
10
- value?: V;
11
- class?: string;
12
- step?: HTMLInputElement['step'];
13
- placeholder?: string;
14
- icon?: Component;
15
- }
16
- let {
17
- value = $bindable(),
18
- class: className,
19
- step,
20
- placeholder,
21
- icon,
22
- ...fieldProps
23
- }: Props = $props();
5
+ import IconInputWrapper from '../IconInputWrapper.svelte';
6
+ import { Input } from '../../../shadcn/components/ui/input/index.js';
7
+ import { cn } from '../../../shadcn/utils.js';
8
+
9
+ import FieldWrapper, { type FieldWrapperProps } from '../FieldWrapper.svelte';
10
+
11
+ interface Props extends FieldWrapperProps<T, U, M> {
12
+ class?: string;
13
+ icon?: Component;
14
+ placeholder?: string;
15
+ step?: HTMLInputElement['step'];
16
+ value?: V;
17
+ }
18
+ let {
19
+ class: className,
20
+ icon,
21
+ placeholder,
22
+ step,
23
+ value = $bindable(),
24
+ ...fieldProps
25
+ }: Props = $props();
24
26
  </script>
25
27
 
26
28
  <FieldWrapper {...fieldProps}>
27
- {#snippet formElem(props)}
28
- <IconInputWrapper {icon}>
29
- {#snippet children({ class: iconClass })}
30
- <Input
31
- type="number"
32
- bind:value
33
- class={cn(iconClass, className)}
34
- {placeholder}
35
- {step}
36
- {...props}
37
- />
38
- {/snippet}
39
- </IconInputWrapper>
40
- {/snippet}
29
+ {#snippet formElem(props)}
30
+ <IconInputWrapper {icon}>
31
+ {#snippet children({ class: iconClass })}
32
+ <Input
33
+ class={cn(iconClass, className)}
34
+ {placeholder}
35
+ {step}
36
+ type="number"
37
+ bind:value
38
+ {...props}
39
+ />
40
+ {/snippet}
41
+ </IconInputWrapper>
42
+ {/snippet}
41
43
  </FieldWrapper>
@@ -1,33 +1,42 @@
1
- import type { Component } from 'svelte';
2
- import type { FormPath } from 'sveltekit-superforms';
3
- import { type FieldWrapperProps } from '../FieldWrapper.svelte';
1
+ export default NumberField;
2
+ type NumberField<V, T extends Record<string, unknown>, U extends FormPath<T>, M> = SvelteComponent<Props, {}, {}> & {
3
+ $$bindings?: "value" | undefined;
4
+ } & {};
5
+ declare const NumberField: $$IsomorphicComponent;
6
+ import { FormPath } from 'sveltekit-superforms';
7
+ type Props = FieldWrapperProps<T, U, M> & {
8
+ class?: string | undefined;
9
+ icon?: Component<any, any, string> | undefined;
10
+ placeholder?: string | undefined;
11
+ step?: string | undefined;
12
+ value?: V | undefined;
13
+ };
14
+ interface $$IsomorphicComponent {
15
+ new <V, T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import("svelte").ComponentConstructorOptions<ReturnType<__sveltets_Render<V, T, U, M>["props"]>>): import("svelte").SvelteComponent<ReturnType<__sveltets_Render<V, T, U, M>["props"]>, ReturnType<__sveltets_Render<V, T, U, M>["events"]>, ReturnType<__sveltets_Render<V, T, U, M>["slots"]>> & {
16
+ $$bindings?: ReturnType<__sveltets_Render<V, T, U, M>["bindings"]>;
17
+ } & ReturnType<__sveltets_Render<V, T, U, M>["exports"]>;
18
+ <V, T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<V, T, U, M>["props"]> & {}): ReturnType<__sveltets_Render<V, T, U, M>["exports"]>;
19
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any>["bindings"]>;
20
+ }
21
+ declare class __sveltets_Render<V, T extends Record<string, unknown>, U extends FormPath<T>, M> {
22
+ props(): ReturnType<typeof $$render<V, T, U, M>>["props"];
23
+ events(): ReturnType<typeof $$render<V, T, U, M>>["events"];
24
+ slots(): ReturnType<typeof $$render<V, T, U, M>>["slots"];
25
+ bindings(): "value";
26
+ exports(): {};
27
+ }
4
28
  declare function $$render<V, T extends Record<string, unknown>, U extends FormPath<T>, M>(): {
5
29
  props: FieldWrapperProps<T, U, M> & {
6
- value?: V;
7
30
  class?: string;
8
- step?: HTMLInputElement["step"];
9
- placeholder?: string;
10
31
  icon?: Component;
32
+ placeholder?: string;
33
+ step?: HTMLInputElement["step"];
34
+ value?: V;
11
35
  };
12
36
  exports: {};
13
37
  bindings: "value";
14
38
  slots: {};
15
39
  events: {};
16
40
  };
17
- declare class __sveltets_Render<V, T extends Record<string, unknown>, U extends FormPath<T>, M> {
18
- props(): ReturnType<typeof $$render<V, T, U, M>>['props'];
19
- events(): ReturnType<typeof $$render<V, T, U, M>>['events'];
20
- slots(): ReturnType<typeof $$render<V, T, U, M>>['slots'];
21
- bindings(): "value";
22
- exports(): {};
23
- }
24
- interface $$IsomorphicComponent {
25
- new <V, T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<V, T, U, M>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<V, T, U, M>['props']>, ReturnType<__sveltets_Render<V, T, U, M>['events']>, ReturnType<__sveltets_Render<V, T, U, M>['slots']>> & {
26
- $$bindings?: ReturnType<__sveltets_Render<V, T, U, M>['bindings']>;
27
- } & ReturnType<__sveltets_Render<V, T, U, M>['exports']>;
28
- <V, T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<V, T, U, M>['props']> & {}): ReturnType<__sveltets_Render<V, T, U, M>['exports']>;
29
- z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any>['bindings']>;
30
- }
31
- declare const NumberField: $$IsomorphicComponent;
32
- type NumberField<V, T extends Record<string, unknown>, U extends FormPath<T>, M> = InstanceType<typeof NumberField<V, T, U, M>>;
33
- export default NumberField;
41
+ import { FieldWrapperProps } from '../FieldWrapper.svelte';
42
+ import { Component } from 'svelte';
@@ -1,46 +1,52 @@
1
- <script lang="ts" generics="T extends Record<string, unknown>, U extends FormPath<T>, M">
2
- import IconInputWrapper from '../IconInputWrapper.svelte';
3
- import { Input } from '../../../shadcn/components/ui/input/index.js';
4
- import { cn } from '../../../shadcn/utils.js';
5
- import { Eye, EyeOff } from '@lucide/svelte';
6
- import type { Component } from 'svelte';
7
- import type { FormPath } from 'sveltekit-superforms';
8
- import FieldWrapper, { type FieldWrapperProps } from '../FieldWrapper.svelte';
1
+ <script generics="T extends Record<string, unknown>, U extends FormPath<T>, M" lang="ts">
2
+ import type { Component } from 'svelte';
3
+ import type { FormPath } from 'sveltekit-superforms';
9
4
 
10
- interface Props extends FieldWrapperProps<T, U, M> {
11
- value?: string;
12
- class?: string;
13
- icon?: Component;
14
- }
15
- let { value = $bindable(), class: className, icon, ...fieldProps }: Props = $props();
5
+ import IconInputWrapper from '../IconInputWrapper.svelte';
6
+ import { Input } from '../../../shadcn/components/ui/input/index.js';
7
+ import { cn } from '../../../shadcn/utils.js';
8
+ import { Eye, EyeOff } from '@lucide/svelte';
16
9
 
17
- let show = $state(false);
18
- let inputType = $derived(show ? 'text' : 'password');
10
+ import FieldWrapper, { type FieldWrapperProps } from '../FieldWrapper.svelte';
11
+
12
+ interface Props extends FieldWrapperProps<T, U, M> {
13
+ class?: string;
14
+ icon?: Component;
15
+ value?: string;
16
+ }
17
+ let { class: className, icon, value = $bindable(), ...fieldProps }: Props = $props();
18
+
19
+ let show = $state(false);
20
+ let inputType = $derived(show ? 'text' : 'password');
19
21
  </script>
20
22
 
21
23
  <FieldWrapper {...fieldProps}>
22
- {#snippet formElem(props)}
23
- <div class="flex w-full items-stretch gap-2">
24
- <!-- Input itself with optional left icon -->
25
- <IconInputWrapper {icon} flex>
26
- {#snippet children({ class: iconClass })}
27
- <Input type={inputType} bind:value class={cn(iconClass, className)} {...props} />
28
- {/snippet}
29
- </IconInputWrapper>
24
+ {#snippet formElem(props)}
25
+ <div class="flex h-fit w-full items-center gap-2">
26
+ <!-- Input itself with optional left icon -->
27
+ <IconInputWrapper flex {icon}>
28
+ {#snippet children({ class: iconClass })}
29
+ <Input class={cn(iconClass, className)} type={inputType} bind:value {...props} />
30
+ {/snippet}
31
+ </IconInputWrapper>
30
32
 
31
- <!-- Show/hide button outside input -->
32
- <button
33
- type="button"
34
- class="flex shrink-0 cursor-pointer items-center justify-center rounded-lg border border-gray-300 px-4 text-gray-500 transition-all hover:bg-gray-50 focus:border-transparent focus:ring-2 focus:ring-primary focus:outline-none"
35
- onclick={() => (show = !show)}
36
- aria-label={show ? 'Hide password' : 'Show password'}
37
- >
38
- {#if show}
39
- <EyeOff class="size-5" />
40
- {:else}
41
- <Eye class="size-5" />
42
- {/if}
43
- </button>
44
- </div>
45
- {/snippet}
33
+ <!-- Show/hide button outside input -->
34
+ <button
35
+ class={cn(
36
+ 'aspect-square h-full items-center justify-center p-3',
37
+ 'rounded-lg border border-gray-300 text-gray-500 hover:bg-gray-50 focus:border-transparent',
38
+ 'cursor-pointer transition-all focus:ring-2 focus:ring-primary focus:outline-none'
39
+ )}
40
+ aria-label={show ? 'Hide password' : 'Show password'}
41
+ onclick={() => (show = !show)}
42
+ type="button"
43
+ >
44
+ {#if show}
45
+ <EyeOff class="size-6" />
46
+ {:else}
47
+ <Eye class="size-6" />
48
+ {/if}
49
+ </button>
50
+ </div>
51
+ {/snippet}
46
52
  </FieldWrapper>
@@ -1,31 +1,38 @@
1
- import type { Component } from 'svelte';
2
- import type { FormPath } from 'sveltekit-superforms';
3
- import { type FieldWrapperProps } from '../FieldWrapper.svelte';
1
+ export default PasswordField;
2
+ type PasswordField<T extends Record<string, unknown>, U extends FormPath<T>, M> = SvelteComponent<Props, {}, {}> & {
3
+ $$bindings?: "value" | undefined;
4
+ } & {};
5
+ declare const PasswordField: $$IsomorphicComponent;
6
+ import { FormPath } from 'sveltekit-superforms';
7
+ type Props = FieldWrapperProps<T, U, M> & {
8
+ class?: string | undefined;
9
+ icon?: Component<any, any, string> | undefined;
10
+ value?: string | undefined;
11
+ };
12
+ interface $$IsomorphicComponent {
13
+ new <T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import("svelte").ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U, M>["props"]>>): import("svelte").SvelteComponent<ReturnType<__sveltets_Render<T, U, M>["props"]>, ReturnType<__sveltets_Render<T, U, M>["events"]>, ReturnType<__sveltets_Render<T, U, M>["slots"]>> & {
14
+ $$bindings?: ReturnType<__sveltets_Render<T, U, M>["bindings"]>;
15
+ } & ReturnType<__sveltets_Render<T, U, M>["exports"]>;
16
+ <T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<T, U, M>["props"]> & {}): ReturnType<__sveltets_Render<T, U, M>["exports"]>;
17
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>["bindings"]>;
18
+ }
19
+ declare class __sveltets_Render<T extends Record<string, unknown>, U extends FormPath<T>, M> {
20
+ props(): ReturnType<typeof $$render<T, U, M>>["props"];
21
+ events(): ReturnType<typeof $$render<T, U, M>>["events"];
22
+ slots(): ReturnType<typeof $$render<T, U, M>>["slots"];
23
+ bindings(): "value";
24
+ exports(): {};
25
+ }
4
26
  declare function $$render<T extends Record<string, unknown>, U extends FormPath<T>, M>(): {
5
27
  props: FieldWrapperProps<T, U, M> & {
6
- value?: string;
7
28
  class?: string;
8
29
  icon?: Component;
30
+ value?: string;
9
31
  };
10
32
  exports: {};
11
33
  bindings: "value";
12
34
  slots: {};
13
35
  events: {};
14
36
  };
15
- declare class __sveltets_Render<T extends Record<string, unknown>, U extends FormPath<T>, M> {
16
- props(): ReturnType<typeof $$render<T, U, M>>['props'];
17
- events(): ReturnType<typeof $$render<T, U, M>>['events'];
18
- slots(): ReturnType<typeof $$render<T, U, M>>['slots'];
19
- bindings(): "value";
20
- exports(): {};
21
- }
22
- interface $$IsomorphicComponent {
23
- new <T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, U, M>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, U, M>['props']>, ReturnType<__sveltets_Render<T, U, M>['events']>, ReturnType<__sveltets_Render<T, U, M>['slots']>> & {
24
- $$bindings?: ReturnType<__sveltets_Render<T, U, M>['bindings']>;
25
- } & ReturnType<__sveltets_Render<T, U, M>['exports']>;
26
- <T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<T, U, M>['props']> & {}): ReturnType<__sveltets_Render<T, U, M>['exports']>;
27
- z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
28
- }
29
- declare const PasswordField: $$IsomorphicComponent;
30
- type PasswordField<T extends Record<string, unknown>, U extends FormPath<T>, M> = InstanceType<typeof PasswordField<T, U, M>>;
31
- export default PasswordField;
37
+ import { FieldWrapperProps } from '../FieldWrapper.svelte';
38
+ import { Component } from 'svelte';
@@ -1,89 +1,94 @@
1
1
  <script
2
- lang="ts"
3
- generics="I,V, K extends string | number,T extends Record<string, unknown>, U extends FormPath<T>, M"
2
+ generics="I,V, K extends number | string,T extends Record<string, unknown>, U extends FormPath<T>, M"
3
+ lang="ts"
4
4
  >
5
- import IconInputWrapper from '../IconInputWrapper.svelte';
6
- import {
7
- Select,
8
- SelectContent,
9
- SelectGroup,
10
- SelectItem,
11
- SelectLabel,
12
- SelectTrigger
13
- } from '../../../shadcn/components/ui/select/index.js';
14
- import { cn } from '../../../shadcn/utils.js';
15
- import type { Component } from 'svelte';
16
- import type { FormPath } from 'sveltekit-superforms';
17
- import FieldWrapper, { type FieldWrapperProps } from '../FieldWrapper.svelte';
5
+ import type { Component } from 'svelte';
6
+ import type { FormPath } from 'sveltekit-superforms';
18
7
 
19
- interface Props extends FieldWrapperProps<T, U, M> {
20
- value?: V;
21
- items: readonly I[];
22
- getKey: (item: I) => K;
23
- getLabel: (item: I) => string;
24
- getValue: (item: I) => V;
25
- onchange?: (value: V | undefined) => void;
26
- class?: string;
27
- placeholder: string;
28
- icon?: Component;
29
- }
30
- let {
31
- value = $bindable(undefined),
32
- class: className,
33
- getKey: _getKey,
34
- getLabel,
35
- getValue,
36
- onchange,
37
- placeholder,
38
- items,
39
- icon,
40
- ...fieldProps
41
- }: Props = $props();
42
- let valueToItem: Map<V, I> = new Map(items.map((item) => [getValue(item), item] as const));
43
- let keyToItem: Map<string, I> = new Map(items.map((item) => [getKey(item), item] as const));
8
+ import IconInputWrapper from '../IconInputWrapper.svelte';
9
+ import {
10
+ Select,
11
+ SelectContent,
12
+ SelectGroup,
13
+ SelectItem,
14
+ SelectLabel,
15
+ SelectTrigger
16
+ } from '../../../shadcn/components/ui/select/index.js';
17
+ import { cn } from '../../../shadcn/utils.js';
44
18
 
45
- // Enforce string key function
46
- function getKey(item: I) {
47
- const key = _getKey(item);
48
- return key.toString();
49
- }
19
+ import FieldWrapper, { type FieldWrapperProps } from '../FieldWrapper.svelte';
50
20
 
51
- function getKeyFromValue(): string {
52
- if (value === undefined) return '';
53
- const item = valueToItem.get(value);
54
- if (item === undefined) return '';
55
- return getKey(item);
56
- }
21
+ interface Props extends FieldWrapperProps<T, U, M> {
22
+ class?: string;
23
+ getKey: (item: I) => K;
24
+ getLabel: (item: I) => string;
25
+ getValue: (item: I) => V;
26
+ icon?: Component;
27
+ items: readonly I[];
28
+ onchange?: (value: undefined | V) => void;
29
+ placeholder: string;
30
+ value?: V;
31
+ }
32
+ let {
33
+ class: className,
34
+ getKey: _getKey,
35
+ getLabel,
36
+ getValue,
37
+ icon,
38
+ items,
39
+ onchange,
40
+ placeholder,
41
+ value = $bindable(undefined),
42
+ ...fieldProps
43
+ }: Props = $props();
44
+ // Items property shouldn't be updated, ignore warning
45
+ // svelte-ignore state_referenced_locally
46
+ let valueToItem: Map<V, I> = new Map(items.map((item) => [getValue(item), item] as const));
47
+ // svelte-ignore state_referenced_locally
48
+ let keyToItem: Map<string, I> = new Map(items.map((item) => [getKey(item), item] as const));
57
49
 
58
- function setValueFromKey(key: string) {
59
- const item = keyToItem.get(key);
60
- if (item === undefined) return;
61
- const newValue = getValue(item);
62
- value = newValue;
63
- onchange?.(newValue);
64
- }
50
+ // Enforce string key function
51
+ function getKey(item: I) {
52
+ const key = _getKey(item);
53
+ return key.toString();
54
+ }
55
+
56
+ function getKeyFromValue(): string {
57
+ if (value === undefined) return '';
58
+ const item = valueToItem.get(value);
59
+ if (item === undefined) return '';
60
+ return getKey(item);
61
+ }
62
+
63
+ function setValueFromKey(key: string) {
64
+ const item = keyToItem.get(key);
65
+ if (item === undefined) return;
66
+ const newValue = getValue(item);
67
+ value = newValue;
68
+ onchange?.(newValue);
69
+ }
65
70
  </script>
66
71
 
67
72
  <FieldWrapper {...fieldProps}>
68
- {#snippet formElem(props)}
69
- <Select type="single" {...props} bind:value={getKeyFromValue, setValueFromKey}>
70
- <IconInputWrapper {icon}>
71
- {#snippet children({ class: iconClass })}
72
- <SelectTrigger class={cn('w-full cursor-pointer truncate', iconClass, className)}>
73
- <span class="block truncate">
74
- {value ? getLabel(valueToItem.get(value)!) : placeholder}
75
- </span>
76
- </SelectTrigger>
77
- {/snippet}
78
- </IconInputWrapper>
79
- <SelectContent>
80
- <SelectGroup>
81
- <SelectLabel>{fieldProps.label}</SelectLabel>
82
- {#each items as item (getKey(item))}
83
- <SelectItem class="cursor-pointer" value={getKey(item)} label={getLabel(item)} />
84
- {/each}
85
- </SelectGroup>
86
- </SelectContent>
87
- </Select>
88
- {/snippet}
73
+ {#snippet formElem(props)}
74
+ <Select type="single" {...props} bind:value={getKeyFromValue, setValueFromKey}>
75
+ <IconInputWrapper {icon}>
76
+ {#snippet children({ class: iconClass })}
77
+ <SelectTrigger class={cn('w-full cursor-pointer truncate', iconClass, className)}>
78
+ <span class="block truncate">
79
+ {value ? getLabel(valueToItem.get(value)!) : placeholder}
80
+ </span>
81
+ </SelectTrigger>
82
+ {/snippet}
83
+ </IconInputWrapper>
84
+ <SelectContent>
85
+ <SelectGroup>
86
+ <SelectLabel>{fieldProps.label}</SelectLabel>
87
+ {#each items as item (getKey(item))}
88
+ <SelectItem class="cursor-pointer" label={getLabel(item)} value={getKey(item)} />
89
+ {/each}
90
+ </SelectGroup>
91
+ </SelectContent>
92
+ </Select>
93
+ {/snippet}
89
94
  </FieldWrapper>
@@ -1,37 +1,50 @@
1
- import type { Component } from 'svelte';
2
- import type { FormPath } from 'sveltekit-superforms';
3
- import { type FieldWrapperProps } from '../FieldWrapper.svelte';
4
- declare function $$render<I, V, K extends string | number, T extends Record<string, unknown>, U extends FormPath<T>, M>(): {
1
+ export default SelectField;
2
+ type SelectField<I, V, K extends number | string, T extends Record<string, unknown>, U extends FormPath<T>, M> = SvelteComponent<Props, {}, {}> & {
3
+ $$bindings?: "value" | undefined;
4
+ } & {};
5
+ declare const SelectField: $$IsomorphicComponent;
6
+ import { FormPath } from 'sveltekit-superforms';
7
+ type Props = FieldWrapperProps<T, U, M> & {
8
+ class?: string | undefined;
9
+ getKey: (item: I) => K;
10
+ getLabel: (item: I) => string;
11
+ getValue: (item: I) => V;
12
+ icon?: Component<any, any, string> | undefined;
13
+ items: readonly I[];
14
+ onchange?: ((value: V | undefined) => void) | undefined;
15
+ placeholder: string;
16
+ value?: V | undefined;
17
+ };
18
+ interface $$IsomorphicComponent {
19
+ new <I, V, K extends number | string, T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import("svelte").ComponentConstructorOptions<ReturnType<__sveltets_Render<I, V, K, T, U, M>["props"]>>): import("svelte").SvelteComponent<ReturnType<__sveltets_Render<I, V, K, T, U, M>["props"]>, ReturnType<__sveltets_Render<I, V, K, T, U, M>["events"]>, ReturnType<__sveltets_Render<I, V, K, T, U, M>["slots"]>> & {
20
+ $$bindings?: ReturnType<__sveltets_Render<I, V, K, T, U, M>["bindings"]>;
21
+ } & ReturnType<__sveltets_Render<I, V, K, T, U, M>["exports"]>;
22
+ <I, V, K extends number | string, T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<I, V, K, T, U, M>["props"]> & {}): ReturnType<__sveltets_Render<I, V, K, T, U, M>["exports"]>;
23
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any, any, any>["bindings"]>;
24
+ }
25
+ declare class __sveltets_Render<I, V, K extends number | string, T extends Record<string, unknown>, U extends FormPath<T>, M> {
26
+ props(): ReturnType<typeof $$render<I, V, K, T, U, M>>["props"];
27
+ events(): ReturnType<typeof $$render<I, V, K, T, U, M>>["events"];
28
+ slots(): ReturnType<typeof $$render<I, V, K, T, U, M>>["slots"];
29
+ bindings(): "value";
30
+ exports(): {};
31
+ }
32
+ declare function $$render<I, V, K extends number | string, T extends Record<string, unknown>, U extends FormPath<T>, M>(): {
5
33
  props: FieldWrapperProps<T, U, M> & {
6
- value?: V;
7
- items: readonly I[];
34
+ class?: string;
8
35
  getKey: (item: I) => K;
9
36
  getLabel: (item: I) => string;
10
37
  getValue: (item: I) => V;
11
- onchange?: (value: V | undefined) => void;
12
- class?: string;
13
- placeholder: string;
14
38
  icon?: Component;
39
+ items: readonly I[];
40
+ onchange?: (value: undefined | V) => void;
41
+ placeholder: string;
42
+ value?: V;
15
43
  };
16
44
  exports: {};
17
45
  bindings: "value";
18
46
  slots: {};
19
47
  events: {};
20
48
  };
21
- declare class __sveltets_Render<I, V, K extends string | number, T extends Record<string, unknown>, U extends FormPath<T>, M> {
22
- props(): ReturnType<typeof $$render<I, V, K, T, U, M>>['props'];
23
- events(): ReturnType<typeof $$render<I, V, K, T, U, M>>['events'];
24
- slots(): ReturnType<typeof $$render<I, V, K, T, U, M>>['slots'];
25
- bindings(): "value";
26
- exports(): {};
27
- }
28
- interface $$IsomorphicComponent {
29
- new <I, V, K extends string | number, T extends Record<string, unknown>, U extends FormPath<T>, M>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<I, V, K, T, U, M>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<I, V, K, T, U, M>['props']>, ReturnType<__sveltets_Render<I, V, K, T, U, M>['events']>, ReturnType<__sveltets_Render<I, V, K, T, U, M>['slots']>> & {
30
- $$bindings?: ReturnType<__sveltets_Render<I, V, K, T, U, M>['bindings']>;
31
- } & ReturnType<__sveltets_Render<I, V, K, T, U, M>['exports']>;
32
- <I, V, K extends string | number, T extends Record<string, unknown>, U extends FormPath<T>, M>(internal: unknown, props: ReturnType<__sveltets_Render<I, V, K, T, U, M>['props']> & {}): ReturnType<__sveltets_Render<I, V, K, T, U, M>['exports']>;
33
- z_$$bindings?: ReturnType<__sveltets_Render<any, any, any, any, any, any>['bindings']>;
34
- }
35
- declare const SelectField: $$IsomorphicComponent;
36
- type SelectField<I, V, K extends string | number, T extends Record<string, unknown>, U extends FormPath<T>, M> = InstanceType<typeof SelectField<I, V, K, T, U, M>>;
37
- export default SelectField;
49
+ import { FieldWrapperProps } from '../FieldWrapper.svelte';
50
+ import { Component } from 'svelte';