@flightlesslabs/dodo-ui 0.14.0 → 0.15.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 (41) hide show
  1. package/dist/index.d.ts +6 -0
  2. package/dist/index.js +4 -0
  3. package/dist/stories/components/Form/Checkbox/Checkbox.stories.svelte +39 -0
  4. package/dist/stories/components/Form/Checkbox/Checkbox.stories.svelte.d.ts +21 -0
  5. package/dist/stories/components/Form/Checkbox/Checkbox.svelte +452 -0
  6. package/dist/stories/components/Form/Checkbox/Checkbox.svelte.d.ts +42 -0
  7. package/dist/stories/components/Form/Checkbox/Color/Color.stories.svelte +19 -0
  8. package/dist/stories/components/Form/Checkbox/Color/Color.stories.svelte.d.ts +26 -0
  9. package/dist/stories/components/Form/Checkbox/Customize/Customize.stories.svelte +27 -0
  10. package/dist/stories/components/Form/Checkbox/Customize/Customize.stories.svelte.d.ts +18 -0
  11. package/dist/stories/components/Form/Checkbox/Events/Events.stories.svelte +35 -0
  12. package/dist/stories/components/Form/Checkbox/Events/Events.stories.svelte.d.ts +18 -0
  13. package/dist/stories/components/Form/Checkbox/Roundness/Roundness.stories.svelte +22 -0
  14. package/dist/stories/components/Form/Checkbox/Roundness/Roundness.stories.svelte.d.ts +26 -0
  15. package/dist/stories/components/Form/Checkbox/Size/Size.stories.svelte +16 -0
  16. package/dist/stories/components/Form/Checkbox/Size/Size.stories.svelte.d.ts +26 -0
  17. package/dist/stories/components/Form/Checkbox/utils/scss/mixins.scss +80 -0
  18. package/dist/stories/components/Form/Radio/Color/Color.stories.svelte +19 -0
  19. package/dist/stories/components/Form/Radio/Color/Color.stories.svelte.d.ts +26 -0
  20. package/dist/stories/components/Form/Radio/Events/Events.stories.svelte +32 -0
  21. package/dist/stories/components/Form/Radio/Events/Events.stories.svelte.d.ts +18 -0
  22. package/dist/stories/components/Form/Radio/Radio.stories.svelte +39 -0
  23. package/dist/stories/components/Form/Radio/Radio.stories.svelte.d.ts +21 -0
  24. package/dist/stories/components/Form/Radio/Radio.svelte +413 -0
  25. package/dist/stories/components/Form/Radio/Radio.svelte.d.ts +36 -0
  26. package/dist/stories/components/Form/Radio/Roundness/Roundness.stories.svelte +22 -0
  27. package/dist/stories/components/Form/Radio/Roundness/Roundness.stories.svelte.d.ts +26 -0
  28. package/dist/stories/components/Form/Radio/Size/Size.stories.svelte +16 -0
  29. package/dist/stories/components/Form/Radio/Size/Size.stories.svelte.d.ts +26 -0
  30. package/dist/stories/components/Form/Radio/utils/scss/mixins.scss +85 -0
  31. package/dist/stories/components/Form/Toggle/Toggle.svelte +30 -40
  32. package/dist/stories/components/Form/Toggle/Toggle.svelte.d.ts +2 -0
  33. package/dist/stories/components/Form/Toggle/utils/scss/mixins.scss +1 -14
  34. package/package.json +2 -2
  35. package/src/lib/index.ts +8 -0
  36. package/src/lib/stories/components/Form/Checkbox/Checkbox.svelte +323 -0
  37. package/src/lib/stories/components/Form/Checkbox/utils/scss/mixins.scss +80 -0
  38. package/src/lib/stories/components/Form/Radio/Radio.svelte +278 -0
  39. package/src/lib/stories/components/Form/Radio/utils/scss/mixins.scss +85 -0
  40. package/src/lib/stories/components/Form/Toggle/Toggle.svelte +31 -3
  41. package/src/lib/stories/components/Form/Toggle/utils/scss/mixins.scss +1 -14
package/dist/index.d.ts CHANGED
@@ -64,6 +64,12 @@ export type { RangeSliderProps } from './stories/components/Form/RangeSlider/Ran
64
64
  /** Form: Toggle */
65
65
  export { default as Toggle } from './stories/components/Form/Toggle/Toggle.svelte';
66
66
  export type { ToggleProps } from './stories/components/Form/Toggle/Toggle.svelte';
