@svelte-atoms/core 1.0.0-alpha.44 → 1.0.0-alpha.46
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 +13 -0
- package/dist/components/accordion/item/accordion-item-body.svelte +5 -8
- package/dist/components/accordion/item/accordion-item-header.svelte +0 -13
- package/dist/components/accordion/item/accordion-item-indicator.svelte +0 -12
- package/dist/components/accordion/item/accordion-item-root.svelte +0 -12
- package/dist/components/alert/alert-actions.svelte +0 -12
- package/dist/components/alert/alert-close-button.svelte +0 -12
- package/dist/components/alert/alert-content.svelte +0 -12
- package/dist/components/alert/alert-description.svelte +0 -12
- package/dist/components/alert/alert-icon.svelte +0 -12
- package/dist/components/alert/alert-root.svelte +1 -13
- package/dist/components/alert/alert-title.svelte +0 -12
- package/dist/components/atom/html-atom.svelte +31 -17
- package/dist/components/atom/types.d.ts +9 -0
- package/dist/components/atom/utils/base.d.ts +6 -0
- package/dist/components/atom/utils/base.js +8 -0
- package/dist/components/atom/utils/cache.d.ts +17 -0
- package/dist/components/atom/utils/cache.js +134 -0
- package/dist/components/atom/utils/classes.d.ts +14 -0
- package/dist/components/atom/utils/classes.js +42 -0
- package/dist/components/atom/utils/constants.d.ts +9 -0
- package/dist/components/atom/utils/constants.js +9 -0
- package/dist/components/atom/utils/index.d.ts +6 -0
- package/dist/components/atom/utils/index.js +5 -0
- package/dist/components/atom/utils/preset.d.ts +22 -0
- package/dist/components/atom/utils/preset.js +94 -0
- package/dist/components/atom/utils/props.d.ts +13 -0
- package/dist/components/atom/utils/props.js +60 -0
- package/dist/components/atom/utils/variants.d.ts +31 -0
- package/dist/components/atom/utils/variants.js +270 -0
- package/dist/components/card/card-body.svelte +0 -12
- package/dist/components/card/card-description.svelte +0 -12
- package/dist/components/card/card-footer.svelte +0 -12
- package/dist/components/card/card-header.svelte +0 -12
- package/dist/components/card/card-media.svelte +0 -12
- package/dist/components/card/card-root.svelte +0 -12
- package/dist/components/card/card-subtitle.svelte +0 -12
- package/dist/components/card/card-title.svelte +0 -12
- package/dist/components/collapsible/collapsible-body.svelte +5 -12
- package/dist/components/collapsible/collapsible-header.svelte +0 -12
- package/dist/components/collapsible/collapsible-indicator.svelte +0 -12
- package/dist/components/collapsible/collapsible-root.svelte +0 -12
- package/dist/components/combobox/combobox-control.svelte +0 -12
- package/dist/components/combobox/combobox-item.svelte +0 -12
- package/dist/components/combobox/combobox-item.svelte.d.ts +0 -6
- package/dist/components/combobox/index.d.ts +1 -1
- package/dist/components/container/container.svelte +0 -12
- package/dist/components/datagrid/column/datagrid-column-sort-icon.svelte +3 -12
- package/dist/components/datagrid/column/datagrid-column-sort-icon.svelte.d.ts +0 -6
- package/dist/components/datagrid/datagrid-body.svelte +17 -1
- package/dist/components/dialog/dialog-body.svelte +0 -12
- package/dist/components/dialog/dialog-close-button.svelte +0 -12
- package/dist/components/dialog/dialog-close.svelte +0 -12
- package/dist/components/dialog/dialog-content.svelte +4 -12
- package/dist/components/dialog/dialog-description.svelte +0 -12
- package/dist/components/dialog/dialog-footer.svelte +0 -12
- package/dist/components/dialog/dialog-header.svelte +0 -12
- package/dist/components/dialog/dialog-title.svelte +0 -12
- package/dist/components/dialog/index.d.ts +3 -0
- package/dist/components/dialog/index.js +3 -0
- package/dist/components/drawer/drawer-backdrop.svelte +0 -12
- package/dist/components/drawer/drawer-body.svelte +0 -12
- package/dist/components/drawer/drawer-content.svelte +5 -12
- package/dist/components/drawer/drawer-description.svelte +0 -12
- package/dist/components/drawer/drawer-footer.svelte +0 -12
- package/dist/components/drawer/drawer-header.svelte +0 -12
- package/dist/components/drawer/drawer-root.svelte +5 -4
- package/dist/components/drawer/drawer-title.svelte +0 -12
- package/dist/components/dropdown/dropdown-placeholder.svelte +0 -6
- package/dist/components/dropdown/dropdown-placeholder.svelte.d.ts +0 -6
- package/dist/components/dropdown/dropdown-query.svelte +0 -12
- package/dist/components/dropdown-menu/bond.svelte.d.ts +0 -4
- package/dist/components/dropdown-menu/dropdown-menu-content.svelte +0 -12
- package/dist/components/dropdown-menu/dropdown-menu-content.svelte.d.ts +0 -6
- package/dist/components/dropdown-menu/index.d.ts +1 -1
- package/dist/components/form/field/bond.svelte.d.ts +29 -17
- package/dist/components/form/field/bond.svelte.js +73 -49
- package/dist/components/form/field/field-control.svelte +21 -18
- package/dist/components/form/field/field-label.svelte +2 -2
- package/dist/components/form/field/field-root.svelte +2 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/components/input/input-file-control.svelte +0 -12
- package/dist/components/input/input-icon.svelte +3 -3
- package/dist/components/input/input-number-control.svelte +28 -35
- package/dist/components/input/input-text-control.svelte +8 -3
- package/dist/components/input/input-url-control.svelte +2 -2
- package/dist/components/input/types.d.ts +4 -4
- package/dist/components/kbd/index.d.ts +3 -0
- package/dist/components/kbd/index.js +3 -0
- package/dist/components/kbd/kbd.svelte +19 -0
- package/dist/components/kbd/kbd.svelte.d.ts +4 -0
- package/dist/components/kbd/shortcut.svelte +38 -0
- package/dist/components/kbd/shortcut.svelte.d.ts +4 -0
- package/dist/components/kbd/types.d.ts +20 -0
- package/dist/components/kbd/types.js +1 -0
- package/dist/components/layer/layer-inner.svelte +0 -12
- package/dist/components/layer/layer-root.svelte +0 -12
- package/dist/components/menu/menu-content.svelte +0 -12
- package/dist/components/menu/menu-content.svelte.d.ts +0 -6
- package/dist/components/popover/bond.svelte.d.ts +29 -1
- package/dist/components/popover/bond.svelte.js +55 -2
- package/dist/components/popover/index.d.ts +1 -0
- package/dist/components/popover/index.js +1 -0
- package/dist/components/popover/popover-arrow.svelte +4 -2
- package/dist/components/popover/popover-content.svelte +17 -90
- package/dist/components/popover/popover-overlay.svelte +98 -0
- package/dist/components/popover/popover-overlay.svelte.d.ts +4 -0
- package/dist/components/popover/popover-trigger.svelte +9 -0
- package/dist/components/popover/strategies/floating.svelte +10 -10
- package/dist/components/popover/types.d.ts +7 -2
- package/dist/components/portal/portal-inner.svelte +0 -12
- package/dist/components/portal/portal-root.svelte +0 -12
- package/dist/components/portal/types.d.ts +1 -1
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/index.js +3 -0
- package/dist/components/progress/progress-circular.svelte +99 -0
- package/dist/components/progress/progress-circular.svelte.d.ts +6 -0
- package/dist/components/progress/progress-linear.svelte +66 -0
- package/dist/components/progress/progress-linear.svelte.d.ts +6 -0
- package/dist/components/progress/types.d.ts +18 -0
- package/dist/components/progress/types.js +1 -0
- package/dist/components/scrollable/scrollable-container.svelte +0 -12
- package/dist/components/scrollable/scrollable-content.svelte +0 -12
- package/dist/components/scrollable/scrollable-root.svelte +0 -12
- package/dist/components/scrollable/scrollable-thumb.svelte +1 -12
- package/dist/components/scrollable/scrollable-track.svelte +0 -12
- package/dist/components/select/bond.svelte.d.ts +0 -4
- package/dist/components/select/index.d.ts +1 -1
- package/dist/components/select/select-placeholder.svelte +0 -6
- package/dist/components/select/select-placeholder.svelte.d.ts +0 -6
- package/dist/components/sidebar/sidebar-content.svelte +5 -12
- package/dist/components/stack/bond.svelte.js +6 -0
- package/dist/components/stack/stack-item.svelte +4 -0
- package/dist/components/switch/switch.svelte +2 -0
- package/dist/components/tabs/tab/tab-header.svelte +4 -4
- package/dist/components/tabs/tabs-body.svelte +0 -2
- package/dist/components/tabs/tabs-root.svelte +11 -3
- package/dist/components/toast/atoms.d.ts +1 -1
- package/dist/components/toast/atoms.js +1 -1
- package/dist/components/toast/attachments.svelte.d.ts +10 -2
- package/dist/components/toast/attachments.svelte.js +9 -1
- package/dist/components/toast/bond.svelte.d.ts +73 -0
- package/dist/components/toast/bond.svelte.js +132 -0
- package/dist/components/toast/index.d.ts +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/toast/toast-close.svelte +47 -0
- package/dist/components/toast/toast-close.svelte.d.ts +26 -0
- package/dist/components/toast/toast-description.svelte +16 -24
- package/dist/components/toast/toast-description.svelte.d.ts +15 -19
- package/dist/components/toast/toast-root.svelte +36 -26
- package/dist/components/toast/toast-root.svelte.d.ts +16 -15
- package/dist/components/toast/toast-title.svelte +17 -22
- package/dist/components/toast/toast-title.svelte.d.ts +13 -13
- package/dist/components/toast/toaster.svelte.d.ts +38 -0
- package/dist/components/toast/toaster.svelte.js +107 -0
- package/dist/components/toast/types.d.ts +13 -21
- package/dist/components/tree/tree-body.svelte +5 -12
- package/dist/components/tree/tree-header.svelte +0 -12
- package/dist/components/tree/tree-indicator.svelte +0 -12
- package/dist/components/tree/tree-root.svelte +0 -12
- package/dist/context/preset.svelte.d.ts +53 -37
- package/dist/context/preset.svelte.js +29 -3
- package/package.json +1 -1
- package/dist/components/atom/utils.d.ts +0 -44
- package/dist/components/atom/utils.js +0 -275
- package/dist/components/popover/popover-engine.svelte +0 -118
- package/dist/components/popover/popover-engine.svelte.d.ts +0 -3
- package/dist/components/toast/bond.d.ts +0 -35
- package/dist/components/toast/bond.js +0 -59
- package/dist/components/toast/manager.svelte.d.ts +0 -38
- package/dist/components/toast/manager.svelte.js +0 -82
- package/dist/components/toast/toast-root-managed.svelte +0 -64
- package/dist/components/toast/toast-root-managed.svelte.d.ts +0 -7
- package/dist/components/toast/toast-toaster.svelte +0 -42
- package/dist/components/toast/toast-toaster.svelte.d.ts +0 -4
- /package/dist/components/popover/{motion.d.ts → motion.svelte.d.ts} +0 -0
- /package/dist/components/popover/{motion.js → motion.svelte.js} +0 -0
|
@@ -1,38 +1,30 @@
|
|
|
1
|
-
<script lang="ts" generics="
|
|
2
|
-
import type
|
|
3
|
-
import {
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base">
|
|
2
|
+
import { HtmlAtom, type Base } from '../atom';
|
|
3
|
+
import { ToastBond } from './bond.svelte';
|
|
4
4
|
import type { ToastDescriptionProps } from './types';
|
|
5
|
-
import { ToastBond } from './bond';
|
|
6
|
-
export type { ToastDescriptionProps } from './types';
|
|
7
|
-
|
|
8
|
-
const bond = ToastBond.get();
|
|
9
5
|
|
|
10
6
|
let {
|
|
11
|
-
as = 'p' as T,
|
|
12
7
|
class: klass = '',
|
|
8
|
+
as = 'p' as E,
|
|
9
|
+
preset = 'toast.description',
|
|
13
10
|
children = undefined,
|
|
14
|
-
onmount = undefined,
|
|
15
|
-
ondestroy = undefined,
|
|
16
|
-
animate = undefined,
|
|
17
|
-
enter = undefined,
|
|
18
|
-
exit = undefined,
|
|
19
|
-
initial = undefined,
|
|
20
11
|
...restProps
|
|
21
|
-
}: ToastDescriptionProps<
|
|
12
|
+
}: ToastDescriptionProps<E, B> = $props();
|
|
13
|
+
|
|
14
|
+
const bond = ToastBond.get();
|
|
15
|
+
|
|
16
|
+
const descriptionProps = $derived({
|
|
17
|
+
...(bond?.description().spread ?? {}),
|
|
18
|
+
...restProps
|
|
19
|
+
});
|
|
22
20
|
</script>
|
|
23
21
|
|
|
24
22
|
<HtmlAtom
|
|
25
23
|
{as}
|
|
26
24
|
{bond}
|
|
27
|
-
preset
|
|
28
|
-
class={['
|
|
29
|
-
|
|
30
|
-
exit={exit?.bind(bond.state)}
|
|
31
|
-
initial={initial?.bind(bond.state)}
|
|
32
|
-
animate={animate?.bind(bond.state)}
|
|
33
|
-
onmount={onmount?.bind(bond.state)}
|
|
34
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
35
|
-
{...bond?.title(restProps)}
|
|
25
|
+
{preset}
|
|
26
|
+
class={['$preset', klass]}
|
|
27
|
+
{...descriptionProps}
|
|
36
28
|
>
|
|
37
29
|
{@render children?.({ toast: bond })}
|
|
38
30
|
</HtmlAtom>
|
|
@@ -1,30 +1,26 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Base } from '../atom';
|
|
2
2
|
import type { ToastDescriptionProps } from './types';
|
|
3
|
-
declare function $$render<
|
|
4
|
-
props: ToastDescriptionProps<
|
|
5
|
-
exports: {
|
|
6
|
-
ToastDescriptionProps: typeof ToastDescriptionProps;
|
|
7
|
-
};
|
|
3
|
+
declare function $$render<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(): {
|
|
4
|
+
props: ToastDescriptionProps<E, B>;
|
|
5
|
+
exports: {};
|
|
8
6
|
bindings: "";
|
|
9
7
|
slots: {};
|
|
10
8
|
events: {};
|
|
11
9
|
};
|
|
12
|
-
declare class __sveltets_Render<
|
|
13
|
-
props(): ReturnType<typeof $$render<
|
|
14
|
-
events(): ReturnType<typeof $$render<
|
|
15
|
-
slots(): ReturnType<typeof $$render<
|
|
10
|
+
declare class __sveltets_Render<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> {
|
|
11
|
+
props(): ReturnType<typeof $$render<E, B>>['props'];
|
|
12
|
+
events(): ReturnType<typeof $$render<E, B>>['events'];
|
|
13
|
+
slots(): ReturnType<typeof $$render<E, B>>['slots'];
|
|
16
14
|
bindings(): "";
|
|
17
|
-
exports(): {
|
|
18
|
-
ToastDescriptionProps: typeof ToastDescriptionProps;
|
|
19
|
-
};
|
|
15
|
+
exports(): {};
|
|
20
16
|
}
|
|
21
17
|
interface $$IsomorphicComponent {
|
|
22
|
-
new <
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
24
|
-
} & ReturnType<__sveltets_Render<
|
|
25
|
-
<
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
18
|
+
new <E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<E, B>['props']>, ReturnType<__sveltets_Render<E, B>['events']>, ReturnType<__sveltets_Render<E, B>['slots']>> & {
|
|
19
|
+
$$bindings?: ReturnType<__sveltets_Render<E, B>['bindings']>;
|
|
20
|
+
} & ReturnType<__sveltets_Render<E, B>['exports']>;
|
|
21
|
+
<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<E, B>['props']> & {}): ReturnType<__sveltets_Render<E, B>['exports']>;
|
|
22
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
27
23
|
}
|
|
28
24
|
declare const ToastDescription: $$IsomorphicComponent;
|
|
29
|
-
type ToastDescription<
|
|
25
|
+
type ToastDescription<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> = InstanceType<typeof ToastDescription<E, B>>;
|
|
30
26
|
export default ToastDescription;
|
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
<script lang="ts" generics="
|
|
2
|
-
import type
|
|
3
|
-
import { ToastBond, ToastBondState, type ToastBondProps } from './bond';
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import { HtmlAtom, type Base } from '../atom';
|
|
3
|
+
import { ToastBond, ToastBondState, type ToastBondProps } from './bond.svelte';
|
|
4
4
|
import { defineProperty, defineState } from '../../utils';
|
|
5
|
-
import { HtmlAtom } from '../atom';
|
|
6
5
|
import type { ToastRootProps } from './types';
|
|
6
|
+
import { untrack } from 'svelte';
|
|
7
7
|
|
|
8
8
|
let {
|
|
9
|
-
open = $bindable(
|
|
10
|
-
class: klass = '',
|
|
9
|
+
open = $bindable(true),
|
|
11
10
|
disabled = false,
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
duration = 0,
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
|
+
dismissible: _dismissible,
|
|
14
|
+
class: klass = '',
|
|
15
|
+
preset = 'toast',
|
|
16
|
+
factory = defaultFactory,
|
|
14
17
|
children = undefined,
|
|
15
|
-
|
|
16
|
-
ondestroy = undefined,
|
|
17
|
-
animate = undefined,
|
|
18
|
-
enter = undefined,
|
|
19
|
-
exit = undefined,
|
|
20
|
-
initial = undefined,
|
|
18
|
+
onclose = undefined,
|
|
21
19
|
...restProps
|
|
22
|
-
}: ToastRootProps<
|
|
20
|
+
}: ToastRootProps<E, B> = $props();
|
|
23
21
|
|
|
24
22
|
const bondProps = defineState<ToastBondProps>(
|
|
25
23
|
[
|
|
@@ -27,20 +25,37 @@
|
|
|
27
25
|
'open',
|
|
28
26
|
() => open,
|
|
29
27
|
(v) => {
|
|
28
|
+
if (open === v) return;
|
|
30
29
|
open = v;
|
|
30
|
+
if (!v) onclose?.();
|
|
31
31
|
}
|
|
32
|
-
)
|
|
32
|
+
),
|
|
33
|
+
defineProperty('rest', () => restProps)
|
|
33
34
|
],
|
|
34
|
-
() => ({ disabled
|
|
35
|
+
() => ({ disabled })
|
|
35
36
|
);
|
|
36
37
|
|
|
37
|
-
const bond = factory(bondProps).share();
|
|
38
|
+
const bond = untrack(() => factory(bondProps)).share();
|
|
38
39
|
|
|
39
|
-
function
|
|
40
|
+
function defaultFactory(props: ToastBondProps) {
|
|
40
41
|
const bondState = new ToastBondState(() => props);
|
|
41
42
|
return new ToastBond(bondState);
|
|
42
43
|
}
|
|
43
44
|
|
|
45
|
+
const rootProps: Record<string, unknown> = $derived({
|
|
46
|
+
...bond.root().spread,
|
|
47
|
+
...restProps
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// Auto-dismiss when a positive duration is provided
|
|
51
|
+
$effect(() => {
|
|
52
|
+
if (!open || duration <= 0) return;
|
|
53
|
+
const handle = setTimeout(() => {
|
|
54
|
+
open = false;
|
|
55
|
+
}, duration);
|
|
56
|
+
return () => clearTimeout(handle);
|
|
57
|
+
});
|
|
58
|
+
|
|
44
59
|
export function getBond() {
|
|
45
60
|
return bond;
|
|
46
61
|
}
|
|
@@ -48,14 +63,9 @@
|
|
|
48
63
|
|
|
49
64
|
<HtmlAtom
|
|
50
65
|
{bond}
|
|
66
|
+
{preset}
|
|
51
67
|
class={['border-border', '$preset', klass]}
|
|
52
|
-
|
|
53
|
-
exit={exit?.bind(bond.state)}
|
|
54
|
-
initial={initial?.bind(bond.state)}
|
|
55
|
-
animate={animate?.bind(bond.state)}
|
|
56
|
-
onmount={onmount?.bind(bond.state)}
|
|
57
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
58
|
-
{...bond?.root(restProps)}
|
|
68
|
+
{...rootProps}
|
|
59
69
|
>
|
|
60
70
|
{@render children?.({ toast: bond })}
|
|
61
71
|
</HtmlAtom>
|
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Base } from '../atom';
|
|
2
|
+
import { ToastBond, ToastBondState, type ToastBondProps } from './bond.svelte';
|
|
2
3
|
import type { ToastRootProps } from './types';
|
|
3
|
-
declare function $$render<
|
|
4
|
-
props: ToastRootProps<
|
|
4
|
+
declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
|
|
5
|
+
props: ToastRootProps<E, B>;
|
|
5
6
|
exports: {
|
|
6
|
-
getBond: () =>
|
|
7
|
+
getBond: () => ToastBond<ToastBondState<ToastBondProps>>;
|
|
7
8
|
};
|
|
8
9
|
bindings: "open";
|
|
9
10
|
slots: {};
|
|
10
11
|
events: {};
|
|
11
12
|
};
|
|
12
|
-
declare class __sveltets_Render<
|
|
13
|
-
props(): ReturnType<typeof $$render<
|
|
14
|
-
events(): ReturnType<typeof $$render<
|
|
15
|
-
slots(): ReturnType<typeof $$render<
|
|
13
|
+
declare class __sveltets_Render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> {
|
|
14
|
+
props(): ReturnType<typeof $$render<E, B>>['props'];
|
|
15
|
+
events(): ReturnType<typeof $$render<E, B>>['events'];
|
|
16
|
+
slots(): ReturnType<typeof $$render<E, B>>['slots'];
|
|
16
17
|
bindings(): "open";
|
|
17
18
|
exports(): {
|
|
18
|
-
getBond: () =>
|
|
19
|
+
getBond: () => ToastBond<ToastBondState<ToastBondProps>>;
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
22
|
interface $$IsomorphicComponent {
|
|
22
|
-
new <
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
24
|
-
} & ReturnType<__sveltets_Render<
|
|
25
|
-
<
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
23
|
+
new <E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<E, B>['props']>, ReturnType<__sveltets_Render<E, B>['events']>, ReturnType<__sveltets_Render<E, B>['slots']>> & {
|
|
24
|
+
$$bindings?: ReturnType<__sveltets_Render<E, B>['bindings']>;
|
|
25
|
+
} & ReturnType<__sveltets_Render<E, B>['exports']>;
|
|
26
|
+
<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<E, B>['props']> & {}): ReturnType<__sveltets_Render<E, B>['exports']>;
|
|
27
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
27
28
|
}
|
|
28
29
|
declare const ToastRoot: $$IsomorphicComponent;
|
|
29
|
-
type ToastRoot<
|
|
30
|
+
type ToastRoot<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof ToastRoot<E, B>>;
|
|
30
31
|
export default ToastRoot;
|
|
@@ -1,35 +1,30 @@
|
|
|
1
|
-
<script lang="ts" generics="
|
|
2
|
-
import type
|
|
3
|
-
import {
|
|
4
|
-
import { ToastBond } from './bond';
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base">
|
|
2
|
+
import { HtmlAtom, type Base } from '../atom';
|
|
3
|
+
import { ToastBond } from './bond.svelte';
|
|
5
4
|
import type { ToastTitleProps } from './types';
|
|
6
5
|
|
|
7
|
-
const bond = ToastBond.get();
|
|
8
|
-
|
|
9
6
|
let {
|
|
10
7
|
class: klass = '',
|
|
8
|
+
as = 'p' as E,
|
|
9
|
+
preset = 'toast.title',
|
|
11
10
|
children = undefined,
|
|
12
|
-
onmount = undefined,
|
|
13
|
-
ondestroy = undefined,
|
|
14
|
-
animate = undefined,
|
|
15
|
-
enter = undefined,
|
|
16
|
-
exit = undefined,
|
|
17
|
-
initial = undefined,
|
|
18
11
|
...restProps
|
|
19
|
-
}: ToastTitleProps<
|
|
12
|
+
}: ToastTitleProps<E, B> = $props();
|
|
13
|
+
|
|
14
|
+
const bond = ToastBond.get();
|
|
15
|
+
|
|
16
|
+
const titleProps = $derived({
|
|
17
|
+
...(bond?.title().spread ?? {}),
|
|
18
|
+
...restProps
|
|
19
|
+
});
|
|
20
20
|
</script>
|
|
21
21
|
|
|
22
22
|
<HtmlAtom
|
|
23
|
+
{as}
|
|
23
24
|
{bond}
|
|
24
|
-
preset
|
|
25
|
-
class={['
|
|
26
|
-
|
|
27
|
-
exit={exit?.bind(bond.state)}
|
|
28
|
-
initial={initial?.bind(bond.state)}
|
|
29
|
-
animate={animate?.bind(bond.state)}
|
|
30
|
-
onmount={onmount?.bind(bond.state)}
|
|
31
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
32
|
-
{...bond?.title(restProps)}
|
|
25
|
+
{preset}
|
|
26
|
+
class={['$preset', klass]}
|
|
27
|
+
{...titleProps}
|
|
33
28
|
>
|
|
34
29
|
{@render children?.({ toast: bond })}
|
|
35
30
|
</HtmlAtom>
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Base } from '../atom';
|
|
2
2
|
import type { ToastTitleProps } from './types';
|
|
3
|
-
declare function $$render<
|
|
4
|
-
props: ToastTitleProps<
|
|
3
|
+
declare function $$render<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(): {
|
|
4
|
+
props: ToastTitleProps<E, B>;
|
|
5
5
|
exports: {};
|
|
6
6
|
bindings: "";
|
|
7
7
|
slots: {};
|
|
8
8
|
events: {};
|
|
9
9
|
};
|
|
10
|
-
declare class __sveltets_Render<
|
|
11
|
-
props(): ReturnType<typeof $$render<
|
|
12
|
-
events(): ReturnType<typeof $$render<
|
|
13
|
-
slots(): ReturnType<typeof $$render<
|
|
10
|
+
declare class __sveltets_Render<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> {
|
|
11
|
+
props(): ReturnType<typeof $$render<E, B>>['props'];
|
|
12
|
+
events(): ReturnType<typeof $$render<E, B>>['events'];
|
|
13
|
+
slots(): ReturnType<typeof $$render<E, B>>['slots'];
|
|
14
14
|
bindings(): "";
|
|
15
15
|
exports(): {};
|
|
16
16
|
}
|
|
17
17
|
interface $$IsomorphicComponent {
|
|
18
|
-
new <
|
|
19
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
20
|
-
} & ReturnType<__sveltets_Render<
|
|
21
|
-
<
|
|
22
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
18
|
+
new <E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<E, B>['props']>, ReturnType<__sveltets_Render<E, B>['events']>, ReturnType<__sveltets_Render<E, B>['slots']>> & {
|
|
19
|
+
$$bindings?: ReturnType<__sveltets_Render<E, B>['bindings']>;
|
|
20
|
+
} & ReturnType<__sveltets_Render<E, B>['exports']>;
|
|
21
|
+
<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<E, B>['props']> & {}): ReturnType<__sveltets_Render<E, B>['exports']>;
|
|
22
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
23
23
|
}
|
|
24
24
|
declare const ToastTitle: $$IsomorphicComponent;
|
|
25
|
-
type ToastTitle<
|
|
25
|
+
type ToastTitle<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> = InstanceType<typeof ToastTitle<E, B>>;
|
|
26
26
|
export default ToastTitle;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type Component } from 'svelte';
|
|
2
|
+
export type ToastType = 'info' | 'success' | 'error' | 'warning' | 'default';
|
|
3
|
+
export interface ToastItem<T = unknown> {
|
|
4
|
+
id: string;
|
|
5
|
+
type: ToastType;
|
|
6
|
+
duration: number;
|
|
7
|
+
dismissible: boolean;
|
|
8
|
+
component?: Component<{
|
|
9
|
+
item: ToastItem<T>;
|
|
10
|
+
}> | undefined;
|
|
11
|
+
data?: T | undefined;
|
|
12
|
+
}
|
|
13
|
+
export interface ToastOptions<T = unknown> {
|
|
14
|
+
id?: string;
|
|
15
|
+
duration?: number;
|
|
16
|
+
dismissible?: boolean;
|
|
17
|
+
/** Arbitrary payload accessible from a custom toast component via `item.data`. */
|
|
18
|
+
data?: T;
|
|
19
|
+
/** Custom component to render in place of the default toast layout. Receives `{ item }`. */
|
|
20
|
+
component?: Component<{
|
|
21
|
+
item: ToastItem<T>;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
export declare class Toaster {
|
|
25
|
+
#private;
|
|
26
|
+
get toasts(): ToastItem[];
|
|
27
|
+
add<T = unknown>(type?: ToastType, options?: ToastOptions<T>): string;
|
|
28
|
+
dismiss(...ids: string[]): void;
|
|
29
|
+
/** Pause auto-dismiss timer (e.g. on pointerenter). */
|
|
30
|
+
pause(...ids: string[]): void;
|
|
31
|
+
/** Resume previously paused auto-dismiss timer. */
|
|
32
|
+
resume(...ids: string[]): void;
|
|
33
|
+
remove(...ids: string[]): void;
|
|
34
|
+
clear(): void;
|
|
35
|
+
share(): Toaster;
|
|
36
|
+
static get: () => Toaster;
|
|
37
|
+
static set: (context: Toaster) => Toaster;
|
|
38
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { createContext } from 'svelte';
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
3
|
+
import { SvelteMap } from 'svelte/reactivity';
|
|
4
|
+
const DEFAULT_DURATION = 4000;
|
|
5
|
+
const [get, set] = createContext();
|
|
6
|
+
export class Toaster {
|
|
7
|
+
#toasts = new SvelteMap();
|
|
8
|
+
#toastsArray = $derived([...this.#toasts.values()]);
|
|
9
|
+
// eslint-disable-next-line svelte/prefer-svelte-reactivity
|
|
10
|
+
#timers = new Map();
|
|
11
|
+
get toasts() {
|
|
12
|
+
return this.#toastsArray;
|
|
13
|
+
}
|
|
14
|
+
add(type = 'default', options = {}) {
|
|
15
|
+
const id = options.id ?? nanoid(8);
|
|
16
|
+
// If a toast with this id already exists, update it in place
|
|
17
|
+
const existing = this.#toasts.get(id);
|
|
18
|
+
if (existing) {
|
|
19
|
+
existing.type = type;
|
|
20
|
+
if (options.dismissible !== undefined)
|
|
21
|
+
existing.dismissible = options.dismissible;
|
|
22
|
+
if (options.data !== undefined)
|
|
23
|
+
existing.data = options.data;
|
|
24
|
+
if (options.component !== undefined)
|
|
25
|
+
existing.component = options.component;
|
|
26
|
+
if (options.duration !== undefined) {
|
|
27
|
+
existing.duration = options.duration;
|
|
28
|
+
if (options.duration > 0)
|
|
29
|
+
this.#startTimer(id, options.duration);
|
|
30
|
+
else
|
|
31
|
+
this.#clearTimer(id);
|
|
32
|
+
}
|
|
33
|
+
// Re-open if it was in the middle of closing
|
|
34
|
+
// if (!existing.bond.state.isOpen) existing.bond.state.open();
|
|
35
|
+
return id;
|
|
36
|
+
}
|
|
37
|
+
const duration = options.duration ?? DEFAULT_DURATION;
|
|
38
|
+
const dismissible = options.dismissible ?? true;
|
|
39
|
+
const item = {
|
|
40
|
+
id,
|
|
41
|
+
type,
|
|
42
|
+
duration,
|
|
43
|
+
dismissible,
|
|
44
|
+
data: options.data,
|
|
45
|
+
component: options.component
|
|
46
|
+
};
|
|
47
|
+
this.#toasts.set(id, item);
|
|
48
|
+
if (duration > 0)
|
|
49
|
+
this.#startTimer(id, duration);
|
|
50
|
+
return id;
|
|
51
|
+
}
|
|
52
|
+
dismiss(...ids) {
|
|
53
|
+
for (const id of ids) {
|
|
54
|
+
this.#clearTimer(id);
|
|
55
|
+
this.#toasts.delete(id);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Pause auto-dismiss timer (e.g. on pointerenter). */
|
|
59
|
+
pause(...ids) {
|
|
60
|
+
for (const id of ids) {
|
|
61
|
+
const t = this.#timers.get(id);
|
|
62
|
+
if (!t || t.handle === null)
|
|
63
|
+
continue;
|
|
64
|
+
clearTimeout(t.handle);
|
|
65
|
+
const elapsed = Date.now() - t.start;
|
|
66
|
+
t.remaining = Math.max(0, t.remaining - elapsed);
|
|
67
|
+
t.handle = null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Resume previously paused auto-dismiss timer. */
|
|
71
|
+
resume(...ids) {
|
|
72
|
+
for (const id of ids) {
|
|
73
|
+
const t = this.#timers.get(id);
|
|
74
|
+
if (!t || t.handle !== null || t.remaining <= 0)
|
|
75
|
+
continue;
|
|
76
|
+
t.start = Date.now();
|
|
77
|
+
t.handle = setTimeout(() => this.dismiss(id), t.remaining);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
remove(...ids) {
|
|
81
|
+
for (const id of ids) {
|
|
82
|
+
this.#clearTimer(id);
|
|
83
|
+
this.#toasts.delete(id);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
clear() {
|
|
87
|
+
for (const id of [...this.#timers.keys()])
|
|
88
|
+
this.#clearTimer(id);
|
|
89
|
+
this.#toasts.clear();
|
|
90
|
+
}
|
|
91
|
+
#startTimer(id, ms) {
|
|
92
|
+
this.#clearTimer(id);
|
|
93
|
+
const handle = setTimeout(() => this.dismiss(id), ms);
|
|
94
|
+
this.#timers.set(id, { handle, start: Date.now(), remaining: ms });
|
|
95
|
+
}
|
|
96
|
+
#clearTimer(id) {
|
|
97
|
+
const t = this.#timers.get(id);
|
|
98
|
+
if (t?.handle != null)
|
|
99
|
+
clearTimeout(t.handle);
|
|
100
|
+
this.#timers.delete(id);
|
|
101
|
+
}
|
|
102
|
+
share() {
|
|
103
|
+
return Toaster.set(this);
|
|
104
|
+
}
|
|
105
|
+
static get = get;
|
|
106
|
+
static set = set;
|
|
107
|
+
}
|
|
@@ -1,31 +1,23 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
|
-
import type { HtmlAtomProps, Base
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
import type { ToastPosition } from './manager.svelte';
|
|
6
|
-
export interface ToastSnippetProps extends SnippetProps {
|
|
2
|
+
import type { HtmlAtomProps, Base } from '../atom';
|
|
3
|
+
import type { ToastBond, ToastBondProps } from './bond.svelte';
|
|
4
|
+
export interface ToastSnippetProps {
|
|
7
5
|
toast: ToastBond | undefined;
|
|
8
6
|
}
|
|
9
7
|
export type ToastChildren = Snippet<[ToastSnippetProps]>;
|
|
10
|
-
export interface ToastRootProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
export interface ToastRootProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B, ToastChildren> {
|
|
9
|
+
open?: boolean;
|
|
10
|
+
disabled?: boolean;
|
|
13
11
|
dismissible?: boolean;
|
|
14
|
-
/** Auto-dismiss duration in ms. Set to 0 to disable auto-dismiss. Default:
|
|
12
|
+
/** Auto-dismiss duration in ms. Set to 0 to disable auto-dismiss. Default: 0. */
|
|
15
13
|
duration?: number;
|
|
16
|
-
onclose?: () => void
|
|
14
|
+
onclose?: () => void;
|
|
15
|
+
/** Optional factory to construct a custom bond. */
|
|
16
|
+
factory?: (props: ToastBondProps) => ToastBond;
|
|
17
17
|
}
|
|
18
|
-
export interface ToastTitleProps<E extends keyof HTMLElementTagNameMap = '
|
|
19
|
-
children?: ToastChildren;
|
|
20
|
-
}> {
|
|
18
|
+
export interface ToastTitleProps<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> extends HtmlAtomProps<E, B, ToastChildren> {
|
|
21
19
|
}
|
|
22
|
-
export interface ToastDescriptionProps<E extends keyof HTMLElementTagNameMap = '
|
|
23
|
-
children?: ToastChildren;
|
|
24
|
-
}> {
|
|
20
|
+
export interface ToastDescriptionProps<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> extends HtmlAtomProps<E, B, ToastChildren> {
|
|
25
21
|
}
|
|
26
|
-
export interface
|
|
27
|
-
/** Position of the toast stack on screen. Default: 'bottom-right' */
|
|
28
|
-
position?: ToastPosition | undefined;
|
|
29
|
-
/** Gap between toasts in px. Default: 8 */
|
|
30
|
-
gap?: number | undefined;
|
|
22
|
+
export interface ToastCloseProps<E extends keyof HTMLElementTagNameMap = 'button', B extends Base = Base> extends HtmlAtomProps<E, B, ToastChildren> {
|
|
31
23
|
}
|
|
@@ -9,12 +9,10 @@
|
|
|
9
9
|
let {
|
|
10
10
|
class: klass = '',
|
|
11
11
|
children = undefined,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
exit = undefined,
|
|
17
|
-
initial = animateTreeBody({ duration: 0 }),
|
|
12
|
+
fallback = {
|
|
13
|
+
animate: animateTreeBody(),
|
|
14
|
+
initial: animateTreeBody({ duration: 0 })
|
|
15
|
+
},
|
|
18
16
|
...restProps
|
|
19
17
|
}: TreeBodyProps<E, B> = $props();
|
|
20
18
|
|
|
@@ -28,12 +26,7 @@
|
|
|
28
26
|
{bond}
|
|
29
27
|
preset="tree.body"
|
|
30
28
|
class={['border-border pl-4', '$preset', klass]}
|
|
31
|
-
|
|
32
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
33
|
-
animate={animate?.bind(bond.state)}
|
|
34
|
-
enter={enter?.bind(bond.state)}
|
|
35
|
-
exit={exit?.bind(bond.state)}
|
|
36
|
-
initial={initial?.bind(bond.state)}
|
|
29
|
+
{fallback}
|
|
37
30
|
{...bodyProps}
|
|
38
31
|
>
|
|
39
32
|
{@render children?.({ tree: bond })}
|
|
@@ -12,12 +12,6 @@
|
|
|
12
12
|
class: klass = '',
|
|
13
13
|
children = undefined,
|
|
14
14
|
onpointerdown = undefined,
|
|
15
|
-
onmount = undefined,
|
|
16
|
-
ondestroy = undefined,
|
|
17
|
-
animate = undefined,
|
|
18
|
-
enter = undefined,
|
|
19
|
-
exit = undefined,
|
|
20
|
-
initial = undefined,
|
|
21
15
|
...restProps
|
|
22
16
|
}: TreeHeaderProps<E, B> & HTMLAttributes<Element> = $props();
|
|
23
17
|
|
|
@@ -41,12 +35,6 @@
|
|
|
41
35
|
{bond}
|
|
42
36
|
preset="tree.header"
|
|
43
37
|
class={['border-border cursor-pointer', '$preset', klass]}
|
|
44
|
-
onmount={onmount?.bind(bond.state)}
|
|
45
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
46
|
-
animate={animate?.bind(bond.state)}
|
|
47
|
-
enter={enter?.bind(bond.state)}
|
|
48
|
-
exit={exit?.bind(bond.state)}
|
|
49
|
-
initial={initial?.bind(bond.state)}
|
|
50
38
|
onpointerdown={handlePointerDown}
|
|
51
39
|
{...headerProps}
|
|
52
40
|
>
|
|
@@ -9,12 +9,6 @@
|
|
|
9
9
|
open = $bindable(false),
|
|
10
10
|
class: klass = '',
|
|
11
11
|
children = undefined,
|
|
12
|
-
onmount = undefined,
|
|
13
|
-
ondestroy = undefined,
|
|
14
|
-
animate = undefined,
|
|
15
|
-
enter = undefined,
|
|
16
|
-
exit = undefined,
|
|
17
|
-
initial = undefined,
|
|
18
12
|
...restProps
|
|
19
13
|
}: TreeIndicatorProps<E, B> = $props();
|
|
20
14
|
|
|
@@ -28,12 +22,6 @@
|
|
|
28
22
|
{bond}
|
|
29
23
|
preset="tree.indicator"
|
|
30
24
|
class={['border-border aspect-square h-fit', '$preset', klass]}
|
|
31
|
-
onmount={onmount?.bind(bond.state)}
|
|
32
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
33
|
-
animate={animate?.bind(bond.state)}
|
|
34
|
-
enter={enter?.bind(bond.state)}
|
|
35
|
-
exit={exit?.bind(bond.state)}
|
|
36
|
-
initial={initial?.bind(bond.state)}
|
|
37
25
|
{...indicatorProps}
|
|
38
26
|
>
|
|
39
27
|
{@render children?.({ tree: bond })}
|
|
@@ -10,12 +10,6 @@
|
|
|
10
10
|
class: klass = '',
|
|
11
11
|
children = undefined,
|
|
12
12
|
factory = _factory,
|
|
13
|
-
onmount = undefined,
|
|
14
|
-
ondestroy = undefined,
|
|
15
|
-
animate = undefined,
|
|
16
|
-
enter = undefined,
|
|
17
|
-
exit = undefined,
|
|
18
|
-
initial = undefined,
|
|
19
13
|
...restProps
|
|
20
14
|
}: TreeRootProps<E, B> = $props();
|
|
21
15
|
|
|
@@ -54,12 +48,6 @@
|
|
|
54
48
|
{bond}
|
|
55
49
|
preset="tree"
|
|
56
50
|
class={['border-border flex flex-col', '$preset', klass]}
|
|
57
|
-
onmount={onmount?.bind(bond.state)}
|
|
58
|
-
ondestroy={ondestroy?.bind(bond.state)}
|
|
59
|
-
animate={animate?.bind(bond.state)}
|
|
60
|
-
enter={enter?.bind(bond.state)}
|
|
61
|
-
exit={exit?.bind(bond.state)}
|
|
62
|
-
initial={initial?.bind(bond.state)}
|
|
63
51
|
{...rootProps}
|
|
64
52
|
>
|
|
65
53
|
{@render children?.({ tree: bond })}
|