@flightlesslabs/dodo-ui 0.14.0 → 0.16.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.
- package/dist/index.d.ts +13 -0
- package/dist/index.js +8 -0
- package/dist/stories/components/Form/Checkbox/Checkbox.stories.svelte +39 -0
- package/dist/stories/components/Form/Checkbox/Checkbox.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Form/Checkbox/Checkbox.svelte +452 -0
- package/dist/stories/components/Form/Checkbox/Checkbox.svelte.d.ts +42 -0
- package/dist/stories/components/Form/Checkbox/Color/Color.stories.svelte +19 -0
- package/dist/stories/components/Form/Checkbox/Color/Color.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Form/Checkbox/Customize/Customize.stories.svelte +27 -0
- package/dist/stories/components/Form/Checkbox/Customize/Customize.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Checkbox/Events/Events.stories.svelte +35 -0
- package/dist/stories/components/Form/Checkbox/Events/Events.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Checkbox/Roundness/Roundness.stories.svelte +22 -0
- package/dist/stories/components/Form/Checkbox/Roundness/Roundness.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Form/Checkbox/Size/Size.stories.svelte +16 -0
- package/dist/stories/components/Form/Checkbox/Size/Size.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Form/Checkbox/utils/scss/mixins.scss +80 -0
- package/dist/stories/components/Form/Radio/Color/Color.stories.svelte +19 -0
- package/dist/stories/components/Form/Radio/Color/Color.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Form/Radio/Events/Events.stories.svelte +32 -0
- package/dist/stories/components/Form/Radio/Events/Events.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Radio/Radio.stories.svelte +39 -0
- package/dist/stories/components/Form/Radio/Radio.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Form/Radio/Radio.svelte +413 -0
- package/dist/stories/components/Form/Radio/Radio.svelte.d.ts +36 -0
- package/dist/stories/components/Form/Radio/Roundness/Roundness.stories.svelte +22 -0
- package/dist/stories/components/Form/Radio/Roundness/Roundness.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Form/Radio/Size/Size.stories.svelte +16 -0
- package/dist/stories/components/Form/Radio/Size/Size.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Form/Radio/utils/scss/mixins.scss +85 -0
- package/dist/stories/components/Form/Toggle/Toggle.svelte +30 -40
- package/dist/stories/components/Form/Toggle/Toggle.svelte.d.ts +2 -0
- package/dist/stories/components/Form/Toggle/utils/scss/mixins.scss +1 -14
- package/dist/stories/components/Layout/Grid/Column/Column.stories.svelte +18 -0
- package/dist/stories/components/Layout/Grid/Column/Column.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Grid/Column/Column.svelte +73 -0
- package/dist/stories/components/Layout/Grid/Column/Column.svelte.d.ts +24 -0
- package/dist/stories/components/Layout/Grid/Grid.stories.svelte +179 -0
- package/dist/stories/components/Layout/Grid/Grid.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Grid/Grid.svelte +24 -0
- package/dist/stories/components/Layout/Grid/Grid.svelte.d.ts +16 -0
- package/dist/stories/components/Layout/Grid/Row/Row.stories.svelte +19 -0
- package/dist/stories/components/Layout/Grid/Row/Row.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Grid/Row/Row.svelte +20 -0
- package/dist/stories/components/Layout/Grid/Row/Row.svelte.d.ts +12 -0
- package/dist/styles/global.css +0 -1
- package/dist/styles/scss/_breakpoints.scss +5 -0
- package/dist/styles/scss/index.scss +1 -0
- package/package.json +4 -3
- package/src/lib/index.ts +19 -0
- package/src/lib/stories/components/Form/Checkbox/Checkbox.svelte +323 -0
- package/src/lib/stories/components/Form/Checkbox/utils/scss/mixins.scss +80 -0
- package/src/lib/stories/components/Form/Radio/Radio.svelte +278 -0
- package/src/lib/stories/components/Form/Radio/utils/scss/mixins.scss +85 -0
- package/src/lib/stories/components/Form/Toggle/Toggle.svelte +31 -3
- package/src/lib/stories/components/Form/Toggle/utils/scss/mixins.scss +1 -14
- package/src/lib/stories/components/Layout/Grid/Column/Column.svelte +127 -0
- package/src/lib/stories/components/Layout/Grid/Grid.svelte +47 -0
- package/src/lib/stories/components/Layout/Grid/Row/Row.svelte +36 -0
- package/src/lib/styles/global.css +0 -1
- package/src/lib/styles/scss/_breakpoints.scss +5 -0
- package/src/lib/styles/scss/index.scss +1 -0
- package/dist/styles/_breakpoint.css +0 -10
- package/src/lib/styles/_breakpoint.css +0 -10
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
</script>
|
|
3
3
|
|
|
4
4
|
<script lang="ts">"use strict";
|
|
5
|
-
let { children, size = 'normal', color = 'primary', roundness = 3, name, id, title, class: className = '', disabled = false, checked = $bindable(), ref = $bindable(), onchange, } = $props();
|
|
5
|
+
let { children, size = 'normal', color = 'primary', roundness = 3, name, id, title, class: className = '', disabled = false, checked = $bindable(), ref = $bindable(), onchange, value, } = $props();
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
<label
|
|
@@ -16,7 +16,17 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
16
16
|
].join(' ')}
|
|
17
17
|
for={id}
|
|
18
18
|
>
|
|
19
|
-
<input
|
|
19
|
+
<input
|
|
20
|
+
type="checkbox"
|
|
21
|
+
{name}
|
|
22
|
+
{id}
|
|
23
|
+
{title}
|
|
24
|
+
{disabled}
|
|
25
|
+
{onchange}
|
|
26
|
+
bind:this={ref}
|
|
27
|
+
bind:checked
|
|
28
|
+
{value}
|
|
29
|
+
/>
|
|
20
30
|
<div class="Toggle">
|
|
21
31
|
<span class="ToggleHandle"></span>
|
|
22
32
|
</div>
|
|
@@ -31,6 +41,8 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
31
41
|
<style>:global(:root) {
|
|
32
42
|
--dodo-ui-Toggle-disabled-color: var(--dodo-color-neutral-400);
|
|
33
43
|
--dodo-ui-Toggle-disabled-bg: var(--dodo-color-neutral-200);
|
|
44
|
+
--dodo-ui-Toggle-border-disabled-color: var(--dodo-color-neutral-300);
|
|
45
|
+
--dodo-ui-Toggle-border-color: var(--dodo-color-neutral-400);
|
|
34
46
|
--dodo-ui-ToggleHandle-bg: var(--dodo-color-neutral-500);
|
|
35
47
|
--dodo-ui-ToggleHandle-disabled-bg: var(--dodo-color-neutral-400);
|
|
36
48
|
--dodo-ui-Toggle-neutral-bg: var(--dodo-color-neutral-200);
|
|
@@ -74,6 +86,8 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
74
86
|
:global(.dodo-theme--dark) {
|
|
75
87
|
--dodo-ui-Toggle-disabled-bg: var(--dodo-color-neutral-100);
|
|
76
88
|
--dodo-ui-Toggle-disabled-color: var(--dodo-color-neutral-500);
|
|
89
|
+
--dodo-ui-Toggle-border-disabled-color: var(--dodo-color-neutral-400);
|
|
90
|
+
--dodo-ui-Toggle-border-color: var(--dodo-color-neutral-500);
|
|
77
91
|
--dodo-ui-ToggleHandle-bg: var(--dodo-color-neutral-300);
|
|
78
92
|
--dodo-ui-ToggleHandle-disabled-bg: var(--dodo-color-neutral-200);
|
|
79
93
|
--dodo-ui-Toggle-neutral-bg: var(--dodo-color-neutral-800);
|
|
@@ -120,11 +134,16 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
120
134
|
display: inline-flex;
|
|
121
135
|
padding: 0;
|
|
122
136
|
margin: 0;
|
|
137
|
+
position: relative;
|
|
123
138
|
}
|
|
124
139
|
.dodo-ui-Toggle input {
|
|
125
140
|
opacity: 0;
|
|
126
141
|
width: 0;
|
|
127
142
|
height: 0;
|
|
143
|
+
position: absolute;
|
|
144
|
+
}
|
|
145
|
+
.dodo-ui-Toggle input:focus-visible + .Toggle {
|
|
146
|
+
outline: 1px solid;
|
|
128
147
|
}
|
|
129
148
|
.dodo-ui-Toggle input:checked + .Toggle .ToggleHandle {
|
|
130
149
|
transform: translateX(var(--ToggleHandle-offset));
|
|
@@ -141,13 +160,13 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
141
160
|
align-items: center;
|
|
142
161
|
font-family: inherit;
|
|
143
162
|
border-style: solid;
|
|
144
|
-
border-width: var(--dodo-ui-element-border-width);
|
|
145
|
-
border-color: transparent;
|
|
146
163
|
outline: 0;
|
|
147
164
|
letter-spacing: 0.3px;
|
|
148
165
|
padding: 0 var(--dodo-ui-space-small);
|
|
149
166
|
border-radius: inherit;
|
|
150
167
|
position: relative;
|
|
168
|
+
border-width: calc(var(--dodo-ui-element-border-width) * 2);
|
|
169
|
+
border-color: var(--dodo-ui-Toggle-border-color);
|
|
151
170
|
}
|
|
152
171
|
.dodo-ui-Toggle .ToggleMessage {
|
|
153
172
|
display: flex;
|
|
@@ -206,6 +225,7 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
206
225
|
}
|
|
207
226
|
.dodo-ui-Toggle.color--neutral input:checked:not([disabled]) + .Toggle {
|
|
208
227
|
background-color: var(--dodo-ui-Toggle-neutral-checked-bg);
|
|
228
|
+
border-color: transparent;
|
|
209
229
|
}
|
|
210
230
|
.dodo-ui-Toggle.color--neutral:hover .Toggle {
|
|
211
231
|
background-color: var(--dodo-ui-Toggle-neutral-hover-bg);
|
|
@@ -219,17 +239,12 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
219
239
|
.dodo-ui-Toggle.color--neutral:active input:checked:not([disabled]) + .Toggle {
|
|
220
240
|
background-color: var(--dodo-ui-Toggle-neutral-checked-active-bg);
|
|
221
241
|
}
|
|
222
|
-
.dodo-ui-Toggle.color--neutral input:not([disabled]):focus-visible + .Toggle {
|
|
223
|
-
background-color: var(--dodo-ui-Toggle-neutral-active-bg);
|
|
224
|
-
}
|
|
225
|
-
.dodo-ui-Toggle.color--neutral input:not([disabled]):focus-visible:checked + .Toggle {
|
|
226
|
-
background-color: var(--dodo-ui-Toggle-neutral-checked-active-bg);
|
|
227
|
-
}
|
|
228
242
|
.dodo-ui-Toggle.color--primary .Toggle {
|
|
229
243
|
background-color: var(--dodo-ui-Toggle-primary-bg);
|
|
230
244
|
}
|
|
231
245
|
.dodo-ui-Toggle.color--primary input:checked:not([disabled]) + .Toggle {
|
|
232
246
|
background-color: var(--dodo-ui-Toggle-primary-checked-bg);
|
|
247
|
+
border-color: transparent;
|
|
233
248
|
}
|
|
234
249
|
.dodo-ui-Toggle.color--primary:hover .Toggle {
|
|
235
250
|
background-color: var(--dodo-ui-Toggle-primary-hover-bg);
|
|
@@ -243,17 +258,12 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
243
258
|
.dodo-ui-Toggle.color--primary:active input:checked:not([disabled]) + .Toggle {
|
|
244
259
|
background-color: var(--dodo-ui-Toggle-primary-checked-active-bg);
|
|
245
260
|
}
|
|
246
|
-
.dodo-ui-Toggle.color--primary input:not([disabled]):focus-visible + .Toggle {
|
|
247
|
-
background-color: var(--dodo-ui-Toggle-primary-active-bg);
|
|
248
|
-
}
|
|
249
|
-
.dodo-ui-Toggle.color--primary input:not([disabled]):focus-visible:checked + .Toggle {
|
|
250
|
-
background-color: var(--dodo-ui-Toggle-primary-checked-active-bg);
|
|
251
|
-
}
|
|
252
261
|
.dodo-ui-Toggle.color--secondary .Toggle {
|
|
253
262
|
background-color: var(--dodo-ui-Toggle-secondary-bg);
|
|
254
263
|
}
|
|
255
264
|
.dodo-ui-Toggle.color--secondary input:checked:not([disabled]) + .Toggle {
|
|
256
265
|
background-color: var(--dodo-ui-Toggle-secondary-checked-bg);
|
|
266
|
+
border-color: transparent;
|
|
257
267
|
}
|
|
258
268
|
.dodo-ui-Toggle.color--secondary:hover .Toggle {
|
|
259
269
|
background-color: var(--dodo-ui-Toggle-secondary-hover-bg);
|
|
@@ -267,17 +277,12 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
267
277
|
.dodo-ui-Toggle.color--secondary:active input:checked:not([disabled]) + .Toggle {
|
|
268
278
|
background-color: var(--dodo-ui-Toggle-secondary-checked-active-bg);
|
|
269
279
|
}
|
|
270
|
-
.dodo-ui-Toggle.color--secondary input:not([disabled]):focus-visible + .Toggle {
|
|
271
|
-
background-color: var(--dodo-ui-Toggle-secondary-active-bg);
|
|
272
|
-
}
|
|
273
|
-
.dodo-ui-Toggle.color--secondary input:not([disabled]):focus-visible:checked + .Toggle {
|
|
274
|
-
background-color: var(--dodo-ui-Toggle-secondary-checked-active-bg);
|
|
275
|
-
}
|
|
276
280
|
.dodo-ui-Toggle.color--safe .Toggle {
|
|
277
281
|
background-color: var(--dodo-ui-Toggle-safe-bg);
|
|
278
282
|
}
|
|
279
283
|
.dodo-ui-Toggle.color--safe input:checked:not([disabled]) + .Toggle {
|
|
280
284
|
background-color: var(--dodo-ui-Toggle-safe-checked-bg);
|
|
285
|
+
border-color: transparent;
|
|
281
286
|
}
|
|
282
287
|
.dodo-ui-Toggle.color--safe:hover .Toggle {
|
|
283
288
|
background-color: var(--dodo-ui-Toggle-safe-hover-bg);
|
|
@@ -291,17 +296,12 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
291
296
|
.dodo-ui-Toggle.color--safe:active input:checked:not([disabled]) + .Toggle {
|
|
292
297
|
background-color: var(--dodo-ui-Toggle-safe-checked-active-bg);
|
|
293
298
|
}
|
|
294
|
-
.dodo-ui-Toggle.color--safe input:not([disabled]):focus-visible + .Toggle {
|
|
295
|
-
background-color: var(--dodo-ui-Toggle-safe-active-bg);
|
|
296
|
-
}
|
|
297
|
-
.dodo-ui-Toggle.color--safe input:not([disabled]):focus-visible:checked + .Toggle {
|
|
298
|
-
background-color: var(--dodo-ui-Toggle-safe-checked-active-bg);
|
|
299
|
-
}
|
|
300
299
|
.dodo-ui-Toggle.color--warning .Toggle {
|
|
301
300
|
background-color: var(--dodo-ui-Toggle-warning-bg);
|
|
302
301
|
}
|
|
303
302
|
.dodo-ui-Toggle.color--warning input:checked:not([disabled]) + .Toggle {
|
|
304
303
|
background-color: var(--dodo-ui-Toggle-warning-checked-bg);
|
|
304
|
+
border-color: transparent;
|
|
305
305
|
}
|
|
306
306
|
.dodo-ui-Toggle.color--warning:hover .Toggle {
|
|
307
307
|
background-color: var(--dodo-ui-Toggle-warning-hover-bg);
|
|
@@ -315,17 +315,12 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
315
315
|
.dodo-ui-Toggle.color--warning:active input:checked:not([disabled]) + .Toggle {
|
|
316
316
|
background-color: var(--dodo-ui-Toggle-warning-checked-active-bg);
|
|
317
317
|
}
|
|
318
|
-
.dodo-ui-Toggle.color--warning input:not([disabled]):focus-visible + .Toggle {
|
|
319
|
-
background-color: var(--dodo-ui-Toggle-warning-active-bg);
|
|
320
|
-
}
|
|
321
|
-
.dodo-ui-Toggle.color--warning input:not([disabled]):focus-visible:checked + .Toggle {
|
|
322
|
-
background-color: var(--dodo-ui-Toggle-warning-checked-active-bg);
|
|
323
|
-
}
|
|
324
318
|
.dodo-ui-Toggle.color--danger .Toggle {
|
|
325
319
|
background-color: var(--dodo-ui-Toggle-danger-bg);
|
|
326
320
|
}
|
|
327
321
|
.dodo-ui-Toggle.color--danger input:checked:not([disabled]) + .Toggle {
|
|
328
322
|
background-color: var(--dodo-ui-Toggle-danger-checked-bg);
|
|
323
|
+
border-color: transparent;
|
|
329
324
|
}
|
|
330
325
|
.dodo-ui-Toggle.color--danger:hover .Toggle {
|
|
331
326
|
background-color: var(--dodo-ui-Toggle-danger-hover-bg);
|
|
@@ -339,18 +334,13 @@ let { children, size = 'normal', color = 'primary', roundness = 3, name, id, tit
|
|
|
339
334
|
.dodo-ui-Toggle.color--danger:active input:checked:not([disabled]) + .Toggle {
|
|
340
335
|
background-color: var(--dodo-ui-Toggle-danger-checked-active-bg);
|
|
341
336
|
}
|
|
342
|
-
.dodo-ui-Toggle.color--danger input:not([disabled]):focus-visible + .Toggle {
|
|
343
|
-
background-color: var(--dodo-ui-Toggle-danger-active-bg);
|
|
344
|
-
}
|
|
345
|
-
.dodo-ui-Toggle.color--danger input:not([disabled]):focus-visible:checked + .Toggle {
|
|
346
|
-
background-color: var(--dodo-ui-Toggle-danger-checked-active-bg);
|
|
347
|
-
}
|
|
348
337
|
.dodo-ui-Toggle.disabled {
|
|
349
338
|
cursor: initial;
|
|
350
339
|
color: var(--dodo-ui-Toggle-disabled-color);
|
|
351
340
|
}
|
|
352
341
|
.dodo-ui-Toggle.disabled .Toggle {
|
|
353
342
|
background-color: var(--dodo-ui-Toggle-disabled-bg);
|
|
343
|
+
border-color: var(--dodo-ui-Toggle-border-disabled-color);
|
|
354
344
|
}
|
|
355
345
|
.dodo-ui-Toggle.disabled .ToggleHandle {
|
|
356
346
|
background-color: var(--dodo-ui-ToggleHandle-disabled-bg);
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
input:checked:not([disabled]) {
|
|
38
38
|
& + .Toggle {
|
|
39
39
|
background-color: var(--dodo-ui-Toggle-#{$theme}-checked-bg);
|
|
40
|
+
border-color: transparent;
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
|
|
@@ -63,19 +64,5 @@
|
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
-
input:not([disabled]) {
|
|
68
|
-
&:focus-visible {
|
|
69
|
-
& + .Toggle {
|
|
70
|
-
background-color: var(--dodo-ui-Toggle-#{$theme}-active-bg);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
&:checked {
|
|
74
|
-
& + .Toggle {
|
|
75
|
-
background-color: var(--dodo-ui-Toggle-#{$theme}-checked-active-bg);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
67
|
}
|
|
81
68
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
2
|
+
import Column, { GridColumnSizeArray } from './Column.svelte';
|
|
3
|
+
export const storyGridColumnArgTypes = {
|
|
4
|
+
size: {
|
|
5
|
+
control: { type: 'select' },
|
|
6
|
+
options: GridColumnSizeArray,
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
10
|
+
const { Story } = defineMeta({
|
|
11
|
+
component: Column,
|
|
12
|
+
tags: ['autodocs'],
|
|
13
|
+
argTypes: storyGridColumnArgTypes,
|
|
14
|
+
});
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<!-- Default Grid Column -->
|
|
18
|
+
<Story name="Default">Hola!</Story>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Column from './Column.svelte';
|
|
2
|
+
import type { StoryBookArgTypes } from '../../../../../storybook-types.js';
|
|
3
|
+
export declare const storyGridColumnArgTypes: 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 Column: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
18
|
+
[evt: string]: CustomEvent<any>;
|
|
19
|
+
}, {}, {}, string>;
|
|
20
|
+
type Column = InstanceType<typeof Column>;
|
|
21
|
+
export default Column;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<script lang="ts" module>import {} from 'svelte';
|
|
2
|
+
export const GridColumnSizeArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script lang="ts">"use strict";
|
|
6
|
+
let { children, class: className = '', ref = $bindable(), sm = 12, md, lg, xl, xl2, } = $props();
|
|
7
|
+
const breakpoints = [
|
|
8
|
+
{ name: 'sm', value: sm },
|
|
9
|
+
{ name: 'md', value: md },
|
|
10
|
+
{ name: 'lg', value: lg },
|
|
11
|
+
{ name: 'xl', value: xl },
|
|
12
|
+
{ name: 'xl2', value: xl2 },
|
|
13
|
+
];
|
|
14
|
+
function getBreakpointClasses() {
|
|
15
|
+
let classNameBreakpoints = [];
|
|
16
|
+
for (let index = 0; index < breakpoints.length; index++) {
|
|
17
|
+
const element = breakpoints[index];
|
|
18
|
+
if (!element.value) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
classNameBreakpoints.push(`breakpoint--${element.name}`);
|
|
22
|
+
}
|
|
23
|
+
return classNameBreakpoints;
|
|
24
|
+
}
|
|
25
|
+
function getBreakpointCssVariables() {
|
|
26
|
+
let cssVariablesBreakpoints = [];
|
|
27
|
+
for (let index = 0; index < breakpoints.length; index++) {
|
|
28
|
+
const element = breakpoints[index];
|
|
29
|
+
if (!element.value) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
cssVariablesBreakpoints.push(`--GridColumnBreakpoint-${element.name}: ${element.value}`);
|
|
33
|
+
}
|
|
34
|
+
return cssVariablesBreakpoints.join(';');
|
|
35
|
+
}
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<div
|
|
39
|
+
class={['dodo-ui-GridColumn', ...getBreakpointClasses(), className].join(' ')}
|
|
40
|
+
style={getBreakpointCssVariables()}
|
|
41
|
+
bind:this={ref}
|
|
42
|
+
>
|
|
43
|
+
{#if children}
|
|
44
|
+
{@render children()}
|
|
45
|
+
{/if}
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
<style>.dodo-ui-GridColumn {
|
|
49
|
+
min-width: 0;
|
|
50
|
+
}
|
|
51
|
+
.dodo-ui-GridColumn.breakpoint--sm {
|
|
52
|
+
grid-column: span var(--GridColumnBreakpoint-sm);
|
|
53
|
+
}
|
|
54
|
+
@media (min-width: 48rem) {
|
|
55
|
+
.dodo-ui-GridColumn.breakpoint--md {
|
|
56
|
+
grid-column: span var(--GridColumnBreakpoint-md);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
@media (min-width: 64rem) {
|
|
60
|
+
.dodo-ui-GridColumn.breakpoint--lg {
|
|
61
|
+
grid-column: span var(--GridColumnBreakpoint-lg);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
@media (min-width: 80rem) {
|
|
65
|
+
.dodo-ui-GridColumn.breakpoint--xl {
|
|
66
|
+
grid-column: span var(--GridColumnBreakpoint-xl);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
@media (min-width: 96rem) {
|
|
70
|
+
.dodo-ui-GridColumn.breakpoint--xl2 {
|
|
71
|
+
grid-column: span var(--GridColumnBreakpoint-xl2);
|
|
72
|
+
}
|
|
73
|
+
}</style>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Snippet } from 'svelte';
|
|
2
|
+
export type GridColumnSize = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
3
|
+
export declare const GridColumnSizeArray: GridColumnSize[];
|
|
4
|
+
export interface GridColumnProps {
|
|
5
|
+
/** GridColumn contents goes here */
|
|
6
|
+
children?: Snippet;
|
|
7
|
+
/** GridColumn ref */
|
|
8
|
+
ref?: HTMLDivElement;
|
|
9
|
+
/** Custom css class */
|
|
10
|
+
class?: string;
|
|
11
|
+
/** Breakpoint: sm */
|
|
12
|
+
sm?: GridColumnSize;
|
|
13
|
+
/** Breakpoint: md */
|
|
14
|
+
md?: GridColumnSize;
|
|
15
|
+
/** Breakpoint: lg */
|
|
16
|
+
lg?: GridColumnSize;
|
|
17
|
+
/** Breakpoint: xl */
|
|
18
|
+
xl?: GridColumnSize;
|
|
19
|
+
/** Breakpoint: 2 xl */
|
|
20
|
+
xl2?: GridColumnSize;
|
|
21
|
+
}
|
|
22
|
+
declare const Column: import("svelte").Component<GridColumnProps, {}, "ref">;
|
|
23
|
+
type Column = ReturnType<typeof Column>;
|
|
24
|
+
export default Column;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
<script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
2
|
+
import Grid from './Grid.svelte';
|
|
3
|
+
import Row from './Row/Row.svelte';
|
|
4
|
+
import Column from './Column/Column.svelte';
|
|
5
|
+
import Paper from '../Paper/Paper.svelte';
|
|
6
|
+
export const storyGridArgTypes = {};
|
|
7
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
component: Grid,
|
|
10
|
+
tags: ['autodocs'],
|
|
11
|
+
argTypes: storyGridArgTypes,
|
|
12
|
+
});
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- Default Grid -->
|
|
16
|
+
<Story name="Default" asChild>
|
|
17
|
+
<Grid>
|
|
18
|
+
<Column>Hola!</Column>
|
|
19
|
+
<Column>Hola!</Column>
|
|
20
|
+
<Column>Hola!</Column>
|
|
21
|
+
</Grid>
|
|
22
|
+
</Story>
|
|
23
|
+
|
|
24
|
+
<Story name="Example Column" asChild>
|
|
25
|
+
<Grid>
|
|
26
|
+
<Column sm={10}>
|
|
27
|
+
<Paper color="primary"><p>10</p></Paper>
|
|
28
|
+
</Column>
|
|
29
|
+
<Column sm={2}><Paper color="primary"><p>2</p></Paper></Column>
|
|
30
|
+
<Column sm={4}><Paper color="primary"><p>4</p></Paper></Column>
|
|
31
|
+
</Grid>
|
|
32
|
+
</Story>
|
|
33
|
+
|
|
34
|
+
<!-- the Row helps to furher separate Columns -->
|
|
35
|
+
<Story name="Example Row" asChild>
|
|
36
|
+
<Grid>
|
|
37
|
+
<Row>
|
|
38
|
+
<Column sm={10}>
|
|
39
|
+
<Paper color="primary"><p>10</p></Paper>
|
|
40
|
+
</Column>
|
|
41
|
+
<Column sm={2}><Paper color="primary"><p>2</p></Paper></Column>
|
|
42
|
+
<Column sm={4}><Paper color="primary"><p>4</p></Paper></Column>
|
|
43
|
+
</Row>
|
|
44
|
+
<Row>
|
|
45
|
+
<Column sm={10}>
|
|
46
|
+
<Paper color="primary"><p>10</p></Paper>
|
|
47
|
+
</Column>
|
|
48
|
+
<Column sm={2}><Paper color="primary"><p>2</p></Paper></Column>
|
|
49
|
+
<Column sm={4}><Paper color="primary"><p>4</p></Paper></Column>
|
|
50
|
+
</Row>
|
|
51
|
+
</Grid>
|
|
52
|
+
</Story>
|
|
53
|
+
|
|
54
|
+
<Story name="Nested" asChild>
|
|
55
|
+
<Grid>
|
|
56
|
+
<Column sm={6}>
|
|
57
|
+
<Paper color="primary"><p>6</p></Paper>
|
|
58
|
+
</Column>
|
|
59
|
+
<Column sm={6}>
|
|
60
|
+
<Grid>
|
|
61
|
+
<Column sm={8}>
|
|
62
|
+
<Paper color="safe"><p>8</p></Paper>
|
|
63
|
+
</Column>
|
|
64
|
+
<Column sm={4}>
|
|
65
|
+
<Paper color="safe"><p>4</p></Paper>
|
|
66
|
+
</Column>
|
|
67
|
+
<Column sm={12}>
|
|
68
|
+
<Paper color="safe"><p>12</p></Paper>
|
|
69
|
+
</Column>
|
|
70
|
+
</Grid>
|
|
71
|
+
</Column>
|
|
72
|
+
</Grid>
|
|
73
|
+
</Story>
|
|
74
|
+
|
|
75
|
+
<!-- Resize the screen to see the effect -->
|
|
76
|
+
<Story name="Responsive" asChild>
|
|
77
|
+
<Grid spacing={2}>
|
|
78
|
+
<Row>
|
|
79
|
+
<Column md={8}>
|
|
80
|
+
<Paper color="primary"><p>md:8</p></Paper>
|
|
81
|
+
</Column>
|
|
82
|
+
<Column md={4}><Paper color="primary"><p>md:4</p></Paper></Column>
|
|
83
|
+
</Row>
|
|
84
|
+
<Row>
|
|
85
|
+
<Column sm={4}>
|
|
86
|
+
<Paper color="primary"><p>sm:4</p></Paper>
|
|
87
|
+
</Column>
|
|
88
|
+
<Column><Paper color="primary"><p>sm:12</p></Paper></Column>
|
|
89
|
+
</Row>
|
|
90
|
+
<Row>
|
|
91
|
+
<Column lg={2}>
|
|
92
|
+
<Paper color="primary"><p>lg:2</p></Paper>
|
|
93
|
+
</Column>
|
|
94
|
+
<Column lg={10}>
|
|
95
|
+
<Paper color="primary"><p>lg:10</p></Paper>
|
|
96
|
+
</Column>
|
|
97
|
+
</Row>
|
|
98
|
+
<Row>
|
|
99
|
+
<Column xl={2}>
|
|
100
|
+
<Paper color="primary"><p>xl:2</p></Paper>
|
|
101
|
+
</Column>
|
|
102
|
+
<Column xl={10}>
|
|
103
|
+
<Paper color="primary"><p>xl:10</p></Paper>
|
|
104
|
+
</Column>
|
|
105
|
+
</Row>
|
|
106
|
+
<Row>
|
|
107
|
+
<Column xl2={2}>
|
|
108
|
+
<Paper color="primary"><p>xl2:2</p></Paper>
|
|
109
|
+
</Column>
|
|
110
|
+
<Column xl2={10}>
|
|
111
|
+
<Paper color="primary"><p>xl2:10</p></Paper>
|
|
112
|
+
</Column>
|
|
113
|
+
</Row>
|
|
114
|
+
</Grid>
|
|
115
|
+
</Story>
|
|
116
|
+
|
|
117
|
+
<Story name="Spacing" asChild>
|
|
118
|
+
<Grid spacing={2}>
|
|
119
|
+
<Row>
|
|
120
|
+
<Column sm={4}>
|
|
121
|
+
<Paper color="primary"><p>4</p></Paper>
|
|
122
|
+
</Column>
|
|
123
|
+
<Column sm={4}><Paper color="primary"><p>4</p></Paper></Column>
|
|
124
|
+
<Column sm={4}><Paper color="primary"><p>4</p></Paper></Column>
|
|
125
|
+
</Row>
|
|
126
|
+
<Row>
|
|
127
|
+
<Column sm={4}>
|
|
128
|
+
<Paper color="primary"><p>4</p></Paper>
|
|
129
|
+
</Column>
|
|
130
|
+
<Column><Paper color="primary"><p>12</p></Paper></Column>
|
|
131
|
+
</Row>
|
|
132
|
+
<Row>
|
|
133
|
+
<Column sm={2}>
|
|
134
|
+
<Paper color="primary"><p>2</p></Paper>
|
|
135
|
+
</Column>
|
|
136
|
+
<Column sm={3}>
|
|
137
|
+
<Paper color="primary"><p>3</p></Paper>
|
|
138
|
+
</Column>
|
|
139
|
+
<Column sm={4}>
|
|
140
|
+
<Paper color="primary"><p>4</p></Paper>
|
|
141
|
+
</Column>
|
|
142
|
+
<Column>
|
|
143
|
+
<Paper color="primary"><p>12</p></Paper>
|
|
144
|
+
</Column>
|
|
145
|
+
</Row>
|
|
146
|
+
</Grid>
|
|
147
|
+
</Story>
|
|
148
|
+
|
|
149
|
+
<Story name="RowSpacing" asChild>
|
|
150
|
+
<Grid rowSpacing={4}>
|
|
151
|
+
<Row>
|
|
152
|
+
<Column sm={4}>
|
|
153
|
+
<Paper color="primary"><p>4</p></Paper>
|
|
154
|
+
</Column>
|
|
155
|
+
<Column sm={4}><Paper color="primary"><p>4</p></Paper></Column>
|
|
156
|
+
<Column sm={4}><Paper color="primary"><p>4</p></Paper></Column>
|
|
157
|
+
</Row>
|
|
158
|
+
<Row>
|
|
159
|
+
<Column sm={4}>
|
|
160
|
+
<Paper color="primary"><p>4</p></Paper>
|
|
161
|
+
</Column>
|
|
162
|
+
<Column><Paper color="primary"><p>12</p></Paper></Column>
|
|
163
|
+
</Row>
|
|
164
|
+
<Row>
|
|
165
|
+
<Column sm={2}>
|
|
166
|
+
<Paper color="primary"><p>2</p></Paper>
|
|
167
|
+
</Column>
|
|
168
|
+
<Column sm={3}>
|
|
169
|
+
<Paper color="primary"><p>3</p></Paper>
|
|
170
|
+
</Column>
|
|
171
|
+
<Column sm={4}>
|
|
172
|
+
<Paper color="primary"><p>4</p></Paper>
|
|
173
|
+
</Column>
|
|
174
|
+
<Column>
|
|
175
|
+
<Paper color="primary"><p>12</p></Paper>
|
|
176
|
+
</Column>
|
|
177
|
+
</Row>
|
|
178
|
+
</Grid>
|
|
179
|
+
</Story>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Grid from './Grid.svelte';
|
|
2
|
+
import type { StoryBookArgTypes } from '../../../../storybook-types.js';
|
|
3
|
+
export declare const storyGridArgTypes: 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 Grid: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
18
|
+
[evt: string]: CustomEvent<any>;
|
|
19
|
+
}, {}, {}, string>;
|
|
20
|
+
type Grid = InstanceType<typeof Grid>;
|
|
21
|
+
export default Grid;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script lang="ts" module>import {} from 'svelte';
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<script lang="ts">"use strict";
|
|
5
|
+
let { children, class: className = '', ref = $bindable(), spacing = 1, rowSpacing, } = $props();
|
|
6
|
+
const rowSpacingModified = rowSpacing || rowSpacing === 0 ? rowSpacing : spacing;
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<div
|
|
10
|
+
class={['dodo-ui-Grid', className].join(' ')}
|
|
11
|
+
bind:this={ref}
|
|
12
|
+
style={`--GridSpacing: ${spacing}; --GridRowSpacing: ${rowSpacingModified};`}
|
|
13
|
+
>
|
|
14
|
+
{#if children}
|
|
15
|
+
{@render children()}
|
|
16
|
+
{/if}
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<style>.dodo-ui-Grid {
|
|
20
|
+
display: grid;
|
|
21
|
+
grid-template-columns: repeat(12, 1fr);
|
|
22
|
+
gap: calc(var(--GridRowSpacing) * var(--dodo-ui-space));
|
|
23
|
+
grid-auto-flow: row;
|
|
24
|
+
}</style>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Snippet } from 'svelte';
|
|
2
|
+
export interface GridProps {
|
|
3
|
+
/** Grid contents goes here */
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
/** Grid ref */
|
|
6
|
+
ref?: HTMLDivElement;
|
|
7
|
+
/** Custom css class */
|
|
8
|
+
class?: string;
|
|
9
|
+
/** Grid spacing, affects Coulumns */
|
|
10
|
+
spacing?: number;
|
|
11
|
+
/** Optional Row spacing, default is 0 */
|
|
12
|
+
rowSpacing?: number;
|
|
13
|
+
}
|
|
14
|
+
declare const Grid: import("svelte").Component<GridProps, {}, "ref">;
|
|
15
|
+
type Grid = ReturnType<typeof Grid>;
|
|
16
|
+
export default Grid;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
2
|
+
import Row from './Row.svelte';
|
|
3
|
+
import Column from '../Column/Column.svelte';
|
|
4
|
+
export const storyGridRowArgTypes = {};
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
component: Row,
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
argTypes: storyGridRowArgTypes,
|
|
10
|
+
});
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<!-- Default Grid Row -->
|
|
14
|
+
<Story name="Default" asChild>
|
|
15
|
+
<Row>
|
|
16
|
+
<Column>Hola!</Column>
|
|
17
|
+
<Column>Hola!</Column>
|
|
18
|
+
</Row>
|
|
19
|
+
</Story>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Row from './Row.svelte';
|
|
2
|
+
import type { StoryBookArgTypes } from '../../../../../storybook-types.js';
|
|
3
|
+
export declare const storyGridRowArgTypes: 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 Row: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
18
|
+
[evt: string]: CustomEvent<any>;
|
|
19
|
+
}, {}, {}, string>;
|
|
20
|
+
type Row = InstanceType<typeof Row>;
|
|
21
|
+
export default Row;
|