67
+ /** Form: Checkbox */
68
+ export { default as Checkbox } from './stories/components/Form/Checkbox/Checkbox.svelte';
69
+ export type { CheckboxProps } from './stories/components/Form/Checkbox/Checkbox.svelte';
70
+ /** Form: Radio */
71
+ export { default as Radio } from './stories/components/Form/Radio/Radio.svelte';
72
+ export type { RadioProps } from './stories/components/Form/Radio/Radio.svelte';
67
73
  /** Layout: Paper */
68
74
  export { default as Paper } from './stories/components/Layout/Paper/Paper.svelte';
69
75
  export type { PaperColor, PaperProps } from './stories/components/Layout/Paper/Paper.svelte';
package/dist/index.js CHANGED
@@ -40,6 +40,10 @@ export { default as DatePicker } from './stories/components/Form/DatePicker/Date
40
40
  export { default as RangeSlider } from './stories/components/Form/RangeSlider/RangeSlider.svelte';
41
41
  /** Form: Toggle */
42
42
  export { default as Toggle } from './stories/components/Form/Toggle/Toggle.svelte';
43
+ /** Form: Checkbox */
44
+ export { default as Checkbox } from './stories/components/Form/Checkbox/Checkbox.svelte';
45
+ /** Form: Radio */
46
+ export { default as Radio } from './stories/components/Form/Radio/Radio.svelte';
43
47
  /** Layout: Paper */
44
48
  export { default as Paper } from './stories/components/Layout/Paper/Paper.svelte';
45
49
  /** Layout: Separator */
