@svelte-atoms/core 1.0.0-alpha.29 → 1.0.0-alpha.31
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/README.md +3 -2
- package/dist/attachments/clickout.svelte.d.ts +1 -1
- package/dist/attachments/clickout.svelte.js +2 -2
- package/dist/components/accordion/accordion-root.svelte +65 -61
- package/dist/components/accordion/accordion-root.svelte.d.ts +1 -1
- package/dist/components/accordion/accordion.stories.svelte +70 -134
- package/dist/components/accordion/item/accordion-item-body.svelte +44 -42
- package/dist/components/accordion/item/accordion-item-header.svelte +51 -50
- package/dist/components/accordion/item/accordion-item-indicator.svelte +51 -50
- package/dist/components/accordion/item/accordion-item-root.svelte +66 -65
- 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 +66 -70
- package/dist/components/alert/alert-description.svelte +42 -42
- package/dist/components/alert/alert-description.svelte.d.ts +3 -6
- package/dist/components/alert/alert-root.svelte +68 -103
- package/dist/components/alert/alert-root.svelte.d.ts +2 -2
- package/dist/components/alert/alert.stories.svelte +10 -11
- 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 +261 -207
- package/dist/components/avatar/avatar.stories.svelte +8 -13
- package/dist/components/badge/badge.stories.svelte +1 -6
- package/dist/components/badge/badge.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb.stories.svelte +16 -21
- package/dist/components/button/button.stories.svelte +1 -34
- package/dist/components/calendar/calendar-day.svelte +9 -4
- package/dist/components/calendar/calendar-header.svelte +29 -29
- package/dist/components/calendar/calendar-root.svelte +206 -206
- package/dist/components/calendar/calendar.stories.svelte +26 -31
- package/dist/components/card/card-body.svelte +1 -1
- package/dist/components/card/card-footer.svelte +1 -1
- package/dist/components/card/card-root.svelte +1 -1
- package/dist/components/card/card.stories.svelte +92 -104
- package/dist/components/checkbox/checkbox.stories.svelte +4 -9
- package/dist/components/checkbox/checkbox.svelte +159 -157
- package/dist/components/collapsible/collapsible.stories.svelte +2 -3
- package/dist/components/combobox/atoms.d.ts +1 -1
- package/dist/components/combobox/atoms.js +1 -1
- package/dist/components/combobox/combobox-root.svelte +1 -1
- package/dist/components/combobox/compobox.stories.svelte +19 -22
- package/dist/components/combobox/index.d.ts +1 -0
- package/dist/components/container/container.stories.svelte +8 -11
- package/dist/components/container/container.svelte.d.ts +1 -1
- package/dist/components/datagrid/datagrid-root.svelte +59 -59
- package/dist/components/datagrid/datagrid.css +5 -5
- package/dist/components/datagrid/datagrid.stories.svelte +47 -50
- 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 +90 -88
- package/dist/components/date-picker/date-picker-calendar.svelte +2 -2
- package/dist/components/date-picker/date-picker-header.svelte +100 -100
- package/dist/components/date-picker/date-picker-months.svelte +142 -142
- package/dist/components/date-picker/date-picker-root.svelte +95 -95
- package/dist/components/date-picker/date-picker-years.svelte +205 -205
- package/dist/components/date-picker/date-picker.stories.svelte +35 -42
- package/dist/components/dialog/bond.svelte.d.ts +13 -3
- package/dist/components/dialog/bond.svelte.js +66 -5
- package/dist/components/dialog/dialog-content.svelte +2 -20
- package/dist/components/dialog/dialog-root.svelte +91 -110
- package/dist/components/dialog/dialog.stories.svelte +34 -37
- 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 +7 -10
- package/dist/components/drawer/bond.svelte.d.ts +24 -5
- package/dist/components/drawer/bond.svelte.js +77 -11
- package/dist/components/drawer/drawer-content.svelte +49 -42
- package/dist/components/drawer/drawer.stories.svelte +144 -224
- 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 +5 -1
- package/dist/components/dropdown/dropdown-root.svelte +1 -1
- package/dist/components/dropdown/dropdown.stories.svelte +38 -41
- package/dist/components/dropdown/index.d.ts +1 -0
- package/dist/components/form/form.stories.svelte +58 -61
- package/dist/components/image/image.stories.svelte +9 -12
- package/dist/components/input/input.stories.svelte +11 -14
- package/dist/components/label/label.stories.svelte +1 -12
- package/dist/components/label/label.stories.svelte.d.ts +24 -4
- package/dist/components/lazy/lazy.stories.svelte +28 -35
- package/dist/components/lazy/lazy.svelte +28 -28
- package/dist/components/link/link.stories.svelte +1 -12
- package/dist/components/link/link.stories.svelte.d.ts +24 -4
- package/dist/components/list/list-item.svelte +20 -20
- package/dist/components/menu/atoms.d.ts +1 -0
- package/dist/components/menu/atoms.js +1 -0
- package/dist/components/menu/index.d.ts +2 -1
- package/dist/components/menu/index.js +1 -1
- package/dist/components/menu/menu-item.svelte +69 -51
- package/dist/components/menu/menu-item.svelte.d.ts +1 -0
- package/dist/components/menu/menu-list.svelte +40 -40
- package/dist/components/menu/menu.stories.svelte +9 -12
- package/dist/components/popover/bond.svelte.d.ts +20 -7
- package/dist/components/popover/bond.svelte.js +104 -45
- package/dist/components/popover/motion.d.ts +6 -0
- package/dist/components/popover/motion.js +56 -0
- package/dist/components/popover/popover-arrow.svelte +4 -4
- package/dist/components/popover/popover-content.svelte +137 -178
- package/dist/components/popover/popover-indicator.svelte +2 -1
- package/dist/components/popover/popover-root.svelte +1 -1
- package/dist/components/popover/popover.stories.svelte +49 -52
- package/dist/components/popover/types.d.ts +9 -7
- package/dist/components/portal/active-portal.svelte +29 -22
- package/dist/components/portal/active-portal.svelte.d.ts +2 -9
- package/dist/components/portal/portal-root.svelte +76 -83
- package/dist/components/portal/portal-root.svelte.d.ts +4 -6
- package/dist/components/portal/teleport.svelte +49 -50
- package/dist/components/portal/teleport.svelte.d.ts +3 -4
- package/dist/components/qr-code/qr-code.stories.svelte +18 -27
- package/dist/components/qr-code/qr-code.svelte +75 -75
- package/dist/components/radio/radio-group.stories.svelte +21 -30
- package/dist/components/radio/radio.stories.svelte +1 -10
- 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/root.svelte +104 -121
- package/dist/components/scrollable/scrollable-root.svelte.d.ts +2 -2
- package/dist/components/scrollable/scrollable.stories.svelte +95 -105
- 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 +3 -2
- package/dist/components/sidebar/sidebar-root.svelte +39 -41
- package/dist/components/sidebar/sidebar.stories.svelte +43 -54
- package/dist/components/sidebar/types.d.ts +3 -12
- package/dist/components/tabs/tab/bond.svelte.d.ts +4 -1
- package/dist/components/tabs/tab/bond.svelte.js +4 -1
- package/dist/components/tabs/tabs.stories.svelte +31 -34
- package/dist/components/textarea/atoms.d.ts +1 -0
- package/dist/components/textarea/atoms.js +1 -0
- package/dist/components/textarea/textarea-input.svelte +9 -6
- package/dist/components/textarea/textarea-root.svelte +9 -9
- package/dist/components/textarea/textarea-root.svelte.d.ts +2 -0
- package/dist/components/tooltip/tooltip-trigger.svelte +39 -37
- package/dist/components/tooltip/tooltip-trigger.svelte.d.ts +1 -0
- package/dist/components/tooltip/tooltip.stories.svelte +7 -10
- package/dist/components/tree/tree.stories.svelte +102 -94
- package/dist/context/preset.svelte.d.ts +3 -3
- package/dist/icons/icon-copy.svelte +6 -0
- package/dist/{components/radio/types.svelte.d.ts → icons/icon-copy.svelte.d.ts} +3 -3
- package/dist/utils/function.d.ts +2 -0
- package/dist/utils/function.js +6 -0
- package/dist/utils/markdown-to-llm.d.ts +28 -0
- package/dist/utils/markdown-to-llm.js +76 -0
- package/package.json +6 -10
- package/dist/actions/animation.svelte.d.ts +0 -6
- package/dist/actions/animation.svelte.js +0 -14
- package/dist/actions/clickout.svelte.d.ts +0 -2
- package/dist/actions/clickout.svelte.js +0 -15
- package/dist/actions/popover.svelte.d.ts +0 -19
- package/dist/actions/popover.svelte.js +0 -81
- package/dist/actions/portal.svelte.d.ts +0 -8
- package/dist/actions/portal.svelte.js +0 -32
- package/dist/attachments/gsap.svelte.d.ts +0 -2
- package/dist/attachments/gsap.svelte.js +0 -26
- 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
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# ⚛️ @svelte-atoms/core
|
|
1
|
+
# ⚛️ @svelte-atoms/core | Svelte 5 UI Library
|
|
2
2
|
|
|
3
3
|
> A modern, modular, and accessible Svelte 5 UI component library built with composability at its core.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Core UI is a comprehensive Svelte component library that provides fundamental building blocks ("atoms") for creating sophisticated, interactive design systems. Each component is designed with accessibility, type safety, and developer experience in mind. Built with Svelte 5 runes for optimal reactivity and performance.
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@svelte-atoms/core)
|
|
8
8
|
[](https://deepwiki.com/svelte-atoms/core)
|
|
@@ -193,6 +193,7 @@ bun add @svelte-atoms/core
|
|
|
193
193
|
```svelte
|
|
194
194
|
<script lang="ts">
|
|
195
195
|
import { Button, Dialog, Input } from '@svelte-atoms/core';
|
|
196
|
+
import '@svelte-atoms/tw';
|
|
196
197
|
|
|
197
198
|
let dialogOpen = $state(false);
|
|
198
199
|
let inputValue = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function clickout<T extends Element>(onclick?: (ev: PointerEvent, node?: T) => void): (node: T) => () => void;
|
|
1
|
+
export declare function clickout<T extends Element>(onclick?: (ev: PointerEvent, node?: T) => void, options?: AddEventListenerOptions | undefined): (node: T) => () => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { on } from 'svelte/events';
|
|
2
|
-
export function clickout(onclick) {
|
|
2
|
+
export function clickout(onclick, options) {
|
|
3
3
|
return (node) => {
|
|
4
4
|
const handler = (ev) => {
|
|
5
5
|
const target = ev.target;
|
|
@@ -7,7 +7,7 @@ export function clickout(onclick) {
|
|
|
7
7
|
onclick?.(ev, node);
|
|
8
8
|
}
|
|
9
9
|
};
|
|
10
|
-
const cleanup = on(window, 'click', handler);
|
|
10
|
+
const cleanup = on(window, 'click', handler, options);
|
|
11
11
|
return () => {
|
|
12
12
|
cleanup();
|
|
13
13
|
};
|
|
@@ -1,61 +1,65 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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,5 +1,5 @@
|
|
|
1
|
-
import { AccordionBond } from './bond.svelte';
|
|
2
1
|
import { type Base } from '../atom';
|
|
2
|
+
import { AccordionBond } from './bond.svelte';
|
|
3
3
|
import type { AccordionRootProps } from './types';
|
|
4
4
|
declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
|
|
5
5
|
props: AccordionRootProps<E, B>;
|
|
@@ -1,134 +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
|
-
initial={(node) => {
|
|
72
|
-
gsap.set(node, { opacity: 0, height: 0 });
|
|
73
|
-
}}
|
|
74
|
-
enter={(node) => {
|
|
75
|
-
const tween = gsap.to(node, {
|
|
76
|
-
opacity: 1,
|
|
77
|
-
height: 'auto',
|
|
78
|
-
duration: 0.2,
|
|
79
|
-
ease: linear
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
return toTransitionConfig(tween);
|
|
83
|
-
}}
|
|
84
|
-
exit={(node) => {
|
|
85
|
-
const tween = gsap.to(node, { opacity: 0, height: 0, duration: 0.2, ease: linear });
|
|
86
|
-
|
|
87
|
-
return toTransitionConfig(tween);
|
|
88
|
-
}}
|
|
89
|
-
>
|
|
90
|
-
<div class="p-2">
|
|
91
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
92
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
93
|
-
dolor diam nascetur.
|
|
94
|
-
</div>
|
|
95
|
-
</AccordionItem.Body>
|
|
96
|
-
</AccordionItem.Root>
|
|
97
|
-
|
|
98
|
-
<AccordionItem.Root>
|
|
99
|
-
<AccordionItem.Header>
|
|
100
|
-
<div>Hello Atomic UI 3</div>
|
|
101
|
-
<AccordionItem.Indicator />
|
|
102
|
-
</AccordionItem.Header>
|
|
103
|
-
|
|
104
|
-
<AccordionItem.Body
|
|
105
|
-
initial={(node) => {
|
|
106
|
-
gsap.set(node, { opacity: 0, height: 0 });
|
|
107
|
-
}}
|
|
108
|
-
enter={(node) => {
|
|
109
|
-
const tween = gsap.to(node, {
|
|
110
|
-
opacity: 1,
|
|
111
|
-
height: 'auto',
|
|
112
|
-
duration: 0.2,
|
|
113
|
-
ease: linear
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
return toTransitionConfig(tween);
|
|
117
|
-
}}
|
|
118
|
-
exit={(node) => {
|
|
119
|
-
const tween = gsap.to(node, { opacity: 0, height: 0, duration: 0.2, ease: linear });
|
|
120
|
-
|
|
121
|
-
return toTransitionConfig(tween);
|
|
122
|
-
}}
|
|
123
|
-
>
|
|
124
|
-
<div class="p-2">
|
|
125
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
126
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
127
|
-
dolor diam nascetur.
|
|
128
|
-
</div>
|
|
129
|
-
</AccordionItem.Body>
|
|
130
|
-
</AccordionItem.Root>
|
|
131
|
-
</AAccordion>
|
|
132
|
-
</Root>
|
|
133
|
-
{/snippet}
|
|
134
|
-
</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,42 +1,44 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import { HtmlAtom, type Base } from '../../atom';
|
|
3
|
-
import { AccordionItemBond } from './bond.svelte';
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
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
|
-
{
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import { HtmlAtom, type Base } from '../../atom';
|
|
3
|
+
import { AccordionItemBond } from './bond.svelte';
|
|
4
|
+
import { enterAccordionItemBody, exitAccordionItemBody } from './motion.svelte';
|
|
5
|
+
import type { AccordionItemBodyProps } from './types';
|
|
6
|
+
|
|
7
|
+
const bond = AccordionItemBond.get();
|
|
8
|
+
const isOpen = $derived(bond?.state.isOpen ?? false);
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
class: klass = '',
|
|
12
|
+
children = undefined,
|
|
13
|
+
onmount = undefined,
|
|
14
|
+
ondestroy = undefined,
|
|
15
|
+
animate = undefined,
|
|
16
|
+
enter = enterAccordionItemBody(),
|
|
17
|
+
exit = exitAccordionItemBody(),
|
|
18
|
+
initial = undefined,
|
|
19
|
+
preset = 'accordion.item.body',
|
|
20
|
+
...restProps
|
|
21
|
+
}: AccordionItemBodyProps<E, B> = $props();
|
|
22
|
+
|
|
23
|
+
const bodyProps = $derived({
|
|
24
|
+
...bond?.body(),
|
|
25
|
+
...restProps
|
|
26
|
+
});
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
{#if isOpen}
|
|
30
|
+
<HtmlAtom
|
|
31
|
+
{preset}
|
|
32
|
+
{bond}
|
|
33
|
+
class={['border-border box-content h-0 opacity-0', '$preset', klass]}
|
|
34
|
+
onmount={onmount?.bind(bond.state)}
|
|
35
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
36
|
+
animate={animate?.bind(bond.state)}
|
|
37
|
+
enter={enter?.bind(bond.state)}
|
|
38
|
+
exit={exit?.bind(bond.state)}
|
|
39
|
+
initial={initial?.bind(bond.state)}
|
|
40
|
+
{...bodyProps}
|
|
41
|
+
>
|
|
42
|
+
{@render children?.({ accordionItem: bond })}
|
|
43
|
+
</HtmlAtom>
|
|
44
|
+
{/if}
|
|
@@ -1,50 +1,51 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import { HtmlAtom, type Base } from '../../atom';
|
|
3
|
-
import { AccordionItemBond } from './bond.svelte';
|
|
4
|
-
import type { AccordionItemHeaderProps } from './types';
|
|
5
|
-
|
|
6
|
-
let {
|
|
7
|
-
class: klass = '',
|
|
8
|
-
as = 'button',
|
|
9
|
-
children = undefined,
|
|
10
|
-
onpointerdown = undefined,
|
|
11
|
-
onmount = undefined,
|
|
12
|
-
ondestroy = undefined,
|
|
13
|
-
animate = undefined,
|
|
14
|
-
enter = undefined,
|
|
15
|
-
exit = undefined,
|
|
16
|
-
initial = undefined,
|
|
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
|
-
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import { HtmlAtom, type Base } from '../../atom';
|
|
3
|
+
import { AccordionItemBond } from './bond.svelte';
|
|
4
|
+
import type { AccordionItemHeaderProps } from './types';
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
class: klass = '',
|
|
8
|
+
as = 'button',
|
|
9
|
+
children = undefined,
|
|
10
|
+
onpointerdown = undefined,
|
|
11
|
+
onmount = undefined,
|
|
12
|
+
ondestroy = undefined,
|
|
13
|
+
animate = undefined,
|
|
14
|
+
enter = undefined,
|
|
15
|
+
exit = undefined,
|
|
16
|
+
initial = undefined,
|
|
17
|
+
preset = 'accordion.item.header',
|
|
18
|
+
...restProps
|
|
19
|
+
}: AccordionItemHeaderProps = $props();
|
|
20
|
+
|
|
21
|
+
const bond = AccordionItemBond.get();
|
|
22
|
+
|
|
23
|
+
const headerProps = $derived({
|
|
24
|
+
...bond?.header(),
|
|
25
|
+
...restProps
|
|
26
|
+
});
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
30
|
+
<HtmlAtom
|
|
31
|
+
{as}
|
|
32
|
+
{bond}
|
|
33
|
+
{preset}
|
|
34
|
+
class={[
|
|
35
|
+
'border-border relative box-border flex w-full cursor-pointer items-center',
|
|
36
|
+
'$preset',
|
|
37
|
+
klass
|
|
38
|
+
]}
|
|
39
|
+
onmount={onmount?.bind(bond.state)}
|
|
40
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
41
|
+
animate={animate?.bind(bond.state)}
|
|
42
|
+
enter={enter?.bind(bond.state)}
|
|
43
|
+
exit={exit?.bind(bond.state)}
|
|
44
|
+
initial={initial?.bind(bond.state)}
|
|
45
|
+
tabindex={as !== 'button' ? 0 : undefined}
|
|
46
|
+
{...headerProps}
|
|
47
|
+
>
|
|
48
|
+
{@render children?.({
|
|
49
|
+
accordionItem: bond
|
|
50
|
+
})}
|
|
51
|
+
</HtmlAtom>
|