@svelte-atoms/core 1.0.0-alpha.24 → 1.0.0-alpha.26
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/dist/components/accordion/accordion-root.svelte +1 -1
- package/dist/components/accordion/accordion-root.svelte.d.ts +2 -2
- package/dist/components/accordion/item/accordion-item-body.svelte +1 -1
- package/dist/components/accordion/item/accordion-item-header.svelte +5 -1
- package/dist/components/accordion/item/accordion-item-indicator.svelte +1 -1
- package/dist/components/accordion/item/accordion-item-root.svelte +1 -1
- package/dist/components/alert/alert-actions.svelte +1 -1
- package/dist/components/alert/alert-actions.svelte.d.ts +1 -0
- package/dist/components/alert/alert-close-button.svelte +1 -1
- package/dist/components/alert/alert-close-button.svelte.d.ts +1 -0
- package/dist/components/alert/alert-content.svelte +1 -1
- package/dist/components/alert/alert-content.svelte.d.ts +1 -0
- package/dist/components/alert/alert-description.svelte +1 -1
- package/dist/components/alert/alert-icon.svelte +1 -1
- package/dist/components/alert/alert-root.svelte +1 -1
- package/dist/components/alert/alert-title.svelte +1 -1
- package/dist/components/atom/html-atom.svelte +147 -16
- package/dist/components/atom/html-atom.svelte.d.ts +4 -2
- package/dist/components/atom/types.d.ts +7 -0
- package/dist/components/badge/badge.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb-item.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb-root.svelte +1 -1
- package/dist/components/breadcrumb/breadcrumb-separator.svelte +1 -1
- package/dist/components/button/button.stories.svelte +41 -1
- package/dist/components/button/button.stories.svelte.d.ts +6 -14
- package/dist/components/button/button.svelte +1 -1
- package/dist/components/button/button.svelte.d.ts +4 -1
- package/dist/components/button/types.d.ts +1 -1
- package/dist/components/card/card-body.svelte +1 -1
- package/dist/components/card/card-description.svelte +1 -1
- package/dist/components/card/card-footer.svelte +1 -1
- package/dist/components/card/card-header.svelte +1 -1
- package/dist/components/card/card-media.svelte +1 -1
- package/dist/components/card/card-subtitle.svelte +1 -1
- package/dist/components/card/card-title.svelte +5 -1
- package/dist/components/checkbox/checkbox.svelte +39 -28
- package/dist/components/checkbox/checkbox.svelte.d.ts +1 -1
- package/dist/components/collapsible/collapsible-body.svelte +1 -1
- package/dist/components/collapsible/collapsible-header.svelte +1 -1
- package/dist/components/collapsible/collapsible-indicator.svelte +1 -1
- package/dist/components/collapsible/collapsible-root.svelte +1 -1
- package/dist/components/combobox/atoms.d.ts +5 -1
- package/dist/components/combobox/atoms.js +5 -1
- package/dist/components/combobox/{combobox-input.svelte → combobox-control.svelte} +3 -3
- package/dist/components/combobox/{combobox-input.svelte.d.ts → combobox-control.svelte.d.ts} +3 -3
- package/dist/components/combobox/combobox-root.svelte.d.ts +2 -2
- package/dist/components/combobox/combobox-trigger.svelte +1 -1
- package/dist/components/combobox/compobox-item.svelte +1 -1
- package/dist/components/container/container.svelte +1 -1
- package/dist/components/datagrid/datagrid-body.svelte +1 -1
- package/dist/components/datagrid/datagrid-footer.svelte +1 -1
- package/dist/components/datagrid/datagrid-header.svelte +1 -1
- package/dist/components/datagrid/datagrid-root.svelte +1 -1
- package/dist/components/datagrid/td/datagrid-td.svelte +1 -1
- package/dist/components/datagrid/th/datagrid-th-sort-icon.svelte +1 -1
- package/dist/components/datagrid/th/datagrid-th.svelte +1 -1
- package/dist/components/dialog/dialog-body.svelte +1 -1
- package/dist/components/dialog/dialog-close-button.svelte +1 -1
- package/dist/components/dialog/dialog-content.svelte +8 -11
- package/dist/components/dialog/dialog-description.svelte +1 -1
- package/dist/components/dialog/dialog-footer.svelte +1 -1
- package/dist/components/dialog/dialog-header.svelte +1 -1
- package/dist/components/dialog/dialog-root.svelte +123 -120
- package/dist/components/dialog/dialog-root.svelte.d.ts +3 -1
- package/dist/components/dialog/dialog-title.svelte +1 -1
- package/dist/components/drawer/drawer-backdrop.svelte +1 -1
- package/dist/components/drawer/drawer-backdrop.svelte.d.ts +1 -0
- package/dist/components/drawer/drawer-body.svelte +1 -1
- package/dist/components/drawer/drawer-description.svelte +1 -1
- package/dist/components/drawer/drawer-footer.svelte +1 -1
- package/dist/components/drawer/drawer-header.svelte +1 -1
- package/dist/components/drawer/drawer-root.svelte +118 -113
- package/dist/components/drawer/drawer-root.svelte.d.ts +5 -2
- package/dist/components/drawer/drawer-title.svelte +1 -1
- package/dist/components/dropdown/dropdown-placeholder.svelte +1 -1
- package/dist/components/dropdown/dropdown-query.svelte +1 -1
- package/dist/components/dropdown/dropdown-trigger.svelte +1 -1
- package/dist/components/dropdown/dropdown-value.svelte +1 -3
- package/dist/components/dropdown/item/bond.svelte.d.ts +4 -0
- package/dist/components/dropdown/item/bond.svelte.js +9 -0
- package/dist/components/dropdown/item/dropdown-item.svelte +10 -6
- package/dist/components/form/field/bond.svelte.d.ts +8 -0
- package/dist/components/form/field/bond.svelte.js +13 -1
- package/dist/components/form/field/field-control.svelte +7 -0
- package/dist/components/form/field/field-control.svelte.d.ts +2 -2
- package/dist/components/form/form.stories.svelte +3 -3
- package/dist/components/icon/icon.svelte.d.ts +1 -0
- package/dist/components/input/atoms.d.ts +5 -1
- package/dist/components/input/atoms.js +5 -1
- package/dist/components/input/{input-value.svelte → input-control.svelte} +14 -20
- package/dist/components/input/input-control.svelte.d.ts +27 -0
- package/dist/components/input/input-icon.svelte +1 -1
- package/dist/components/input/input-placeholder.svelte +1 -3
- package/dist/components/input/input-placeholder.svelte.d.ts +1 -0
- package/dist/components/input/input-root.svelte +5 -12
- package/dist/components/input/input-root.svelte.d.ts +3 -19
- package/dist/components/input/input.stories.svelte +2 -2
- package/dist/components/input/types.d.ts +22 -0
- package/dist/components/input/types.js +1 -0
- package/dist/components/label/label.svelte.d.ts +1 -0
- package/dist/components/layer/layer-inner.svelte.d.ts +1 -0
- package/dist/components/layer/layer-root.svelte.d.ts +1 -0
- package/dist/components/list/list-group.svelte +1 -1
- package/dist/components/list/list-item.svelte +1 -1
- package/dist/components/list/list-root.svelte +6 -1
- package/dist/components/list/list-title.svelte +1 -1
- package/dist/components/menu/menu-list.svelte +1 -1
- package/dist/components/popover/bond.svelte.d.ts +2 -0
- package/dist/components/popover/bond.svelte.js +1 -1
- package/dist/components/popover/popover-arrow.svelte +111 -117
- package/dist/components/popover/popover-arrow.svelte.d.ts +2 -2
- package/dist/components/popover/popover-content.svelte +139 -147
- package/dist/components/popover/popover-content.svelte.d.ts +3 -17
- package/dist/components/popover/popover-indicator.svelte +1 -1
- package/dist/components/popover/popover-root.svelte +49 -63
- package/dist/components/popover/popover-root.svelte.d.ts +1 -15
- package/dist/components/popover/popover-trigger.svelte +47 -56
- package/dist/components/popover/popover-trigger.svelte.d.ts +2 -8
- package/dist/components/popover/types.d.ts +39 -0
- package/dist/components/popover/types.js +1 -0
- package/dist/components/portal/active-portal.svelte +22 -16
- package/dist/components/portal/active-portal.svelte.d.ts +2 -2
- package/dist/components/portal/portal-inner.svelte +1 -1
- package/dist/components/portal/portal-inner.svelte.d.ts +1 -0
- package/dist/components/portal/portal-root.svelte +1 -1
- package/dist/components/portal/portal-root.svelte.d.ts +1 -0
- package/dist/components/portal/teleport.svelte +55 -49
- package/dist/components/portal/teleport.svelte.d.ts +4 -2
- package/dist/components/radio/radio-group.stories.svelte +4 -4
- package/dist/components/radio/radio.svelte +3 -3
- package/dist/components/radio/radio.svelte.d.ts +2 -2
- package/dist/components/root/root.css +24 -66
- package/dist/components/root/root.svelte +1 -1
- package/dist/components/sidebar/sidebar-content.svelte +2 -16
- package/dist/components/sidebar/sidebar-content.svelte.d.ts +2 -9
- package/dist/components/sidebar/sidebar-root.svelte +4 -23
- package/dist/components/sidebar/sidebar-root.svelte.d.ts +2 -13
- package/dist/components/sidebar/types.d.ts +19 -0
- package/dist/components/sidebar/types.js +1 -0
- package/dist/components/stack/stack-item.svelte +5 -1
- package/dist/components/stack/stack-root.svelte +5 -1
- package/dist/components/stack/stack-root.svelte.d.ts +1 -0
- package/dist/components/tabs/tab/tab-body.svelte +1 -1
- package/dist/components/tabs/tab/tab-description.svelte +1 -1
- package/dist/components/tabs/tab/tab-header.svelte +2 -2
- package/dist/components/tabs/tab/tab-root.svelte +6 -1
- package/dist/components/tabs/tabs-body.svelte +1 -1
- package/dist/components/tabs/tabs-header.svelte +1 -1
- package/dist/components/tabs/tabs-root.svelte +1 -1
- package/dist/components/textarea/textarea-input.svelte +2 -1
- package/dist/components/toast/toast-description.svelte +1 -1
- package/dist/components/toast/toast-description.svelte.d.ts +1 -0
- package/dist/components/toast/toast-root.svelte +1 -1
- package/dist/components/toast/toast-root.svelte.d.ts +1 -0
- package/dist/components/toast/toast-title.svelte +1 -1
- package/dist/components/toast/toast-title.svelte.d.ts +1 -0
- package/dist/components/tree/tree-body.svelte +1 -1
- package/dist/components/tree/tree-header.svelte +1 -1
- package/dist/components/tree/tree-header.svelte.d.ts +1 -0
- package/dist/components/tree/tree-indicator.svelte +1 -1
- package/dist/components/tree/tree-root.svelte +1 -1
- package/dist/context/preset.svelte.d.ts +4 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/variant.d.ts +213 -0
- package/dist/utils/variant.js +137 -0
- package/llm/composition.md +395 -0
- package/llm/crafting.md +838 -0
- package/llm/motion.md +970 -0
- package/llm/philosophy.md +23 -0
- package/llm/preset-variant-integration.md +516 -0
- package/llm/preset.md +383 -0
- package/llm/styling.md +216 -0
- package/llm/usage.md +46 -0
- package/llm/variants.md +712 -0
- package/package.json +2 -1
- package/dist/components/input/input-value.svelte.d.ts +0 -19
|
@@ -28,8 +28,6 @@
|
|
|
28
28
|
ev.preventDefault();
|
|
29
29
|
ev.stopPropagation();
|
|
30
30
|
|
|
31
|
-
console.log('unselect', value);
|
|
32
|
-
|
|
33
31
|
bond?.state.unselect([value]);
|
|
34
32
|
}
|
|
35
33
|
</script>
|
|
@@ -39,7 +37,7 @@
|
|
|
39
37
|
{bond}
|
|
40
38
|
preset="dropdown.value"
|
|
41
39
|
class={[
|
|
42
|
-
'dropdown-value bg-foreground/5 inline-flex flex-nowrap items-center gap-1 rounded-xs px-1 whitespace-nowrap',
|
|
40
|
+
'dropdown-value border-border bg-foreground/5 inline-flex flex-nowrap items-center gap-1 rounded-xs px-1 whitespace-nowrap',
|
|
43
41
|
'$preset',
|
|
44
42
|
klass
|
|
45
43
|
]}
|
|
@@ -19,6 +19,10 @@ export declare class DropdownItemBond<T = unknown> extends Bond<DropdownItemBond
|
|
|
19
19
|
mount(): () => void;
|
|
20
20
|
unmount(): void;
|
|
21
21
|
share(): this;
|
|
22
|
+
root(): {
|
|
23
|
+
[x: symbol]: (node: HTMLElement) => void;
|
|
24
|
+
'data-selected': boolean;
|
|
25
|
+
};
|
|
22
26
|
static get(): DropdownItemBond | undefined;
|
|
23
27
|
static set(bond: DropdownItemBond): DropdownItemBond;
|
|
24
28
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getContext, setContext } from 'svelte';
|
|
2
2
|
import { Bond, BondState } from '../../../shared/bond.svelte';
|
|
3
3
|
import { DropdownBond, DropdownBondState } from '../bond.svelte';
|
|
4
|
+
import { createAttachmentKey } from 'svelte/attachments';
|
|
4
5
|
export class DropdownItemBond extends Bond {
|
|
5
6
|
static CONTEXT_KEY = '@atoms/context/dropdown/item';
|
|
6
7
|
#dropdown;
|
|
@@ -31,6 +32,14 @@ export class DropdownItemBond extends Bond {
|
|
|
31
32
|
share() {
|
|
32
33
|
return DropdownItemBond.set(this);
|
|
33
34
|
}
|
|
35
|
+
root() {
|
|
36
|
+
return {
|
|
37
|
+
'data-selected': this.state.isSelected,
|
|
38
|
+
[createAttachmentKey()]: (node) => {
|
|
39
|
+
this.elements.root = node;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
34
43
|
static get() {
|
|
35
44
|
return getContext(DropdownItemBond.CONTEXT_KEY);
|
|
36
45
|
}
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
const unmount = bond.mount();
|
|
42
42
|
$effect(() => unmount);
|
|
43
43
|
|
|
44
|
+
const rootProps = $derived({
|
|
45
|
+
...bond?.root?.(),
|
|
46
|
+
...restProps
|
|
47
|
+
});
|
|
48
|
+
|
|
44
49
|
function _factory() {
|
|
45
50
|
const item = dropdown?.state.item(value);
|
|
46
51
|
|
|
@@ -56,7 +61,7 @@
|
|
|
56
61
|
return new DropdownItemBond(bondState);
|
|
57
62
|
}
|
|
58
63
|
|
|
59
|
-
function
|
|
64
|
+
function handleClick(ev: MouseEvent) {
|
|
60
65
|
onclick?.(ev);
|
|
61
66
|
|
|
62
67
|
if (ev.defaultPrevented) {
|
|
@@ -76,12 +81,11 @@
|
|
|
76
81
|
</script>
|
|
77
82
|
|
|
78
83
|
<Item
|
|
79
|
-
{@attach (node) => (bond.elements.root = node)}
|
|
80
84
|
{bond}
|
|
81
85
|
{preset}
|
|
82
86
|
class={[
|
|
83
|
-
bond.state.isHighlighted && 'bg-foreground/
|
|
84
|
-
bond.state.isSelected && 'bg-
|
|
87
|
+
bond.state.isHighlighted && 'bg-foreground/5',
|
|
88
|
+
bond.state.isSelected && 'bg-primary/5 hover:bg-primary/10 active:bg-primary/15',
|
|
85
89
|
'$preset',
|
|
86
90
|
klass
|
|
87
91
|
]}
|
|
@@ -91,8 +95,8 @@
|
|
|
91
95
|
animate={animate?.bind(bond.state)}
|
|
92
96
|
onmount={onmount?.bind(bond.state)}
|
|
93
97
|
ondestroy={ondestroy?.bind(bond.state)}
|
|
94
|
-
onclick={
|
|
95
|
-
{...
|
|
98
|
+
onclick={handleClick}
|
|
99
|
+
{...rootProps}
|
|
96
100
|
>
|
|
97
101
|
{@render children?.({ dropdownItem: bond })}
|
|
98
102
|
</Item>
|
|
@@ -25,6 +25,10 @@ export type FieldStateProps<Extension extends Record<string, unknown> = Record<s
|
|
|
25
25
|
readonly: boolean;
|
|
26
26
|
name?: string;
|
|
27
27
|
value?: Value;
|
|
28
|
+
files?: File[];
|
|
29
|
+
date?: Date | null;
|
|
30
|
+
number?: number;
|
|
31
|
+
checked?: boolean;
|
|
28
32
|
schema?: Schema;
|
|
29
33
|
validator?: ValidationAdapter<Schema, Value>;
|
|
30
34
|
onvalidation?: (errors: ValidationError[]) => void;
|
|
@@ -68,6 +72,10 @@ export declare class FieldBondState<Props extends FieldStateProps = FieldStatePr
|
|
|
68
72
|
#private;
|
|
69
73
|
constructor(props: () => Props);
|
|
70
74
|
get value(): unknown;
|
|
75
|
+
get files(): File[] | undefined;
|
|
76
|
+
get date(): Date | null | undefined;
|
|
77
|
+
get number(): number | undefined;
|
|
78
|
+
get checked(): boolean | undefined;
|
|
71
79
|
get errors(): ValidationError[];
|
|
72
80
|
get isValidating(): boolean;
|
|
73
81
|
validate(): ValidationResult;
|
|
@@ -101,7 +101,7 @@ export class FieldBondState extends BondState {
|
|
|
101
101
|
#form;
|
|
102
102
|
constructor(props) {
|
|
103
103
|
super(props);
|
|
104
|
-
this.#form = FormBond.get()
|
|
104
|
+
this.#form = FormBond.get()?.state;
|
|
105
105
|
if (!this.#form) {
|
|
106
106
|
throw new Error('Form Context is undefined, FieldAtom must be used within a FormAtom context');
|
|
107
107
|
}
|
|
@@ -109,6 +109,18 @@ export class FieldBondState extends BondState {
|
|
|
109
109
|
get value() {
|
|
110
110
|
return this.props.value;
|
|
111
111
|
}
|
|
112
|
+
get files() {
|
|
113
|
+
return this.props.files;
|
|
114
|
+
}
|
|
115
|
+
get date() {
|
|
116
|
+
return this.props.date;
|
|
117
|
+
}
|
|
118
|
+
get number() {
|
|
119
|
+
return this.props.number;
|
|
120
|
+
}
|
|
121
|
+
get checked() {
|
|
122
|
+
return this.props.checked;
|
|
123
|
+
}
|
|
112
124
|
get errors() {
|
|
113
125
|
return [...this.#errors];
|
|
114
126
|
}
|
|
@@ -26,6 +26,9 @@
|
|
|
26
26
|
class: klass = '',
|
|
27
27
|
value = $bindable(),
|
|
28
28
|
checked = $bindable(),
|
|
29
|
+
number = $bindable(),
|
|
30
|
+
date = $bindable(),
|
|
31
|
+
files = $bindable(),
|
|
29
32
|
children = undefined,
|
|
30
33
|
oninput = undefined,
|
|
31
34
|
...restProps
|
|
@@ -41,6 +44,10 @@
|
|
|
41
44
|
}
|
|
42
45
|
|
|
43
46
|
bond.state.props.value = value = detail?.value;
|
|
47
|
+
bond.state.props.files = files = detail?.files ?? [];
|
|
48
|
+
bond.state.props.date = date = detail?.date ?? null;
|
|
49
|
+
bond.state.props.number = number = detail?.number ?? null;
|
|
50
|
+
bond.state.props.checked = checked = detail?.checked ?? false;
|
|
44
51
|
}
|
|
45
52
|
</script>
|
|
46
53
|
|
|
@@ -19,7 +19,7 @@ declare function $$render<B extends Base<{
|
|
|
19
19
|
}>>(): {
|
|
20
20
|
props: FieldInputProps<B>;
|
|
21
21
|
exports: {};
|
|
22
|
-
bindings: "value" | "checked";
|
|
22
|
+
bindings: "number" | "value" | "date" | "files" | "checked";
|
|
23
23
|
slots: {};
|
|
24
24
|
events: {};
|
|
25
25
|
};
|
|
@@ -29,7 +29,7 @@ declare class __sveltets_Render<B extends Base<{
|
|
|
29
29
|
props(): ReturnType<typeof $$render<B>>['props'];
|
|
30
30
|
events(): ReturnType<typeof $$render<B>>['events'];
|
|
31
31
|
slots(): ReturnType<typeof $$render<B>>['slots'];
|
|
32
|
-
bindings(): "value" | "checked";
|
|
32
|
+
bindings(): "number" | "value" | "date" | "files" | "checked";
|
|
33
33
|
exports(): {};
|
|
34
34
|
}
|
|
35
35
|
interface $$IsomorphicComponent {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
<Field.Label>First Name</Field.Label>
|
|
45
45
|
<Input.Root>
|
|
46
46
|
<Field.Control
|
|
47
|
-
base={Input.
|
|
47
|
+
base={Input.Control}
|
|
48
48
|
placeholder="Enter your first name"
|
|
49
49
|
onblur={() => {
|
|
50
50
|
const results = field?.state.validate();
|
|
@@ -65,14 +65,14 @@
|
|
|
65
65
|
<Field.Root name="last name" schema={personSchema.shape.lastName}>
|
|
66
66
|
<Field.Label>Last Name</Field.Label>
|
|
67
67
|
<Input.Root>
|
|
68
|
-
<Field.Control base={Input.
|
|
68
|
+
<Field.Control base={Input.Control} placeholder="Enter your last name" />
|
|
69
69
|
</Input.Root>
|
|
70
70
|
</Field.Root>
|
|
71
71
|
</div>
|
|
72
72
|
|
|
73
73
|
<div class="flex flex-col">
|
|
74
74
|
<Field.Root name="is admin" schema={personSchema.shape.isAdmin}>
|
|
75
|
-
<Field.Label>Is Admin
|
|
75
|
+
<Field.Label>Is Admin?</Field.Label>
|
|
76
76
|
<Field.Control base={Checkbox} />
|
|
77
77
|
</Field.Root>
|
|
78
78
|
</div>
|
|
@@ -28,6 +28,7 @@ declare function $$render<Src extends Component = Component, E extends HtmlEleme
|
|
|
28
28
|
bond?: import("../..").Bond;
|
|
29
29
|
base?: B | undefined;
|
|
30
30
|
preset?: import("../..").ModuleName | (string & {});
|
|
31
|
+
variants?: import("../..").VariantDefinition<any> | ((bond: import("../..").Bond, variantProps: Record<string, any>) => Record<string, any>);
|
|
31
32
|
} & HTMLAttributes<HTMLDivElement>;
|
|
32
33
|
exports: {};
|
|
33
34
|
bindings: "";
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { default as Root } from './input-root.svelte';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated use Input.Control instead
|
|
4
|
+
*/
|
|
5
|
+
export { default as Value } from './input-control.svelte';
|
|
6
|
+
export { default as Control } from './input-control.svelte';
|
|
3
7
|
export { default as Icon } from './input-icon.svelte';
|
|
4
8
|
export { default as Placeholder } from './input-placeholder.svelte';
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { default as Root } from './input-root.svelte';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated use Input.Control instead
|
|
4
|
+
*/
|
|
5
|
+
export { default as Value } from './input-control.svelte';
|
|
6
|
+
export { default as Control } from './input-control.svelte';
|
|
3
7
|
export { default as Icon } from './input-icon.svelte';
|
|
4
8
|
export { default as Placeholder } from './input-placeholder.svelte';
|
|
@@ -1,27 +1,15 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
2
|
export type InputPortals = 'input.l0' | 'input.l1' | 'input.l2' | 'input.l3';
|
|
3
|
-
|
|
4
|
-
export type InputProps = {
|
|
5
|
-
value?: ClassValue;
|
|
6
|
-
files?: File[];
|
|
7
|
-
date?: Date | null;
|
|
8
|
-
number?: number;
|
|
9
|
-
checked?: boolean;
|
|
10
|
-
class?: string;
|
|
11
|
-
type?: HTMLInputTypeAttribute | null;
|
|
12
|
-
preset?: PresetModuleName | (string & {});
|
|
13
|
-
children?: Snippet<[]>;
|
|
14
|
-
};
|
|
15
3
|
</script>
|
|
16
4
|
|
|
17
|
-
<script>
|
|
18
|
-
import type { Snippet } from 'svelte';
|
|
19
|
-
import type { HTMLInputTypeAttribute } from 'svelte/elements';
|
|
5
|
+
<script lang="ts" generics="B extends Base = Base">
|
|
20
6
|
import { on } from '../../attachments/event.svelte';
|
|
21
7
|
import { getPreset } from '../../context';
|
|
22
|
-
import { cn, toClassValue
|
|
8
|
+
import { cn, toClassValue } from '../../utils';
|
|
23
9
|
import type { PresetModuleName } from '../../context/preset.svelte';
|
|
10
|
+
import type { Base } from '../atom';
|
|
24
11
|
import { InputBond } from './bond.svelte';
|
|
12
|
+
import type { InputControlProps } from './types';
|
|
25
13
|
|
|
26
14
|
const bond = InputBond.get();
|
|
27
15
|
|
|
@@ -33,11 +21,11 @@
|
|
|
33
21
|
checked = $bindable(),
|
|
34
22
|
class: klass = '',
|
|
35
23
|
type = 'text',
|
|
36
|
-
preset: presetKey = 'input.
|
|
24
|
+
preset: presetKey = 'input.control',
|
|
37
25
|
onchange = undefined,
|
|
38
26
|
oninput = undefined,
|
|
39
27
|
...restProps
|
|
40
|
-
}:
|
|
28
|
+
}: InputControlProps<B> = $props();
|
|
41
29
|
|
|
42
30
|
const preset = getPreset(presetKey as PresetModuleName)?.apply(bond, [bond]);
|
|
43
31
|
|
|
@@ -81,10 +69,15 @@
|
|
|
81
69
|
event: ev
|
|
82
70
|
});
|
|
83
71
|
}
|
|
72
|
+
|
|
73
|
+
function toFileList(files: File[]) {
|
|
74
|
+
const dataTransfer = new DataTransfer();
|
|
75
|
+
files.forEach((file) => dataTransfer.items.add(file));
|
|
76
|
+
return dataTransfer.files;
|
|
77
|
+
}
|
|
84
78
|
</script>
|
|
85
79
|
|
|
86
80
|
<input
|
|
87
|
-
{type}
|
|
88
81
|
bind:value={
|
|
89
82
|
() => value,
|
|
90
83
|
(v) => {
|
|
@@ -95,10 +88,11 @@
|
|
|
95
88
|
}
|
|
96
89
|
}
|
|
97
90
|
class={cn(
|
|
98
|
-
'h-full w-full flex-1 bg-transparent px-2 leading-1 outline-none',
|
|
91
|
+
'text-foreground placeholder:text-muted-foreground h-full w-full flex-1 bg-transparent px-2 leading-1 outline-none',
|
|
99
92
|
preset?.class,
|
|
100
93
|
toClassValue(klass, bond)
|
|
101
94
|
)}
|
|
95
|
+
type={type ?? 'text'}
|
|
102
96
|
onchange={handleChange}
|
|
103
97
|
oninput={handleInput}
|
|
104
98
|
{...valueProps}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type InputPortals = 'input.l0' | 'input.l1' | 'input.l2' | 'input.l3';
|
|
2
|
+
import type { Base } from '../atom';
|
|
3
|
+
import type { InputControlProps } from './types';
|
|
4
|
+
declare function $$render<B extends Base = Base>(): {
|
|
5
|
+
props: InputControlProps<B>;
|
|
6
|
+
exports: {};
|
|
7
|
+
bindings: "number" | "value" | "date" | "files" | "checked";
|
|
8
|
+
slots: {};
|
|
9
|
+
events: {};
|
|
10
|
+
};
|
|
11
|
+
declare class __sveltets_Render<B extends Base = Base> {
|
|
12
|
+
props(): ReturnType<typeof $$render<B>>['props'];
|
|
13
|
+
events(): ReturnType<typeof $$render<B>>['events'];
|
|
14
|
+
slots(): ReturnType<typeof $$render<B>>['slots'];
|
|
15
|
+
bindings(): "number" | "value" | "date" | "files" | "checked";
|
|
16
|
+
exports(): {};
|
|
17
|
+
}
|
|
18
|
+
interface $$IsomorphicComponent {
|
|
19
|
+
new <B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<B>['props']>, ReturnType<__sveltets_Render<B>['events']>, ReturnType<__sveltets_Render<B>['slots']>> & {
|
|
20
|
+
$$bindings?: ReturnType<__sveltets_Render<B>['bindings']>;
|
|
21
|
+
} & ReturnType<__sveltets_Render<B>['exports']>;
|
|
22
|
+
<B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<B>['props']> & {}): ReturnType<__sveltets_Render<B>['exports']>;
|
|
23
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
24
|
+
}
|
|
25
|
+
declare const InputControl: $$IsomorphicComponent;
|
|
26
|
+
type InputControl<B extends Base = Base> = InstanceType<typeof InputControl<B>>;
|
|
27
|
+
export default InputControl;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<Icon
|
|
8
8
|
preset="input.icon"
|
|
9
9
|
class={[
|
|
10
|
-
'flex aspect-square h-full items-center justify-center bg-transparent text-sm leading-0',
|
|
10
|
+
'border-border flex aspect-square h-full items-center justify-center bg-transparent text-sm leading-0',
|
|
11
11
|
'$preset',
|
|
12
12
|
klass
|
|
13
13
|
]}
|
|
@@ -34,8 +34,6 @@
|
|
|
34
34
|
return !bond?.state.props.files?.length;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
console.log(!bond?.state.props.value);
|
|
38
|
-
|
|
39
37
|
return !bond?.state.props.value;
|
|
40
38
|
});
|
|
41
39
|
</script>
|
|
@@ -44,7 +42,7 @@
|
|
|
44
42
|
<HtmlAtom
|
|
45
43
|
preset="input.placeholder"
|
|
46
44
|
class={[
|
|
47
|
-
'pointer-events-none absolute inset-0 flex h-full w-full items-center px-1 leading-1 outline-none',
|
|
45
|
+
'text-muted-foreground pointer-events-none absolute inset-0 flex h-full w-full items-center px-1 leading-1 outline-none',
|
|
48
46
|
'$preset',
|
|
49
47
|
klass
|
|
50
48
|
]}
|
|
@@ -17,6 +17,7 @@ declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B exten
|
|
|
17
17
|
bond?: import("../..").Bond;
|
|
18
18
|
base?: B | undefined;
|
|
19
19
|
preset?: import("../..").ModuleName | (string & {});
|
|
20
|
+
variants?: import("../..").VariantDefinition<any> | ((bond: import("../..").Bond, variantProps: Record<string, any>) => Record<string, any>);
|
|
20
21
|
} & HTMLAttributes<ElementType<E>>;
|
|
21
22
|
exports: {};
|
|
22
23
|
bindings: "";
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
2
|
import { InputBond, InputState, type InputStateProps } from './bond.svelte';
|
|
4
|
-
import { defineProperty, defineState
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
type ElementType,
|
|
8
|
-
type HtmlAtomProps,
|
|
9
|
-
type Base
|
|
10
|
-
} from '../atom';
|
|
11
|
-
|
|
12
|
-
type Element = ElementType<E>;
|
|
3
|
+
import { defineProperty, defineState } from '../../utils';
|
|
4
|
+
import { HtmlAtom, type Base } from '../atom';
|
|
5
|
+
import type { InputRootProps } from './types';
|
|
13
6
|
|
|
14
7
|
let {
|
|
15
8
|
class: klass = '',
|
|
@@ -20,7 +13,7 @@
|
|
|
20
13
|
children = undefined,
|
|
21
14
|
factory = _factory,
|
|
22
15
|
...restProps
|
|
23
|
-
}:
|
|
16
|
+
}: InputRootProps<E, B> = $props();
|
|
24
17
|
|
|
25
18
|
const bondProps = defineState<InputStateProps>([
|
|
26
19
|
defineProperty(
|
|
@@ -68,7 +61,7 @@
|
|
|
68
61
|
<HtmlAtom
|
|
69
62
|
{preset}
|
|
70
63
|
class={[
|
|
71
|
-
'border-border text-foreground bg-input relative flex h-10 items-center overflow-hidden rounded-md border',
|
|
64
|
+
'border-border text-foreground bg-input relative flex h-10 w-auto items-center overflow-hidden rounded-md border',
|
|
72
65
|
'$preset',
|
|
73
66
|
klass
|
|
74
67
|
]}
|
|
@@ -1,24 +1,8 @@
|
|
|
1
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
1
|
import { InputBond } from './bond.svelte';
|
|
3
|
-
import { type
|
|
2
|
+
import { type Base } from '../atom';
|
|
3
|
+
import type { InputRootProps } from './types';
|
|
4
4
|
declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
|
|
5
|
-
props:
|
|
6
|
-
[key: string]: unknown;
|
|
7
|
-
class?: import("../../utils").ClassValue | import("../../utils").ClassValue[];
|
|
8
|
-
as?: (string & {}) | E | undefined;
|
|
9
|
-
global?: boolean;
|
|
10
|
-
initial?: import("..").NodeFunction<E> | undefined;
|
|
11
|
-
enter?: import("..").TransitionFunction<E> | undefined;
|
|
12
|
-
exit?: import("..").TransitionFunction<E> | undefined;
|
|
13
|
-
animate?: import("..").NodeFunction<E> | undefined;
|
|
14
|
-
onmount?: import("..").NodeFunction<E> | undefined;
|
|
15
|
-
ondestroy?: import("..").NodeFunction<E> | undefined;
|
|
16
|
-
children?: import("svelte").Snippet;
|
|
17
|
-
} & {
|
|
18
|
-
bond?: import("../..").Bond;
|
|
19
|
-
base?: B | undefined;
|
|
20
|
-
preset?: import("../..").ModuleName | (string & {});
|
|
21
|
-
} & HTMLAttributes<ElementType<E>>;
|
|
5
|
+
props: InputRootProps<E, B>;
|
|
22
6
|
exports: {
|
|
23
7
|
getBond: () => InputBond;
|
|
24
8
|
};
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
<Label for="price-input">Price</Label>
|
|
27
27
|
<AInput.Root>
|
|
28
28
|
<AInput.Icon class="text-foreground box-content px-0">$</AInput.Icon>
|
|
29
|
-
<AInput.
|
|
29
|
+
<AInput.Control id="price-input" class="border-border box-content border-x px-2 py-2">
|
|
30
30
|
<!-- -->
|
|
31
|
-
</AInput.
|
|
31
|
+
</AInput.Control>
|
|
32
32
|
<AInput.Icon class="text-foreground box-content px-2">.00</AInput.Icon>
|
|
33
33
|
|
|
34
34
|
<AInput.Placeholder class="text-foreground/20 pl-2">Hello World</AInput.Placeholder>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { HTMLAttributes, HTMLInputTypeAttribute } from 'svelte/elements';
|
|
2
|
+
import type { Base, ElementType, HtmlAtomProps } from '../atom';
|
|
3
|
+
import type { Snippet } from 'svelte';
|
|
4
|
+
import type { Override } from '../../types';
|
|
5
|
+
export type InputRootProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = HtmlAtomProps<E, B> & HTMLAttributes<ElementType<E>> & {
|
|
6
|
+
value?: string | number | string[] | null;
|
|
7
|
+
checked?: boolean;
|
|
8
|
+
files?: File[] | null;
|
|
9
|
+
children?: Snippet<[]>;
|
|
10
|
+
};
|
|
11
|
+
type InputControlBaseProps = {
|
|
12
|
+
value?: any;
|
|
13
|
+
files?: File[];
|
|
14
|
+
date?: Date | null;
|
|
15
|
+
number?: number;
|
|
16
|
+
checked?: boolean;
|
|
17
|
+
class?: string;
|
|
18
|
+
type?: HTMLInputTypeAttribute | null;
|
|
19
|
+
children?: Snippet<[]>;
|
|
20
|
+
};
|
|
21
|
+
export type InputControlProps<B extends Base = Base> = HtmlAtomProps<'input', B> & Override<HTMLAttributes<HTMLInputElement>, InputControlBaseProps>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -22,6 +22,7 @@ declare function $$render<E extends keyof HTMLElementTagNameMap = 'label', B ext
|
|
|
22
22
|
bond?: import("../..").Bond;
|
|
23
23
|
base?: B | undefined;
|
|
24
24
|
preset?: import("../..").ModuleName | (string & {});
|
|
25
|
+
variants?: import("../..").VariantDefinition<any> | ((bond: import("../..").Bond, variantProps: Record<string, any>) => Record<string, any>);
|
|
25
26
|
} & {
|
|
26
27
|
for?: string | null;
|
|
27
28
|
children?: Snippet<[]>;
|
|
@@ -17,6 +17,7 @@ declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B exten
|
|
|
17
17
|
bond?: import("../..").Bond;
|
|
18
18
|
base?: B | undefined;
|
|
19
19
|
preset?: import("../..").ModuleName | (string & {});
|
|
20
|
+
variants?: import("../..").VariantDefinition<any> | ((bond: import("../..").Bond, variantProps: Record<string, any>) => Record<string, any>);
|
|
20
21
|
} & HTMLAttributes<ElementType<E>>;
|
|
21
22
|
exports: {};
|
|
22
23
|
bindings: "";
|
|
@@ -17,6 +17,7 @@ declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B exten
|
|
|
17
17
|
bond?: import("../..").Bond;
|
|
18
18
|
base?: B | undefined;
|
|
19
19
|
preset?: import("../..").ModuleName | (string & {});
|
|
20
|
+
variants?: import("../../utils").VariantDefinition<any> | ((bond: import("../..").Bond, variantProps: Record<string, any>) => Record<string, any>);
|
|
20
21
|
} & HTMLAttributes<ElementType<E>>;
|
|
21
22
|
exports: {
|
|
22
23
|
getBond: () => any;
|
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
let { class: klass = '', as = 'ul' as T, children = undefined, ...restProps } = $props();
|
|
5
5
|
</script>
|
|
6
6
|
|
|
7
|
-
<HtmlAtom
|
|
7
|
+
<HtmlAtom
|
|
8
|
+
{as}
|
|
9
|
+
preset="list.root"
|
|
10
|
+
class={['border-border flex flex-col', '$preset', klass]}
|
|
11
|
+
{...restProps}
|
|
12
|
+
>
|
|
8
13
|
{@render children?.()}
|
|
9
14
|
</HtmlAtom>
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
{base}
|
|
27
27
|
{bond}
|
|
28
28
|
preset="menu.list"
|
|
29
|
-
class={['bg-background overflow-hidden p-0', '$preset', klass]}
|
|
29
|
+
class={['bg-background border-border overflow-hidden p-0', '$preset', klass]}
|
|
30
30
|
onmount={onmount?.bind(bond.state)}
|
|
31
31
|
ondestroy={ondestroy?.bind(bond.state)}
|
|
32
32
|
enter={enter?.bind(bond.state)}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ComputePositionReturn, type Placement } from '@floating-ui/dom';
|
|
2
2
|
import { Bond, BondState, type BondStateProps } from '../../shared/bond.svelte.js';
|
|
3
|
+
import type { PortalBond } from '../portal';
|
|
3
4
|
export type PopoverParams = {
|
|
4
5
|
apply?: (node: HTMLElement, params: {
|
|
5
6
|
x: number;
|
|
@@ -17,6 +18,7 @@ export type PopoverStateProps<T extends Record<string, unknown> = Record<string,
|
|
|
17
18
|
placements: Placement[];
|
|
18
19
|
placement: Placement | undefined;
|
|
19
20
|
offset: number;
|
|
21
|
+
portal?: string | PortalBond;
|
|
20
22
|
extend: T;
|
|
21
23
|
};
|
|
22
24
|
export type TriggerParams = {
|
|
@@ -168,7 +168,7 @@ function popover(bond) {
|
|
|
168
168
|
if (!bond.elements.trigger) {
|
|
169
169
|
return;
|
|
170
170
|
}
|
|
171
|
-
|
|
171
|
+
bond.elements.content.style.minWidth = bond.elements.trigger.clientWidth + 'px';
|
|
172
172
|
const middleware = [];
|
|
173
173
|
if (bond.elements.arrow) {
|
|
174
174
|
middleware.push(arrow({ element: bond.elements.arrow }));
|