diff --git a/src/shared/ui/Input/Input.stories.svelte b/src/shared/ui/Input/Input.stories.svelte index 6d9f9fb..4a58da8 100644 --- a/src/shared/ui/Input/Input.stories.svelte +++ b/src/shared/ui/Input/Input.stories.svelte @@ -8,13 +8,39 @@ const { Story } = defineMeta({ parameters: { docs: { description: { - component: 'Styled input component with size and variant options', + component: 'Input component', }, - story: { inline: false }, // Render stories in iframe for state isolation + story: { inline: false }, }, layout: 'centered', }, argTypes: { + variant: { + control: 'select', + options: ['default', 'underline', 'filled'], + description: 'Input variant', + defaultValue: 'default', + }, + size: { + control: 'select', + options: ['sm', 'md', 'lg', 'xl'], + description: 'Input size', + defaultValue: 'md', + }, + error: { + control: 'boolean', + description: 'Input error state', + defaultValue: false, + }, + helperText: { + control: 'text', + description: 'Input helper text', + }, + showClearButton: { + control: 'boolean', + description: 'Show clear button', + defaultValue: false, + }, placeholder: { control: 'text', description: "input's placeholder", @@ -23,90 +49,78 @@ const { Story } = defineMeta({ control: 'text', description: "input's value", }, - variant: { - control: 'select', - options: ['default', 'ghost'], - description: 'Visual style variant', - }, - size: { - control: 'select', - options: ['sm', 'md', 'lg'], - description: 'Size variant', + fullWidth: { + control: 'boolean', + description: 'Input fullWidth', + defaultValue: false, }, }, }); - - + + {#snippet template(args)} - + {/snippet} - - + {#snippet template(args)} - - {/snippet} - - - - {#snippet template(args)} - - {/snippet} - - - - {#snippet template(args)} - - {/snippet} - - - - - {#snippet template(args)} - - {/snippet} - - - - {#snippet template(args)} - - {/snippet} - - - - {#snippet template(args)} - - {/snippet} - - - - -
-
- Small - +
+ + + +
-
- Medium - -
-
- Large - -
-
+ {/snippet} + + + + {#snippet template(args)} + + {/snippet} + + + + {#snippet template(args)} + + {/snippet} + + + + {#snippet template(args)} + + {#snippet rightIcon()} + + {/snippet} + + {/snippet} + + + + {#snippet template(args)} + + {#snippet leftIcon()} + + {/snippet} + + {/snippet} + + + + {#snippet template(args)} + + {#snippet rightIcon()} + + {/snippet} + + {/snippet} diff --git a/src/shared/ui/Input/Input.svelte b/src/shared/ui/Input/Input.svelte index 818331e..0bf83fa 100644 --- a/src/shared/ui/Input/Input.svelte +++ b/src/shared/ui/Input/Input.svelte @@ -1,90 +1,157 @@ - - - +
+
+ + {#if leftIcon} +
+ {@render leftIcon(size)} +
+ {/if} + + + + + + {#if hasRightSlot} +
+ {#if showClear} + + {/if} + + {#if rightIcon} +
+ {@render rightIcon(size)} +
+ {/if} +
+ {/if} +
+ + + {#if helperText} + + {helperText} + + {/if} +