@flightlesslabs/dodo-ui 0.4.0 → 0.5.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 (57) hide show
  1. package/dist/index.d.ts +6 -1
  2. package/dist/index.js +4 -0
  3. package/dist/stories/components/Form/FormControl/FormControl.svelte +1 -1
  4. package/dist/stories/components/Form/Message/Color/Color.stories.svelte +36 -0
  5. package/dist/stories/components/Form/Message/Color/Color.stories.svelte.d.ts +26 -0
  6. package/dist/stories/components/Form/Message/Message.stories.svelte +11 -26
  7. package/dist/stories/components/Form/Message/Message.stories.svelte.d.ts +2 -0
  8. package/dist/stories/components/Form/Message/Message.svelte +14 -3
  9. package/dist/stories/components/Form/Message/Message.svelte.d.ts +3 -0
  10. package/dist/stories/components/Form/Message/Size/Size.stories.svelte +24 -0
  11. package/dist/stories/components/Form/Message/Size/Size.stories.svelte.d.ts +26 -0
  12. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte +32 -130
  13. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte.d.ts +2 -3
  14. package/dist/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +74 -0
  15. package/dist/stories/components/Form/SimpleSelect/Events/Events.stories.svelte.d.ts +18 -0
  16. package/dist/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +24 -0
  17. package/dist/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte.d.ts +26 -0
  18. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +59 -0
  19. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte.d.ts +23 -0
  20. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte +69 -0
  21. package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte.d.ts +50 -0
  22. package/dist/stories/components/Form/SimpleSelect/Size/Size.stories.svelte +20 -0
  23. package/dist/stories/components/Form/SimpleSelect/Size/Size.stories.svelte.d.ts +26 -0
  24. package/dist/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +36 -0
  25. package/dist/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte.d.ts +26 -0
  26. package/dist/stories/components/Form/TextInput/TextInput.svelte +22 -120
  27. package/dist/stories/components/Form/TextInput/TextInput.svelte.d.ts +1 -2
  28. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +34 -0
  29. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte.d.ts +21 -0
  30. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +120 -0
  31. package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte.d.ts +29 -0
  32. package/dist/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +20 -0
  33. package/dist/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte.d.ts +26 -0
  34. package/dist/stories/developer tools/components/InputEnclosure/Size/Size.stories.svelte +16 -0
  35. package/dist/stories/developer tools/components/InputEnclosure/Size/Size.stories.svelte.d.ts +26 -0
  36. package/dist/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +47 -0
  37. package/dist/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte.d.ts +26 -0
  38. package/package.json +1 -1
  39. package/src/lib/index.ts +10 -1
  40. package/src/lib/stories/components/Form/FormControl/FormControl.svelte +1 -1
  41. package/src/lib/stories/components/Form/Message/Color/Color.stories.svelte +36 -0
  42. package/src/lib/stories/components/Form/Message/Message.stories.svelte +13 -26
  43. package/src/lib/stories/components/Form/Message/Message.svelte +23 -2
  44. package/src/lib/stories/components/Form/Message/Size/Size.stories.svelte +24 -0
  45. package/src/lib/stories/components/Form/PasswordInput/PasswordInput.svelte +35 -157
  46. package/src/lib/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +79 -0
  47. package/src/lib/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +24 -0
  48. package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +64 -0
  49. package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.svelte +159 -0
  50. package/src/lib/stories/components/Form/SimpleSelect/Size/Size.stories.svelte +20 -0
  51. package/src/lib/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +36 -0
  52. package/src/lib/stories/components/Form/TextInput/TextInput.svelte +22 -143
  53. package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +38 -0
  54. package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +198 -0
  55. package/src/lib/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +20 -0
  56. package/src/lib/stories/developer tools/components/InputEnclosure/Size/Size.stories.svelte +16 -0
  57. package/src/lib/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +47 -0
