@flightlesslabs/dodo-ui 0.7.2 → 0.8.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 +5 -0
- package/dist/index.js +3 -0
- package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte +16 -1
- package/dist/stories/components/Form/Select/DropDownArrow/DropDownArrow.stories.svelte +59 -0
- package/dist/stories/components/Form/Select/DropDownArrow/DropDownArrow.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/Positions/AutoPosition/AutoPosition.stories.svelte +54 -0
- package/dist/stories/components/Form/Select/Positions/AutoPosition/AutoPosition.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/Positions/Positions.stories.svelte +83 -0
- package/dist/stories/components/Form/Select/Positions/Positions.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/Select.svelte +107 -123
- package/dist/stories/components/Form/Select/Select.svelte.d.ts +15 -2
- package/dist/stories/components/Layout/Menu/DynamicMenu/Customize/Customize.stories.svelte +28 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/Customize/Customize.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.stories.svelte +51 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.stories.svelte.d.ts +22 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.svelte +129 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.svelte.d.ts +81 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/Events/Events.stories.svelte +46 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/Events/Events.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/KeybaordNavigation/KeybaordNavigation.stories.svelte +27 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/KeybaordNavigation/KeybaordNavigation.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Layout/Menu/DynamicMenu/Options/OptionFormat.mdx +72 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte.d.ts +1 -1
- package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte +1 -0
- package/package.json +15 -17
- package/src/lib/index.ts +13 -0
- package/src/lib/stories/Home.mdx +59 -0
- package/src/lib/stories/assets/dark-theme-toggle.png +0 -0
- package/src/lib/stories/components/Form/Button/Button.stories.svelte +61 -0
- package/src/lib/stories/components/Form/Button/Color/Color.stories.svelte +43 -0
- package/src/lib/stories/components/Form/Button/Events/Events.stories.svelte +36 -0
- package/src/lib/stories/components/Form/Button/IconButton/IconButton.stories.svelte +43 -0
- package/src/lib/stories/components/Form/Button/Roundness/Roundness.stories.svelte +23 -0
- package/src/lib/stories/components/Form/Button/Size/Size.stories.svelte +16 -0
- package/src/lib/stories/components/Form/Button/Variant/Variant.stories.svelte +18 -0
- package/src/lib/stories/components/Form/FormControl/FormControl.stories.svelte +28 -0
- package/src/lib/stories/components/Form/Label/Label.stories.svelte +13 -0
- package/src/lib/stories/components/Form/Message/Color/Color.stories.svelte +36 -0
- package/src/lib/stories/components/Form/Message/Message.stories.svelte +27 -0
- package/src/lib/stories/components/Form/Message/Size/Size.stories.svelte +22 -0
- package/src/lib/stories/components/Form/PasswordInput/Events/Events.stories.svelte +110 -0
- package/src/lib/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +59 -0
- package/src/lib/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +20 -0
- package/src/lib/stories/components/Form/PasswordInput/Size/Size.stories.svelte +16 -0
- package/src/lib/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +31 -0
- package/src/lib/stories/components/Form/Select/Customize/Customize.stories.svelte +139 -0
- package/src/lib/stories/components/Form/Select/DropDownArrow/DropDownArrow.stories.svelte +63 -0
- package/src/lib/stories/components/Form/Select/Events/Events.stories.svelte +144 -0
- package/src/lib/stories/components/Form/Select/Options/OptionFormat.mdx +40 -0
- package/src/lib/stories/components/Form/Select/Positions/AutoPosition/AutoPosition.stories.svelte +58 -0
- package/src/lib/stories/components/Form/Select/Positions/Positions.stories.svelte +87 -0
- package/src/lib/stories/components/Form/Select/Roundness/Roundness.stories.svelte +32 -0
- package/src/lib/stories/components/Form/Select/Select.stories.svelte +121 -0
- package/src/lib/stories/components/Form/Select/Select.svelte +153 -146
- package/src/lib/stories/components/Form/Select/Size/Size.stories.svelte +28 -0
- package/src/lib/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte +43 -0
- package/src/lib/stories/components/Form/TextInput/Events/Events.stories.svelte +97 -0
- package/src/lib/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +21 -0
- package/src/lib/stories/components/Form/TextInput/Size/Size.stories.svelte +17 -0
- package/src/lib/stories/components/Form/TextInput/TextInput.stories.svelte +43 -0
- package/src/lib/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +47 -0
- package/src/lib/stories/components/Layout/Menu/DynamicMenu/Customize/Customize.stories.svelte +30 -0
- package/src/lib/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.stories.svelte +56 -0
- package/src/lib/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.svelte +262 -0
- package/src/lib/stories/components/Layout/Menu/DynamicMenu/Events/Events.stories.svelte +48 -0
- package/src/lib/stories/components/Layout/Menu/DynamicMenu/KeybaordNavigation/KeybaordNavigation.stories.svelte +29 -0
- package/src/lib/stories/components/Layout/Menu/DynamicMenu/Options/OptionFormat.mdx +72 -0
- package/src/lib/stories/components/Layout/Menu/Menu.stories.svelte +69 -0
- package/src/lib/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte +34 -0
- package/src/lib/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +1 -1
- package/src/lib/stories/components/Layout/Menu/MenuItem/Size/Size.stories.svelte +16 -0
- package/src/lib/stories/components/Layout/Menu/MenuItem/Type/Type.stories.svelte +21 -0
- package/src/lib/stories/components/Layout/Menu/Size/Size.stories.svelte +37 -0
- package/src/lib/stories/components/Layout/Paper/Color/Color.stories.svelte +63 -0
- package/src/lib/stories/components/Layout/Paper/Paper.stories.svelte +50 -0
- package/src/lib/stories/components/Layout/Paper/Roundness/Roundness.stories.svelte +25 -0
- package/src/lib/stories/components/Layout/Paper/Shadow/Shadow.stories.svelte +24 -0
- package/src/lib/stories/components/Layout/Separator/Color/Color.stories.svelte +19 -0
- package/src/lib/stories/components/Layout/Separator/Separator.stories.svelte +30 -0
- package/src/lib/stories/developer tools/Intro.mdx +9 -0
- package/src/lib/stories/developer tools/components/DynamicInput/DynamicInput.stories.svelte +53 -0
- package/src/lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte +1 -0
- package/src/lib/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte +17 -0
- package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +38 -0
- package/src/lib/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +20 -0
- package/src/lib/stories/developer tools/components/InputEnclosure/Size/Size.stories.svelte +16 -0
- package/src/lib/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +47 -0
- package/src/lib/stories/developer tools/components/Popper/Popper.stories.svelte +124 -0
- package/src/lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte +64 -0
- package/src/lib/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte +92 -0
- package/src/lib/stories/developer tools/components/Popper/Positions/Positions.stories.svelte +114 -0
- package/src/lib/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +25 -0
- package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +30 -0
- package/src/lib/stories/developer tools/directives/clickOutside/index.mdx +25 -0
- package/src/lib/stories/developer tools/philosophy/Colors/Colors.mdx +43 -0
- package/src/lib/stories/developer tools/philosophy/Colors/Colors.stories.svelte +22 -0
- package/src/lib/stories/developer tools/philosophy/Colors/Opacity.stories.svelte +11 -0
- package/src/lib/stories/developer tools/philosophy/Themes.mdx +23 -0
package/src/lib/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import InputEnclosure from '../InputEnclosure.svelte';
|
|
4
|
+
import { storyInputEnclosureArgTypes } from '../InputEnclosure.stories.svelte';
|
|
5
|
+
import Icon from '@iconify/svelte';
|
|
6
|
+
|
|
7
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
component: InputEnclosure,
|
|
10
|
+
tags: ['autodocs'],
|
|
11
|
+
argTypes: storyInputEnclosureArgTypes,
|
|
12
|
+
});
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- InputEnclosure icon in front. -->
|
|
16
|
+
<Story name="Icon Before" asChild>
|
|
17
|
+
<InputEnclosure>
|
|
18
|
+
{#snippet before()}
|
|
19
|
+
<Icon icon="material-symbols:content-copy" />
|
|
20
|
+
{/snippet}
|
|
21
|
+
</InputEnclosure>
|
|
22
|
+
</Story>
|
|
23
|
+
|
|
24
|
+
<!-- InputEnclosure icon in front. -->
|
|
25
|
+
<Story name="Icon After" asChild>
|
|
26
|
+
<InputEnclosure>
|
|
27
|
+
{#snippet after()}
|
|
28
|
+
<Icon icon="material-symbols:download-2" />
|
|
29
|
+
{/snippet}
|
|
30
|
+
</InputEnclosure>
|
|
31
|
+
</Story>
|
|
32
|
+
|
|
33
|
+
<Story name="Small" args={{ size: 'small' }} asChild>
|
|
34
|
+
<InputEnclosure size="small">
|
|
35
|
+
{#snippet before()}
|
|
36
|
+
<Icon icon="material-symbols:content-copy" />
|
|
37
|
+
{/snippet}
|
|
38
|
+
</InputEnclosure>
|
|
39
|
+
</Story>
|
|
40
|
+
|
|
41
|
+
<Story name="Large" args={{ size: 'large' }} asChild>
|
|
42
|
+
<InputEnclosure size="large">
|
|
43
|
+
{#snippet before()}
|
|
44
|
+
<Icon icon="material-symbols:content-copy" />
|
|
45
|
+
{/snippet}
|
|
46
|
+
</InputEnclosure>
|
|
47
|
+
</Story>
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import type { StoryBookArgTypes } from '$lib/storybook-types.js';
|
|
4
|
+
import { Menu, MenuItem, Popper } from '$lib/index.js';
|
|
5
|
+
import Button from '$lib/stories/components/Form/Button/Button.svelte';
|
|
6
|
+
import { positionXArray, positionYArray } from '$lib/types/position.js';
|
|
7
|
+
|
|
8
|
+
export const storyPopperArgTypes: StoryBookArgTypes = {
|
|
9
|
+
popupPositionX: {
|
|
10
|
+
control: { type: 'select' },
|
|
11
|
+
options: positionXArray,
|
|
12
|
+
},
|
|
13
|
+
popupPositionY: {
|
|
14
|
+
control: { type: 'select' },
|
|
15
|
+
options: positionYArray,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
20
|
+
const { Story } = defineMeta({
|
|
21
|
+
component: Popper,
|
|
22
|
+
tags: ['autodocs'],
|
|
23
|
+
argTypes: storyPopperArgTypes,
|
|
24
|
+
parameters: {
|
|
25
|
+
docs: {
|
|
26
|
+
story: {
|
|
27
|
+
height: '200px',
|
|
28
|
+
inline: false,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
let open = $state(false);
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<Story name="Default" args={{ open, onClickOutside: () => (open = false) }} asChild>
|
|
38
|
+
<Popper {open} onClickOutside={() => (open = false)}>
|
|
39
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
40
|
+
{#snippet popupChildren()}
|
|
41
|
+
<Menu>
|
|
42
|
+
<MenuItem>One</MenuItem>
|
|
43
|
+
<MenuItem>Two</MenuItem>
|
|
44
|
+
<MenuItem>Three</MenuItem>
|
|
45
|
+
</Menu>
|
|
46
|
+
{/snippet}
|
|
47
|
+
</Popper>
|
|
48
|
+
</Story>
|
|
49
|
+
|
|
50
|
+
<Story name="MenuOpen" args={{ open: true }} asChild>
|
|
51
|
+
<Popper open>
|
|
52
|
+
Hello! how are you doing?
|
|
53
|
+
{#snippet popupChildren()}
|
|
54
|
+
<Menu>
|
|
55
|
+
<MenuItem>One</MenuItem>
|
|
56
|
+
<MenuItem>Two</MenuItem>
|
|
57
|
+
<MenuItem>Three</MenuItem>
|
|
58
|
+
</Menu>
|
|
59
|
+
{/snippet}
|
|
60
|
+
</Popper>
|
|
61
|
+
</Story>
|
|
62
|
+
|
|
63
|
+
<Story
|
|
64
|
+
name="CustomPaperProps"
|
|
65
|
+
args={{
|
|
66
|
+
open: true,
|
|
67
|
+
paperProps: {
|
|
68
|
+
color: 'primary',
|
|
69
|
+
},
|
|
70
|
+
}}
|
|
71
|
+
asChild
|
|
72
|
+
>
|
|
73
|
+
<Popper
|
|
74
|
+
open
|
|
75
|
+
paperProps={{
|
|
76
|
+
color: 'primary',
|
|
77
|
+
}}
|
|
78
|
+
>
|
|
79
|
+
Hello! how are you doing?
|
|
80
|
+
{#snippet popupChildren()}
|
|
81
|
+
<Menu>
|
|
82
|
+
<MenuItem>One</MenuItem>
|
|
83
|
+
<MenuItem>Two</MenuItem>
|
|
84
|
+
<MenuItem>Three</MenuItem>
|
|
85
|
+
</Menu>
|
|
86
|
+
{/snippet}
|
|
87
|
+
</Popper>
|
|
88
|
+
</Story>
|
|
89
|
+
|
|
90
|
+
<Story name="FullWidth" asChild>
|
|
91
|
+
<Popper {open} fullWidth onClickOutside={() => (open = false)}>
|
|
92
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
93
|
+
|
|
94
|
+
{#snippet popupChildren()}
|
|
95
|
+
<Menu>
|
|
96
|
+
<MenuItem>One</MenuItem>
|
|
97
|
+
<MenuItem>Two</MenuItem>
|
|
98
|
+
<MenuItem>Three</MenuItem>
|
|
99
|
+
</Menu>
|
|
100
|
+
{/snippet}
|
|
101
|
+
</Popper>
|
|
102
|
+
</Story>
|
|
103
|
+
|
|
104
|
+
<Story
|
|
105
|
+
name="CustomPopup"
|
|
106
|
+
args={{
|
|
107
|
+
open,
|
|
108
|
+
onClickOutside: () => (open = false),
|
|
109
|
+
}}
|
|
110
|
+
asChild
|
|
111
|
+
>
|
|
112
|
+
<Popper {open} onClickOutside={() => (open = false)}>
|
|
113
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
114
|
+
|
|
115
|
+
{#snippet customPopup(popperLocation)}
|
|
116
|
+
{#if open}
|
|
117
|
+
<Menu>
|
|
118
|
+
<MenuItem>{popperLocation?.height}</MenuItem>
|
|
119
|
+
<MenuItem>{popperLocation?.width}</MenuItem>
|
|
120
|
+
</Menu>
|
|
121
|
+
{/if}
|
|
122
|
+
{/snippet}
|
|
123
|
+
</Popper>
|
|
124
|
+
</Story>
|
package/src/lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import type { StoryBookArgTypes } from '$lib/storybook-types.js';
|
|
4
|
+
import { Menu, MenuItem, PopperPopup } from '$lib/index.js';
|
|
5
|
+
import { positionXArray, positionYArray } from '$lib/types/position.js';
|
|
6
|
+
|
|
7
|
+
export const storyPopperPopupArgTypes: StoryBookArgTypes = {
|
|
8
|
+
popupPositionX: {
|
|
9
|
+
control: { type: 'select' },
|
|
10
|
+
options: positionXArray,
|
|
11
|
+
},
|
|
12
|
+
popupPositionY: {
|
|
13
|
+
control: { type: 'select' },
|
|
14
|
+
options: positionYArray,
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
19
|
+
const { Story } = defineMeta({
|
|
20
|
+
component: PopperPopup,
|
|
21
|
+
tags: ['autodocs'],
|
|
22
|
+
argTypes: storyPopperPopupArgTypes,
|
|
23
|
+
parameters: {
|
|
24
|
+
docs: {
|
|
25
|
+
story: {
|
|
26
|
+
height: '200px',
|
|
27
|
+
inline: false,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<Story name="Default" asChild>
|
|
35
|
+
<PopperPopup>
|
|
36
|
+
<Menu>
|
|
37
|
+
<MenuItem>One</MenuItem>
|
|
38
|
+
<MenuItem>Two</MenuItem>
|
|
39
|
+
<MenuItem>Three</MenuItem>
|
|
40
|
+
</Menu>
|
|
41
|
+
</PopperPopup>
|
|
42
|
+
</Story>
|
|
43
|
+
|
|
44
|
+
<Story
|
|
45
|
+
name="CustomPaperProps"
|
|
46
|
+
args={{
|
|
47
|
+
paperProps: {
|
|
48
|
+
color: 'primary',
|
|
49
|
+
},
|
|
50
|
+
}}
|
|
51
|
+
asChild
|
|
52
|
+
>
|
|
53
|
+
<PopperPopup
|
|
54
|
+
paperProps={{
|
|
55
|
+
color: 'primary',
|
|
56
|
+
}}
|
|
57
|
+
>
|
|
58
|
+
<Menu>
|
|
59
|
+
<MenuItem>One</MenuItem>
|
|
60
|
+
<MenuItem>Two</MenuItem>
|
|
61
|
+
<MenuItem>Three</MenuItem>
|
|
62
|
+
</Menu>
|
|
63
|
+
</PopperPopup>
|
|
64
|
+
</Story>
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import { Menu, MenuItem, Popper } from '$lib/index.js';
|
|
4
|
+
import Button from '$lib/stories/components/Form/Button/Button.svelte';
|
|
5
|
+
import { storyPopperArgTypes } from '../../Popper.stories.svelte';
|
|
6
|
+
|
|
7
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
component: Popper,
|
|
10
|
+
tags: ['autodocs'],
|
|
11
|
+
argTypes: storyPopperArgTypes,
|
|
12
|
+
parameters: {
|
|
13
|
+
docs: {
|
|
14
|
+
story: {
|
|
15
|
+
height: '200px',
|
|
16
|
+
inline: false,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
let open = $state(false);
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<!-- Positions will auto adjust depending on the space on top and bottom -->
|
|
26
|
+
<Story
|
|
27
|
+
name="PositionAutoAdjust"
|
|
28
|
+
args={{ open, onClickOutside: () => (open = false), popupPositionY: 'top' }}
|
|
29
|
+
asChild
|
|
30
|
+
>
|
|
31
|
+
<Popper {open} onClickOutside={() => (open = false)} popupPositionY="top">
|
|
32
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
33
|
+
{#snippet popupChildren()}
|
|
34
|
+
<Menu>
|
|
35
|
+
<MenuItem>One</MenuItem>
|
|
36
|
+
<MenuItem>Two</MenuItem>
|
|
37
|
+
<MenuItem>Three</MenuItem>
|
|
38
|
+
</Menu>
|
|
39
|
+
{/snippet}
|
|
40
|
+
</Popper>
|
|
41
|
+
</Story>
|
|
42
|
+
|
|
43
|
+
<!-- Positions will not auto adjust if you use `lockPoistions` -->
|
|
44
|
+
<Story
|
|
45
|
+
name="LockPoistions"
|
|
46
|
+
args={{
|
|
47
|
+
open,
|
|
48
|
+
onClickOutside: () => (open = false),
|
|
49
|
+
popupPositionY: 'top',
|
|
50
|
+
lockPoistions: true,
|
|
51
|
+
}}
|
|
52
|
+
asChild
|
|
53
|
+
>
|
|
54
|
+
<Popper {open} lockPoistions onClickOutside={() => (open = false)} popupPositionY="top">
|
|
55
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
56
|
+
{#snippet popupChildren()}
|
|
57
|
+
<Menu>
|
|
58
|
+
<MenuItem>One</MenuItem>
|
|
59
|
+
<MenuItem>Two</MenuItem>
|
|
60
|
+
<MenuItem>Three</MenuItem>
|
|
61
|
+
</Menu>
|
|
62
|
+
{/snippet}
|
|
63
|
+
</Popper>
|
|
64
|
+
</Story>
|
|
65
|
+
|
|
66
|
+
<!-- you can also adjust `popperHeightForVerticalPosition` to achive the same -->
|
|
67
|
+
<Story
|
|
68
|
+
name="HeightForVerticalPosition"
|
|
69
|
+
args={{
|
|
70
|
+
open,
|
|
71
|
+
onClickOutside: () => (open = false),
|
|
72
|
+
popupPositionY: 'top',
|
|
73
|
+
popperHeightForVerticalPosition: 3,
|
|
74
|
+
}}
|
|
75
|
+
asChild
|
|
76
|
+
>
|
|
77
|
+
<Popper
|
|
78
|
+
{open}
|
|
79
|
+
onClickOutside={() => (open = false)}
|
|
80
|
+
popupPositionY="top"
|
|
81
|
+
popperHeightForVerticalPosition={3}
|
|
82
|
+
>
|
|
83
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
84
|
+
{#snippet popupChildren()}
|
|
85
|
+
<Menu>
|
|
86
|
+
<MenuItem>One</MenuItem>
|
|
87
|
+
<MenuItem>Two</MenuItem>
|
|
88
|
+
<MenuItem>Three</MenuItem>
|
|
89
|
+
</Menu>
|
|
90
|
+
{/snippet}
|
|
91
|
+
</Popper>
|
|
92
|
+
</Story>
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import { Menu, MenuItem, Popper } from '$lib/index.js';
|
|
4
|
+
import Button from '$lib/stories/components/Form/Button/Button.svelte';
|
|
5
|
+
import { storyPopperArgTypes } from '../Popper.stories.svelte';
|
|
6
|
+
|
|
7
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
component: Popper,
|
|
10
|
+
tags: ['autodocs'],
|
|
11
|
+
argTypes: storyPopperArgTypes,
|
|
12
|
+
parameters: {
|
|
13
|
+
layout: 'centered',
|
|
14
|
+
docs: {
|
|
15
|
+
story: {
|
|
16
|
+
height: '400px',
|
|
17
|
+
inline: false,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
let open = $state(false);
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<Story name="BottomLeft" asChild>
|
|
27
|
+
<Popper {open} onClickOutside={() => (open = false)} popupWidth="100px">
|
|
28
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
29
|
+
{#snippet popupChildren()}
|
|
30
|
+
<Menu>
|
|
31
|
+
<MenuItem>One</MenuItem>
|
|
32
|
+
<MenuItem>Two</MenuItem>
|
|
33
|
+
<MenuItem>Three</MenuItem>
|
|
34
|
+
</Menu>
|
|
35
|
+
{/snippet}
|
|
36
|
+
</Popper>
|
|
37
|
+
</Story>
|
|
38
|
+
|
|
39
|
+
<Story name="BottomCenter" asChild>
|
|
40
|
+
<Popper {open} popupPositionX="center" onClickOutside={() => (open = false)} popupWidth="100px">
|
|
41
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
42
|
+
{#snippet popupChildren()}
|
|
43
|
+
<Menu>
|
|
44
|
+
<MenuItem>One</MenuItem>
|
|
45
|
+
<MenuItem>Two</MenuItem>
|
|
46
|
+
<MenuItem>Three</MenuItem>
|
|
47
|
+
</Menu>
|
|
48
|
+
{/snippet}
|
|
49
|
+
</Popper>
|
|
50
|
+
</Story>
|
|
51
|
+
|
|
52
|
+
<Story name="BottomRight" asChild>
|
|
53
|
+
<Popper {open} popupPositionX="right" onClickOutside={() => (open = false)} popupWidth="100px">
|
|
54
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
55
|
+
{#snippet popupChildren()}
|
|
56
|
+
<Menu>
|
|
57
|
+
<MenuItem>One</MenuItem>
|
|
58
|
+
<MenuItem>Two</MenuItem>
|
|
59
|
+
<MenuItem>Three</MenuItem>
|
|
60
|
+
</Menu>
|
|
61
|
+
{/snippet}
|
|
62
|
+
</Popper>
|
|
63
|
+
</Story>
|
|
64
|
+
|
|
65
|
+
<Story name="TopLeft" asChild>
|
|
66
|
+
<Popper {open} popupPositionY="top" onClickOutside={() => (open = false)} popupWidth="100px">
|
|
67
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
68
|
+
{#snippet popupChildren()}
|
|
69
|
+
<Menu>
|
|
70
|
+
<MenuItem>One</MenuItem>
|
|
71
|
+
<MenuItem>Two</MenuItem>
|
|
72
|
+
<MenuItem>Three</MenuItem>
|
|
73
|
+
</Menu>
|
|
74
|
+
{/snippet}
|
|
75
|
+
</Popper>
|
|
76
|
+
</Story>
|
|
77
|
+
|
|
78
|
+
<Story name="TopCenter" asChild>
|
|
79
|
+
<Popper
|
|
80
|
+
{open}
|
|
81
|
+
popupPositionY="top"
|
|
82
|
+
popupPositionX="center"
|
|
83
|
+
onClickOutside={() => (open = false)}
|
|
84
|
+
popupWidth="100px"
|
|
85
|
+
>
|
|
86
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
87
|
+
{#snippet popupChildren()}
|
|
88
|
+
<Menu>
|
|
89
|
+
<MenuItem>One</MenuItem>
|
|
90
|
+
<MenuItem>Two</MenuItem>
|
|
91
|
+
<MenuItem>Three</MenuItem>
|
|
92
|
+
</Menu>
|
|
93
|
+
{/snippet}
|
|
94
|
+
</Popper>
|
|
95
|
+
</Story>
|
|
96
|
+
|
|
97
|
+
<Story name="TopRight" asChild>
|
|
98
|
+
<Popper
|
|
99
|
+
{open}
|
|
100
|
+
popupPositionY="top"
|
|
101
|
+
popupPositionX="right"
|
|
102
|
+
onClickOutside={() => (open = false)}
|
|
103
|
+
popupWidth="100px"
|
|
104
|
+
>
|
|
105
|
+
<Button onclick={() => (open = true)}>Click to see Popup</Button>
|
|
106
|
+
{#snippet popupChildren()}
|
|
107
|
+
<Menu>
|
|
108
|
+
<MenuItem>One</MenuItem>
|
|
109
|
+
<MenuItem>Two</MenuItem>
|
|
110
|
+
<MenuItem>Three</MenuItem>
|
|
111
|
+
</Menu>
|
|
112
|
+
{/snippet}
|
|
113
|
+
</Popper>
|
|
114
|
+
</Story>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import UtilityButton from '../UtilityButton.svelte';
|
|
4
|
+
import { storyUtilityButtonArgTypes } from '../UtilityButton.stories.svelte';
|
|
5
|
+
import Icon from '@iconify/svelte';
|
|
6
|
+
|
|
7
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
component: UtilityButton,
|
|
10
|
+
tags: ['autodocs'],
|
|
11
|
+
argTypes: storyUtilityButtonArgTypes,
|
|
12
|
+
});
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<Story name="Normal">
|
|
16
|
+
<Icon icon="mdi:eye" width="24" height="24" />
|
|
17
|
+
</Story>
|
|
18
|
+
|
|
19
|
+
<Story name="Small" args={{ size: 'small' }}>
|
|
20
|
+
<Icon icon="mdi:eye" width="24" height="24" />
|
|
21
|
+
</Story>
|
|
22
|
+
|
|
23
|
+
<Story name="Large" args={{ size: 'large' }}>
|
|
24
|
+
<Icon icon="mdi:eye" width="24" height="24" />
|
|
25
|
+
</Story>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import UtilityButton from './UtilityButton.svelte';
|
|
4
|
+
import type { StoryBookArgTypes } from '$lib/storybook-types.js';
|
|
5
|
+
import Icon from '@iconify/svelte';
|
|
6
|
+
import { componentSizeArray } from '$lib/types/size.js';
|
|
7
|
+
|
|
8
|
+
export const storyUtilityButtonArgTypes: StoryBookArgTypes = {
|
|
9
|
+
size: {
|
|
10
|
+
control: { type: 'select' },
|
|
11
|
+
options: componentSizeArray,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
16
|
+
const { Story } = defineMeta({
|
|
17
|
+
component: UtilityButton,
|
|
18
|
+
tags: ['autodocs'],
|
|
19
|
+
argTypes: storyUtilityButtonArgTypes,
|
|
20
|
+
});
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<!-- Button with default style -->
|
|
24
|
+
<Story name="Default">
|
|
25
|
+
<Icon icon="mdi:eye" width="24" height="24" />
|
|
26
|
+
</Story>
|
|
27
|
+
|
|
28
|
+
<Story name="Disabled" args={{ disabled: true }}>
|
|
29
|
+
<Icon icon="mdi:eye" width="24" height="24" />
|
|
30
|
+
</Story>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Source } from '@storybook/blocks';
|
|
2
|
+
|
|
3
|
+
# Click Outside
|
|
4
|
+
|
|
5
|
+
Event that fires after clicking outside the target component
|
|
6
|
+
|
|
7
|
+
<Source
|
|
8
|
+
dark
|
|
9
|
+
language="js"
|
|
10
|
+
code={`
|
|
11
|
+
import { clickOutside } '@flightlesslabs/dodo-ui';
|
|
12
|
+
`}
|
|
13
|
+
/>
|
|
14
|
+
|
|
15
|
+
Attach it to a component
|
|
16
|
+
|
|
17
|
+
<Source
|
|
18
|
+
dark
|
|
19
|
+
language="js"
|
|
20
|
+
code={`
|
|
21
|
+
<div
|
|
22
|
+
use:clickOutside={onClickOutside}
|
|
23
|
+
...
|
|
24
|
+
`}
|
|
25
|
+
/>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Meta, Story, Source } from '@storybook/blocks';
|
|
2
|
+
import * as ColorsStories from './Colors.stories.svelte';
|
|
3
|
+
import * as OpacityStories from './Opacity.stories.svelte';
|
|
4
|
+
|
|
5
|
+
<Meta of={ColorsStories} />
|
|
6
|
+
|
|
7
|
+
# Colors
|
|
8
|
+
|
|
9
|
+
We are using an extensive color pallet identical to [Tailwind Css](https://tailwindcss.com/docs/colors) Colors. The colors are adjusted for dark and light themes.
|
|
10
|
+
|
|
11
|
+
## Main Colors
|
|
12
|
+
|
|
13
|
+
<Story of={ColorsStories.Main} />
|
|
14
|
+
|
|
15
|
+
Greyscale colors
|
|
16
|
+
|
|
17
|
+
<Story of={ColorsStories.ColorsNeutral} />
|
|
18
|
+
|
|
19
|
+
Constant Colors
|
|
20
|
+
|
|
21
|
+
<Story of={ColorsStories.ColorsConstant} />
|
|
22
|
+
|
|
23
|
+
## Base Color
|
|
24
|
+
|
|
25
|
+
<Story of={ColorsStories.ColorsBase} />
|
|
26
|
+
|
|
27
|
+
Greyscale colors
|
|
28
|
+
|
|
29
|
+
<Story of={ColorsStories.BaseColorsNeutral} />
|
|
30
|
+
|
|
31
|
+
## Adjusting opacity
|
|
32
|
+
|
|
33
|
+
Opacity can be adjusted using css `color-mix` function.
|
|
34
|
+
|
|
35
|
+
<Source
|
|
36
|
+
dark
|
|
37
|
+
language="css"
|
|
38
|
+
code={`
|
|
39
|
+
color-mix(in oklab, var(--dodo-color-primary-800) 10%, transparent)
|
|
40
|
+
`}
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
<Story of={OpacityStories.Main} meta={OpacityStories} />
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import Colors from './Colors.svelte';
|
|
4
|
+
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
component: Colors,
|
|
8
|
+
args: {
|
|
9
|
+
swatchType: 'colors',
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<Story name="Main" />
|
|
15
|
+
|
|
16
|
+
<Story name="ColorsNeutral" args={{ swatchType: 'colors-neutral' }} />
|
|
17
|
+
|
|
18
|
+
<Story name="ColorsConstant" args={{ swatchType: 'colors-constant' }} />
|
|
19
|
+
|
|
20
|
+
<Story name="ColorsBase" args={{ swatchType: 'base-colors' }} />
|
|
21
|
+
|
|
22
|
+
<Story name="BaseColorsNeutral" args={{ swatchType: 'base-colors-neutral' }} />
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import Opacity from './Opacity.svelte';
|
|
4
|
+
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
component: Opacity,
|
|
8
|
+
});
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<Story name="Main" />
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Source } from '@storybook/blocks';
|
|
2
|
+
import darkThemeToggleImage from '$lib/stories/assets/dark-theme-toggle.png';
|
|
3
|
+
|
|
4
|
+
# Themes
|
|
5
|
+
|
|
6
|
+
## Dark theme
|
|
7
|
+
|
|
8
|
+
dark theme can be activated by adding `.dodo-theme--dark` class on the top container.
|
|
9
|
+
|
|
10
|
+
<Source
|
|
11
|
+
dark
|
|
12
|
+
language="html"
|
|
13
|
+
code={`
|
|
14
|
+
<body class="dodo-theme--dark">
|
|
15
|
+
...
|
|
16
|
+
`}
|
|
17
|
+
/>
|
|
18
|
+
|
|
19
|
+
## Toggle theme in documentation
|
|
20
|
+
|
|
21
|
+
Use the moon icon to toogle theme in documentation mode
|
|
22
|
+
|
|
23
|
+
<img src={darkThemeToggleImage} />
|