@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,61 +1,65 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import { defineProperty, defineState } from '../../utils';
|
|
3
|
-
import { HtmlAtom, type Base } from '../atom';
|
|
4
|
-
import { AccordionBond, AccordionState, type AccordionStateProps } from './bond.svelte';
|
|
5
|
-
import type { AccordionRootProps } from './types';
|
|
6
|
-
|
|
7
|
-
let {
|
|
8
|
-
value = $bindable(undefined),
|
|
9
|
-
values = $bindable([]),
|
|
10
|
-
data = $bindable([]),
|
|
11
|
-
class: klass = '',
|
|
12
|
-
multiple = false,
|
|
13
|
-
collapsible = false,
|
|
14
|
-
disabled = false,
|
|
15
|
-
children = undefined,
|
|
16
|
-
factory = _factory,
|
|
17
|
-
onmount = undefined,
|
|
18
|
-
ondestroy = undefined,
|
|
19
|
-
animate = undefined,
|
|
20
|
-
enter = undefined,
|
|
21
|
-
exit = undefined,
|
|
22
|
-
initial = undefined,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
{
|
|
61
|
-
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import { defineProperty, defineState } from '../../utils';
|
|
3
|
+
import { HtmlAtom, type Base } from '../atom';
|
|
4
|
+
import { AccordionBond, AccordionState, type AccordionStateProps } from './bond.svelte';
|
|
5
|
+
import type { AccordionRootProps } from './types';
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
value = $bindable(undefined),
|
|
9
|
+
values = $bindable([]),
|
|
10
|
+
data = $bindable([]),
|
|
11
|
+
class: klass = '',
|
|
12
|
+
multiple = false,
|
|
13
|
+
collapsible = false,
|
|
14
|
+
disabled = false,
|
|
15
|
+
children = undefined,
|
|
16
|
+
factory = _factory,
|
|
17
|
+
onmount = undefined,
|
|
18
|
+
ondestroy = undefined,
|
|
19
|
+
animate = undefined,
|
|
20
|
+
enter = undefined,
|
|
21
|
+
exit = undefined,
|
|
22
|
+
initial = undefined,
|
|
23
|
+
preset = 'accordion',
|
|
24
|
+
...restProps
|
|
25
|
+
}: AccordionRootProps<E, B> = $props();
|
|
26
|
+
|
|
27
|
+
const bondProps = defineState<AccordionStateProps>([
|
|
28
|
+
defineProperty(
|
|
29
|
+
'values',
|
|
30
|
+
() => (multiple ? values : ([value].filter(Boolean) as string[])),
|
|
31
|
+
(v) => {
|
|
32
|
+
values = v;
|
|
33
|
+
value = values[0];
|
|
34
|
+
}
|
|
35
|
+
),
|
|
36
|
+
defineProperty('multiple', () => multiple),
|
|
37
|
+
defineProperty('collapsible', () => collapsible),
|
|
38
|
+
defineProperty('disabled', () => disabled)
|
|
39
|
+
]);
|
|
40
|
+
const bond = factory(bondProps).share();
|
|
41
|
+
|
|
42
|
+
const rootProps = $derived({
|
|
43
|
+
...bond.root(),
|
|
44
|
+
...restProps
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
function _factory(props: typeof bondProps = bondProps) {
|
|
48
|
+
const bondState = new AccordionState(() => props);
|
|
49
|
+
|
|
50
|
+
return new AccordionBond(bondState);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function getBond() {
|
|
54
|
+
return bond;
|
|
55
|
+
}
|
|
56
|
+
</script>
|
|
57
|
+
|
|
58
|
+
<HtmlAtom
|
|
59
|
+
{preset}
|
|
60
|
+
{bond}
|
|
61
|
+
class={['bg-card border-border flex list-none flex-col', '$preset', klass]}
|
|
62
|
+
{...rootProps}
|
|
63
|
+
>
|
|
64
|
+
{@render children?.({ accordion: bond })}
|
|
65
|
+
</HtmlAtom>
|
|
@@ -1,145 +1,70 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
-
import { Accordion as AAccordion, AccordionItem } from '.';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<AccordionItem.Body
|
|
73
|
-
initial={(node) => {
|
|
74
|
-
Object.assign(node.style, { opacity: 0, height: 0 });
|
|
75
|
-
}}
|
|
76
|
-
enter={(node) => {
|
|
77
|
-
animate(
|
|
78
|
-
node,
|
|
79
|
-
{
|
|
80
|
-
opacity: 1,
|
|
81
|
-
height: 'auto'
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
duration: 0.2,
|
|
85
|
-
ease: linear
|
|
86
|
-
}
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
return { duration: 0.2 };
|
|
90
|
-
}}
|
|
91
|
-
exit={(node) => {
|
|
92
|
-
animate(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: linear });
|
|
93
|
-
|
|
94
|
-
return { duration: 0.2 };
|
|
95
|
-
}}
|
|
96
|
-
>
|
|
97
|
-
<div class="p-2">
|
|
98
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
99
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
100
|
-
dolor diam nascetur.
|
|
101
|
-
</div>
|
|
102
|
-
</AccordionItem.Body>
|
|
103
|
-
</AccordionItem.Root>
|
|
104
|
-
|
|
105
|
-
<AccordionItem.Root>
|
|
106
|
-
<AccordionItem.Header>
|
|
107
|
-
<div>Hello Atomic UI 3</div>
|
|
108
|
-
<AccordionItem.Indicator />
|
|
109
|
-
</AccordionItem.Header>
|
|
110
|
-
|
|
111
|
-
<AccordionItem.Body
|
|
112
|
-
initial={(node) => {
|
|
113
|
-
Object.assign(node.style, { opacity: 0, height: 0 });
|
|
114
|
-
}}
|
|
115
|
-
enter={(node) => {
|
|
116
|
-
animate(
|
|
117
|
-
node,
|
|
118
|
-
{
|
|
119
|
-
opacity: 1,
|
|
120
|
-
height: 'auto'
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
duration: 0.2,
|
|
124
|
-
ease: linear
|
|
125
|
-
}
|
|
126
|
-
);
|
|
127
|
-
|
|
128
|
-
return { duration: 0.2 };
|
|
129
|
-
}}
|
|
130
|
-
exit={(node) => {
|
|
131
|
-
animate(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: linear });
|
|
132
|
-
|
|
133
|
-
return { duration: 0.2 };
|
|
134
|
-
}}
|
|
135
|
-
>
|
|
136
|
-
<div class="p-2">
|
|
137
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
138
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
139
|
-
dolor diam nascetur.
|
|
140
|
-
</div>
|
|
141
|
-
</AccordionItem.Body>
|
|
142
|
-
</AccordionItem.Root>
|
|
143
|
-
</AAccordion>
|
|
144
|
-
{/snippet}
|
|
145
|
-
</Story>
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import { Accordion as AAccordion, AccordionItem } from '.';
|
|
4
|
+
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
title: 'Atoms/Accordion',
|
|
8
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
9
|
+
|
|
10
|
+
parameters: {
|
|
11
|
+
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
|
|
12
|
+
layout: 'fullscreen'
|
|
13
|
+
},
|
|
14
|
+
args: {}
|
|
15
|
+
});
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<script lang="ts">
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<Story name="Accordion" args={{ collapsible: false, multiple: false, disabled: false }}>
|
|
22
|
+
{#snippet template(args)}
|
|
23
|
+
<AAccordion class="backdrop-blur-sm" {...args}>
|
|
24
|
+
<AccordionItem.Root>
|
|
25
|
+
<AccordionItem.Header>
|
|
26
|
+
<div>Hello Atomic UI 1</div>
|
|
27
|
+
<AccordionItem.Indicator class="ml-auto" />
|
|
28
|
+
</AccordionItem.Header>
|
|
29
|
+
|
|
30
|
+
<AccordionItem.Body>
|
|
31
|
+
<div class="p-2">
|
|
32
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
33
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
34
|
+
dolor diam nascetur.
|
|
35
|
+
</div>
|
|
36
|
+
</AccordionItem.Body>
|
|
37
|
+
</AccordionItem.Root>
|
|
38
|
+
|
|
39
|
+
<AccordionItem.Root>
|
|
40
|
+
<AccordionItem.Header>
|
|
41
|
+
<div>Hello Atomic UI 2</div>
|
|
42
|
+
<AccordionItem.Indicator class="ml-auto" />
|
|
43
|
+
</AccordionItem.Header>
|
|
44
|
+
|
|
45
|
+
<AccordionItem.Body>
|
|
46
|
+
<div class="p-2">
|
|
47
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
48
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
49
|
+
dolor diam nascetur.
|
|
50
|
+
</div>
|
|
51
|
+
</AccordionItem.Body>
|
|
52
|
+
</AccordionItem.Root>
|
|
53
|
+
|
|
54
|
+
<AccordionItem.Root>
|
|
55
|
+
<AccordionItem.Header>
|
|
56
|
+
<div>Hello Atomic UI 3</div>
|
|
57
|
+
<AccordionItem.Indicator class="ml-auto" />
|
|
58
|
+
</AccordionItem.Header>
|
|
59
|
+
|
|
60
|
+
<AccordionItem.Body>
|
|
61
|
+
<div class="p-2">
|
|
62
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
63
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
64
|
+
dolor diam nascetur.
|
|
65
|
+
</div>
|
|
66
|
+
</AccordionItem.Body>
|
|
67
|
+
</AccordionItem.Root>
|
|
68
|
+
</AAccordion>
|
|
69
|
+
{/snippet}
|
|
70
|
+
</Story>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
2
|
import { HtmlAtom, type Base } from '../../atom';
|
|
3
3
|
import { AccordionItemBond } from './bond.svelte';
|
|
4
|
+
import { enterAccordionItemBody, exitAccordionItemBody } from './motion.svelte';
|
|
4
5
|
import type { AccordionItemBodyProps } from './types';
|
|
5
6
|
|
|
6
7
|
const bond = AccordionItemBond.get();
|
|
@@ -12,9 +13,10 @@
|
|
|
12
13
|
onmount = undefined,
|
|
13
14
|
ondestroy = undefined,
|
|
14
15
|
animate = undefined,
|
|
15
|
-
enter =
|
|
16
|
-
exit =
|
|
16
|
+
enter = enterAccordionItemBody(),
|
|
17
|
+
exit = exitAccordionItemBody(),
|
|
17
18
|
initial = undefined,
|
|
19
|
+
preset = 'accordion.item.body',
|
|
18
20
|
...restProps
|
|
19
21
|
}: AccordionItemBodyProps<E, B> = $props();
|
|
20
22
|
|
|
@@ -26,9 +28,9 @@
|
|
|
26
28
|
|
|
27
29
|
{#if isOpen}
|
|
28
30
|
<HtmlAtom
|
|
29
|
-
preset
|
|
30
|
-
class={['border-border box-content', '$preset', klass]}
|
|
31
|
+
{preset}
|
|
31
32
|
{bond}
|
|
33
|
+
class={['border-border box-content h-0 opacity-0', '$preset', klass]}
|
|
32
34
|
onmount={onmount?.bind(bond.state)}
|
|
33
35
|
ondestroy={ondestroy?.bind(bond.state)}
|
|
34
36
|
animate={animate?.bind(bond.state)}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
enter = undefined,
|
|
15
15
|
exit = undefined,
|
|
16
16
|
initial = undefined,
|
|
17
|
+
preset = 'accordion.item.header',
|
|
17
18
|
...restProps
|
|
18
19
|
}: AccordionItemHeaderProps = $props();
|
|
19
20
|
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
<HtmlAtom
|
|
30
31
|
{as}
|
|
31
32
|
{bond}
|
|
32
|
-
preset
|
|
33
|
+
{preset}
|
|
33
34
|
class={[
|
|
34
35
|
'border-border relative box-border flex w-full cursor-pointer items-center',
|
|
35
36
|
'$preset',
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
enter = undefined,
|
|
19
19
|
exit = undefined,
|
|
20
20
|
initial = undefined,
|
|
21
|
+
preset = 'accordion.item.indicator',
|
|
21
22
|
...restProps
|
|
22
23
|
}: AccordionItemIndicatorProps<E, B> = $props();
|
|
23
24
|
|
|
@@ -32,7 +33,7 @@
|
|
|
32
33
|
</script>
|
|
33
34
|
|
|
34
35
|
<HtmlAtom
|
|
35
|
-
preset
|
|
36
|
+
{preset}
|
|
36
37
|
class={['border-border pointer-events-none flex items-center justify-center', '$preset', klass]}
|
|
37
38
|
onmount={onmount?.bind(bond.state)}
|
|
38
39
|
ondestroy={ondestroy?.bind(bond.state)}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
enter = undefined,
|
|
23
23
|
exit = undefined,
|
|
24
24
|
initial = undefined,
|
|
25
|
+
preset = 'accordion.item',
|
|
25
26
|
...restProps
|
|
26
27
|
}: AccordionItemRootProps<E, B> = $props();
|
|
27
28
|
|
|
@@ -51,7 +52,7 @@
|
|
|
51
52
|
|
|
52
53
|
<HtmlAtom
|
|
53
54
|
{bond}
|
|
54
|
-
preset
|
|
55
|
+
{preset}
|
|
55
56
|
class={['border-border', '$preset', klass]}
|
|
56
57
|
onmount={onmount?.bind(bond.state)}
|
|
57
58
|
ondestroy={ondestroy?.bind(bond.state)}
|
|
@@ -3,6 +3,8 @@ import { Bond, BondState, type BondStateProps } from '../../../shared/bond.svelt
|
|
|
3
3
|
export type AccordionItemBondProps = BondStateProps & {
|
|
4
4
|
value: string;
|
|
5
5
|
disabled: boolean;
|
|
6
|
+
multiple: boolean;
|
|
7
|
+
collapsible: boolean;
|
|
6
8
|
};
|
|
7
9
|
export type AccordionItemBondElements = {
|
|
8
10
|
root: HTMLElement;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Easing } from 'motion';
|
|
2
|
+
export type EnterAccordionItemBodyParams = {
|
|
3
|
+
duration?: number;
|
|
4
|
+
delay?: number;
|
|
5
|
+
ease?: Easing | Easing[] | (string & {});
|
|
6
|
+
};
|
|
7
|
+
export declare function enterAccordionItemBody(params?: EnterAccordionItemBodyParams): (node: HTMLElement) => {
|
|
8
|
+
duration: number;
|
|
9
|
+
delay: number;
|
|
10
|
+
};
|
|
11
|
+
export type ExitAccordionItemBodyParams = EnterAccordionItemBodyParams;
|
|
12
|
+
export declare function exitAccordionItemBody(params?: ExitAccordionItemBodyParams): (node: HTMLElement) => {
|
|
13
|
+
duration: number;
|
|
14
|
+
delay: number;
|
|
15
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DURATION } from '../../../shared';
|
|
2
|
+
import { animate } from 'motion';
|
|
3
|
+
export function enterAccordionItemBody(params = {}) {
|
|
4
|
+
return (node) => {
|
|
5
|
+
const { duration = DURATION.normal / 1000, delay = 0, ease = 'linear' } = params;
|
|
6
|
+
animate(node, {
|
|
7
|
+
opacity: [0, 1],
|
|
8
|
+
height: 'auto'
|
|
9
|
+
}, {
|
|
10
|
+
duration,
|
|
11
|
+
delay,
|
|
12
|
+
ease
|
|
13
|
+
});
|
|
14
|
+
return { duration: duration * 1000, delay: delay * 1000 };
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function exitAccordionItemBody(params = {}) {
|
|
18
|
+
return (node) => {
|
|
19
|
+
const { duration = DURATION.normal / 1000, delay = 0.1, ease = 'linear' } = params;
|
|
20
|
+
animate(node, {
|
|
21
|
+
opacity: [1, 0],
|
|
22
|
+
height: 0
|
|
23
|
+
}, {
|
|
24
|
+
duration,
|
|
25
|
+
delay,
|
|
26
|
+
ease
|
|
27
|
+
});
|
|
28
|
+
return { duration: duration * 1000, delay: delay * 1000 };
|
|
29
|
+
};
|
|
30
|
+
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { Snippet } from 'svelte';
|
|
2
1
|
import type { HtmlAtomProps, Base } from '../../atom';
|
|
3
|
-
import type { Factory
|
|
2
|
+
import type { Factory } from '../../../types';
|
|
4
3
|
import type { AccordionItemBond } from './bond.svelte';
|
|
5
4
|
/**
|
|
6
5
|
* Extend this interface to add custom accordion item root properties in your application.
|
|
@@ -22,31 +21,15 @@ export interface AccordionItemBodyExtendProps {
|
|
|
22
21
|
*/
|
|
23
22
|
export interface AccordionItemIndicatorExtendProps {
|
|
24
23
|
}
|
|
25
|
-
export interface AccordionItemRootProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends
|
|
26
|
-
children?: Snippet<[{
|
|
27
|
-
accordionItem: AccordionItemBond;
|
|
28
|
-
}]>;
|
|
29
|
-
}>, AccordionItemRootExtendProps {
|
|
24
|
+
export interface AccordionItemRootProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, AccordionItemRootExtendProps {
|
|
30
25
|
value?: string;
|
|
31
26
|
data?: any;
|
|
32
27
|
disabled?: boolean;
|
|
33
28
|
factory?: Factory<AccordionItemBond>;
|
|
34
29
|
}
|
|
35
|
-
export interface AccordionItemHeaderProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
export interface AccordionItemBodyProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends Override<HtmlAtomProps<E, B>, {
|
|
42
|
-
children?: Snippet<[{
|
|
43
|
-
accordionItem: AccordionItemBond;
|
|
44
|
-
}]>;
|
|
45
|
-
}>, AccordionItemBodyExtendProps {
|
|
46
|
-
}
|
|
47
|
-
export interface AccordionItemIndicatorProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends Override<HtmlAtomProps<E, B>, {
|
|
48
|
-
children?: Snippet<[{
|
|
49
|
-
accordionItem: AccordionItemBond;
|
|
50
|
-
}]>;
|
|
51
|
-
}>, AccordionItemIndicatorExtendProps {
|
|
30
|
+
export interface AccordionItemHeaderProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, AccordionItemHeaderExtendProps {
|
|
31
|
+
}
|
|
32
|
+
export interface AccordionItemBodyProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, AccordionItemBodyExtendProps {
|
|
33
|
+
}
|
|
34
|
+
export interface AccordionItemIndicatorProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, AccordionItemIndicatorExtendProps {
|
|
52
35
|
}
|
|
@@ -26,45 +26,41 @@
|
|
|
26
26
|
...restProps
|
|
27
27
|
}: AlertCloseButtonProps<E, B> & HTMLAttributes<Element> = $props();
|
|
28
28
|
|
|
29
|
-
const isDismissible = $derived(bond?.state.isDismissible ?? false);
|
|
30
|
-
|
|
31
29
|
const closeButtonProps = $derived({
|
|
32
30
|
...bond?.closeButton(),
|
|
33
31
|
...restProps
|
|
34
32
|
});
|
|
35
33
|
</script>
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
{
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
<
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
</HtmlAtom>
|
|
70
|
-
{/if}
|
|
35
|
+
<HtmlAtom
|
|
36
|
+
{as}
|
|
37
|
+
{bond}
|
|
38
|
+
{preset}
|
|
39
|
+
class={[
|
|
40
|
+
'alert-close-button border-border flex size-6 items-center justify-center rounded p-0.5 transition-colors hover:bg-black/10 dark:hover:bg-white/10',
|
|
41
|
+
'$preset',
|
|
42
|
+
klass
|
|
43
|
+
]}
|
|
44
|
+
onmount={onmount?.bind(bond.state)}
|
|
45
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
46
|
+
animate={animate?.bind(bond.state)}
|
|
47
|
+
enter={enter?.bind(bond.state)}
|
|
48
|
+
exit={exit?.bind(bond.state)}
|
|
49
|
+
initial={initial?.bind(bond.state)}
|
|
50
|
+
{...closeButtonProps}
|
|
51
|
+
>
|
|
52
|
+
{#if children}
|
|
53
|
+
{@render children({ alert: bond! })}
|
|
54
|
+
{:else}
|
|
55
|
+
<Icon class="h-full">
|
|
56
|
+
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57
|
+
<path
|
|
58
|
+
stroke-linecap="round"
|
|
59
|
+
stroke-linejoin="round"
|
|
60
|
+
stroke-width="2"
|
|
61
|
+
d="M6 18L18 6M6 6l12 12"
|
|
62
|
+
/>
|
|
63
|
+
</svg>
|
|
64
|
+
</Icon>
|
|
65
|
+
{/if}
|
|
66
|
+
</HtmlAtom>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
2
|
import { HtmlAtom, type Base } from '../atom';
|
|
3
3
|
import { AlertBond } from './bond.svelte';
|
|
4
|
-
|
|
4
|
+
import type { AlertDescriptionProps } from './types';
|
|
5
5
|
|
|
6
6
|
const bond = AlertBond.get();
|
|
7
7
|
|