@@ -0,0 +1,79 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { type SimpleSelectFocusEvent } from '../SimpleSelect.svelte';
4
+ import SimpleSelect from '../SimpleSelect.svelte';
5
+ import {
6
+ storySimpleSelectArgTypes,
7
+ storySimpleSelectOptions,
8
+ } from '../SimpleSelect.stories.svelte';
9
+
10
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
11
+ const { Story } = defineMeta({
12
+ component: SimpleSelect,
13
+ tags: ['autodocs'],
14
+ argTypes: storySimpleSelectArgTypes,
15
+ args: { options: storySimpleSelectOptions },
16
+ });
17
+ </script>
18
+
19
+ <Story
20
+ name="Change"
21
+ args={{
22
+ onchange: (e: Event) => {
23
+ const target = e.target as HTMLSelectElement;
24
+
25
+ console.log('onChange Event', target.value);
26
+ },
27
+ }}
28
+ >
29
+ <SimpleSelect
30
+ onchange={(e: Event) => {
31
+ const target = e.target as HTMLSelectElement;
32
+
33
+ console.log('onchange Event', target.value);
34
+ }}
35
+ options={storySimpleSelectOptions}
36
+ />
37
+ </Story>
38
+
39
+ <!-- `e: SimpleSelectFocusEvent` -->
40
+ <Story
41
+ name="Focus"
42
+ args={{
43
+ onfocus: (e: SimpleSelectFocusEvent) => {
44
+ const target = e.target as HTMLSelectElement;
45
+
46
+ console.log('onfocus Event', target);
47
+ },
48
+ }}
49
+ >
50
+ <SimpleSelect
51
+ onfocus={(e: SimpleSelectFocusEvent) => {
52
+ const target = e.target as HTMLSelectElement;
53
+
54
+ console.log('onfocus Event', target);
55
+ }}
56
+ options={storySimpleSelectOptions}
57
+ />
58
+ </Story>
59
+
60
+ <!-- `e: SimpleSelectFocusEvent` -->
61
+ <Story
62
+ name="Blur"
63
+ args={{
64
+ onblur: (e: SimpleSelectFocusEvent) => {
65
+ const target = e.target as HTMLSelectElement;
66
+
67
+ console.log('onblur Event', target);
68
+ },
69
+ }}
70
+ >
71
+ <SimpleSelect
72
+ onblur={(e: SimpleSelectFocusEvent) => {
73
+ const target = e.target as HTMLSelectElement;
74
+
75
+ console.log('onblur Event', target);
76
+ }}
77
+ options={storySimpleSelectOptions}
78
+ />
79
+ </Story>
@@ -0,0 +1,24 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import SimpleSelect from '../SimpleSelect.svelte';
4
+ import {
5
+ storySimpleSelectArgTypes,
6
+ storySimpleSelectOptions,
7
+ } from '../SimpleSelect.stories.svelte';
8
+
9
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
10
+ const { Story } = defineMeta({
11
+ component: SimpleSelect,
12
+ tags: ['autodocs'],
13
+ argTypes: storySimpleSelectArgTypes,
14
+ args: { options: storySimpleSelectOptions },
15
+ });
16
+ </script>
17
+
18
+ <Story name="Roundness 1x" />
19
+
20
+ <Story name="Roundness 2x" args={{ roundness: '2x' }} />
21
+
22
+ <Story name="Roundness 3x" args={{ roundness: '3x' }} />
23
+
24
+ <Story name="Roundness False" args={{ roundness: false }} />
@@ -0,0 +1,64 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { type SimpleSelectOption } from './SimpleSelect.svelte';
4
+ import type { StoryBookArgTypes } from '$lib/storybook-types.js';
5
+ import SimpleSelect from './SimpleSelect.svelte';
6
+
7
+ export const storySimpleSelectArgTypes: StoryBookArgTypes = {
8
+ type: {
9
+ control: { type: 'select' },
10
+ options: ['text', 'tel', 'email', 'password', 'url', 'number'],
11
+ },
12
+ roundness: {
13
+ control: { type: 'select' },
14
+ options: [false, '1x', '2x', '3x'],
15
+ },
16
+ size: {
17
+ control: { type: 'select' },
18
+ options: ['normal', 'small', 'large'],
19
+ },
20
+ };
21
+
22
+ export const storySimpleSelectOptions: SimpleSelectOption[] = [
23
+ {
24
+ value: 'volvo',
25
+ label: 'Volvo',
26
+ },
27
+ {
28
+ value: 'saab',
29
+ label: 'Saab',
30
+ },
31
+ {
32
+ value: 'mercedes',
33
+ label: 'Mercedes',
34
+ },
35
+ {
36
+ value: 'audi',
37
+ label: 'Audi',
38
+ },
39
+ {
40
+ value: 'opel',
41
+ label: 'Opel',
42
+ disabled: true,
43
+ },
44
+ ];
45
+
46
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
47
+ const { Story } = defineMeta({
48
+ component: SimpleSelect,
49
+ tags: ['autodocs'],
50
+ argTypes: storySimpleSelectArgTypes,
51
+ args: { options: storySimpleSelectOptions },
52
+ });
53
+ </script>
54
+
55
+ <!-- SimpleSelect with default style -->
56
+ <Story name="Default" />
57
+
58
+ <Story name="Placeholder" args={{ value: '', placeholder: 'Type something...' }} />
59
+
60
+ <Story name="No Outline" args={{ outline: false }} />
61
+
62
+ <Story name="Error" args={{ error: true }} />
63
+
64
+ <Story name="Disabled" args={{ disabled: true }} />
@@ -0,0 +1,159 @@
1
+ <script lang="ts" module>
2
+ export type SimpleSelectFocusEvent = FocusEvent & {
3
+ currentTarget: EventTarget & HTMLSelectElement;
4
+ };
5
+
6
+ export type SimpleSelectOption = {
7
+ value: string;
8
+ label: string;
9
+ disabled?: boolean;
10
+ };
11
+ </script>
12
+
13
+ <script lang="ts">
14
+ import InputEnclosure from '$lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte';
15
+
16
+ import type { ComponentRoundness, ComponentSize } from '$lib/types.js';
17
+ import type { Snippet } from 'svelte';
18
+ import type { ChangeEventHandler, FocusEventHandler } from 'svelte/elements';
19
+
20
+ interface SimpleSelectProps {
21
+ /** Select ref */
22
+ ref?: HTMLSelectElement;
23
+ /** How large should the button be? */
24
+ size?: ComponentSize;
25
+ /** How round should the border radius be? */
26
+ roundness?: ComponentRoundness | false;
27
+ /** How round should the border radius be? */
28
+ options: SimpleSelectOption[];
29
+ /** Add a border around the button. Default True */
30
+ outline?: boolean;
31
+ /** Select value */
32
+ value?: string;
33
+ /** How round should the border radius be? */
34
+ placeholder?: string;
35
+ /** disabled state */
36
+ disabled?: boolean;
37
+ /** is there any associated Error ? */
38
+ error?: boolean;
39
+ /** Name */
40
+ name?: string;
41
+ /** Id */
42
+ id?: string;
43
+ /** Icon before button content */
44
+ before?: Snippet;
45
+ /** Icon after button content */
46
+ after?: Snippet;
47
+ /** Custom css class*/
48
+ class?: string;
49
+ /** onchange event handler */
50
+ onchange?: ChangeEventHandler<HTMLSelectElement>;
51
+ /** onblur event handler */
52
+ onblur?: FocusEventHandler<HTMLSelectElement>;
53
+ /** onfocus event handler */
54
+ onfocus?: FocusEventHandler<HTMLSelectElement>;
55
+ }
56
+
57
+ let {
58
+ size = 'normal',
59
+ roundness = '1x',
60
+ outline = true,
61
+ name,
62
+ id,
63
+ class: className = '',
64
+ disabled = false,
65
+ onchange,
66
+ onblur,
67
+ onfocus,
68
+ before,
69
+ after,
70
+ error = false,
71
+ value,
72
+ placeholder,
73
+ ref = $bindable<HTMLSelectElement>(),
74
+ options,
75
+ }: SimpleSelectProps = $props();
76
+
77
+ let focused: boolean = $state(false);
78
+
79
+ function onfocusMod(e: SimpleSelectFocusEvent) {
80
+ focused = true;
81
+
82
+ if (onfocus) {
83
+ onfocus(e);
84
+ }
85
+ }
86
+
87
+ function onblurMod(e: SimpleSelectFocusEvent) {
88
+ focused = false;
89
+
90
+ if (onblur) {
91
+ onblur(e);
92
+ }
93
+ }
94
+ </script>
95
+
96
+ <div
97
+ class:outline
98
+ class:disabled
99
+ class:error
100
+ class:focused
101
+ class={['dodo-ui-SimpleSelect', `size--${size}`, `roundness--${roundness}`, className].join(' ')}
102
+ >
103
+ <InputEnclosure {outline} {disabled} {error} {focused} {size} {roundness} {before} {after}>
104
+ <select
105
+ {name}
106
+ {id}
107
+ {disabled}
108
+ {onchange}
109
+ onfocus={onfocusMod}
110
+ onblur={onblurMod}
111
+ {placeholder}
112
+ bind:this={ref}
113
+ >
114
+ {#each options as option (option.value)}
115
+ <option value={option.value} disabled={option.disabled} selected={value === option.value}>
116
+ {option.label}
117
+ </option>
118
+ {/each}
119
+ </select>
120
+ </InputEnclosure>
121
+ </div>
122
+
123
+ <style lang="scss">
124
+ .dodo-ui-SimpleSelect {
125
+ select {
126
+ flex: 1;
127
+ border: 0;
128
+ outline: 0;
129
+ height: 100%;
130
+ background-color: transparent;
131
+ font-family: inherit;
132
+ color: inherit;
133
+ letter-spacing: 0.3px;
134
+ }
135
+
136
+ &.size {
137
+ &--normal {
138
+ select {
139
+ font-size: 1rem;
140
+ padding: 0 12px;
141
+ }
142
+ }
143
+
144
+ &--small {
145
+ select {
146
+ padding: 0 8px;
147
+ font-size: 0.9rem;
148
+ }
149
+ }
150
+
151
+ &--large {
152
+ select {
153
+ font-size: 1.1rem;
154
+ padding: 0 14px;
155
+ }
156
+ }
157
+ }
158
+ }
159
+ </style>
@@ -0,0 +1,20 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import SimpleSelect from '../SimpleSelect.svelte';
4
+ import {
5
+ storySimpleSelectArgTypes,
6
+ storySimpleSelectOptions,
7
+ } from '../SimpleSelect.stories.svelte';
8
+
9
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
10
+ const { Story } = defineMeta({
11
+ component: SimpleSelect,
12
+ tags: ['autodocs'],
13
+ argTypes: storySimpleSelectArgTypes,
14
+ args: { options: storySimpleSelectOptions },
15
+ });
16
+ </script>
17
+
18
+ <Story name="Normal" />
19
+ <Story name="Small" args={{ size: 'small' }} />
20
+ <Story name="Large" args={{ size: 'large' }} />
@@ -0,0 +1,36 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Icon from '@iconify/svelte';
4
+
5
+ import SimpleSelect from '../SimpleSelect.svelte';
6
+ import {
7
+ storySimpleSelectArgTypes,
8
+ storySimpleSelectOptions,
9
+ } from '../SimpleSelect.stories.svelte';
10
+
11
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
12
+ const { Story } = defineMeta({
13
+ component: SimpleSelect,
14
+ tags: ['autodocs'],
15
+ argTypes: storySimpleSelectArgTypes,
16
+ args: { options: storySimpleSelectOptions },
17
+ });
18
+ </script>
19
+
20
+ <!-- SimpleSelect icon in front. -->
21
+ <Story name="Icon Before">
22
+ <SimpleSelect options={storySimpleSelectOptions}>
23
+ {#snippet before()}
24
+ <Icon icon="material-symbols:content-copy" />
25
+ {/snippet}
26
+ </SimpleSelect>
27
+ </Story>
28
+
29
+ <!-- SimpleSelect icon in front. -->
30
+ <Story name="Icon After">
31
+ <SimpleSelect options={storySimpleSelectOptions}>
32
+ {#snippet after()}
33
+ <Icon icon="material-symbols:download-2" />
34
+ {/snippet}
35
+ </SimpleSelect>
36
+ </Story>
@@ -1,5 +1,4 @@
1
1
  <script lang="ts" module>
2
- export type TextInputRoundness = ComponentRoundness | false;
3
2
  export type TextInputType = 'text' | 'tel' | 'email' | 'password' | 'url' | 'number';
4
3
 
5
4
  export type TextInputFocusEvent = FocusEvent & {
@@ -12,6 +11,8 @@
12
11
  </script>
13
12
 
14
13
  <script lang="ts">
14
+ import InputEnclosure from '$lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte';
15
+
15
16
  import type { ComponentRoundness, ComponentSize } from '$lib/types.js';
16
17
  import type { Snippet } from 'svelte';
17
18
  import type {
@@ -29,7 +30,7 @@
29
30
  /** How large should the button be? */
30
31
  size?: ComponentSize;
31
32
  /** How round should the border radius be? */
32
- roundness?: TextInputRoundness;
33
+ roundness?: ComponentRoundness | false;
33
34
  /** Add a border around the button. Default True */
34
35
  outline?: boolean;
35
36
  /** Input value */
@@ -119,61 +120,29 @@
119
120
  class:focused
120
121
  class={['dodo-ui-TextInput', `size--${size}`, `roundness--${roundness}`, className].join(' ')}
121
122
  >
122
- {#if before}
123
- <span class="content--before">
124
- {@render before()}
125
- </span>
126
- {/if}
127
- <input
128
- {type}
129
- {name}
130
- {id}
131
- {disabled}
132
- {oninput}
133
- {onchange}
134
- onfocus={onfocusMod}
135
- onblur={onblurMod}
136
- {onpaste}
137
- {oncopy}
138
- {oncut}
139
- {placeholder}
140
- {readonly}
141
- bind:value
142
- bind:this={ref}
143
- />
144
- {#if after}
145
- <span class="content--after">
146
- {@render after()}
147
- </span>
148
- {/if}
123
+ <InputEnclosure {outline} {disabled} {error} {focused} {size} {roundness} {before} {after}>
124
+ <input
125
+ {type}
126
+ {name}
127
+ {id}
128
+ {disabled}
129
+ {oninput}
130
+ {onchange}
131
+ onfocus={onfocusMod}
132
+ onblur={onblurMod}
133
+ {onpaste}
134
+ {oncopy}
135
+ {oncut}
136
+ {placeholder}
137
+ {readonly}
138
+ bind:value
139
+ bind:this={ref}
140
+ />
141
+ </InputEnclosure>
149
142
  </div>
150
143
 
151
144
  <style lang="scss">
152
- :global(:root) {
153
- --dodo-ui-TextInput-border-color: var(--dodo-color-default-500);
154
- --dodo-ui-TextInput-focus-border-color: var(--dodo-color-primary-500);
155
- --dodo-ui-TextInput-error-border-color: var(--dodo-color-danger-500);
156
-
157
- --dodo-ui-TextInput-disabled-color: var(--dodo-color-default-400);
158
- --dodo-ui-TextInput-disabled-bg: var(--dodo-color-default-200);
159
- }
160
-
161
- :global(.dodo-theme--dark) {
162
- --dodo-ui-TextInput-border-color: var(--dodo-color-default-600);
163
- --dodo-ui-TextInput-focus-border-color: var(--dodo-color-primary-600);
164
- --dodo-ui-TextInput-error-border-color: var(--dodo-color-danger-600);
165
-
166
- --dodo-ui-TextInput-disabled-bg: var(--dodo-color-default-100);
167
- --dodo-ui-TextInput-disabled-color: var(--dodo-color-default-500);
168
- }
169
-
170
145
  .dodo-ui-TextInput {
171
- display: flex;
172
- overflow: hidden;
173
- color: var(--dodo-color-default-800);
174
- transition: all 150ms;
175
- border: 0;
176
-
177
146
  input {
178
147
  flex: 1;
179
148
  border: 0;
@@ -185,116 +154,26 @@
185
154
  letter-spacing: 0.3px;
186
155
  }
187
156
 
188
- &.outline {
189
- border-style: solid;
190
- border-width: var(--dodo-ui-element-border-width);
191
- border-color: var(--dodo-ui-TextInput-border-color);
192
- }
193
-
194
- &.focused {
195
- border-color: var(--dodo-ui-TextInput-focus-border-color);
196
- }
197
-
198
- &.error {
199
- border-color: var(--dodo-ui-TextInput-error-border-color);
200
- }
201
-
202
- &.disabled {
203
- cursor: initial;
204
- background-color: var(--dodo-ui-TextInput-disabled-bg);
205
- color: var(--dodo-ui-TextInput-disabled-color);
206
- border-color: var(--dodo-ui-TextInput-disabled-bg);
207
- }
208
-
209
- .content {
210
- &--after,
211
- &--before {
212
- &:empty {
213
- display: none;
214
- }
215
- }
216
-
217
- &--after,
218
- &--before {
219
- display: inline-flex;
220
- height: 100%;
221
- align-items: center;
222
- }
223
- }
224
-
225
157
  &.size {
226
158
  &--normal {
227
- height: var(--dodo-ui-element-height-normal);
228
159
  input {
229
160
  font-size: 1rem;
230
161
  padding: 0 12px;
231
162
  }
232
-
233
- .content {
234
- &--before {
235
- margin-left: 12px;
236
- margin-right: -4px;
237
- }
238
-
239
- &--after {
240
- margin-right: 12px;
241
- margin-left: -4px;
242
- }
243
- }
244
163
  }
245
164
 
246
165
  &--small {
247
- height: var(--dodo-ui-element-height-small);
248
166
  input {
249
167
  padding: 0 8px;
250
168
  font-size: 0.9rem;
251
169
  }
252
-
253
- .content {
254
- &--before {
255
- margin-left: 8px;
256
- margin-right: -2px;
257
- }
258
-
259
- &--after {
260
- margin-right: 8px;
261
- margin-left: -2px;
262
- }
263
- }
264
170
  }
265
171
 
266
172
  &--large {
267
- height: var(--dodo-ui-element-height-large);
268
173
  input {
269
174
  font-size: 1.1rem;
270
175
  padding: 0 14px;
271
176
  }
272
-
273
- .content {
274
- &--before {
275
- margin-left: 14px;
276
- margin-right: -4px;
277
- }
278
-
279
- &--after {
280
- margin-right: 14px;
281
- margin-left: -4px;
282
- }
283
- }
284
- }
285
- }
286
-
287
- &.roundness {
288
- &--1x {
289
- border-radius: var(--dodo-ui-element-roundness-1x);
290
- }
291
-
292
- &--2x {
293
- border-radius: var(--dodo-ui-element-roundness-2x);
294
- }
295
-
296
- &--3x {
297
- border-radius: var(--dodo-ui-element-roundness-3x);
298
177
  }
299
178
  }
300
179
  }
@@ -0,0 +1,38 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import InputEnclosure from './InputEnclosure.svelte';
4
+ import type { StoryBookArgTypes } from '$lib/storybook-types.js';
5
+
6
+ export const storyInputEnclosureArgTypes: StoryBookArgTypes = {
7
+ roundness: {
8
+ control: { type: 'select' },
9
+ options: [false, '1x', '2x', '3x'],
10
+ },
11
+ size: {
12
+ control: { type: 'select' },
13
+ options: ['normal', 'small', 'large'],
14
+ },
15
+ };
16
+
17
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
18
+ const { Story } = defineMeta({
19
+ component: InputEnclosure,
20
+ tags: ['autodocs'],
21
+ argTypes: storyInputEnclosureArgTypes,
22
+ });
23
+ </script>
24
+
25
+ <!-- An ensloure for Form Inputs [TextInput](?path=/docs/components-form-textinput--docs) -->
26
+ <Story name="Default" />
27
+
28
+ <Story name="Focused" args={{ focused: true }} />
29
+
30
+ <Story name="Error" args={{ error: true }} />
31
+
32
+ <Story name="Disabled" args={{ disabled: true }} />
33
+
34
+ <Story name="Input example">
35
+ <InputEnclosure>
36
+ <input type="text" style="flex: 1; border: 0;" placeholder="Enter name" />
37
+ </InputEnclosure>
38
+ </Story>