@@ -0,0 +1,39 @@
1
+ <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
+ import Checkbox from './Checkbox.svelte';
3
+ import { componentRoundnessArray } from '../../../../types/roundness.js';
4
+ import { componentColorArray } from '../../../../types/colors.js';
5
+ import { componentSizeArray } from '../../../../types/size.js';
6
+ export const storyCheckboxArgTypes = {
7
+ color: {
8
+ control: { type: 'select' },
9
+ options: componentColorArray,
10
+ },
11
+ roundness: {
12
+ control: { type: 'select' },
13
+ options: componentRoundnessArray,
14
+ },
15
+ size: {
16
+ control: { type: 'select' },
17
+ options: componentSizeArray,
18
+ },
19
+ };
20
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
21
+ const { Story } = defineMeta({
22
+ component: Checkbox,
23
+ tags: ['autodocs'],
24
+ argTypes: storyCheckboxArgTypes,
25
+ });
26
+ </script>
27
+
28
+ <!-- Checkbox with default style -->
29
+ <Story name="Primary" />
30
+
31
+ <Story name="WithText">This is Checkbox</Story>
32
+
33
+ <Story name="Checked" args={{ checked: true }} />
34
+
35
+ <Story name="Indeterminate" args={{ checked: true, indeterminate: true }} />
36
+
37
+ <Story name="Disabled" args={{ disabled: true }} />
38
+
39
+ <Story name="Checked Disabled" args={{ checked: true, disabled: true }} />
@@ -0,0 +1,21 @@
1
+ import Checkbox from './Checkbox.svelte';
2
+ import type { StoryBookArgTypes } from '../../../../storybook-types.js';
3
+ export declare const storyCheckboxArgTypes: StoryBookArgTypes;
4
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
5
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
6
+ $$bindings?: Bindings;
7
+ } & Exports;
8
+ (internal: unknown, props: {
9
+ $$events?: Events;
10
+ $$slots?: Slots;
11
+ }): Exports & {
12
+ $set?: any;
13
+ $on?: any;
14
+ };
15
+ z_$$bindings?: Bindings;
16
+ }
17
+ declare const Checkbox: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {}, {}, string>;
20
+ type Checkbox = InstanceType<typeof Checkbox>;
21
+ export default Checkbox;
@@ -0,0 +1,452 @@
1
+ <script lang="ts" module>import Icon from '@iconify/svelte';
2
+ </script>
3
+
4
+ <script lang="ts">"use strict";
5
+ let { children, size = 'normal', color = 'primary', roundness = 1, name, id, title, class: className = '', disabled = false, checked = $bindable(), indeterminate = false, ref = $bindable(), onchange, customCheckIcon, customIndeterminateIcon, value, } = $props();
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ let customCheckIconTyped = customCheckIcon;
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ let customIndeterminateIconTyped = customIndeterminateIcon;
10
+ </script>
11
+
12
+ {#snippet checkIconContent()}
13
+ {#if size === 'small'}
14
+ <Icon icon="material-symbols:check-rounded" width="24" height="24" />
15
+ {:else if size === 'large'}
16
+ <Icon icon="material-symbols:check-rounded" width="30" height="30" />
17
+ {:else}
18
+ <Icon icon="material-symbols:check-rounded" width="28" height="28" />
19
+ {/if}
20
+ {/snippet}
21
+
22
+ {#snippet indeterminateIconContent()}
23
+ {#if size === 'small'}
24
+ <Icon icon="material-symbols:check-indeterminate-small-rounded" width="28" height="28" />
25
+ {:else if size === 'large'}
26
+ <Icon icon="material-symbols:check-indeterminate-small-rounded" width="34" height="34" />
27
+ {:else}
28
+ <Icon icon="material-symbols:check-indeterminate-small-rounded" width="32" height="32" />
29
+ {/if}
30
+ {/snippet}
31
+
32
+ <label
33
+ class:disabled
34
+ class={[
35
+ 'dodo-ui-Checkbox',
36
+ `size--${size}`,
37
+ `color--${color}`,
38
+ `roundness--${roundness}`,
39
+ className,
40
+ ].join(' ')}
41
+ for={id}
42
+ >
43
+ <input
44
+ type="checkbox"
45
+ {name}
46
+ {id}
47
+ {title}
48
+ {disabled}
49
+ {onchange}
50
+ bind:this={ref}
51
+ bind:checked
52
+ {value}
53
+ />
54
+ <div class="Checkbox">
55
+ <div class="CheckboxIcon">
56
+ {#if indeterminate && customIndeterminateIconTyped}
57
+ {@render customIndeterminateIconTyped(checked)}
58
+ {:else if indeterminate}
59
+ {@render indeterminateIconContent()}
60
+ {:else if customCheckIconTyped}
61
+ {@render customCheckIconTyped(checked)}
62
+ {:else}
63
+ {@render checkIconContent()}
64
+ {/if}
65
+ </div>
66
+ </div>
67
+
68
+ {#if children}
69
+ <div class="CheckboxMessage">
70
+ {@render children()}
71
+ </div>
72
+ {/if}
73
+ </label>
74
+
75
+ <style>:global(:root) {
76
+ --dodo-ui-Checkbox-disabled-color: var(--dodo-color-neutral-400);
77
+ --dodo-ui-Checkbox-disabled-bg: var(--dodo-color-neutral-200);
78
+ --dodo-ui-Checkbox-border-disabled-color: var(--dodo-color-neutral-300);
79
+ --dodo-ui-Checkbox-border-color: var(--dodo-color-neutral-400);
80
+ --dodo-ui-Checkbox-neutral-bg: var(--dodo-color-neutral-200);
81
+ --dodo-ui-Checkbox-neutral-hover-bg: var(--dodo-color-neutral-300);
82
+ --dodo-ui-Checkbox-neutral-active-bg: var(--dodo-color-neutral-400);
83
+ --dodo-ui-Checkbox-neutral-checked-bg: var(--dodo-color-neutral-500);
84
+ --dodo-ui-Checkbox-neutral-checked-hover-bg: var(--dodo-color-neutral-600);
85
+ --dodo-ui-Checkbox-neutral-checked-active-bg: var(--dodo-color-neutral-700);
86
+ --dodo-ui-Checkbox-primary-bg: var(--dodo-color-primary-200);
87
+ --dodo-ui-Checkbox-primary-hover-bg: var(--dodo-color-primary-300);
88
+ --dodo-ui-Checkbox-primary-active-bg: var(--dodo-color-primary-400);
89
+ --dodo-ui-Checkbox-primary-checked-bg: var(--dodo-color-primary-500);
90
+ --dodo-ui-Checkbox-primary-checked-hover-bg: var(--dodo-color-primary-600);
91
+ --dodo-ui-Checkbox-primary-checked-active-bg: var(--dodo-color-primary-700);
92
+ --dodo-ui-Checkbox-secondary-bg: var(--dodo-color-secondary-200);
93
+ --dodo-ui-Checkbox-secondary-hover-bg: var(--dodo-color-secondary-300);
94
+ --dodo-ui-Checkbox-secondary-active-bg: var(--dodo-color-secondary-400);
95
+ --dodo-ui-Checkbox-secondary-checked-bg: var(--dodo-color-secondary-500);
96
+ --dodo-ui-Checkbox-secondary-checked-hover-bg: var(--dodo-color-secondary-600);
97
+ --dodo-ui-Checkbox-secondary-checked-active-bg: var(--dodo-color-secondary-700);
98
+ --dodo-ui-Checkbox-safe-bg: var(--dodo-color-safe-200);
99
+ --dodo-ui-Checkbox-safe-hover-bg: var(--dodo-color-safe-300);
100
+ --dodo-ui-Checkbox-safe-active-bg: var(--dodo-color-safe-400);
101
+ --dodo-ui-Checkbox-safe-checked-bg: var(--dodo-color-safe-500);
102
+ --dodo-ui-Checkbox-safe-checked-hover-bg: var(--dodo-color-safe-600);
103
+ --dodo-ui-Checkbox-safe-checked-active-bg: var(--dodo-color-safe-700);
104
+ --dodo-ui-Checkbox-warning-bg: var(--dodo-color-warning-200);
105
+ --dodo-ui-Checkbox-warning-hover-bg: var(--dodo-color-warning-300);
106
+ --dodo-ui-Checkbox-warning-active-bg: var(--dodo-color-warning-400);
107
+ --dodo-ui-Checkbox-warning-checked-bg: var(--dodo-color-warning-500);
108
+ --dodo-ui-Checkbox-warning-checked-hover-bg: var(--dodo-color-warning-600);
109
+ --dodo-ui-Checkbox-warning-checked-active-bg: var(--dodo-color-warning-700);
110
+ --dodo-ui-Checkbox-danger-bg: var(--dodo-color-danger-200);
111
+ --dodo-ui-Checkbox-danger-hover-bg: var(--dodo-color-danger-300);
112
+ --dodo-ui-Checkbox-danger-active-bg: var(--dodo-color-danger-400);
113
+ --dodo-ui-Checkbox-danger-checked-bg: var(--dodo-color-danger-500);
114
+ --dodo-ui-Checkbox-danger-checked-hover-bg: var(--dodo-color-danger-600);
115
+ --dodo-ui-Checkbox-danger-checked-active-bg: var(--dodo-color-danger-700);
116
+ }
117
+
118
+ :global(.dodo-theme--dark) {
119
+ --dodo-ui-Checkbox-disabled-bg: var(--dodo-color-neutral-100);
120
+ --dodo-ui-Checkbox-disabled-color: var(--dodo-color-neutral-500);
121
+ --dodo-ui-Checkbox-border-disabled-color: var(--dodo-color-neutral-400);
122
+ --dodo-ui-Checkbox-border-color: var(--dodo-color-neutral-500);
123
+ --dodo-ui-Checkbox-neutral-bg: color-mix(
124
+ in oklab,
125
+ var(--dodo-color-neutral-50) 90%,
126
+ #fff
127
+ );
128
+ --dodo-ui-Checkbox-neutral-hover-bg: color-mix(
129
+ in oklab,
130
+ var(--dodo-color-neutral-100) 90%,
131
+ #fff
132
+ );
133
+ --dodo-ui-Checkbox-neutral-active-bg: color-mix(
134
+ in oklab,
135
+ var(--dodo-color-neutral-200) 90%,
136
+ #fff
137
+ );
138
+ --dodo-ui-Checkbox-neutral-checked-bg: var(--dodo-color-neutral-400);
139
+ --dodo-ui-Checkbox-neutral-checked-hover-bg: var(--dodo-color-neutral-300);
140
+ --dodo-ui-Checkbox-neutral-checked-active-bg: var(--dodo-color-neutral-200);
141
+ --dodo-ui-Checkbox-primary-bg: color-mix(
142
+ in oklab,
143
+ var(--dodo-color-primary-50) 90%,
144
+ #fff
145
+ );
146
+ --dodo-ui-Checkbox-primary-hover-bg: color-mix(
147
+ in oklab,
148
+ var(--dodo-color-primary-100) 90%,
149
+ #fff
150
+ );
151
+ --dodo-ui-Checkbox-primary-active-bg: color-mix(
152
+ in oklab,
153
+ var(--dodo-color-primary-200) 90%,
154
+ #fff
155
+ );
156
+ --dodo-ui-Checkbox-primary-checked-bg: var(--dodo-color-primary-400);
157
+ --dodo-ui-Checkbox-primary-checked-hover-bg: var(--dodo-color-primary-300);
158
+ --dodo-ui-Checkbox-primary-checked-active-bg: var(--dodo-color-primary-200);
159
+ --dodo-ui-Checkbox-secondary-bg: color-mix(
160
+ in oklab,
161
+ var(--dodo-color-secondary-50) 90%,
162
+ #fff
163
+ );
164
+ --dodo-ui-Checkbox-secondary-hover-bg: color-mix(
165
+ in oklab,
166
+ var(--dodo-color-secondary-100) 90%,
167
+ #fff
168
+ );
169
+ --dodo-ui-Checkbox-secondary-active-bg: color-mix(
170
+ in oklab,
171
+ var(--dodo-color-secondary-200) 90%,
172
+ #fff
173
+ );
174
+ --dodo-ui-Checkbox-secondary-checked-bg: var(--dodo-color-secondary-400);
175
+ --dodo-ui-Checkbox-secondary-checked-hover-bg: var(--dodo-color-secondary-300);
176
+ --dodo-ui-Checkbox-secondary-checked-active-bg: var(--dodo-color-secondary-200);
177
+ --dodo-ui-Checkbox-safe-bg: color-mix(
178
+ in oklab,
179
+ var(--dodo-color-safe-50) 90%,
180
+ #fff
181
+ );
182
+ --dodo-ui-Checkbox-safe-hover-bg: color-mix(
183
+ in oklab,
184
+ var(--dodo-color-safe-100) 90%,
185
+ #fff
186
+ );
187
+ --dodo-ui-Checkbox-safe-active-bg: color-mix(
188
+ in oklab,
189
+ var(--dodo-color-safe-200) 90%,
190
+ #fff
191
+ );
192
+ --dodo-ui-Checkbox-safe-checked-bg: var(--dodo-color-safe-400);
193
+ --dodo-ui-Checkbox-safe-checked-hover-bg: var(--dodo-color-safe-300);
194
+ --dodo-ui-Checkbox-safe-checked-active-bg: var(--dodo-color-safe-200);
195
+ --dodo-ui-Checkbox-warning-bg: color-mix(
196
+ in oklab,
197
+ var(--dodo-color-warning-50) 90%,
198
+ #fff
199
+ );
200
+ --dodo-ui-Checkbox-warning-hover-bg: color-mix(
201
+ in oklab,
202
+ var(--dodo-color-warning-100) 90%,
203
+ #fff
204
+ );
205
+ --dodo-ui-Checkbox-warning-active-bg: color-mix(
206
+ in oklab,
207
+ var(--dodo-color-warning-200) 90%,
208
+ #fff
209
+ );
210
+ --dodo-ui-Checkbox-warning-checked-bg: var(--dodo-color-warning-400);
211
+ --dodo-ui-Checkbox-warning-checked-hover-bg: var(--dodo-color-warning-300);
212
+ --dodo-ui-Checkbox-warning-checked-active-bg: var(--dodo-color-warning-200);
213
+ --dodo-ui-Checkbox-danger-bg: color-mix(
214
+ in oklab,
215
+ var(--dodo-color-danger-50) 90%,
216
+ #fff
217
+ );
218
+ --dodo-ui-Checkbox-danger-hover-bg: color-mix(
219
+ in oklab,
220
+ var(--dodo-color-danger-100) 90%,
221
+ #fff
222
+ );
223
+ --dodo-ui-Checkbox-danger-active-bg: color-mix(
224
+ in oklab,
225
+ var(--dodo-color-danger-200) 90%,
226
+ #fff
227
+ );
228
+ --dodo-ui-Checkbox-danger-checked-bg: var(--dodo-color-danger-400);
229
+ --dodo-ui-Checkbox-danger-checked-hover-bg: var(--dodo-color-danger-300);
230
+ --dodo-ui-Checkbox-danger-checked-active-bg: var(--dodo-color-danger-200);
231
+ }
232
+
233
+ .dodo-ui-Checkbox {
234
+ cursor: pointer;
235
+ outline: none;
236
+ display: inline-flex;
237
+ padding: 0;
238
+ margin: 0;
239
+ position: relative;
240
+ }
241
+ .dodo-ui-Checkbox input {
242
+ opacity: 0;
243
+ width: 0;
244
+ height: 0;
245
+ position: absolute;
246
+ }
247
+ .dodo-ui-Checkbox input:focus-visible + .Checkbox {
248
+ outline: 1px solid;
249
+ }
250
+ .dodo-ui-Checkbox input:checked:not([disabled]) + .Checkbox .CheckboxIcon {
251
+ color: var(--dodo-color-constant-white);
252
+ }
253
+ .dodo-ui-Checkbox input:checked[disabled] + .Checkbox .CheckboxIcon {
254
+ color: var(--dodo-ui-Checkbox-disabled-color);
255
+ }
256
+ .dodo-ui-Checkbox .CheckboxIcon {
257
+ color: transparent;
258
+ display: flex;
259
+ width: 100%;
260
+ height: 100%;
261
+ align-items: center;
262
+ justify-content: center;
263
+ }
264
+ .dodo-ui-Checkbox .Checkbox {
265
+ transition: all 150ms;
266
+ text-decoration: none;
267
+ margin: 0;
268
+ display: inline-flex;
269
+ justify-content: center;
270
+ align-items: center;
271
+ font-family: inherit;
272
+ border-style: solid;
273
+ border-width: calc(var(--dodo-ui-element-border-width) * 2);
274
+ border-color: var(--dodo-ui-Checkbox-border-color);
275
+ outline: 0;
276
+ letter-spacing: 0.3px;
277
+ border-radius: inherit;
278
+ position: relative;
279
+ }
280
+ .dodo-ui-Checkbox .CheckboxMessage {
281
+ display: flex;
282
+ align-items: center;
283
+ margin-left: var(--dodo-ui-space);
284
+ user-select: none;
285
+ }
286
+ .dodo-ui-Checkbox.size--normal {
287
+ font-size: 1rem;
288
+ }
289
+ .dodo-ui-Checkbox.size--normal .Checkbox {
290
+ height: calc(var(--dodo-ui-element-height-normal) / 1.2);
291
+ width: calc(var(--dodo-ui-element-height-normal) / 1.2);
292
+ }
293
+ .dodo-ui-Checkbox.size--small {
294
+ font-size: 0.9rem;
295
+ }
296
+ .dodo-ui-Checkbox.size--small .Checkbox {
297
+ height: calc(var(--dodo-ui-element-height-small) / 1.2);
298
+ width: calc(var(--dodo-ui-element-height-small) / 1.2);
299
+ }
300
+ .dodo-ui-Checkbox.size--large {
301
+ font-size: 1.1rem;
302
+ }
303
+ .dodo-ui-Checkbox.size--large .Checkbox {
304
+ height: calc(var(--dodo-ui-element-height-large) / 1.2);
305
+ width: calc(var(--dodo-ui-element-height-large) / 1.2);
306
+ }
307
+ .dodo-ui-Checkbox.roundness--1 {
308
+ border-radius: var(--dodo-ui-element-roundness-1);
309
+ }
310
+ .dodo-ui-Checkbox.roundness--2 {
311
+ border-radius: var(--dodo-ui-element-roundness-2);
312
+ }
313
+ .dodo-ui-Checkbox.roundness--3 {
314
+ border-radius: var(--dodo-ui-element-roundness-3);
315
+ }
316
+ .dodo-ui-Checkbox.roundness--full {
317
+ border-radius: 50%;
318
+ }
319
+ .dodo-ui-Checkbox.color--neutral .Checkbox {
320
+ background-color: var(--dodo-ui-Checkbox-neutral-bg);
321
+ }
322
+ .dodo-ui-Checkbox.color--neutral input:checked:not([disabled]) + .Checkbox {
323
+ background-color: var(--dodo-ui-Checkbox-neutral-checked-bg);
324
+ border-color: transparent;
325
+ }
326
+ .dodo-ui-Checkbox.color--neutral:hover .Checkbox {
327
+ background-color: var(--dodo-ui-Checkbox-neutral-hover-bg);
328
+ }
329
+ .dodo-ui-Checkbox.color--neutral:hover input:checked:not([disabled]) + .Checkbox {
330
+ background-color: var(--dodo-ui-Checkbox-neutral-checked-hover-bg);
331
+ }
332
+ .dodo-ui-Checkbox.color--neutral:active .Checkbox {
333
+ background-color: var(--dodo-ui-Checkbox-neutral-active-bg);
334
+ }
335
+ .dodo-ui-Checkbox.color--neutral:active input:checked:not([disabled]) + .Checkbox {
336
+ background-color: var(--dodo-ui-Checkbox-neutral-checked-active-bg);
337
+ }
338
+ .dodo-ui-Checkbox.color--primary .Checkbox {
339
+ background-color: var(--dodo-ui-Checkbox-primary-bg);
340
+ }
341
+ .dodo-ui-Checkbox.color--primary input:checked:not([disabled]) + .Checkbox {
342
+ background-color: var(--dodo-ui-Checkbox-primary-checked-bg);
343
+ border-color: transparent;
344
+ }
345
+ .dodo-ui-Checkbox.color--primary:hover .Checkbox {
346
+ background-color: var(--dodo-ui-Checkbox-primary-hover-bg);
347
+ }
348
+ .dodo-ui-Checkbox.color--primary:hover input:checked:not([disabled]) + .Checkbox {
349
+ background-color: var(--dodo-ui-Checkbox-primary-checked-hover-bg);
350
+ }
351
+ .dodo-ui-Checkbox.color--primary:active .Checkbox {
352
+ background-color: var(--dodo-ui-Checkbox-primary-active-bg);
353
+ }
354
+ .dodo-ui-Checkbox.color--primary:active input:checked:not([disabled]) + .Checkbox {
355
+ background-color: var(--dodo-ui-Checkbox-primary-checked-active-bg);
356
+ }
357
+ .dodo-ui-Checkbox.color--secondary .Checkbox {
358
+ background-color: var(--dodo-ui-Checkbox-secondary-bg);
359
+ }
360
+ .dodo-ui-Checkbox.color--secondary input:checked:not([disabled]) + .Checkbox {
361
+ background-color: var(--dodo-ui-Checkbox-secondary-checked-bg);
362
+ border-color: transparent;
363
+ }
364
+ .dodo-ui-Checkbox.color--secondary:hover .Checkbox {
365
+ background-color: var(--dodo-ui-Checkbox-secondary-hover-bg);
366
+ }
367
+ .dodo-ui-Checkbox.color--secondary:hover input:checked:not([disabled]) + .Checkbox {
368
+ background-color: var(--dodo-ui-Checkbox-secondary-checked-hover-bg);
369
+ }
370
+ .dodo-ui-Checkbox.color--secondary:active .Checkbox {
371
+ background-color: var(--dodo-ui-Checkbox-secondary-active-bg);
372
+ }
373
+ .dodo-ui-Checkbox.color--secondary:active input:checked:not([disabled]) + .Checkbox {
374
+ background-color: var(--dodo-ui-Checkbox-secondary-checked-active-bg);
375
+ }
376
+ .dodo-ui-Checkbox.color--safe .Checkbox {
377
+ background-color: var(--dodo-ui-Checkbox-safe-bg);
378
+ }
379
+ .dodo-ui-Checkbox.color--safe input:checked:not([disabled]) + .Checkbox {
380
+ background-color: var(--dodo-ui-Checkbox-safe-checked-bg);
381
+ border-color: transparent;
382
+ }
383
+ .dodo-ui-Checkbox.color--safe:hover .Checkbox {
384
+ background-color: var(--dodo-ui-Checkbox-safe-hover-bg);
385
+ }
386
+ .dodo-ui-Checkbox.color--safe:hover input:checked:not([disabled]) + .Checkbox {
387
+ background-color: var(--dodo-ui-Checkbox-safe-checked-hover-bg);
388
+ }
389
+ .dodo-ui-Checkbox.color--safe:active .Checkbox {
390
+ background-color: var(--dodo-ui-Checkbox-safe-active-bg);
391
+ }
392
+ .dodo-ui-Checkbox.color--safe:active input:checked:not([disabled]) + .Checkbox {
393
+ background-color: var(--dodo-ui-Checkbox-safe-checked-active-bg);
394
+ }
395
+ .dodo-ui-Checkbox.color--warning .Checkbox {
396
+ background-color: var(--dodo-ui-Checkbox-warning-bg);
397
+ }
398
+ .dodo-ui-Checkbox.color--warning input:checked:not([disabled]) + .Checkbox {
399
+ background-color: var(--dodo-ui-Checkbox-warning-checked-bg);
400
+ border-color: transparent;
401
+ }
402
+ .dodo-ui-Checkbox.color--warning:hover .Checkbox {
403
+ background-color: var(--dodo-ui-Checkbox-warning-hover-bg);
404
+ }
405
+ .dodo-ui-Checkbox.color--warning:hover input:checked:not([disabled]) + .Checkbox {
406
+ background-color: var(--dodo-ui-Checkbox-warning-checked-hover-bg);
407
+ }
408
+ .dodo-ui-Checkbox.color--warning:active .Checkbox {
409
+ background-color: var(--dodo-ui-Checkbox-warning-active-bg);
410
+ }
411
+ .dodo-ui-Checkbox.color--warning:active input:checked:not([disabled]) + .Checkbox {
412
+ background-color: var(--dodo-ui-Checkbox-warning-checked-active-bg);
413
+ }
414
+ .dodo-ui-Checkbox.color--danger .Checkbox {
415
+ background-color: var(--dodo-ui-Checkbox-danger-bg);
416
+ }
417
+ .dodo-ui-Checkbox.color--danger input:checked:not([disabled]) + .Checkbox {
418
+ background-color: var(--dodo-ui-Checkbox-danger-checked-bg);
419
+ border-color: transparent;
420
+ }
421
+ .dodo-ui-Checkbox.color--danger:hover .Checkbox {
422
+ background-color: var(--dodo-ui-Checkbox-danger-hover-bg);
423
+ }
424
+ .dodo-ui-Checkbox.color--danger:hover input:checked:not([disabled]) + .Checkbox {
425
+ background-color: var(--dodo-ui-Checkbox-danger-checked-hover-bg);
426
+ }
427
+ .dodo-ui-Checkbox.color--danger:active .Checkbox {
428
+ background-color: var(--dodo-ui-Checkbox-danger-active-bg);
429
+ }
430
+ .dodo-ui-Checkbox.color--danger:active input:checked:not([disabled]) + .Checkbox {
431
+ background-color: var(--dodo-ui-Checkbox-danger-checked-active-bg);
432
+ }
433
+ .dodo-ui-Checkbox.disabled {
434
+ cursor: initial;
435
+ color: var(--dodo-ui-Checkbox-disabled-color);
436
+ }
437
+ .dodo-ui-Checkbox.disabled .Checkbox {
438
+ background-color: var(--dodo-ui-Checkbox-disabled-bg);
439
+ border-color: var(--dodo-ui-Checkbox-border-disabled-color);
440
+ }
441
+ .dodo-ui-Checkbox.disabled:hover {
442
+ color: var(--dodo-ui-Checkbox-disabled-color);
443
+ }
444
+ .dodo-ui-Checkbox.disabled:hover .Checkbox {
445
+ background-color: var(--dodo-ui-Checkbox-disabled-bg);
446
+ }
447
+ .dodo-ui-Checkbox.disabled:active {
448
+ color: var(--dodo-ui-Checkbox-disabled-color);
449
+ }
450
+ .dodo-ui-Checkbox.disabled:active .Checkbox {
451
+ background-color: var(--dodo-ui-Checkbox-disabled-bg);
452
+ }</style>
@@ -0,0 +1,42 @@
1
+ import type { ComponentColor } from '../../../../types/colors.js';
2
+ import type { ComponentRoundness } from '../../../../types/roundness.js';
3
+ import type { ComponentSize } from '../../../../types/size.js';
4
+ import type { Snippet } from 'svelte';
5
+ import type { ChangeEventHandler } from 'svelte/elements';
6
+ export interface CheckboxProps {
7
+ /** Checkbox contents goes here */
8
+ children?: Snippet;
9
+ /** Checkbox ref */
10
+ ref?: HTMLInputElement;
11
+ /** How large should the checkbox be? */
12
+ size?: ComponentSize;
13
+ /** What color to use? */
14
+ color?: ComponentColor;
15
+ /** How round should the border radius be? */
16
+ roundness?: ComponentRoundness;
17
+ /** Checkbox disabled state */
18
+ disabled?: boolean;
19
+ /** Name */
20
+ name?: string;
21
+ /** value */
22
+ value?: string;
23
+ /** Id */
24
+ id?: string;
25
+ /** Title (for tooltip) */
26
+ title?: string;
27
+ /** Custom css class*/
28
+ class?: string;
29
+ /** onchange event handler */
30
+ onchange?: ChangeEventHandler<HTMLInputElement>;
31
+ /** checked */
32
+ checked?: boolean;
33
+ /** indeterminate */
34
+ indeterminate?: boolean;
35
+ /** Check Icon */
36
+ customCheckIcon?: (checked: boolean) => Snippet;
37
+ /** indeterminate Icon */
38
+ customIndeterminateIcon?: (checked: boolean) => Snippet;
39
+ }
40
+ declare const Checkbox: import("svelte").Component<CheckboxProps, {}, "ref" | "checked">;
41
+ type Checkbox = ReturnType<typeof Checkbox>;
42
+ export default Checkbox;
@@ -0,0 +1,19 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Checkbox from '../Checkbox.svelte';
4
+ import { storyCheckboxArgTypes } from '../Checkbox.stories.svelte';
5
+
6
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
7
+ const { Story } = defineMeta({
8
+ component: Checkbox,
9
+ tags: ['autodocs'],
10
+ argTypes: storyCheckboxArgTypes,
11
+ });
12
+ </script>
13
+
14
+ <Story name="Primary" />
15
+ <Story name="Secondary" args={{ color: 'secondary' }} />
16
+ <Story name="Neutral" args={{ color: 'neutral' }} />
17
+ <Story name="Safe" args={{ color: 'safe' }} />
18
+ <Story name="Warning" args={{ color: 'warning' }} />
19
+ <Story name="Danger" args={{ color: 'danger' }} />
@@ -0,0 +1,26 @@
1
+ export default Color;
2
+ type Color = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Color: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -0,0 +1,27 @@
1
+ <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
+ import Checkbox from '../Checkbox.svelte';
3
+ import { storyCheckboxArgTypes } from '../Checkbox.stories.svelte';
4
+ import Icon from '@iconify/svelte';
5
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
6
+ const { Story } = defineMeta({
7
+ component: Checkbox,
8
+ tags: ['autodocs'],
9
+ argTypes: storyCheckboxArgTypes,
10
+ });
11
+ </script>
12
+
13
+ <Story name="Custom Check Icon" asChild>
14
+ <Checkbox checked>
15
+ {#snippet customCheckIcon()}
16
+ <Icon icon="line-md:check-all" width="24" height="24" />
17
+ {/snippet}
18
+ </Checkbox>
19
+ </Story>
20
+
21
+ <Story name="Custom Indeterminate Icon" asChild>
22
+ <Checkbox checked indeterminate>
23
+ {#snippet customIndeterminateIcon()}
24
+ <Icon icon="lsicon:minus-filled" width="24" height="24" />
25
+ {/snippet}
26
+ </Checkbox>
27
+ </Story>
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const Customize: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type Customize = InstanceType<typeof Customize>;
18
+ export default Customize;