@svelte-atoms/core 1.0.0-alpha.27 → 1.0.0-alpha.29
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 +852 -645
- package/dist/components/accordion/accordion-root.svelte +61 -61
- package/dist/components/accordion/item/accordion-item-body.svelte +42 -42
- package/dist/components/accordion/item/accordion-item-header.svelte +50 -50
- package/dist/components/accordion/item/accordion-item-indicator.svelte +50 -50
- package/dist/components/accordion/item/accordion-item-root.svelte +65 -65
- package/dist/components/alert/alert-actions.svelte +43 -42
- package/dist/components/alert/alert-close-button.svelte +70 -72
- package/dist/components/alert/alert-content.svelte +43 -42
- package/dist/components/alert/alert-description.svelte +42 -41
- package/dist/components/alert/alert-icon.svelte +47 -46
- package/dist/components/alert/alert-root.svelte +103 -102
- package/dist/components/alert/alert-title.svelte +42 -41
- package/dist/components/alert/alert.stories.svelte +384 -23
- package/dist/components/alert/alert.stories.svelte.d.ts +2 -5
- package/dist/components/atom/html-atom.svelte +207 -201
- package/dist/components/atom/html-atom.svelte.d.ts +1 -1
- package/dist/components/atom/snippet-renderer.svelte +5 -0
- package/dist/components/atom/snippet-renderer.svelte.d.ts +5 -0
- package/dist/components/avatar/avatar.stories.svelte.d.ts +1 -1
- package/dist/components/badge/badge.stories.svelte.d.ts +1 -1
- package/dist/components/breadcrumb/breadcrumb.stories.svelte.d.ts +1 -1
- package/dist/components/button/button.stories.svelte +17 -14
- package/dist/components/calendar/atoms.d.ts +5 -0
- package/dist/components/calendar/atoms.js +5 -0
- package/dist/components/calendar/bond.svelte.d.ts +72 -0
- package/dist/components/calendar/bond.svelte.js +132 -0
- package/dist/components/calendar/calendar-body.svelte +107 -0
- package/dist/components/calendar/calendar-body.svelte.d.ts +8 -0
- package/dist/components/calendar/calendar-day.svelte +96 -0
- package/dist/components/calendar/calendar-day.svelte.d.ts +4 -0
- package/dist/components/calendar/calendar-header.svelte +29 -0
- package/dist/components/calendar/calendar-header.svelte.d.ts +6 -0
- package/dist/components/calendar/calendar-root.svelte +206 -0
- package/dist/components/calendar/calendar-root.svelte.d.ts +8 -0
- package/dist/components/calendar/calendar-week-day.svelte +34 -0
- package/dist/components/calendar/calendar-week-day.svelte.d.ts +9 -0
- package/dist/components/calendar/calendar.css +26 -0
- package/dist/components/calendar/calendar.stories.svelte +31 -0
- package/dist/components/calendar/calendar.stories.svelte.d.ts +26 -0
- package/dist/components/calendar/index.d.ts +4 -0
- package/dist/components/calendar/index.js +4 -0
- package/dist/components/calendar/runes.svelte.d.ts +3 -0
- package/dist/components/calendar/runes.svelte.js +25 -0
- package/dist/components/calendar/types.d.ts +62 -0
- package/dist/components/calendar/types.js +1 -0
- package/dist/components/card/card-body.svelte +39 -39
- package/dist/components/card/card-description.svelte +41 -41
- package/dist/components/card/card-footer.svelte +41 -41
- package/dist/components/card/card-header.svelte +41 -41
- package/dist/components/card/card-media.svelte +41 -41
- package/dist/components/card/card-root.svelte +91 -91
- package/dist/components/card/card-subtitle.svelte +41 -41
- package/dist/components/card/card-title.svelte +45 -45
- package/dist/components/collapsible/collapsible-body.svelte +39 -39
- package/dist/components/collapsible/collapsible-header.svelte +39 -39
- package/dist/components/collapsible/collapsible-indicator.svelte +50 -50
- package/dist/components/collapsible/collapsible-root.svelte +66 -66
- package/dist/components/combobox/combobox-root.svelte +65 -65
- package/dist/components/container/container.stories.svelte.d.ts +1 -1
- package/dist/components/contextmenu/contextmenu-trigger.svelte.d.ts +1 -1
- package/dist/components/datagrid/bond.svelte.d.ts +2 -2
- package/dist/components/datagrid/datagrid-body.svelte +37 -37
- package/dist/components/datagrid/datagrid-checkbox.svelte +101 -101
- package/dist/components/datagrid/datagrid-footer.svelte +34 -34
- package/dist/components/datagrid/datagrid-header.svelte +49 -49
- package/dist/components/datagrid/datagrid-root.svelte +2 -2
- package/dist/components/datagrid/datagrid.css +5 -47
- package/dist/components/datagrid/td/datagrid-td.svelte +66 -66
- package/dist/components/datagrid/th/datagrid-th.svelte +106 -106
- package/dist/components/datagrid/tr/datagrid-tr.svelte +88 -88
- package/dist/components/datagrid/types.d.ts +1 -1
- package/dist/components/date-picker/atoms.d.ts +3 -0
- package/dist/components/date-picker/atoms.js +3 -0
- package/dist/components/date-picker/bond.svelte.d.ts +67 -0
- package/dist/components/date-picker/bond.svelte.js +174 -0
- package/dist/components/date-picker/date-picker-calendar.svelte +67 -0
- package/dist/components/date-picker/date-picker-calendar.svelte.d.ts +4 -0
- package/dist/components/date-picker/date-picker-header.svelte +100 -0
- package/dist/components/date-picker/date-picker-header.svelte.d.ts +4 -0
- package/dist/components/date-picker/date-picker-months.svelte +142 -0
- package/dist/components/date-picker/date-picker-months.svelte.d.ts +4 -0
- package/dist/components/date-picker/date-picker-root.svelte +95 -0
- package/dist/components/date-picker/date-picker-root.svelte.d.ts +4 -0
- package/dist/components/date-picker/date-picker-years.svelte +205 -0
- package/dist/components/date-picker/date-picker-years.svelte.d.ts +4 -0
- package/dist/components/date-picker/date-picker.stories.svelte +42 -0
- package/dist/components/date-picker/date-picker.stories.svelte.d.ts +3 -0
- package/dist/components/date-picker/index.d.ts +3 -0
- package/dist/components/date-picker/index.js +3 -0
- package/dist/components/date-picker/types.d.ts +53 -0
- package/dist/components/date-picker/types.js +1 -0
- package/dist/components/dialog/dialog-body.svelte +39 -39
- package/dist/components/dialog/dialog-close-button.svelte +58 -58
- package/dist/components/dialog/dialog-content.svelte +1 -1
- package/dist/components/dialog/dialog-description.svelte +40 -40
- package/dist/components/dialog/dialog-footer.svelte +39 -39
- package/dist/components/dialog/dialog-header.svelte +39 -39
- package/dist/components/dialog/dialog-root.svelte +110 -110
- package/dist/components/dialog/dialog-title.svelte +41 -41
- package/dist/components/drawer/drawer-backdrop.svelte +38 -38
- package/dist/components/drawer/drawer-body.svelte +42 -42
- package/dist/components/drawer/drawer-content.svelte +42 -42
- package/dist/components/drawer/drawer-description.svelte +44 -44
- package/dist/components/drawer/drawer-footer.svelte +41 -41
- package/dist/components/drawer/drawer-header.svelte +43 -43
- package/dist/components/drawer/drawer-root.svelte +93 -93
- package/dist/components/drawer/drawer-title.svelte +44 -44
- package/dist/components/dropdown/dropdown-query.svelte +54 -54
- package/dist/components/dropdown/dropdown-root.svelte +59 -59
- package/dist/components/dropdown/dropdown-trigger.svelte +41 -41
- package/dist/components/dropdown/dropdown-value.svelte +60 -60
- package/dist/components/element/types.d.ts +1 -1
- package/dist/components/form/bond.svelte.d.ts +1 -1
- package/dist/components/form/field/field-control.svelte +48 -48
- package/dist/components/form/field/field-label.svelte +24 -24
- package/dist/components/form/field/field-root.svelte +59 -59
- package/dist/components/icon/icon.svelte +44 -44
- package/dist/components/image/image.stories.svelte.d.ts +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +4 -0
- package/dist/components/input/input-control.svelte +103 -103
- package/dist/components/label/label.svelte +25 -25
- package/dist/components/lazy/index.d.ts +1 -0
- package/dist/components/lazy/index.js +1 -0
- package/dist/components/lazy/lazy.stories.svelte +35 -0
- package/dist/components/lazy/lazy.stories.svelte.d.ts +19 -0
- package/dist/components/lazy/lazy.svelte +28 -0
- package/dist/components/lazy/lazy.svelte.d.ts +5 -0
- package/dist/components/lazy/types.d.ts +10 -0
- package/dist/components/lazy/types.js +1 -0
- package/dist/components/menu/menu-list.svelte +40 -39
- package/dist/components/menu/menu-list.svelte.d.ts +1 -0
- package/dist/components/popover/popover-arrow.svelte +111 -111
- package/dist/components/popover/popover-content.svelte +178 -139
- package/dist/components/popover/popover-root.svelte +16 -17
- package/dist/components/popover/popover.stories.svelte +0 -15
- package/dist/components/portal/portal-root.svelte +83 -83
- package/dist/components/portal/teleport.svelte +50 -50
- package/dist/components/qr-code/index.d.ts +2 -0
- package/dist/components/qr-code/index.js +2 -0
- package/dist/components/qr-code/qr-code.stories.svelte +27 -0
- package/dist/components/qr-code/qr-code.stories.svelte.d.ts +26 -0
- package/dist/components/qr-code/qr-code.svelte +75 -0
- package/dist/components/qr-code/qr-code.svelte.d.ts +4 -0
- package/dist/components/qr-code/types.d.ts +14 -0
- package/dist/components/qr-code/types.js +1 -0
- package/dist/components/radio/radio.svelte +109 -109
- package/dist/components/radio/types.svelte.d.ts +1 -1
- package/dist/components/scrollable/scrollable-container.svelte +82 -82
- package/dist/components/scrollable/scrollable-content.svelte +41 -41
- package/dist/components/scrollable/scrollable-root.svelte +100 -100
- package/dist/components/scrollable/scrollable-thumb.svelte +75 -75
- package/dist/components/scrollable/scrollable-track.svelte +59 -59
- package/dist/components/scrollable/scrollable.stories.svelte.d.ts +1 -1
- package/dist/components/sidebar/bond.svelte.d.ts +0 -5
- package/dist/components/sidebar/bond.svelte.js +1 -12
- package/dist/components/sidebar/sidebar-content.svelte +39 -39
- package/dist/components/sidebar/sidebar-content.svelte.d.ts +2 -2
- package/dist/components/sidebar/sidebar-root.svelte +41 -68
- package/dist/components/sidebar/sidebar-root.svelte.d.ts +2 -2
- package/dist/components/sidebar/sidebar.stories.svelte +54 -52
- package/dist/components/sidebar/types.d.ts +6 -6
- package/dist/components/tabs/tab/tab-body.svelte +52 -52
- package/dist/components/tabs/tab/tab-description.svelte +41 -41
- package/dist/components/tabs/tab/tab-header.svelte +71 -71
- package/dist/components/tabs/tab/tab-root.svelte +86 -86
- package/dist/components/toast/toast-description.svelte +38 -38
- package/dist/components/toast/toast-root.svelte +61 -61
- package/dist/components/toast/toast-title.svelte +35 -35
- package/dist/components/tree/tree-body.svelte +39 -39
- package/dist/components/tree/tree-header.svelte +54 -54
- package/dist/components/tree/tree-indicator.svelte +40 -40
- package/dist/components/tree/tree-root.svelte +65 -65
- package/dist/components/virtual/virtual-root.svelte +239 -239
- package/dist/context/preset.svelte.d.ts +1 -1
- package/dist/icons/icon-arrow-down.svelte.d.ts +1 -1
- package/dist/icons/icon-checkmark.svelte.d.ts +1 -1
- package/dist/icons/icon-close.svelte.d.ts +1 -1
- package/dist/icons/icon-more-vert.svelte.d.ts +1 -1
- package/dist/runes/container.svelte.d.ts +2 -2
- package/dist/shared/bond.svelte.d.ts +1 -1
- package/dist/utils/state.d.ts +1 -1
- package/dist/utils/state.js +2 -1
- package/llm/variants.md +650 -103
- package/package.json +465 -437
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
<script lang="ts" generics="T extends keyof HTMLElementTagNameMap">
|
|
2
|
-
import type { ScrollableTrackProps } from './types';
|
|
3
|
-
import { ScrollableBond } from './bond.svelte';
|
|
4
|
-
import { HtmlAtom } from '../atom';
|
|
5
|
-
|
|
6
|
-
let {
|
|
7
|
-
class: klass = '',
|
|
8
|
-
|
|
9
|
-
orientation = undefined,
|
|
10
|
-
children = undefined,
|
|
11
|
-
onmount = undefined,
|
|
12
|
-
ondestroy = undefined,
|
|
13
|
-
animate = undefined,
|
|
14
|
-
enter = undefined,
|
|
15
|
-
exit = undefined,
|
|
16
|
-
initial = undefined,
|
|
17
|
-
...restProps
|
|
18
|
-
}: ScrollableTrackProps<T> = $props();
|
|
19
|
-
|
|
20
|
-
const bond = ScrollableBond.get();
|
|
21
|
-
|
|
22
|
-
if (!bond) {
|
|
23
|
-
throw new Error('ScrollableTrack must be used within a ScrollableRoot');
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const hasYScroll = $derived(bond.state.props.scrollHeight > bond.state.props.clientHeight);
|
|
27
|
-
const hasXScroll = $derived(bond.state.props.scrollWidth > bond.state.props.clientWidth);
|
|
28
|
-
|
|
29
|
-
const hasScroll = $derived(hasXScroll || hasYScroll);
|
|
30
|
-
|
|
31
|
-
const isOpen = $derived(bond?.state?.props?.open ?? true);
|
|
32
|
-
|
|
33
|
-
const isScrolling = $derived(bond?.state?.props?.isScrolling ?? false);
|
|
34
|
-
|
|
35
|
-
const trackProps = $derived(bond.track(orientation));
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
|
-
{#if (isOpen || isScrolling) && hasScroll}
|
|
39
|
-
<HtmlAtom
|
|
40
|
-
{bond}
|
|
41
|
-
preset="scrollable.track"
|
|
42
|
-
class={[
|
|
43
|
-
'scrollable-track bg-foreground/10 hover:bg-foreground/15 border-border absolute z-10 rounded transition-opacity',
|
|
44
|
-
{ vertical: 'inset-y-0 right-0 w-2', horizontal: 'inset-x-0 bottom-0 h-2' }[orientation],
|
|
45
|
-
'$preset',
|
|
46
|
-
klass
|
|
47
|
-
]}
|
|
48
|
-
enter={enter?.bind(bond.state)}
|
|
49
|
-
exit={exit?.bind(bond.state)}
|
|
50
|
-
initial={initial?.bind(bond.state)}
|
|
51
|
-
animate={animate?.bind(bond.state)}
|
|
52
|
-
onmount={onmount?.bind(bond.state)}
|
|
53
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
54
|
-
{...trackProps}
|
|
55
|
-
{...restProps}
|
|
56
|
-
>
|
|
57
|
-
{@render children?.()}
|
|
58
|
-
</HtmlAtom>
|
|
59
|
-
{/if}
|
|
1
|
+
<script lang="ts" generics="T extends keyof HTMLElementTagNameMap">
|
|
2
|
+
import type { ScrollableTrackProps } from './types';
|
|
3
|
+
import { ScrollableBond } from './bond.svelte';
|
|
4
|
+
import { HtmlAtom } from '../atom';
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
class: klass = '',
|
|
8
|
+
|
|
9
|
+
orientation = undefined,
|
|
10
|
+
children = undefined,
|
|
11
|
+
onmount = undefined,
|
|
12
|
+
ondestroy = undefined,
|
|
13
|
+
animate = undefined,
|
|
14
|
+
enter = undefined,
|
|
15
|
+
exit = undefined,
|
|
16
|
+
initial = undefined,
|
|
17
|
+
...restProps
|
|
18
|
+
}: ScrollableTrackProps<T> = $props();
|
|
19
|
+
|
|
20
|
+
const bond = ScrollableBond.get();
|
|
21
|
+
|
|
22
|
+
if (!bond) {
|
|
23
|
+
throw new Error('ScrollableTrack must be used within a ScrollableRoot');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const hasYScroll = $derived(bond.state.props.scrollHeight > bond.state.props.clientHeight);
|
|
27
|
+
const hasXScroll = $derived(bond.state.props.scrollWidth > bond.state.props.clientWidth);
|
|
28
|
+
|
|
29
|
+
const hasScroll = $derived(hasXScroll || hasYScroll);
|
|
30
|
+
|
|
31
|
+
const isOpen = $derived(bond?.state?.props?.open ?? true);
|
|
32
|
+
|
|
33
|
+
const isScrolling = $derived(bond?.state?.props?.isScrolling ?? false);
|
|
34
|
+
|
|
35
|
+
const trackProps = $derived(bond.track(orientation));
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
{#if (isOpen || isScrolling) && hasScroll}
|
|
39
|
+
<HtmlAtom
|
|
40
|
+
{bond}
|
|
41
|
+
preset="scrollable.track"
|
|
42
|
+
class={[
|
|
43
|
+
'scrollable-track bg-foreground/10 hover:bg-foreground/15 border-border absolute z-10 rounded transition-opacity',
|
|
44
|
+
{ vertical: 'inset-y-0 right-0 w-2', horizontal: 'inset-x-0 bottom-0 h-2' }[orientation],
|
|
45
|
+
'$preset',
|
|
46
|
+
klass
|
|
47
|
+
]}
|
|
48
|
+
enter={enter?.bind(bond.state)}
|
|
49
|
+
exit={exit?.bind(bond.state)}
|
|
50
|
+
initial={initial?.bind(bond.state)}
|
|
51
|
+
animate={animate?.bind(bond.state)}
|
|
52
|
+
onmount={onmount?.bind(bond.state)}
|
|
53
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
54
|
+
{...trackProps}
|
|
55
|
+
{...restProps}
|
|
56
|
+
>
|
|
57
|
+
{@render children?.()}
|
|
58
|
+
</HtmlAtom>
|
|
59
|
+
{/if}
|
|
@@ -14,12 +14,7 @@ export declare class SidebarBond<Props extends SidebarBondProps = SidebarBondPro
|
|
|
14
14
|
constructor(state: State);
|
|
15
15
|
content(props?: Record<string, unknown>): {
|
|
16
16
|
'aria-expanded': boolean;
|
|
17
|
-
'data-atom': string;
|
|
18
|
-
'data-kind': string;
|
|
19
|
-
};
|
|
20
|
-
root(props?: Record<string, unknown>): {
|
|
21
17
|
'aria-disabled': boolean;
|
|
22
|
-
'data-open': boolean;
|
|
23
18
|
'data-atom': string;
|
|
24
19
|
'data-kind': string;
|
|
25
20
|
};
|
|
@@ -9,6 +9,7 @@ export class SidebarBond extends Bond {
|
|
|
9
9
|
content(props = {}) {
|
|
10
10
|
return {
|
|
11
11
|
'aria-expanded': this.state?.props?.open ?? false,
|
|
12
|
+
'aria-disabled': this.state?.props?.disabled ?? false,
|
|
12
13
|
'data-atom': this.id,
|
|
13
14
|
'data-kind': 'sidebar-content',
|
|
14
15
|
...props,
|
|
@@ -17,18 +18,6 @@ export class SidebarBond extends Bond {
|
|
|
17
18
|
}
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
|
-
root(props = {}) {
|
|
21
|
-
return {
|
|
22
|
-
'aria-disabled': this.state?.props?.disabled ?? false,
|
|
23
|
-
'data-open': this.state?.props?.open ?? false,
|
|
24
|
-
'data-atom': this.id,
|
|
25
|
-
'data-kind': 'sidebar-root',
|
|
26
|
-
...props,
|
|
27
|
-
[createAttachmentKey()]: (node) => {
|
|
28
|
-
this.elements.root = node;
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
21
|
share() {
|
|
33
22
|
return SidebarBond.set(this);
|
|
34
23
|
}
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import { HtmlAtom, type Base } from '../atom';
|
|
3
|
-
import { SidebarBond } from './bond.svelte';
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
const bond = SidebarBond.get();
|
|
7
|
-
|
|
8
|
-
let {
|
|
9
|
-
class: klass = '',
|
|
10
|
-
children = undefined,
|
|
11
|
-
onmount = undefined,
|
|
12
|
-
ondestroy = undefined,
|
|
13
|
-
animate = undefined,
|
|
14
|
-
enter = undefined,
|
|
15
|
-
exit = undefined,
|
|
16
|
-
initial = undefined,
|
|
17
|
-
...restProps
|
|
18
|
-
}:
|
|
19
|
-
|
|
20
|
-
const contentProps = $derived({
|
|
21
|
-
...bond?.content(),
|
|
22
|
-
...restProps
|
|
23
|
-
});
|
|
24
|
-
</script>
|
|
25
|
-
|
|
26
|
-
<HtmlAtom
|
|
27
|
-
{bond}
|
|
28
|
-
preset="sidebar.content"
|
|
29
|
-
class={['bg-card border-border', '$preset', klass]}
|
|
30
|
-
enter={enter?.bind(bond.state)}
|
|
31
|
-
exit={exit?.bind(bond.state)}
|
|
32
|
-
initial={initial?.bind(bond.state)}
|
|
33
|
-
animate={animate?.bind(bond.state)}
|
|
34
|
-
onmount={onmount?.bind(bond.state)}
|
|
35
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
36
|
-
{...contentProps}
|
|
37
|
-
>
|
|
38
|
-
{@render children?.({ sidebar: bond })}
|
|
39
|
-
</HtmlAtom>
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import { HtmlAtom, type Base } from '../atom';
|
|
3
|
+
import { SidebarBond } from './bond.svelte';
|
|
4
|
+
import type { SidebarRootProps } from './types';
|
|
5
|
+
|
|
6
|
+
const bond = SidebarBond.get();
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
class: klass = '',
|
|
10
|
+
children = undefined,
|
|
11
|
+
onmount = undefined,
|
|
12
|
+
ondestroy = undefined,
|
|
13
|
+
animate = undefined,
|
|
14
|
+
enter = undefined,
|
|
15
|
+
exit = undefined,
|
|
16
|
+
initial = undefined,
|
|
17
|
+
...restProps
|
|
18
|
+
}: SidebarRootProps<E, B> = $props();
|
|
19
|
+
|
|
20
|
+
const contentProps = $derived({
|
|
21
|
+
...bond?.content(),
|
|
22
|
+
...restProps
|
|
23
|
+
});
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<HtmlAtom
|
|
27
|
+
{bond}
|
|
28
|
+
preset="sidebar.content"
|
|
29
|
+
class={['bg-card border-border', '$preset', klass]}
|
|
30
|
+
enter={enter?.bind(bond.state)}
|
|
31
|
+
exit={exit?.bind(bond.state)}
|
|
32
|
+
initial={initial?.bind(bond.state)}
|
|
33
|
+
animate={animate?.bind(bond.state)}
|
|
34
|
+
onmount={onmount?.bind(bond.state)}
|
|
35
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
36
|
+
{...contentProps}
|
|
37
|
+
>
|
|
38
|
+
{@render children?.({ sidebar: bond })}
|
|
39
|
+
</HtmlAtom>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Base } from '../atom';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SidebarRootProps } from './types';
|
|
3
3
|
declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
|
|
4
|
-
props:
|
|
4
|
+
props: SidebarRootProps<E, B>;
|
|
5
5
|
exports: {};
|
|
6
6
|
bindings: "";
|
|
7
7
|
slots: {};
|
|
@@ -1,68 +1,41 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import { defineProperty, defineState } from '../../utils';
|
|
3
|
-
import {
|
|
4
|
-
import { SidebarBond, SidebarBondState, type SidebarBondProps } from './bond.svelte';
|
|
5
|
-
import type {
|
|
6
|
-
|
|
7
|
-
let {
|
|
8
|
-
open = $bindable(false),
|
|
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
|
-
function _factory(props: typeof bondProps) {
|
|
44
|
-
const bondState = new SidebarBondState(() => props);
|
|
45
|
-
const bond = new SidebarBond(bondState);
|
|
46
|
-
|
|
47
|
-
return bond;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function getBond() {
|
|
51
|
-
return bond;
|
|
52
|
-
}
|
|
53
|
-
</script>
|
|
54
|
-
|
|
55
|
-
<HtmlAtom
|
|
56
|
-
{bond}
|
|
57
|
-
preset="sidebar"
|
|
58
|
-
class={['border-border flex min-h-full w-full flex-1 flex-nowrap', '$preset', klass]}
|
|
59
|
-
enter={enter?.bind(bond.state)}
|
|
60
|
-
exit={exit?.bind(bond.state)}
|
|
61
|
-
initial={initial?.bind(bond.state)}
|
|
62
|
-
animate={animate?.bind(bond.state)}
|
|
63
|
-
onmount={onmount?.bind(bond.state)}
|
|
64
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
65
|
-
{...rootProps}
|
|
66
|
-
>
|
|
67
|
-
{@render children?.({ sidebar: bond })}
|
|
68
|
-
</HtmlAtom>
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import { defineProperty, defineState } from '../../utils';
|
|
3
|
+
import { type Base } from '../atom';
|
|
4
|
+
import { SidebarBond, SidebarBondState, type SidebarBondProps } from './bond.svelte';
|
|
5
|
+
import type { SidebarRootProps } from './types';
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
open = $bindable(false),
|
|
9
|
+
disabled = false,
|
|
10
|
+
factory = _factory,
|
|
11
|
+
children = undefined
|
|
12
|
+
}: SidebarRootProps<E, B> = $props();
|
|
13
|
+
|
|
14
|
+
const bondProps = defineState<SidebarBondProps>(
|
|
15
|
+
[
|
|
16
|
+
defineProperty(
|
|
17
|
+
'open',
|
|
18
|
+
() => open,
|
|
19
|
+
(v) => {
|
|
20
|
+
open = v;
|
|
21
|
+
}
|
|
22
|
+
),
|
|
23
|
+
defineProperty('disabled', () => disabled)
|
|
24
|
+
]
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
const bond = factory(bondProps).share();
|
|
28
|
+
|
|
29
|
+
function _factory(props: typeof bondProps) {
|
|
30
|
+
const bondState = new SidebarBondState(() => props);
|
|
31
|
+
const bond = new SidebarBond(bondState);
|
|
32
|
+
|
|
33
|
+
return bond;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function getBond() {
|
|
37
|
+
return bond;
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
{@render children?.({ sidebar: bond })}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type Base } from '../atom';
|
|
2
2
|
import { SidebarBond, SidebarBondState, type SidebarBondProps } from './bond.svelte';
|
|
3
|
-
import type {
|
|
3
|
+
import type { SidebarRootProps } from './types';
|
|
4
4
|
declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
|
|
5
|
-
props:
|
|
5
|
+
props: SidebarRootProps<E, B>;
|
|
6
6
|
exports: {
|
|
7
7
|
getBond: () => SidebarBond<SidebarBondProps<Record<string, unknown>>, SidebarBondState<SidebarBondProps<Record<string, unknown>>>>;
|
|
8
8
|
};
|
|
@@ -1,52 +1,54 @@
|
|
|
1
|
-
<script module>
|
|
2
|
-
import { cubicOut } from 'svelte/easing';
|
|
3
|
-
import gsap from 'gsap';
|
|
4
|
-
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
5
|
-
import { Sidebar as Sidebar_ } from '.';
|
|
6
|
-
import Root from '../root/root.svelte';
|
|
7
|
-
import { on } from '../../attachments';
|
|
8
|
-
import { SidebarBond } from './bond.svelte';
|
|
9
|
-
|
|
10
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
11
|
-
const { Story } = defineMeta({
|
|
12
|
-
title: 'Atoms/Sidebar',
|
|
13
|
-
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
14
|
-
|
|
15
|
-
parameters: {
|
|
16
|
-
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
|
|
17
|
-
layout: 'fullscreen'
|
|
18
|
-
},
|
|
19
|
-
args: {}
|
|
20
|
-
});
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
<script lang="ts">
|
|
24
|
-
let isOpen = $state(false);
|
|
25
|
-
$inspect(isOpen);
|
|
26
|
-
</script>
|
|
27
|
-
|
|
28
|
-
<Story name="Sidebar" args={{}}>
|
|
29
|
-
<Root class="">
|
|
30
|
-
<Sidebar_.Root class="" bind:open={isOpen}>
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
</
|
|
1
|
+
<script module>
|
|
2
|
+
import { cubicOut } from 'svelte/easing';
|
|
3
|
+
import gsap from 'gsap';
|
|
4
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
5
|
+
import { Sidebar as Sidebar_ } from '.';
|
|
6
|
+
import Root from '../root/root.svelte';
|
|
7
|
+
import { on } from '../../attachments';
|
|
8
|
+
import { SidebarBond } from './bond.svelte';
|
|
9
|
+
|
|
10
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
11
|
+
const { Story } = defineMeta({
|
|
12
|
+
title: 'Atoms/Sidebar',
|
|
13
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
14
|
+
|
|
15
|
+
parameters: {
|
|
16
|
+
// More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
|
|
17
|
+
layout: 'fullscreen'
|
|
18
|
+
},
|
|
19
|
+
args: {}
|
|
20
|
+
});
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<script lang="ts">
|
|
24
|
+
let isOpen = $state(false);
|
|
25
|
+
$inspect(isOpen);
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<Story name="Sidebar" args={{}}>
|
|
29
|
+
<Root class="">
|
|
30
|
+
<Sidebar_.Root class="" bind:open={isOpen}>
|
|
31
|
+
<div class="flex size-full">
|
|
32
|
+
<Sidebar_.Content
|
|
33
|
+
class="flex flex-col border-r px-6 py-10 whitespace-nowrap"
|
|
34
|
+
initial={(node) => gsap.set(node, { width: isOpen ? 240 : 96 })}
|
|
35
|
+
animate={(node) =>
|
|
36
|
+
gsap.to(node, { width: isOpen ? 240 : 96, duration: 0.2, ease: cubicOut })}
|
|
37
|
+
>
|
|
38
|
+
<div>
|
|
39
|
+
<button
|
|
40
|
+
{@attach (node) => {
|
|
41
|
+
const bond = SidebarBond.get();
|
|
42
|
+
return on('click', (ev) => {
|
|
43
|
+
bond?.state.toggle?.();
|
|
44
|
+
})(node);
|
|
45
|
+
}}>Open</button
|
|
46
|
+
>
|
|
47
|
+
</div>
|
|
48
|
+
</Sidebar_.Content>
|
|
49
|
+
|
|
50
|
+
<main class="bg-foreground/2 flex-1 p-8">Hello World!</main>
|
|
51
|
+
</div>
|
|
52
|
+
</Sidebar_.Root>
|
|
53
|
+
</Root>
|
|
54
|
+
</Story>
|
|
@@ -6,25 +6,25 @@ import type { Base, HtmlAtomProps } from '../atom';
|
|
|
6
6
|
/**
|
|
7
7
|
* Extend this interface to add custom slideover root properties in your application.
|
|
8
8
|
*/
|
|
9
|
-
export interface
|
|
9
|
+
export interface SidebarRootExtendProps {
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
12
|
* Extend this interface to add custom slideover content properties in your application.
|
|
13
13
|
*/
|
|
14
|
-
export interface
|
|
14
|
+
export interface SidebarContentExtendProps {
|
|
15
15
|
}
|
|
16
|
-
export interface
|
|
16
|
+
export interface SidebarRootProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends Override<HtmlAtomProps<E, B>, {
|
|
17
17
|
children?: Snippet<[{
|
|
18
18
|
sidebar?: SidebarBond;
|
|
19
19
|
}]>;
|
|
20
|
-
}>,
|
|
20
|
+
}>, SidebarRootExtendProps {
|
|
21
21
|
open?: boolean;
|
|
22
22
|
disabled?: boolean;
|
|
23
23
|
factory?: Factory<SidebarBond>;
|
|
24
24
|
}
|
|
25
|
-
export interface
|
|
25
|
+
export interface SidebarContentProps<E extends keyof HTMLElementTagNameMap, B extends Base = Base> extends Override<HtmlAtomProps<E, B>, {
|
|
26
26
|
children?: Snippet<[{
|
|
27
27
|
sidebar?: SidebarBond<any>;
|
|
28
28
|
}]>;
|
|
29
|
-
}>,
|
|
29
|
+
}>, SidebarContentExtendProps {
|
|
30
30
|
}
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import { HtmlAtom, type Base } from '../../atom';
|
|
3
|
-
import type { TabBodyProps } from '../types';
|
|
4
|
-
import { TabBond } from './bond.svelte';
|
|
5
|
-
|
|
6
|
-
const bond = TabBond.get();
|
|
7
|
-
|
|
8
|
-
if (!bond) {
|
|
9
|
-
throw new Error('TabBody must be used within a Tab');
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
let {
|
|
13
|
-
class: klass = '',
|
|
14
|
-
children,
|
|
15
|
-
onmount = undefined,
|
|
16
|
-
ondestroy = undefined,
|
|
17
|
-
animate = undefined,
|
|
18
|
-
enter = undefined,
|
|
19
|
-
exit = undefined,
|
|
20
|
-
initial = undefined,
|
|
21
|
-
...restProps
|
|
22
|
-
}: TabBodyProps<E, B> = $props();
|
|
23
|
-
|
|
24
|
-
let mounted = $state(false);
|
|
25
|
-
|
|
26
|
-
const bodyProps = $derived({
|
|
27
|
-
...bond?.body(),
|
|
28
|
-
...restProps
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
$effect(() => {
|
|
32
|
-
mounted = true;
|
|
33
|
-
});
|
|
34
|
-
</script>
|
|
35
|
-
|
|
36
|
-
<HtmlAtom
|
|
37
|
-
preset="tab.body"
|
|
38
|
-
class={[
|
|
39
|
-
'tab-body border-border pointer-events-auto flex h-auto w-full min-w-full flex-1 flex-col',
|
|
40
|
-
'$preset',
|
|
41
|
-
klass
|
|
42
|
-
]}
|
|
43
|
-
onmount={onmount?.bind(bond.state)}
|
|
44
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
45
|
-
enter={enter?.bind(bond.state)}
|
|
46
|
-
exit={exit?.bind(bond.state)}
|
|
47
|
-
initial={initial?.bind(bond.state)}
|
|
48
|
-
animate={animate?.bind(bond.state)}
|
|
49
|
-
{...bodyProps}
|
|
50
|
-
>
|
|
51
|
-
{@render children?.({ tab: bond })}
|
|
52
|
-
</HtmlAtom>
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import { HtmlAtom, type Base } from '../../atom';
|
|
3
|
+
import type { TabBodyProps } from '../types';
|
|
4
|
+
import { TabBond } from './bond.svelte';
|
|
5
|
+
|
|
6
|
+
const bond = TabBond.get();
|
|
7
|
+
|
|
8
|
+
if (!bond) {
|
|
9
|
+
throw new Error('TabBody must be used within a Tab');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let {
|
|
13
|
+
class: klass = '',
|
|
14
|
+
children,
|
|
15
|
+
onmount = undefined,
|
|
16
|
+
ondestroy = undefined,
|
|
17
|
+
animate = undefined,
|
|
18
|
+
enter = undefined,
|
|
19
|
+
exit = undefined,
|
|
20
|
+
initial = undefined,
|
|
21
|
+
...restProps
|
|
22
|
+
}: TabBodyProps<E, B> = $props();
|
|
23
|
+
|
|
24
|
+
let mounted = $state(false);
|
|
25
|
+
|
|
26
|
+
const bodyProps = $derived({
|
|
27
|
+
...bond?.body(),
|
|
28
|
+
...restProps
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
$effect(() => {
|
|
32
|
+
mounted = true;
|
|
33
|
+
});
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<HtmlAtom
|
|
37
|
+
preset="tab.body"
|
|
38
|
+
class={[
|
|
39
|
+
'tab-body border-border pointer-events-auto flex h-auto w-full min-w-full flex-1 flex-col',
|
|
40
|
+
'$preset',
|
|
41
|
+
klass
|
|
42
|
+
]}
|
|
43
|
+
onmount={onmount?.bind(bond.state)}
|
|
44
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
45
|
+
enter={enter?.bind(bond.state)}
|
|
46
|
+
exit={exit?.bind(bond.state)}
|
|
47
|
+
initial={initial?.bind(bond.state)}
|
|
48
|
+
animate={animate?.bind(bond.state)}
|
|
49
|
+
{...bodyProps}
|
|
50
|
+
>
|
|
51
|
+
{@render children?.({ tab: bond })}
|
|
52
|
+
</HtmlAtom>
|