@svelte-atoms/core 1.0.0-alpha.31 → 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 +289 -853
- package/dist/attachments/index.d.ts +1 -0
- package/dist/attachments/index.js +1 -0
- package/dist/components/accordion/accordion-root.svelte +65 -65
- package/dist/components/accordion/accordion.stories.svelte +70 -70
- package/dist/components/accordion/item/accordion-item-body.svelte +44 -44
- package/dist/components/accordion/item/accordion-item-header.svelte +51 -51
- package/dist/components/accordion/item/accordion-item-indicator.svelte +51 -51
- package/dist/components/accordion/item/accordion-item-root.svelte +66 -66
- package/dist/components/alert/alert-close-button.svelte +66 -66
- package/dist/components/alert/alert-description.svelte +42 -42
- package/dist/components/alert/alert-root.svelte +68 -68
- package/dist/components/atom/html-atom.svelte +26 -194
- 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/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/calendar/calendar-day.svelte +101 -101
- package/dist/components/checkbox/checkbox.svelte +159 -159
- package/dist/components/collapsible/bond.svelte.js +2 -1
- package/dist/components/collapsible/collapsible-body.svelte +3 -2
- 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.stories.svelte +50 -0
- package/dist/components/combobox/combobox.stories.svelte.d.ts +3 -0
- package/dist/components/datagrid/tr/datagrid-tr.svelte +90 -90
- 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 +67 -67
- package/dist/components/dialog/bond.svelte.js +5 -20
- package/dist/components/dialog/dialog-content.svelte +44 -44
- package/dist/components/dialog/dialog-root.svelte +91 -91
- package/dist/components/drawer/bond.svelte.d.ts +18 -16
- package/dist/components/drawer/bond.svelte.js +8 -18
- package/dist/components/drawer/drawer-content.svelte +49 -49
- package/dist/components/drawer/drawer-root.svelte +5 -4
- package/dist/components/drawer/drawer.stories.svelte +141 -144
- package/dist/components/drawer/motion.js +1 -1
- 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 +21 -22
- package/dist/components/dropdown/bond.svelte.js +29 -53
- package/dist/components/dropdown/dropdown-root.svelte +65 -59
- 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 +83 -80
- package/dist/components/dropdown/index.d.ts +1 -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/list/list-item.svelte +20 -20
- package/dist/components/menu/atoms.d.ts +8 -3
- package/dist/components/menu/atoms.js +8 -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 +1 -0
- package/dist/components/menu/index.js +1 -0
- 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 +33 -33
- package/dist/components/menu/types.d.ts +0 -7
- package/dist/components/popover/bond.svelte.d.ts +11 -14
- package/dist/components/popover/bond.svelte.js +27 -44
- package/dist/components/popover/popover-content.svelte +137 -137
- package/dist/components/popover/popover.stories.svelte +37 -49
- package/dist/components/portal/active-portal.svelte +29 -29
- package/dist/components/portal/portal-root.svelte +76 -76
- package/dist/components/portal/teleport.svelte +49 -49
- package/dist/components/radio/radio.svelte +109 -109
- 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/root/l0-portal.svelte.d.ts +26 -0
- 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 +17 -18
- 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/sidebar/motion.svelte.js +3 -3
- package/dist/components/sidebar/sidebar-content.svelte +40 -40
- package/dist/components/textarea/textarea-input.svelte +9 -9
- package/dist/components/textarea/textarea-root.svelte +9 -9
- package/dist/components/tooltip/tooltip-trigger.svelte +39 -39
- 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/context/preset.svelte.d.ts +3 -1
- package/dist/icons/icon-copy.svelte +6 -6
- 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 -2
- 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 -69
- package/dist/components/menu/menu-item.svelte.d.ts +0 -37
- package/dist/utils/markdown-to-llm.d.ts +0 -28
- package/dist/utils/markdown-to-llm.js +0 -76
|
@@ -1,65 +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
|
-
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
|
+
<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,70 +1,70 @@
|
|
|
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
|
+
<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,44 +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 { 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
|
+
<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,51 +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
|
-
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>
|
|
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>
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import { animate as motion } from 'motion';
|
|
3
|
-
import { Icon } from '../../icon';
|
|
4
|
-
import IconArrowDown from '../../../icons/icon-arrow-down.svelte';
|
|
5
|
-
import { HtmlAtom, type Base } from '../../atom';
|
|
6
|
-
import { AccordionItemBond } from './bond.svelte';
|
|
7
|
-
import type { AccordionItemIndicatorProps } from './types';
|
|
8
|
-
|
|
9
|
-
const bond = AccordionItemBond.get();
|
|
10
|
-
const isOpen = $derived(bond?.state?.isOpen ?? false);
|
|
11
|
-
|
|
12
|
-
let {
|
|
13
|
-
class: klass = '',
|
|
14
|
-
children = undefined,
|
|
15
|
-
onmount = undefined,
|
|
16
|
-
ondestroy = undefined,
|
|
17
|
-
animate = _animate,
|
|
18
|
-
enter = undefined,
|
|
19
|
-
exit = undefined,
|
|
20
|
-
initial = undefined,
|
|
21
|
-
preset = 'accordion.item.indicator',
|
|
22
|
-
...restProps
|
|
23
|
-
}: AccordionItemIndicatorProps<E, B> = $props();
|
|
24
|
-
|
|
25
|
-
const indicatorProps = $derived({
|
|
26
|
-
...bond?.indicator(),
|
|
27
|
-
...restProps
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
function _animate(node: HTMLElement) {
|
|
31
|
-
return motion(node, { rotate: 180 * +isOpen }, { duration: 0.3, ease: 'anticipate' });
|
|
32
|
-
}
|
|
33
|
-
</script>
|
|
34
|
-
|
|
35
|
-
<HtmlAtom
|
|
36
|
-
{preset}
|
|
37
|
-
class={['border-border pointer-events-none flex items-center justify-center', '$preset', klass]}
|
|
38
|
-
onmount={onmount?.bind(bond.state)}
|
|
39
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
40
|
-
animate={animate?.bind(bond.state)}
|
|
41
|
-
enter={enter?.bind(bond.state)}
|
|
42
|
-
exit={exit?.bind(bond.state)}
|
|
43
|
-
initial={initial?.bind(bond.state)}
|
|
44
|
-
{...indicatorProps}
|
|
45
|
-
>
|
|
46
|
-
{#if children}
|
|
47
|
-
{@render children({ accordionItem: bond })}
|
|
48
|
-
{:else}
|
|
49
|
-
<Icon src={IconArrowDown} />
|
|
50
|
-
{/if}
|
|
51
|
-
</HtmlAtom>
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import { animate as motion } from 'motion';
|
|
3
|
+
import { Icon } from '../../icon';
|
|
4
|
+
import IconArrowDown from '../../../icons/icon-arrow-down.svelte';
|
|
5
|
+
import { HtmlAtom, type Base } from '../../atom';
|
|
6
|
+
import { AccordionItemBond } from './bond.svelte';
|
|
7
|
+
import type { AccordionItemIndicatorProps } from './types';
|
|
8
|
+
|
|
9
|
+
const bond = AccordionItemBond.get();
|
|
10
|
+
const isOpen = $derived(bond?.state?.isOpen ?? false);
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
class: klass = '',
|
|
14
|
+
children = undefined,
|
|
15
|
+
onmount = undefined,
|
|
16
|
+
ondestroy = undefined,
|
|
17
|
+
animate = _animate,
|
|
18
|
+
enter = undefined,
|
|
19
|
+
exit = undefined,
|
|
20
|
+
initial = undefined,
|
|
21
|
+
preset = 'accordion.item.indicator',
|
|
22
|
+
...restProps
|
|
23
|
+
}: AccordionItemIndicatorProps<E, B> = $props();
|
|
24
|
+
|
|
25
|
+
const indicatorProps = $derived({
|
|
26
|
+
...bond?.indicator(),
|
|
27
|
+
...restProps
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
function _animate(node: HTMLElement) {
|
|
31
|
+
return motion(node, { rotate: 180 * +isOpen }, { duration: 0.3, ease: 'anticipate' });
|
|
32
|
+
}
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<HtmlAtom
|
|
36
|
+
{preset}
|
|
37
|
+
class={['border-border pointer-events-none flex items-center justify-center', '$preset', klass]}
|
|
38
|
+
onmount={onmount?.bind(bond.state)}
|
|
39
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
40
|
+
animate={animate?.bind(bond.state)}
|
|
41
|
+
enter={enter?.bind(bond.state)}
|
|
42
|
+
exit={exit?.bind(bond.state)}
|
|
43
|
+
initial={initial?.bind(bond.state)}
|
|
44
|
+
{...indicatorProps}
|
|
45
|
+
>
|
|
46
|
+
{#if children}
|
|
47
|
+
{@render children({ accordionItem: bond })}
|
|
48
|
+
{:else}
|
|
49
|
+
<Icon src={IconArrowDown} />
|
|
50
|
+
{/if}
|
|
51
|
+
</HtmlAtom>
|