@svelte-atoms/core 1.0.0-alpha.25 → 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/README.md +645 -645
- package/dist/components/accordion/accordion-root.svelte +1 -1
- 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-close-button.svelte +1 -1
- package/dist/components/alert/alert-content.svelte +1 -1
- 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 +201 -217
- 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 +57 -57
- 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/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-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/datagrid.stories.svelte +75 -75
- 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-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/input/atoms.d.ts +5 -1
- package/dist/components/input/atoms.js +5 -1
- package/dist/components/input/{input-value.svelte → input-control.svelte} +107 -113
- 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 +54 -56
- package/dist/components/input/input-root.svelte +5 -12
- package/dist/components/input/input-root.svelte.d.ts +3 -20
- 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/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 +1 -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-root.svelte +1 -1
- package/dist/components/portal/teleport.svelte +55 -49
- package/dist/components/portal/teleport.svelte.d.ts +3 -2
- package/dist/components/radio/radio-group.stories.svelte +4 -4
- package/dist/components/radio/radio.svelte +3 -3
- 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/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-root.svelte +1 -1
- package/dist/components/toast/toast-title.svelte +1 -1
- package/dist/components/tree/tree-body.svelte +1 -1
- package/dist/components/tree/tree-header.svelte +1 -1
- 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 +1 -1
- package/llm/composition.md +395 -395
- package/llm/crafting.md +838 -838
- package/llm/motion.md +970 -970
- package/llm/philosophy.md +23 -23
- package/llm/preset-variant-integration.md +516 -516
- package/llm/preset.md +383 -383
- package/llm/styling.md +216 -216
- package/llm/usage.md +46 -46
- package/llm/variants.md +712 -712
- package/package.json +437 -437
- package/dist/components/input/input-value.svelte.d.ts +0 -19
|
@@ -1,113 +1,107 @@
|
|
|
1
|
-
<script module lang="ts">
|
|
2
|
-
export type InputPortals = 'input.l0' | 'input.l1' | 'input.l2' | 'input.l3';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
number
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
files = Array.from(node.files || []);
|
|
109
|
-
bond!.state.props.files = files;
|
|
110
|
-
})(node);
|
|
111
|
-
}
|
|
112
|
-
}}
|
|
113
|
-
/>
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
export type InputPortals = 'input.l0' | 'input.l1' | 'input.l2' | 'input.l3';
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script lang="ts" generics="B extends Base = Base">
|
|
6
|
+
import { on } from '../../attachments/event.svelte';
|
|
7
|
+
import { getPreset } from '../../context';
|
|
8
|
+
import { cn, toClassValue } from '../../utils';
|
|
9
|
+
import type { PresetModuleName } from '../../context/preset.svelte';
|
|
10
|
+
import type { Base } from '../atom';
|
|
11
|
+
import { InputBond } from './bond.svelte';
|
|
12
|
+
import type { InputControlProps } from './types';
|
|
13
|
+
|
|
14
|
+
const bond = InputBond.get();
|
|
15
|
+
|
|
16
|
+
let {
|
|
17
|
+
value = $bindable(),
|
|
18
|
+
files = $bindable(),
|
|
19
|
+
date = $bindable(),
|
|
20
|
+
number = $bindable(),
|
|
21
|
+
checked = $bindable(),
|
|
22
|
+
class: klass = '',
|
|
23
|
+
type = 'text',
|
|
24
|
+
preset: presetKey = 'input.control',
|
|
25
|
+
onchange = undefined,
|
|
26
|
+
oninput = undefined,
|
|
27
|
+
...restProps
|
|
28
|
+
}: InputControlProps<B> = $props();
|
|
29
|
+
|
|
30
|
+
const preset = getPreset(presetKey as PresetModuleName)?.apply(bond, [bond]);
|
|
31
|
+
|
|
32
|
+
const valueProps = $derived({
|
|
33
|
+
...(bond?.input?.() ?? {}),
|
|
34
|
+
...restProps
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
function handleChange(ev: CustomEvent) {
|
|
38
|
+
if (!onchange) return;
|
|
39
|
+
|
|
40
|
+
onchange?.(ev, {
|
|
41
|
+
value: value,
|
|
42
|
+
files: files,
|
|
43
|
+
date: date,
|
|
44
|
+
number: number,
|
|
45
|
+
checked: checked,
|
|
46
|
+
event: ev
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function handleInput(ev: InputEvent) {
|
|
51
|
+
if (!oninput) return;
|
|
52
|
+
|
|
53
|
+
const currentTarget = ev.currentTarget as HTMLInputElement;
|
|
54
|
+
|
|
55
|
+
if (type === 'number') {
|
|
56
|
+
number = currentTarget.valueAsNumber;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (type === 'date' || type == 'time' || type === 'datetime-local' || type === 'date-local') {
|
|
60
|
+
date = currentTarget.valueAsDate;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
oninput?.(ev, {
|
|
64
|
+
value: value,
|
|
65
|
+
files: files,
|
|
66
|
+
date: date,
|
|
67
|
+
number: number,
|
|
68
|
+
checked: checked,
|
|
69
|
+
event: ev
|
|
70
|
+
});
|
|
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
|
+
}
|
|
78
|
+
</script>
|
|
79
|
+
|
|
80
|
+
<input
|
|
81
|
+
bind:value={
|
|
82
|
+
() => value,
|
|
83
|
+
(v) => {
|
|
84
|
+
value = v;
|
|
85
|
+
if (bond) {
|
|
86
|
+
bond.state.props.value = v;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
class={cn(
|
|
91
|
+
'text-foreground placeholder:text-muted-foreground h-full w-full flex-1 bg-transparent px-2 leading-1 outline-none',
|
|
92
|
+
preset?.class,
|
|
93
|
+
toClassValue(klass, bond)
|
|
94
|
+
)}
|
|
95
|
+
type={type ?? 'text'}
|
|
96
|
+
onchange={handleChange}
|
|
97
|
+
oninput={handleInput}
|
|
98
|
+
{...valueProps}
|
|
99
|
+
{@attach (node) => {
|
|
100
|
+
if (type === 'file') {
|
|
101
|
+
return on('input', () => {
|
|
102
|
+
files = Array.from(node.files || []);
|
|
103
|
+
bond!.state.props.files = files;
|
|
104
|
+
})(node);
|
|
105
|
+
}
|
|
106
|
+
}}
|
|
107
|
+
/>
|
|
@@ -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
|
]}
|
|
@@ -1,56 +1,54 @@
|
|
|
1
|
-
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
-
import { InputBond } from './bond.svelte';
|
|
4
|
-
import {
|
|
5
|
-
HtmlAtom,
|
|
6
|
-
type ElementType,
|
|
7
|
-
type HtmlAtomProps,
|
|
8
|
-
type Base
|
|
9
|
-
} from '../atom';
|
|
10
|
-
|
|
11
|
-
type Element = ElementType<E>;
|
|
12
|
-
|
|
13
|
-
const bond = InputBond.get();
|
|
14
|
-
|
|
15
|
-
let {
|
|
16
|
-
class: klass = '',
|
|
17
|
-
children = undefined,
|
|
18
|
-
...restProps
|
|
19
|
-
}: HtmlAtomProps<E, B> & HTMLAttributes<Element> = $props();
|
|
20
|
-
|
|
21
|
-
const placeholderProps = $derived({
|
|
22
|
-
...bond?.placeholder(),
|
|
23
|
-
...restProps
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
const shouldShowPlaceholder = $derived.by(() => {
|
|
27
|
-
const type = bond?.elements?.input?.type ?? '';
|
|
28
|
-
|
|
29
|
-
if (['radio', 'checkbox'].includes(type)) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (['files'].includes(type)) {
|
|
34
|
-
return !bond?.state.props.files?.length;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
{
|
|
53
|
-
>
|
|
54
|
-
|
|
55
|
-
</HtmlAtom>
|
|
56
|
-
{/if}
|
|
1
|
+
<script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
import { InputBond } from './bond.svelte';
|
|
4
|
+
import {
|
|
5
|
+
HtmlAtom,
|
|
6
|
+
type ElementType,
|
|
7
|
+
type HtmlAtomProps,
|
|
8
|
+
type Base
|
|
9
|
+
} from '../atom';
|
|
10
|
+
|
|
11
|
+
type Element = ElementType<E>;
|
|
12
|
+
|
|
13
|
+
const bond = InputBond.get();
|
|
14
|
+
|
|
15
|
+
let {
|
|
16
|
+
class: klass = '',
|
|
17
|
+
children = undefined,
|
|
18
|
+
...restProps
|
|
19
|
+
}: HtmlAtomProps<E, B> & HTMLAttributes<Element> = $props();
|
|
20
|
+
|
|
21
|
+
const placeholderProps = $derived({
|
|
22
|
+
...bond?.placeholder(),
|
|
23
|
+
...restProps
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const shouldShowPlaceholder = $derived.by(() => {
|
|
27
|
+
const type = bond?.elements?.input?.type ?? '';
|
|
28
|
+
|
|
29
|
+
if (['radio', 'checkbox'].includes(type)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (['files'].includes(type)) {
|
|
34
|
+
return !bond?.state.props.files?.length;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return !bond?.state.props.value;
|
|
38
|
+
});
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
{#if shouldShowPlaceholder}
|
|
42
|
+
<HtmlAtom
|
|
43
|
+
preset="input.placeholder"
|
|
44
|
+
class={[
|
|
45
|
+
'text-muted-foreground pointer-events-none absolute inset-0 flex h-full w-full items-center px-1 leading-1 outline-none',
|
|
46
|
+
'$preset',
|
|
47
|
+
klass
|
|
48
|
+
]}
|
|
49
|
+
style="left:{bond?.elements?.input?.offsetLeft ?? 0}px"
|
|
50
|
+
{...placeholderProps}
|
|
51
|
+
>
|
|
52
|
+
{@render children?.()}
|
|
53
|
+
</HtmlAtom>
|
|
54
|
+
{/if}
|
|
@@ -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,25 +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
|
-
variants?: import("../../utils").VariantDefinition<any> | ((bond: import("../..").Bond, variantProps: Record<string, any>) => Record<string, any>);
|
|
22
|
-
} & HTMLAttributes<ElementType<E>>;
|
|
5
|
+
props: InputRootProps<E, B>;
|
|
23
6
|
exports: {
|
|
24
7
|
getBond: () => InputBond;
|
|
25
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 {};
|
|
@@ -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 }));
|