@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
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { animate } from 'motion';
|
|
2
|
+
import { TreeBond } from './bond.svelte';
|
|
3
|
+
export function animateTreeBody(params = {}) {
|
|
4
|
+
const bond = TreeBond.get();
|
|
5
|
+
return (node) => {
|
|
6
|
+
const { delay = 0, duration = 0.1, ease } = params;
|
|
7
|
+
const isOpen = bond?.state.props.open ?? false;
|
|
8
|
+
animate(node, {
|
|
9
|
+
height: +isOpen ? 'auto' : 0,
|
|
10
|
+
opacity: +isOpen,
|
|
11
|
+
pointerEvents: isOpen ? '' : 'none'
|
|
12
|
+
}, { duration, delay, ease });
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import { TreeBond } from './bond.svelte';
|
|
3
2
|
import { HtmlAtom, type Base } from '../atom';
|
|
3
|
+
import { TreeBond } from './bond.svelte';
|
|
4
4
|
import type { TreeBodyProps } from './types';
|
|
5
|
+
import { animateTreeBody } from './motion.svelte';
|
|
5
6
|
|
|
6
7
|
const bond = TreeBond.get();
|
|
7
8
|
|
|
@@ -10,10 +11,10 @@
|
|
|
10
11
|
children = undefined,
|
|
11
12
|
onmount = undefined,
|
|
12
13
|
ondestroy = undefined,
|
|
13
|
-
animate =
|
|
14
|
+
animate = animateTreeBody(),
|
|
14
15
|
enter = undefined,
|
|
15
16
|
exit = undefined,
|
|
16
|
-
initial =
|
|
17
|
+
initial = animateTreeBody({ duration: 0 }),
|
|
17
18
|
...restProps
|
|
18
19
|
}: TreeBodyProps<E, B> = $props();
|
|
19
20
|
|
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { untrack } from 'svelte';
|
|
3
|
-
import { animate } from 'motion';
|
|
4
|
-
import { RenderScan } from 'svelte-render-scan';
|
|
5
|
-
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
6
|
-
import { dev } from '$app/environment';
|
|
7
|
-
import { Tree as Tree_ } from '.';
|
|
8
|
-
import { tree } from './attachments.svelte';
|
|
9
|
-
import { TreeBond } from './bond.svelte';
|
|
10
|
-
|
|
11
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
12
|
-
const { Story } = defineMeta({
|
|
13
|
-
title: 'Atoms/Tree',
|
|
14
|
-
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
15
|
-
|
|
16
|
-
parameters: {
|
|
17
|
-
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
|
|
18
|
-
layout: 'fullscreen'
|
|
19
|
-
},
|
|
20
|
-
args: {}
|
|
21
|
-
});
|
|
22
|
-
</script>
|
|
23
|
-
|
|
24
|
-
<script lang="ts">
|
|
25
|
-
let open = $state(true);
|
|
26
|
-
</script>
|
|
27
|
-
|
|
28
|
-
<Story name="Tree" args={{}}>
|
|
29
|
-
<Tree_.Root class="" bind:open>
|
|
30
|
-
{#if dev}
|
|
31
|
-
<RenderScan duration={300} />
|
|
32
|
-
{/if}
|
|
33
|
-
|
|
34
|
-
<Tree_.Header>Vehicles</Tree_.Header>
|
|
35
|
-
|
|
36
|
-
<Tree_.Body
|
|
37
|
-
class="border-l border-l-neutral-200"
|
|
38
|
-
onmount={(node) => {
|
|
39
|
-
const bond = TreeBond.get();
|
|
40
|
-
const isOpen = untrack(() => bond?.state.props.open ?? false);
|
|
41
|
-
animate(node, { height: +isOpen ? 'auto' : 0, opacity: +isOpen }, { duration: 0 });
|
|
42
|
-
}}
|
|
43
|
-
{@attach tree((node, bond) => {
|
|
44
|
-
const isOpen = bond?.state.props.open ?? false;
|
|
45
|
-
animate(
|
|
46
|
-
node,
|
|
47
|
-
{
|
|
48
|
-
height: +isOpen ? 'auto' : 0,
|
|
49
|
-
opacity: +isOpen,
|
|
50
|
-
pointerEvents: isOpen ? 'all' : 'none'
|
|
51
|
-
},
|
|
52
|
-
{ duration: 0.1 }
|
|
53
|
-
);
|
|
54
|
-
})}
|
|
55
|
-
>
|
|
56
|
-
<Tree_.Root>
|
|
57
|
-
<Tree_.Header>Cars</Tree_.Header>
|
|
58
|
-
<Tree_.Body
|
|
59
|
-
class="border-l border-l-neutral-200"
|
|
60
|
-
onmount={(node) => {
|
|
61
|
-
const bond = TreeBond.get();
|
|
62
|
-
const isOpen = bond?.state.props.open ?? false;
|
|
63
|
-
animate(node, { height: +isOpen ? 'auto' : 0, opacity: +isOpen }, { duration: 0 });
|
|
64
|
-
}}
|
|
65
|
-
animate={(node) => {
|
|
66
|
-
const bond = TreeBond.get();
|
|
67
|
-
const isOpen = bond?.state.props.open ?? false;
|
|
68
|
-
animate(
|
|
69
|
-
node,
|
|
70
|
-
{
|
|
71
|
-
height: +isOpen ? 'auto' : 0,
|
|
72
|
-
opacity: +isOpen,
|
|
73
|
-
pointerEvents: isOpen ? 'all' : 'none'
|
|
74
|
-
},
|
|
75
|
-
{ duration: 0.1 }
|
|
76
|
-
);
|
|
77
|
-
}}
|
|
78
|
-
>
|
|
79
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
80
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
81
|
-
dolor diam nascetur.
|
|
82
|
-
</Tree_.Body>
|
|
83
|
-
</Tree_.Root>
|
|
84
|
-
|
|
85
|
-
<Tree_.Root>
|
|
86
|
-
<Tree_.Header>Trucks</Tree_.Header>
|
|
87
|
-
<Tree_.Body
|
|
88
|
-
class="border-l border-l-neutral-200"
|
|
89
|
-
onmount={(node) => {
|
|
90
|
-
const bond = TreeBond.get();
|
|
91
|
-
const isOpen = bond?.state.props.open ?? false;
|
|
92
|
-
animate(node, { height: +isOpen ? 'auto' : 0, opacity: +isOpen }, { duration: 0 });
|
|
93
|
-
}}
|
|
94
|
-
{@attach tree((node, bond) => {
|
|
95
|
-
const isOpen = bond?.state.props.open ?? false;
|
|
96
|
-
animate(
|
|
97
|
-
node,
|
|
98
|
-
{
|
|
99
|
-
height: +isOpen ? 'auto' : 0,
|
|
100
|
-
opacity: +isOpen,
|
|
101
|
-
pointerEvents: isOpen ? 'all' : 'none'
|
|
102
|
-
},
|
|
103
|
-
{ duration: 0.1 }
|
|
104
|
-
);
|
|
105
|
-
})}
|
|
106
|
-
>
|
|
107
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
108
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
109
|
-
dolor diam nascetur.
|
|
110
|
-
</Tree_.Body>
|
|
111
|
-
</Tree_.Root>
|
|
112
|
-
|
|
113
|
-
<Tree_.Root>
|
|
114
|
-
<Tree_.Header>Bikes</Tree_.Header>
|
|
115
|
-
<Tree_.Body
|
|
116
|
-
class="border-l border-l-neutral-200"
|
|
117
|
-
onmount={(node) => {
|
|
118
|
-
const bond = TreeBond.get();
|
|
119
|
-
const isOpen = untrack(() => bond?.state.props.open ?? false);
|
|
120
|
-
animate(node, { height: +isOpen ? 'auto' : 0, opacity: +isOpen }, { duration: 0 });
|
|
121
|
-
}}
|
|
122
|
-
{@attach tree((node, bond) => {
|
|
123
|
-
const isOpen = bond?.state.props.open ?? false;
|
|
124
|
-
animate(
|
|
125
|
-
node,
|
|
126
|
-
{
|
|
127
|
-
height: +isOpen ? 'auto' : 0,
|
|
128
|
-
opacity: +isOpen,
|
|
129
|
-
pointerEvents: isOpen ? 'all' : 'none'
|
|
130
|
-
},
|
|
131
|
-
{ duration: 0.1 }
|
|
132
|
-
);
|
|
133
|
-
})}
|
|
134
|
-
>
|
|
135
|
-
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
136
|
-
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
137
|
-
dolor diam nascetur.
|
|
138
|
-
</Tree_.Body>
|
|
139
|
-
</Tree_.Root>
|
|
140
|
-
</Tree_.Body>
|
|
141
|
-
</Tree_.Root>
|
|
142
|
-
</Story>
|
|
1
|
+
<script module>
|
|
2
|
+
import { untrack } from 'svelte';
|
|
3
|
+
import { animate } from 'motion';
|
|
4
|
+
import { RenderScan } from 'svelte-render-scan';
|
|
5
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
6
|
+
import { dev } from '$app/environment';
|
|
7
|
+
import { Tree as Tree_ } from '.';
|
|
8
|
+
import { tree } from './attachments.svelte';
|
|
9
|
+
import { TreeBond } from './bond.svelte';
|
|
10
|
+
|
|
11
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
12
|
+
const { Story } = defineMeta({
|
|
13
|
+
title: 'Atoms/Tree',
|
|
14
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
15
|
+
|
|
16
|
+
parameters: {
|
|
17
|
+
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
|
|
18
|
+
layout: 'fullscreen'
|
|
19
|
+
},
|
|
20
|
+
args: {}
|
|
21
|
+
});
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<script lang="ts">
|
|
25
|
+
let open = $state(true);
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<Story name="Tree" args={{}}>
|
|
29
|
+
<Tree_.Root class="" bind:open>
|
|
30
|
+
{#if dev}
|
|
31
|
+
<RenderScan duration={300} />
|
|
32
|
+
{/if}
|
|
33
|
+
|
|
34
|
+
<Tree_.Header>Vehicles</Tree_.Header>
|
|
35
|
+
|
|
36
|
+
<Tree_.Body
|
|
37
|
+
class="border-l border-l-neutral-200"
|
|
38
|
+
onmount={(node) => {
|
|
39
|
+
const bond = TreeBond.get();
|
|
40
|
+
const isOpen = untrack(() => bond?.state.props.open ?? false);
|
|
41
|
+
animate(node, { height: +isOpen ? 'auto' : 0, opacity: +isOpen }, { duration: 0 });
|
|
42
|
+
}}
|
|
43
|
+
{@attach tree((node, bond) => {
|
|
44
|
+
const isOpen = bond?.state.props.open ?? false;
|
|
45
|
+
animate(
|
|
46
|
+
node,
|
|
47
|
+
{
|
|
48
|
+
height: +isOpen ? 'auto' : 0,
|
|
49
|
+
opacity: +isOpen,
|
|
50
|
+
pointerEvents: isOpen ? 'all' : 'none'
|
|
51
|
+
},
|
|
52
|
+
{ duration: 0.1 }
|
|
53
|
+
);
|
|
54
|
+
})}
|
|
55
|
+
>
|
|
56
|
+
<Tree_.Root>
|
|
57
|
+
<Tree_.Header>Cars</Tree_.Header>
|
|
58
|
+
<Tree_.Body
|
|
59
|
+
class="border-l border-l-neutral-200"
|
|
60
|
+
onmount={(node) => {
|
|
61
|
+
const bond = TreeBond.get();
|
|
62
|
+
const isOpen = bond?.state.props.open ?? false;
|
|
63
|
+
animate(node, { height: +isOpen ? 'auto' : 0, opacity: +isOpen }, { duration: 0 });
|
|
64
|
+
}}
|
|
65
|
+
animate={(node) => {
|
|
66
|
+
const bond = TreeBond.get();
|
|
67
|
+
const isOpen = bond?.state.props.open ?? false;
|
|
68
|
+
animate(
|
|
69
|
+
node,
|
|
70
|
+
{
|
|
71
|
+
height: +isOpen ? 'auto' : 0,
|
|
72
|
+
opacity: +isOpen,
|
|
73
|
+
pointerEvents: isOpen ? 'all' : 'none'
|
|
74
|
+
},
|
|
75
|
+
{ duration: 0.1 }
|
|
76
|
+
);
|
|
77
|
+
}}
|
|
78
|
+
>
|
|
79
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
80
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
81
|
+
dolor diam nascetur.
|
|
82
|
+
</Tree_.Body>
|
|
83
|
+
</Tree_.Root>
|
|
84
|
+
|
|
85
|
+
<Tree_.Root>
|
|
86
|
+
<Tree_.Header>Trucks</Tree_.Header>
|
|
87
|
+
<Tree_.Body
|
|
88
|
+
class="border-l border-l-neutral-200"
|
|
89
|
+
onmount={(node) => {
|
|
90
|
+
const bond = TreeBond.get();
|
|
91
|
+
const isOpen = bond?.state.props.open ?? false;
|
|
92
|
+
animate(node, { height: +isOpen ? 'auto' : 0, opacity: +isOpen }, { duration: 0 });
|
|
93
|
+
}}
|
|
94
|
+
{@attach tree((node, bond) => {
|
|
95
|
+
const isOpen = bond?.state.props.open ?? false;
|
|
96
|
+
animate(
|
|
97
|
+
node,
|
|
98
|
+
{
|
|
99
|
+
height: +isOpen ? 'auto' : 0,
|
|
100
|
+
opacity: +isOpen,
|
|
101
|
+
pointerEvents: isOpen ? 'all' : 'none'
|
|
102
|
+
},
|
|
103
|
+
{ duration: 0.1 }
|
|
104
|
+
);
|
|
105
|
+
})}
|
|
106
|
+
>
|
|
107
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
108
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
109
|
+
dolor diam nascetur.
|
|
110
|
+
</Tree_.Body>
|
|
111
|
+
</Tree_.Root>
|
|
112
|
+
|
|
113
|
+
<Tree_.Root>
|
|
114
|
+
<Tree_.Header>Bikes</Tree_.Header>
|
|
115
|
+
<Tree_.Body
|
|
116
|
+
class="border-l border-l-neutral-200"
|
|
117
|
+
onmount={(node) => {
|
|
118
|
+
const bond = TreeBond.get();
|
|
119
|
+
const isOpen = untrack(() => bond?.state.props.open ?? false);
|
|
120
|
+
animate(node, { height: +isOpen ? 'auto' : 0, opacity: +isOpen }, { duration: 0 });
|
|
121
|
+
}}
|
|
122
|
+
{@attach tree((node, bond) => {
|
|
123
|
+
const isOpen = bond?.state.props.open ?? false;
|
|
124
|
+
animate(
|
|
125
|
+
node,
|
|
126
|
+
{
|
|
127
|
+
height: +isOpen ? 'auto' : 0,
|
|
128
|
+
opacity: +isOpen,
|
|
129
|
+
pointerEvents: isOpen ? 'all' : 'none'
|
|
130
|
+
},
|
|
131
|
+
{ duration: 0.1 }
|
|
132
|
+
);
|
|
133
|
+
})}
|
|
134
|
+
>
|
|
135
|
+
Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
|
|
136
|
+
tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
|
|
137
|
+
dolor diam nascetur.
|
|
138
|
+
</Tree_.Body>
|
|
139
|
+
</Tree_.Root>
|
|
140
|
+
</Tree_.Body>
|
|
141
|
+
</Tree_.Root>
|
|
142
|
+
</Story>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ClassValue } from 'svelte/elements';
|
|
2
2
|
import type { Base } from '../components/atom';
|
|
3
3
|
import type { Bond } from '../shared';
|
|
4
|
-
|
|
4
|
+
import type { Attachment } from 'svelte/attachments';
|
|
5
|
+
export type PresetModuleName = 'accordion' | 'accordion.item.body' | 'accordion.item.header' | 'accordion.item.indicator' | 'accordion.item' | 'alert.actions' | 'alert.close-button' | 'alert.content' | 'alert.description' | 'alert.icon' | 'alert' | 'alert.title' | 'card.content' | 'card.description' | 'card.footer' | 'card.header' | 'card.body' | 'card.media' | 'card' | 'card.subtitle' | 'card.title' | 'collapsible.body' | 'collapsible.header' | 'collapsible.indicator' | 'collapsible' | 'combobox.control' | 'combobox.trigger' | 'combobox.item' | 'dialog.close-button' | 'dialog.body' | 'dialog.content' | 'dialog.description' | 'dialog.footer' | 'dialog.header' | 'dialog' | 'dialog.title' | 'divider' | 'dropdown.placeholder' | 'dropdown.query' | 'dropdown.trigger' | 'dropdown.value' | 'dropdown' | 'field.control' | 'field.label' | 'field' | 'form' | 'icon' | 'input' | 'input.control' | 'input.placeholder' | 'label' | 'layer.inner' | 'layer' | 'link' | 'list.divider' | 'list.group' | 'list.item' | 'list.item' | 'list.item' | 'dropdown.item' | 'menu.content' | 'popover.arrow' | 'popover.indicator' | 'popover.content' | 'popover.trigger' | 'portal.inner' | 'portal' | 'root' | 'root.portals' | 'sidebar.content' | 'sidebar' | 'drawer.backdrop' | 'drawer.body' | 'drawer.content' | 'drawer.description' | 'drawer.title' | 'drawer.footer' | 'drawer.header' | 'drawer' | 'stack.root' | 'stack.item' | 'tabs.body' | 'tabs.header' | 'tabs' | 'tab.header' | 'tab.body' | 'tab.description' | 'tab' | 'tree.body' | 'tree.header' | 'tree.indicator' | 'tree' | 'datagrid' | 'datagrid.header' | 'datagrid.th' | 'datagrid.body' | 'datagrid.tr' | 'datagrid.td' | 'datagrid.footer' | 'datagrid.checkbox' | 'datagrid.sort-icon' | 'scrollable' | 'scrollable.container' | 'scrollable.content' | 'scrollable.track' | 'scrollable.thumb' | 'breadcrumb' | 'breadcrumb.item' | 'breadcrumb.separator' | 'badge' | 'button' | 'checkbox' | 'checkbox.checkmark' | 'checkbox.indeterminate' | 'radio' | 'radio.group' | 'container' | 'calendar' | 'calendar.day' | 'calendar.header' | 'calendar.weekday' | 'calendar.body' | 'datepicker.trigger' | 'datepicker.calendar' | 'datepicker.years' | 'datepicker.months' | 'datepicker.header';
|
|
5
6
|
export interface PresetEntryRecord {
|
|
6
7
|
[key: string]: unknown;
|
|
7
8
|
class?: ClassValue;
|
|
@@ -10,6 +11,7 @@ export interface PresetEntryRecord {
|
|
|
10
11
|
variants?: Record<string, Record<string, any>>;
|
|
11
12
|
compounds?: Array<Record<string, any>>;
|
|
12
13
|
defaults?: Record<string, any>;
|
|
14
|
+
attachments?: Attachment[];
|
|
13
15
|
}
|
|
14
16
|
export type PresetEntry = (bond: Bond | undefined | null, ...args: any[]) => PresetEntryRecord | (() => PresetEntryRecord);
|
|
15
17
|
export type Preset = Record<PresetModuleName, PresetEntry>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="size-full" viewBox="0 0 24 24"
|
|
2
|
+
><!-- Icon from Fluent UI System Icons by Microsoft Corporation - https://github.com/microsoft/fluentui-system-icons/blob/main/LICENSE --><path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="M5.503 4.627 5.5 6.75v10.504a3.25 3.25 0 0 0 3.25 3.25h8.616a2.251 2.251 0 0 1-2.122 1.5H8.75A4.75 4.75 0 0 1 4 17.254V6.75c0-.98.627-1.815 1.503-2.123M17.75 2A2.25 2.25 0 0 1 20 4.25v13a2.25 2.25 0 0 1-2.25 2.25h-9a2.25 2.25 0 0 1-2.25-2.25v-13A2.25 2.25 0 0 1 8.75 2zM7.75 17.25c0 .414.336.75.75.75h9a.75.75 0 0 0 .75-.75v-13a.75.75 0 0 0-.75-.75h-9a.75.75 0 0 0-.75.75z"
|
|
5
|
+
/></svg
|
|
6
|
+
>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export default IconCopy;
|
|
2
|
+
type IconCopy = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string;
|
|
8
|
+
};
|
|
9
|
+
declare const IconCopy: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
15
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
16
|
+
$$bindings?: Bindings;
|
|
17
|
+
} & Exports;
|
|
18
|
+
(internal: unknown, props: {
|
|
19
|
+
$$events?: Events;
|
|
20
|
+
$$slots?: Slots;
|
|
21
|
+
}): Exports & {
|
|
22
|
+
$set?: any;
|
|
23
|
+
$on?: any;
|
|
24
|
+
};
|
|
25
|
+
z_$$bindings?: Bindings;
|
|
26
|
+
}
|
package/dist/utils/dom.svelte.js
CHANGED
|
@@ -4,3 +4,24 @@ export function getElementId(id, kind) {
|
|
|
4
4
|
export function isBrowser() {
|
|
5
5
|
return typeof window !== 'undefined' && typeof document !== 'undefined';
|
|
6
6
|
}
|
|
7
|
+
export function focusTrap(ev) {
|
|
8
|
+
const node = ev.currentTarget;
|
|
9
|
+
// Tab trap - keep focus within popover
|
|
10
|
+
if (ev.key === 'Tab') {
|
|
11
|
+
const focusableElements = node.querySelectorAll('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])');
|
|
12
|
+
const firstElement = focusableElements[0];
|
|
13
|
+
const lastElement = focusableElements[focusableElements.length - 1];
|
|
14
|
+
if (ev.shiftKey && document.activeElement === firstElement) {
|
|
15
|
+
ev.preventDefault();
|
|
16
|
+
lastElement?.focus();
|
|
17
|
+
}
|
|
18
|
+
else if (!ev.shiftKey && document.activeElement === lastElement) {
|
|
19
|
+
ev.preventDefault();
|
|
20
|
+
firstElement?.focus();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function focus(element) {
|
|
25
|
+
const firstFocusable = element?.querySelector('a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])');
|
|
26
|
+
(firstFocusable || element)?.focus();
|
|
27
|
+
}
|
package/dist/utils/function.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function call<const T = (...args: any) => any>(param: T, ...args: any[]): ReturnType<T>;
|
|
1
|
+
export declare function call<const T extends (...args: any) => any = (...args: any) => any>(param: T, ...args: any[]): ReturnType<T>;
|
|
2
2
|
export declare function call<const T>(param: T, ...args: any[]): T;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { call } from './function';
|
|
2
|
+
export function promiseToState(promise) {
|
|
3
|
+
let data = $state(null);
|
|
4
|
+
const refresh = async () => {
|
|
5
|
+
const result = (await call(promise));
|
|
6
|
+
data = result;
|
|
7
|
+
};
|
|
8
|
+
$effect(() => {
|
|
9
|
+
refresh();
|
|
10
|
+
});
|
|
11
|
+
return {
|
|
12
|
+
get promise() {
|
|
13
|
+
return promise;
|
|
14
|
+
},
|
|
15
|
+
get current() {
|
|
16
|
+
return data;
|
|
17
|
+
},
|
|
18
|
+
refresh
|
|
19
|
+
};
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svelte-atoms/core",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.32",
|
|
4
4
|
"description": "A modular, accessible, and extensible Svelte UI component library.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"scripts": {
|
|
16
16
|
"dev": "vite dev",
|
|
17
|
-
"build": "vite build
|
|
17
|
+
"build": "vite build",
|
|
18
18
|
"preview": "vite preview",
|
|
19
19
|
"prepare": "svelte-kit sync || echo ''",
|
|
20
20
|
"prepack": "svelte-kit sync && svelte-package && publint",
|
|
@@ -31,7 +31,6 @@
|
|
|
31
31
|
},
|
|
32
32
|
"files": [
|
|
33
33
|
"dist",
|
|
34
|
-
"llm",
|
|
35
34
|
"!dist/**/*.test.*",
|
|
36
35
|
"!dist/**/*.spec.*"
|
|
37
36
|
],
|
|
@@ -390,6 +389,7 @@
|
|
|
390
389
|
"@storybook/addon-vitest": "^9.1.3",
|
|
391
390
|
"@storybook/sveltekit": "^9.1.3",
|
|
392
391
|
"@sveltejs/adapter-auto": "^6.0.0",
|
|
392
|
+
"@sveltejs/adapter-netlify": "^5.2.4",
|
|
393
393
|
"@sveltejs/kit": "^2.22.0",
|
|
394
394
|
"@sveltejs/package": "^2.0.0",
|
|
395
395
|
"@sveltejs/vite-plugin-svelte": "^6.0.0",
|
|
@@ -451,6 +451,7 @@
|
|
|
451
451
|
},
|
|
452
452
|
"dependencies": {
|
|
453
453
|
"@floating-ui/dom": "^1.7.0",
|
|
454
|
+
"@modelcontextprotocol/sdk": "^1.24.3",
|
|
454
455
|
"@qrcode-js/browser": "^1.2.0",
|
|
455
456
|
"clsx": "^2.1.1",
|
|
456
457
|
"date-fns": "^4.1.0",
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { Base } from '../atom';
|
|
2
|
-
declare function $$render<D, T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
|
|
3
|
-
props: {
|
|
4
|
-
class?: string;
|
|
5
|
-
children?: any;
|
|
6
|
-
onmount?: any;
|
|
7
|
-
ondestroy?: any;
|
|
8
|
-
animate?: any;
|
|
9
|
-
enter?: any;
|
|
10
|
-
exit?: any;
|
|
11
|
-
initial?: any;
|
|
12
|
-
} & Record<string, any>;
|
|
13
|
-
exports: {};
|
|
14
|
-
bindings: "";
|
|
15
|
-
slots: {};
|
|
16
|
-
events: {};
|
|
17
|
-
};
|
|
18
|
-
declare class __sveltets_Render<D, T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> {
|
|
19
|
-
props(): ReturnType<typeof $$render<D, T, B>>['props'];
|
|
20
|
-
events(): ReturnType<typeof $$render<D, T, B>>['events'];
|
|
21
|
-
slots(): ReturnType<typeof $$render<D, T, B>>['slots'];
|
|
22
|
-
bindings(): "";
|
|
23
|
-
exports(): {};
|
|
24
|
-
}
|
|
25
|
-
interface $$IsomorphicComponent {
|
|
26
|
-
new <D, T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<D, T, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<D, T, B>['props']>, ReturnType<__sveltets_Render<D, T, B>['events']>, ReturnType<__sveltets_Render<D, T, B>['slots']>> & {
|
|
27
|
-
$$bindings?: ReturnType<__sveltets_Render<D, T, B>['bindings']>;
|
|
28
|
-
} & ReturnType<__sveltets_Render<D, T, B>['exports']>;
|
|
29
|
-
<D, T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<D, T, B>['props']> & {}): ReturnType<__sveltets_Render<D, T, B>['exports']>;
|
|
30
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
|
|
31
|
-
}
|
|
32
|
-
declare const CompoboxItem: $$IsomorphicComponent;
|
|
33
|
-
type CompoboxItem<D, T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof CompoboxItem<D, T, B>>;
|
|
34
|
-
export default CompoboxItem;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
-
import { Combobox as ACombobox } from '.';
|
|
4
|
-
import { Input } from '../input';
|
|
5
|
-
import { Divider } from '../divider';
|
|
6
|
-
|
|
7
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
8
|
-
const { Story } = defineMeta({
|
|
9
|
-
title: 'Atoms/Combobox',
|
|
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
|
-
let open = $state(false);
|
|
22
|
-
let value = $state<string | undefined>('ar');
|
|
23
|
-
let array = $state([
|
|
24
|
-
{ value: 'ar', label: 'Arabic' },
|
|
25
|
-
{ value: 'en', label: 'English' },
|
|
26
|
-
{ value: 'sp', label: 'Spanish' },
|
|
27
|
-
{ value: 'it', label: 'Italian' }
|
|
28
|
-
]);
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<Story name="Combobox" args={{}}>
|
|
32
|
-
<ACombobox.Root bind:open bind:value>
|
|
33
|
-
{#snippet children({ combobox })}
|
|
34
|
-
<ACombobox.Trigger
|
|
35
|
-
base={Input.Root}
|
|
36
|
-
class="h-10 min-w-sm items-center gap-0 rounded-sm p-1 transition-colors duration-200"
|
|
37
|
-
>
|
|
38
|
-
<Input.Icon class="text-foreground/50">$</Input.Icon>
|
|
39
|
-
<Divider class="mx-1" vertical />
|
|
40
|
-
<ACombobox.Input class="px-1" placeholder="Select a language" />
|
|
41
|
-
</ACombobox.Trigger>
|
|
42
|
-
<ACombobox.List>
|
|
43
|
-
{#each array.filter((item) => !combobox.state.query || item.label
|
|
44
|
-
.toLowerCase()
|
|
45
|
-
.includes(combobox.state.query)) as item (item.value)}
|
|
46
|
-
<ACombobox.Item value={item.value}>{item.label}</ACombobox.Item>
|
|
47
|
-
{/each}
|
|
48
|
-
</ACombobox.List>
|
|
49
|
-
{/snippet}
|
|
50
|
-
</ACombobox.Root>
|
|
51
|
-
</Story>
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { PopoverStateProps } from '../../popover/bond.svelte';
|
|
2
|
-
import { Bond, BondState, type BondStateProps } from '../../../shared/bond.svelte';
|
|
3
|
-
import { DropdownBond, DropdownBondState } from '../bond.svelte';
|
|
4
|
-
export type DropdownItemBondProps<T> = BondStateProps & {
|
|
5
|
-
value: string;
|
|
6
|
-
selected?: string;
|
|
7
|
-
data: T;
|
|
8
|
-
};
|
|
9
|
-
export type DropdownItemBondElements = {
|
|
10
|
-
root: HTMLElement;
|
|
11
|
-
};
|
|
12
|
-
export declare class DropdownItemBond<T = unknown> extends Bond<DropdownItemBondProps<T>, DropdownItemBondState<T>, DropdownItemBondElements> {
|
|
13
|
-
#private;
|
|
14
|
-
static CONTEXT_KEY: string;
|
|
15
|
-
constructor(state: DropdownItemBondState<T>);
|
|
16
|
-
get value(): string;
|
|
17
|
-
get text(): string;
|
|
18
|
-
get dropdown(): DropdownBond<DropdownBondState<PopoverStateProps>, DropdownBondState<DropdownBondState<PopoverStateProps>>, import("..").DropdownBondElements> | undefined;
|
|
19
|
-
mount(): () => void;
|
|
20
|
-
unmount(): void;
|
|
21
|
-
share(): this;
|
|
22
|
-
root(): {
|
|
23
|
-
[x: symbol]: (node: HTMLElement) => void;
|
|
24
|
-
'data-selected': boolean;
|
|
25
|
-
};
|
|
26
|
-
static get(): DropdownItemBond | undefined;
|
|
27
|
-
static set(bond: DropdownItemBond): DropdownItemBond;
|
|
28
|
-
}
|
|
29
|
-
export declare class DropdownItemBondState<T> extends BondState<DropdownItemBondProps<T>> {
|
|
30
|
-
#private;
|
|
31
|
-
constructor(props: () => DropdownItemBondProps<T>);
|
|
32
|
-
get value(): string;
|
|
33
|
-
get data(): T;
|
|
34
|
-
get isSelected(): boolean;
|
|
35
|
-
set isSelected(val: boolean);
|
|
36
|
-
get isHighlighted(): boolean;
|
|
37
|
-
get dropdown(): DropdownBondState<DropdownBondState<PopoverStateProps>> | undefined;
|
|
38
|
-
select(): void;
|
|
39
|
-
unselect(): void;
|
|
40
|
-
toggle(): void;
|
|
41
|
-
close(): void;
|
|
42
|
-
}
|