@svelte-atoms/core 1.0.0-alpha.30 → 1.0.0-alpha.32
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/LICENSE +21 -0
- package/README.md +176 -739
- package/dist/attachments/index.d.ts +1 -0
- package/dist/attachments/index.js +1 -0
- package/dist/components/accordion/accordion-root.svelte +65 -61
- package/dist/components/accordion/accordion.stories.svelte +70 -145
- package/dist/components/accordion/item/accordion-item-body.svelte +6 -4
- package/dist/components/accordion/item/accordion-item-header.svelte +2 -1
- package/dist/components/accordion/item/accordion-item-indicator.svelte +2 -1
- package/dist/components/accordion/item/accordion-item-root.svelte +2 -1
- package/dist/components/accordion/item/bond.svelte.d.ts +2 -0
- package/dist/components/accordion/item/index.d.ts +3 -0
- package/dist/components/accordion/item/index.js +3 -0
- package/dist/components/accordion/item/motion.svelte.d.ts +15 -0
- package/dist/components/accordion/item/motion.svelte.js +30 -0
- package/dist/components/accordion/item/types.d.ts +7 -24
- package/dist/components/alert/alert-close-button.svelte +32 -36
- package/dist/components/alert/alert-description.svelte +1 -1
- package/dist/components/alert/alert-description.svelte.d.ts +3 -6
- package/dist/components/alert/alert-root.svelte +3 -38
- package/dist/components/alert/alert-root.svelte.d.ts +2 -2
- package/dist/components/alert/alert.stories.svelte +400 -400
- package/dist/components/alert/bond.svelte.d.ts +0 -13
- package/dist/components/alert/bond.svelte.js +0 -32
- package/dist/components/alert/types.d.ts +8 -32
- package/dist/components/atom/html-atom.svelte +93 -261
- package/dist/components/atom/types.d.ts +3 -2
- package/dist/components/atom/utils.d.ts +37 -0
- package/dist/components/atom/utils.js +208 -0
- package/dist/components/avatar/avatar.stories.svelte +22 -22
- package/dist/components/badge/badge.stories.svelte +12 -12
- package/dist/components/badge/badge.svelte +19 -19
- package/dist/components/breadcrumb/breadcrumb-item.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb-separator.svelte +5 -1
- package/dist/components/breadcrumb/breadcrumb.stories.svelte +16 -16
- package/dist/components/button/button.stories.svelte +27 -27
- package/dist/components/calendar/calendar-day.svelte +9 -4
- package/dist/components/calendar/calendar.stories.svelte +26 -26
- package/dist/components/card/card-body.svelte +39 -39
- package/dist/components/card/card-footer.svelte +41 -41
- package/dist/components/card/card-root.svelte +91 -91
- package/dist/components/card/card.stories.svelte +133 -133
- package/dist/components/checkbox/checkbox.stories.svelte +22 -22
- package/dist/components/checkbox/checkbox.svelte +159 -155
- package/dist/components/collapsible/bond.svelte.js +2 -1
- package/dist/components/collapsible/collapsible-body.svelte +3 -2
- package/dist/components/collapsible/collapsible.stories.svelte +172 -172
- package/dist/components/collapsible/motion.svelte.d.ts +6 -0
- package/dist/components/collapsible/motion.svelte.js +15 -0
- package/dist/components/combobox/atoms.d.ts +3 -3
- package/dist/components/combobox/atoms.js +3 -3
- package/dist/components/combobox/bond.svelte.d.ts +6 -6
- package/dist/components/combobox/bond.svelte.js +3 -26
- package/dist/components/combobox/combobox-control.svelte +52 -52
- package/dist/components/combobox/{compobox-item.svelte → combobox-item.svelte} +62 -68
- package/dist/components/combobox/combobox-item.svelte.d.ts +12 -0
- package/dist/components/combobox/combobox-root.svelte +65 -65
- package/dist/components/combobox/combobox.stories.svelte +50 -0
- package/dist/components/combobox/combobox.stories.svelte.d.ts +3 -0
- package/dist/components/combobox/index.d.ts +1 -0
- package/dist/components/container/container.stories.svelte +20 -20
- package/dist/components/container/container.svelte.d.ts +1 -1
- package/dist/components/datagrid/datagrid.stories.svelte +72 -72
- package/dist/components/datagrid/tr/bond.svelte.d.ts +4 -2
- package/dist/components/datagrid/tr/bond.svelte.js +9 -7
- package/dist/components/datagrid/tr/datagrid-tr.svelte +9 -7
- package/dist/components/date-picker/bond.svelte.d.ts +15 -5
- package/dist/components/date-picker/bond.svelte.js +5 -11
- package/dist/components/date-picker/date-picker-calendar.svelte +2 -2
- package/dist/components/date-picker/date-picker-root.svelte +95 -95
- package/dist/components/date-picker/date-picker.stories.svelte +35 -35
- package/dist/components/dialog/bond.svelte.d.ts +13 -3
- package/dist/components/dialog/bond.svelte.js +52 -6
- package/dist/components/dialog/dialog-content.svelte +2 -20
- package/dist/components/dialog/dialog-root.svelte +3 -22
- package/dist/components/dialog/dialog.stories.svelte +64 -64
- package/dist/components/dialog/motion.svelte.d.ts +13 -0
- package/dist/components/dialog/motion.svelte.js +44 -0
- package/dist/components/drawer/attachments.svelte.d.ts +1 -1
- package/dist/components/drawer/attachments.svelte.js +1 -3
- package/dist/components/drawer/bond.svelte.d.ts +30 -9
- package/dist/components/drawer/bond.svelte.js +80 -24
- package/dist/components/drawer/drawer-content.svelte +49 -57
- package/dist/components/drawer/drawer-root.svelte +5 -4
- package/dist/components/drawer/drawer.stories.svelte +141 -212
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/drawer/index.js +2 -0
- package/dist/components/drawer/motion.d.ts +15 -0
- package/dist/components/drawer/motion.js +28 -0
- package/dist/components/dropdown/atoms.d.ts +1 -1
- package/dist/components/dropdown/atoms.js +1 -1
- package/dist/components/dropdown/bond.svelte.d.ts +22 -19
- package/dist/components/dropdown/bond.svelte.js +29 -53
- package/dist/components/dropdown/dropdown-root.svelte +7 -1
- package/dist/components/dropdown/dropdown-values.svelte +17 -17
- package/dist/components/dropdown/dropdown-values.svelte.d.ts +1 -2
- package/dist/components/dropdown/dropdown.stories.svelte +13 -10
- package/dist/components/dropdown/index.d.ts +2 -0
- package/dist/components/dropdown/index.js +1 -0
- package/dist/components/dropdown/item/attachments.svelte.d.ts +2 -2
- package/dist/components/dropdown/item/attachments.svelte.js +2 -2
- package/dist/components/dropdown/item/controller.svelte.d.ts +34 -0
- package/dist/components/dropdown/item/controller.svelte.js +82 -0
- package/dist/components/dropdown/item/dropdown-item.svelte +109 -102
- package/dist/components/dropdown/item/dropdown-item.svelte.d.ts +13 -28
- package/dist/components/dropdown/item/index.d.ts +3 -0
- package/dist/components/dropdown/item/index.js +3 -0
- package/dist/components/dropdown/item/types.d.ts +29 -0
- package/dist/components/dropdown/item/types.js +1 -0
- package/dist/components/form/form.stories.svelte +96 -96
- package/dist/components/image/image.stories.svelte +20 -20
- package/dist/components/input/input.stories.svelte +35 -35
- package/dist/components/label/label.stories.svelte +15 -15
- package/dist/components/lazy/lazy.stories.svelte +28 -28
- package/dist/components/link/link.stories.svelte +15 -15
- package/dist/components/list/list-item.svelte +2 -2
- package/dist/components/menu/atoms.d.ts +9 -3
- package/dist/components/menu/atoms.js +9 -3
- package/dist/components/menu/bond.svelte.d.ts +54 -0
- package/dist/components/menu/bond.svelte.js +132 -0
- package/dist/components/menu/index.d.ts +3 -1
- package/dist/components/menu/index.js +2 -1
- package/dist/components/menu/item/controller.svelte.d.ts +26 -0
- package/dist/components/menu/item/controller.svelte.js +69 -0
- package/dist/components/menu/item/index.d.ts +2 -0
- package/dist/components/menu/item/index.js +2 -0
- package/dist/components/menu/item/menu-item.svelte +103 -0
- package/dist/components/menu/item/menu-item.svelte.d.ts +31 -0
- package/dist/components/menu/item/types.d.ts +62 -0
- package/dist/components/menu/item/types.js +1 -0
- package/dist/components/menu/{menu-list.svelte → menu-content.svelte} +40 -40
- package/dist/components/menu/{menu-list.svelte.d.ts → menu-content.svelte.d.ts} +3 -3
- package/dist/components/menu/menu-root.svelte +15 -0
- package/dist/components/menu/menu-root.svelte.d.ts +8 -0
- package/dist/components/menu/menu.stories.svelte +5 -5
- package/dist/components/menu/types.d.ts +0 -7
- package/dist/components/popover/bond.svelte.d.ts +18 -8
- package/dist/components/popover/bond.svelte.js +76 -40
- package/dist/components/popover/motion.d.ts +6 -0
- package/dist/components/popover/motion.js +56 -0
- package/dist/components/popover/popover-arrow.svelte +111 -111
- package/dist/components/popover/popover-content.svelte +137 -175
- package/dist/components/popover/popover-indicator.svelte +44 -44
- package/dist/components/popover/popover-root.svelte +48 -48
- package/dist/components/popover/popover.stories.svelte +37 -49
- package/dist/components/popover/types.d.ts +9 -7
- package/dist/components/portal/active-portal.svelte +12 -5
- package/dist/components/portal/active-portal.svelte.d.ts +2 -9
- package/dist/components/portal/portal-root.svelte +1 -8
- package/dist/components/portal/portal-root.svelte.d.ts +4 -6
- package/dist/components/portal/teleport.svelte +1 -2
- package/dist/components/portal/teleport.svelte.d.ts +3 -4
- package/dist/components/qr-code/qr-code.stories.svelte +18 -18
- package/dist/components/radio/radio-group.stories.svelte +41 -41
- package/dist/components/radio/radio.stories.svelte +17 -17
- package/dist/components/radio/radio.svelte +109 -109
- package/dist/components/radio/types.d.ts +98 -0
- package/dist/components/radio/types.js +2 -0
- package/dist/components/root/index.d.ts +1 -0
- package/dist/components/root/index.js +1 -0
- package/dist/components/root/l0-portal.svelte +8 -0
- package/dist/components/{radio/types.svelte.d.ts → root/l0-portal.svelte.d.ts} +3 -3
- package/dist/components/root/l1-portal.svelte +7 -0
- package/dist/components/root/l1-portal.svelte.d.ts +26 -0
- package/dist/components/root/root.css +119 -119
- package/dist/components/root/root.svelte +26 -44
- package/dist/components/root/root.svelte.d.ts +2 -6
- package/dist/components/root/toasts-portal.svelte +7 -0
- package/dist/components/root/toasts-portal.svelte.d.ts +26 -0
- package/dist/components/root/types.d.ts +17 -0
- package/dist/components/scrollable/scrollable-root.svelte.d.ts +2 -2
- package/dist/components/scrollable/scrollable.stories.svelte +116 -116
- package/dist/components/sidebar/index.d.ts +2 -0
- package/dist/components/sidebar/index.js +2 -0
- package/dist/components/sidebar/motion.svelte.d.ts +11 -0
- package/dist/components/sidebar/motion.svelte.js +16 -0
- package/dist/components/sidebar/sidebar-content.svelte +40 -50
- package/dist/components/sidebar/sidebar-root.svelte +39 -39
- package/dist/components/sidebar/sidebar.stories.svelte +43 -43
- package/dist/components/sidebar/types.d.ts +2 -12
- package/dist/components/tabs/tabs.stories.svelte +56 -56
- package/dist/components/textarea/atoms.d.ts +1 -0
- package/dist/components/textarea/atoms.js +1 -0
- package/dist/components/textarea/textarea-input.svelte +4 -1
- package/dist/components/textarea/textarea-root.svelte +2 -2
- package/dist/components/textarea/textarea-root.svelte.d.ts +2 -0
- package/dist/components/tooltip/tooltip-trigger.svelte +39 -39
- package/dist/components/tooltip/tooltip-trigger.svelte.d.ts +1 -0
- package/dist/components/tooltip/tooltip.stories.svelte +32 -32
- package/dist/components/tree/index.d.ts +1 -0
- package/dist/components/tree/index.js +1 -0
- package/dist/components/tree/motion.svelte.d.ts +6 -0
- package/dist/components/tree/motion.svelte.js +14 -0
- package/dist/components/tree/tree-body.svelte +4 -3
- package/dist/components/tree/tree.stories.svelte +142 -142
- package/dist/context/preset.svelte.d.ts +3 -1
- package/dist/icons/icon-copy.svelte +6 -0
- package/dist/icons/icon-copy.svelte.d.ts +26 -0
- package/dist/utils/dom.svelte.d.ts +2 -0
- package/dist/utils/dom.svelte.js +21 -0
- package/dist/utils/function.d.ts +1 -1
- package/dist/utils/promise.svelte.d.ts +5 -0
- package/dist/utils/promise.svelte.js +20 -0
- package/package.json +4 -3
- package/dist/components/combobox/compobox-item.svelte.d.ts +0 -34
- package/dist/components/combobox/compobox.stories.svelte +0 -51
- package/dist/components/combobox/compobox.stories.svelte.d.ts +0 -3
- package/dist/components/dropdown/item/bond.svelte.d.ts +0 -42
- package/dist/components/dropdown/item/bond.svelte.js +0 -99
- package/dist/components/menu/menu-item.svelte +0 -51
- package/dist/components/menu/menu-item.svelte.d.ts +0 -36
- package/dist/components/radio/types.svelte +0 -0
- package/llm/composition.md +0 -395
- package/llm/crafting.md +0 -838
- package/llm/motion.md +0 -970
- package/llm/philosophy.md +0 -23
- package/llm/preset-variant-integration.md +0 -516
- package/llm/preset.md +0 -383
- package/llm/styling.md +0 -216
- package/llm/usage.md +0 -46
- package/llm/variants.md +0 -1259
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
-
import { Collapsible as ACollapsible } from '.';
|
|
4
|
-
|
|
5
|
-
import { animate as motion } from 'motion';
|
|
6
|
-
|
|
7
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
8
|
-
const { Story } = defineMeta({
|
|
9
|
-
title: 'Atoms/Collapsible',
|
|
10
|
-
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
11
|
-
|
|
12
|
-
parameters: {
|
|
13
|
-
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
|
|
14
|
-
layout: 'fullscreen'
|
|
15
|
-
},
|
|
16
|
-
args: {}
|
|
17
|
-
});
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<script lang="ts">
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
<Story name="Collapsible" args={{}}>
|
|
24
|
-
<div class="flex w-full flex-col gap-2">
|
|
25
|
-
<ACollapsible.Root>
|
|
26
|
-
{#snippet children({ collapsible })}
|
|
27
|
-
{@const isOpen = collapsible.state.props.open}
|
|
28
|
-
|
|
29
|
-
<ACollapsible.Header class="">
|
|
30
|
-
<div>Hello Atoms UI 1</div>
|
|
31
|
-
<ACollapsible.Indicator />
|
|
32
|
-
</ACollapsible.Header>
|
|
33
|
-
|
|
34
|
-
<ACollapsible.Body
|
|
35
|
-
class={['pointer-events-none h-0 opacity-0', isOpen && 'pointer-events-auto']}
|
|
36
|
-
enter={(node) => {
|
|
37
|
-
motion(
|
|
38
|
-
node,
|
|
39
|
-
{
|
|
40
|
-
opacity: +isOpen,
|
|
41
|
-
height: isOpen ? 'auto' : 0
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
duration: 0.2,
|
|
45
|
-
ease: 'linear'
|
|
46
|
-
}
|
|
47
|
-
);
|
|
48
|
-
return { duration: 0.2 };
|
|
49
|
-
}}
|
|
50
|
-
exit={(node) => {
|
|
51
|
-
motion(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: 'linear' });
|
|
52
|
-
return { duration: 0.2 };
|
|
53
|
-
}}
|
|
54
|
-
animate={(node) => {
|
|
55
|
-
motion(
|
|
56
|
-
node,
|
|
57
|
-
{
|
|
58
|
-
opacity: +isOpen,
|
|
59
|
-
height: isOpen ? 'auto' : 0
|
|
60
|
-
},
|
|
61
|
-
{ duration: 0.2, ease: 'linear' }
|
|
62
|
-
);
|
|
63
|
-
}}
|
|
64
|
-
>
|
|
65
|
-
<div class="py-2">
|
|
66
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
67
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
68
|
-
dolor diam nascetur.
|
|
69
|
-
</div>
|
|
70
|
-
</ACollapsible.Body>
|
|
71
|
-
{/snippet}
|
|
72
|
-
</ACollapsible.Root>
|
|
73
|
-
|
|
74
|
-
<ACollapsible.Root>
|
|
75
|
-
{#snippet children({ collapsible })}
|
|
76
|
-
{@const isOpen = collapsible.state.isOpen}
|
|
77
|
-
|
|
78
|
-
<ACollapsible.Header class="">
|
|
79
|
-
<div>Hello Atoms UI 2</div>
|
|
80
|
-
<ACollapsible.Indicator />
|
|
81
|
-
</ACollapsible.Header>
|
|
82
|
-
|
|
83
|
-
<ACollapsible.Body
|
|
84
|
-
class={['pointer-events-none h-0 opacity-0', isOpen && 'pointer-events-auto']}
|
|
85
|
-
enter={(node) => {
|
|
86
|
-
motion(
|
|
87
|
-
node,
|
|
88
|
-
{
|
|
89
|
-
opacity: +isOpen,
|
|
90
|
-
height: isOpen ? 'auto' : 0
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
duration: 0.2,
|
|
94
|
-
ease: 'linear'
|
|
95
|
-
}
|
|
96
|
-
);
|
|
97
|
-
return { duration: 0.2 };
|
|
98
|
-
}}
|
|
99
|
-
exit={(node) => {
|
|
100
|
-
motion(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: 'linear' });
|
|
101
|
-
return { duration: 0.2 };
|
|
102
|
-
}}
|
|
103
|
-
animate={(node) => {
|
|
104
|
-
motion(
|
|
105
|
-
node,
|
|
106
|
-
{
|
|
107
|
-
opacity: +isOpen,
|
|
108
|
-
height: isOpen ? 'auto' : 0
|
|
109
|
-
},
|
|
110
|
-
{ duration: 0.1, ease: 'linear' }
|
|
111
|
-
);
|
|
112
|
-
}}
|
|
113
|
-
>
|
|
114
|
-
<div class="py-2">
|
|
115
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
116
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
117
|
-
dolor diam nascetur.
|
|
118
|
-
</div>
|
|
119
|
-
</ACollapsible.Body>
|
|
120
|
-
{/snippet}
|
|
121
|
-
</ACollapsible.Root>
|
|
122
|
-
|
|
123
|
-
<ACollapsible.Root>
|
|
124
|
-
{#snippet children({ collapsible })}
|
|
125
|
-
{@const isOpen = collapsible.state.isOpen}
|
|
126
|
-
|
|
127
|
-
<ACollapsible.Header class="">
|
|
128
|
-
<div>Hello Atoms UI 3</div>
|
|
129
|
-
<ACollapsible.Indicator />
|
|
130
|
-
</ACollapsible.Header>
|
|
131
|
-
|
|
132
|
-
<ACollapsible.Body
|
|
133
|
-
class={['pointer-events-none h-0 opacity-0', isOpen && 'pointer-events-auto']}
|
|
134
|
-
enter={(node) => {
|
|
135
|
-
motion(
|
|
136
|
-
node,
|
|
137
|
-
{
|
|
138
|
-
opacity: +isOpen,
|
|
139
|
-
height: isOpen ? 'auto' : 0
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
duration: 0.2,
|
|
143
|
-
ease: 'linear'
|
|
144
|
-
}
|
|
145
|
-
);
|
|
146
|
-
return { duration: 0.2 };
|
|
147
|
-
}}
|
|
148
|
-
exit={(node) => {
|
|
149
|
-
motion(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: 'linear' });
|
|
150
|
-
return { duration: 0.2 };
|
|
151
|
-
}}
|
|
152
|
-
animate={(node) => {
|
|
153
|
-
motion(
|
|
154
|
-
node,
|
|
155
|
-
{
|
|
156
|
-
opacity: +isOpen,
|
|
157
|
-
height: isOpen ? 'auto' : 0
|
|
158
|
-
},
|
|
159
|
-
{ duration: 0.1, ease: 'linear' }
|
|
160
|
-
);
|
|
161
|
-
}}
|
|
162
|
-
>
|
|
163
|
-
<div class="py-2">
|
|
164
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
165
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
166
|
-
dolor diam nascetur.
|
|
167
|
-
</div>
|
|
168
|
-
</ACollapsible.Body>
|
|
169
|
-
{/snippet}
|
|
170
|
-
</ACollapsible.Root>
|
|
171
|
-
</div>
|
|
172
|
-
</Story>
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import { Collapsible as ACollapsible } from '.';
|
|
4
|
+
|
|
5
|
+
import { animate as motion } from 'motion';
|
|
6
|
+
|
|
7
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
8
|
+
const { Story } = defineMeta({
|
|
9
|
+
title: 'Atoms/Collapsible',
|
|
10
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
11
|
+
|
|
12
|
+
parameters: {
|
|
13
|
+
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
|
|
14
|
+
layout: 'fullscreen'
|
|
15
|
+
},
|
|
16
|
+
args: {}
|
|
17
|
+
});
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<script lang="ts">
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<Story name="Collapsible" args={{}}>
|
|
24
|
+
<div class="flex w-full flex-col gap-2">
|
|
25
|
+
<ACollapsible.Root>
|
|
26
|
+
{#snippet children({ collapsible })}
|
|
27
|
+
{@const isOpen = collapsible.state.props.open}
|
|
28
|
+
|
|
29
|
+
<ACollapsible.Header class="">
|
|
30
|
+
<div>Hello Atoms UI 1</div>
|
|
31
|
+
<ACollapsible.Indicator />
|
|
32
|
+
</ACollapsible.Header>
|
|
33
|
+
|
|
34
|
+
<ACollapsible.Body
|
|
35
|
+
class={['pointer-events-none h-0 opacity-0', isOpen && 'pointer-events-auto']}
|
|
36
|
+
enter={(node) => {
|
|
37
|
+
motion(
|
|
38
|
+
node,
|
|
39
|
+
{
|
|
40
|
+
opacity: +isOpen,
|
|
41
|
+
height: isOpen ? 'auto' : 0
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
duration: 0.2,
|
|
45
|
+
ease: 'linear'
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
return { duration: 0.2 };
|
|
49
|
+
}}
|
|
50
|
+
exit={(node) => {
|
|
51
|
+
motion(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: 'linear' });
|
|
52
|
+
return { duration: 0.2 };
|
|
53
|
+
}}
|
|
54
|
+
animate={(node) => {
|
|
55
|
+
motion(
|
|
56
|
+
node,
|
|
57
|
+
{
|
|
58
|
+
opacity: +isOpen,
|
|
59
|
+
height: isOpen ? 'auto' : 0
|
|
60
|
+
},
|
|
61
|
+
{ duration: 0.2, ease: 'linear' }
|
|
62
|
+
);
|
|
63
|
+
}}
|
|
64
|
+
>
|
|
65
|
+
<div class="py-2">
|
|
66
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
67
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
68
|
+
dolor diam nascetur.
|
|
69
|
+
</div>
|
|
70
|
+
</ACollapsible.Body>
|
|
71
|
+
{/snippet}
|
|
72
|
+
</ACollapsible.Root>
|
|
73
|
+
|
|
74
|
+
<ACollapsible.Root>
|
|
75
|
+
{#snippet children({ collapsible })}
|
|
76
|
+
{@const isOpen = collapsible.state.isOpen}
|
|
77
|
+
|
|
78
|
+
<ACollapsible.Header class="">
|
|
79
|
+
<div>Hello Atoms UI 2</div>
|
|
80
|
+
<ACollapsible.Indicator />
|
|
81
|
+
</ACollapsible.Header>
|
|
82
|
+
|
|
83
|
+
<ACollapsible.Body
|
|
84
|
+
class={['pointer-events-none h-0 opacity-0', isOpen && 'pointer-events-auto']}
|
|
85
|
+
enter={(node) => {
|
|
86
|
+
motion(
|
|
87
|
+
node,
|
|
88
|
+
{
|
|
89
|
+
opacity: +isOpen,
|
|
90
|
+
height: isOpen ? 'auto' : 0
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
duration: 0.2,
|
|
94
|
+
ease: 'linear'
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
return { duration: 0.2 };
|
|
98
|
+
}}
|
|
99
|
+
exit={(node) => {
|
|
100
|
+
motion(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: 'linear' });
|
|
101
|
+
return { duration: 0.2 };
|
|
102
|
+
}}
|
|
103
|
+
animate={(node) => {
|
|
104
|
+
motion(
|
|
105
|
+
node,
|
|
106
|
+
{
|
|
107
|
+
opacity: +isOpen,
|
|
108
|
+
height: isOpen ? 'auto' : 0
|
|
109
|
+
},
|
|
110
|
+
{ duration: 0.1, ease: 'linear' }
|
|
111
|
+
);
|
|
112
|
+
}}
|
|
113
|
+
>
|
|
114
|
+
<div class="py-2">
|
|
115
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
116
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
117
|
+
dolor diam nascetur.
|
|
118
|
+
</div>
|
|
119
|
+
</ACollapsible.Body>
|
|
120
|
+
{/snippet}
|
|
121
|
+
</ACollapsible.Root>
|
|
122
|
+
|
|
123
|
+
<ACollapsible.Root>
|
|
124
|
+
{#snippet children({ collapsible })}
|
|
125
|
+
{@const isOpen = collapsible.state.isOpen}
|
|
126
|
+
|
|
127
|
+
<ACollapsible.Header class="">
|
|
128
|
+
<div>Hello Atoms UI 3</div>
|
|
129
|
+
<ACollapsible.Indicator />
|
|
130
|
+
</ACollapsible.Header>
|
|
131
|
+
|
|
132
|
+
<ACollapsible.Body
|
|
133
|
+
class={['pointer-events-none h-0 opacity-0', isOpen && 'pointer-events-auto']}
|
|
134
|
+
enter={(node) => {
|
|
135
|
+
motion(
|
|
136
|
+
node,
|
|
137
|
+
{
|
|
138
|
+
opacity: +isOpen,
|
|
139
|
+
height: isOpen ? 'auto' : 0
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
duration: 0.2,
|
|
143
|
+
ease: 'linear'
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
return { duration: 0.2 };
|
|
147
|
+
}}
|
|
148
|
+
exit={(node) => {
|
|
149
|
+
motion(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: 'linear' });
|
|
150
|
+
return { duration: 0.2 };
|
|
151
|
+
}}
|
|
152
|
+
animate={(node) => {
|
|
153
|
+
motion(
|
|
154
|
+
node,
|
|
155
|
+
{
|
|
156
|
+
opacity: +isOpen,
|
|
157
|
+
height: isOpen ? 'auto' : 0
|
|
158
|
+
},
|
|
159
|
+
{ duration: 0.1, ease: 'linear' }
|
|
160
|
+
);
|
|
161
|
+
}}
|
|
162
|
+
>
|
|
163
|
+
<div class="py-2">
|
|
164
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
165
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
166
|
+
dolor diam nascetur.
|
|
167
|
+
</div>
|
|
168
|
+
</ACollapsible.Body>
|
|
169
|
+
{/snippet}
|
|
170
|
+
</ACollapsible.Root>
|
|
171
|
+
</div>
|
|
172
|
+
</Story>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { animate } from 'motion';
|
|
2
|
+
import { CollapsibleBond } from '.';
|
|
3
|
+
import { DURATION } from '../../shared';
|
|
4
|
+
export function animateCollapsibleBody(params = {}) {
|
|
5
|
+
const bond = CollapsibleBond.get();
|
|
6
|
+
return (node) => {
|
|
7
|
+
const { duration = DURATION.fast / 1000, delay = 0, ease } = params;
|
|
8
|
+
const isOpen = bond?.state.props.open ?? false;
|
|
9
|
+
// animate(node, { opacity: +isOpen }, { duration, ease, delay });
|
|
10
|
+
animate(node, {
|
|
11
|
+
opacity: +isOpen,
|
|
12
|
+
height: isOpen ? 'auto' : 0
|
|
13
|
+
}, { duration, delay, ease });
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { default as Root } from './combobox-root.svelte';
|
|
2
2
|
export { default as Trigger } from './combobox-trigger.svelte';
|
|
3
|
-
export { default as Item } from './
|
|
3
|
+
export { default as Item } from './combobox-item.svelte';
|
|
4
4
|
/**
|
|
5
|
-
* @deprecated
|
|
5
|
+
* @deprecated Use Combobox.Control instead
|
|
6
6
|
*/
|
|
7
7
|
export { default as Input } from './combobox-control.svelte';
|
|
8
8
|
export { default as Control } from './combobox-control.svelte';
|
|
9
|
-
export { Arrow, Indicator, List } from '../dropdown/atoms';
|
|
9
|
+
export { Arrow, Indicator, Content, List, Group, Divider, Title } from '../dropdown/atoms';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { default as Root } from './combobox-root.svelte';
|
|
2
2
|
export { default as Trigger } from './combobox-trigger.svelte';
|
|
3
|
-
export { default as Item } from './
|
|
3
|
+
export { default as Item } from './combobox-item.svelte';
|
|
4
4
|
/**
|
|
5
|
-
* @deprecated
|
|
5
|
+
* @deprecated Use Combobox.Control instead
|
|
6
6
|
*/
|
|
7
7
|
export { default as Input } from './combobox-control.svelte';
|
|
8
8
|
export { default as Control } from './combobox-control.svelte';
|
|
9
|
-
export { Arrow, Indicator, List } from '../dropdown/atoms';
|
|
9
|
+
export { Arrow, Indicator, Content, List, Group, Divider, Title } from '../dropdown/atoms';
|
|
@@ -10,9 +10,8 @@ export type ComboboxBondElements = PopoverDomElements & {
|
|
|
10
10
|
};
|
|
11
11
|
export declare class ComboboxBond<T = unknown> extends DropdownBond<ComboboxBondProps, ComboboxBondState<T>, ComboboxBondElements> {
|
|
12
12
|
constructor(s: ComboboxBondState<T>);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
onkeydown: (ev: KeyboardEvent) => void;
|
|
13
|
+
control(): {
|
|
14
|
+
[x: symbol]: (node: HTMLInputElement) => void;
|
|
16
15
|
'data-atom': string;
|
|
17
16
|
'data-kind': string;
|
|
18
17
|
role: string;
|
|
@@ -21,11 +20,12 @@ export declare class ComboboxBond<T = unknown> extends DropdownBond<ComboboxBond
|
|
|
21
20
|
'aria-controls': string;
|
|
22
21
|
'aria-activedescendant': string | undefined;
|
|
23
22
|
'aria-disabled': boolean;
|
|
24
|
-
'aria-label': {};
|
|
25
23
|
tabindex: number;
|
|
24
|
+
oninput: (ev: Event) => void;
|
|
25
|
+
onkeydown: (ev: KeyboardEvent) => void;
|
|
26
26
|
};
|
|
27
|
-
static get: typeof DropdownBond.
|
|
28
|
-
static set: typeof DropdownBond.
|
|
27
|
+
static get: typeof DropdownBond.get;
|
|
28
|
+
static set: typeof DropdownBond.set;
|
|
29
29
|
}
|
|
30
30
|
export declare class ComboboxBondState<T> extends DropdownBondState<ComboboxBondProps> {
|
|
31
31
|
constructor(props: () => ComboboxBondProps);
|
|
@@ -5,7 +5,7 @@ export class ComboboxBond extends DropdownBond {
|
|
|
5
5
|
constructor(s) {
|
|
6
6
|
super(s);
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
control() {
|
|
9
9
|
return {
|
|
10
10
|
'data-atom': `trigger-${this.id}`,
|
|
11
11
|
'data-kind': 'combobox-input',
|
|
@@ -17,9 +17,7 @@ export class ComboboxBond extends DropdownBond {
|
|
|
17
17
|
? `item-${this.state.selectedItems.at(0)?.id}`
|
|
18
18
|
: undefined,
|
|
19
19
|
'aria-disabled': this.state.props.disabled ?? false,
|
|
20
|
-
'aria-label': props['aria-label'] ?? 'Choose an option',
|
|
21
20
|
tabindex: this.state.props.disabled ? -1 : 0,
|
|
22
|
-
...props,
|
|
23
21
|
oninput: (ev) => {
|
|
24
22
|
const target = ev.target;
|
|
25
23
|
this.state.props.query = target.value;
|
|
@@ -27,35 +25,14 @@ export class ComboboxBond extends DropdownBond {
|
|
|
27
25
|
onkeydown: (ev) => {
|
|
28
26
|
if (this.state.props.disabled)
|
|
29
27
|
return;
|
|
30
|
-
if (ev.key === 'ArrowDown' || ev.key === 'ArrowUp') {
|
|
31
|
-
ev.preventDefault();
|
|
32
|
-
if (document.activeElement === this.elements.input) {
|
|
33
|
-
this.state.open();
|
|
34
|
-
if (ev.key === 'ArrowDown') {
|
|
35
|
-
this.state.highlightNextItem();
|
|
36
|
-
}
|
|
37
|
-
else if (ev.key === 'ArrowUp') {
|
|
38
|
-
this.state.highlightPreviousItem();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
if (ev.key === 'Escape') {
|
|
43
|
-
ev.preventDefault();
|
|
44
|
-
if (document.activeElement === this.elements.input) {
|
|
45
|
-
this.state.close();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (ev.key === 'Enter') {
|
|
49
|
-
this.state.highlightedItem?.elements.root?.click();
|
|
50
|
-
}
|
|
51
28
|
},
|
|
52
29
|
[createAttachmentKey()]: (node) => {
|
|
53
30
|
this.elements.input = node;
|
|
54
31
|
}
|
|
55
32
|
};
|
|
56
33
|
}
|
|
57
|
-
static get = DropdownBond.
|
|
58
|
-
static set = DropdownBond.
|
|
34
|
+
static get = DropdownBond.get;
|
|
35
|
+
static set = DropdownBond.set;
|
|
59
36
|
}
|
|
60
37
|
export class ComboboxBondState extends DropdownBondState {
|
|
61
38
|
// #items: Map<string, DropdownItemAtom<T>> = new SvelteMap();
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { onMount } from 'svelte';
|
|
3
|
-
import { Input } from '../input';
|
|
4
|
-
import { ComboboxBond } from './bond.svelte';
|
|
5
|
-
|
|
6
|
-
const bond = ComboboxBond.get() as ComboboxBond<{}>;
|
|
7
|
-
|
|
8
|
-
if (!bond) {
|
|
9
|
-
throw new Error('Combobox atom was not found');
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
let {
|
|
13
|
-
class: klass = '',
|
|
14
|
-
children = undefined,
|
|
15
|
-
onmount = undefined,
|
|
16
|
-
ondestroy = undefined,
|
|
17
|
-
animate = undefined,
|
|
18
|
-
enter = undefined,
|
|
19
|
-
exit = undefined,
|
|
20
|
-
initial = undefined,
|
|
21
|
-
...restProps
|
|
22
|
-
} = $props();
|
|
23
|
-
|
|
24
|
-
let isMounted = $state(false);
|
|
25
|
-
|
|
26
|
-
onMount(() => {
|
|
27
|
-
isMounted = true;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
const isMultiple = $derived(bond?.state.props?.multiple ?? false);
|
|
31
|
-
const selectedText = $derived(
|
|
32
|
-
isMounted || isMultiple ? (bond.state.selectedItems.at(0)?.text ?? '') : ''
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
const value = $derived(
|
|
36
|
-
bond?.state.props?.query ?? (bond?.state.props?.text || selectedText || '')
|
|
37
|
-
);
|
|
38
|
-
</script>
|
|
39
|
-
|
|
40
|
-
<Input.Control
|
|
41
|
-
{value}
|
|
42
|
-
preset="combobox.control"
|
|
43
|
-
class={['border-border flex-1 py-1', '$preset', klass]}
|
|
44
|
-
enter={enter?.bind(bond.state)}
|
|
45
|
-
exit={exit?.bind(bond.state)}
|
|
46
|
-
initial={initial?.bind(bond.state)}
|
|
47
|
-
animate={animate?.bind(bond.state)}
|
|
48
|
-
onmount={onmount?.bind(bond.state)}
|
|
49
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
50
|
-
{...bond.
|
|
51
|
-
{...restProps}
|
|
52
|
-
/>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { onMount } from 'svelte';
|
|
3
|
+
import { Input } from '../input';
|
|
4
|
+
import { ComboboxBond } from './bond.svelte';
|
|
5
|
+
|
|
6
|
+
const bond = ComboboxBond.get() as ComboboxBond<{}>;
|
|
7
|
+
|
|
8
|
+
if (!bond) {
|
|
9
|
+
throw new Error('Combobox atom was not found');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
class: klass = '',
|
|
14
|
+
children = undefined,
|
|
15
|
+
onmount = undefined,
|
|
16
|
+
ondestroy = undefined,
|
|
17
|
+
animate = undefined,
|
|
18
|
+
enter = undefined,
|
|
19
|
+
exit = undefined,
|
|
20
|
+
initial = undefined,
|
|
21
|
+
...restProps
|
|
22
|
+
} = $props();
|
|
23
|
+
|
|
24
|
+
let isMounted = $state(false);
|
|
25
|
+
|
|
26
|
+
onMount(() => {
|
|
27
|
+
isMounted = true;
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const isMultiple = $derived(bond?.state.props?.multiple ?? false);
|
|
31
|
+
const selectedText = $derived(
|
|
32
|
+
isMounted || isMultiple ? (bond.state.selectedItems.at(0)?.text ?? '') : ''
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
const value = $derived(
|
|
36
|
+
bond?.state.props?.query ?? (bond?.state.props?.text || selectedText || '')
|
|
37
|
+
);
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<Input.Control
|
|
41
|
+
{value}
|
|
42
|
+
preset="combobox.control"
|
|
43
|
+
class={['border-border flex-1 py-1', '$preset', klass]}
|
|
44
|
+
enter={enter?.bind(bond.state)}
|
|
45
|
+
exit={exit?.bind(bond.state)}
|
|
46
|
+
initial={initial?.bind(bond.state)}
|
|
47
|
+
animate={animate?.bind(bond.state)}
|
|
48
|
+
onmount={onmount?.bind(bond.state)}
|
|
49
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
50
|
+
{...bond.control()}
|
|
51
|
+
{...restProps}
|
|
52
|
+
/>
|