@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.
Files changed (152) hide show
  1. package/README.md +645 -645
  2. package/dist/components/accordion/accordion-root.svelte +1 -1
  3. package/dist/components/accordion/item/accordion-item-body.svelte +1 -1
  4. package/dist/components/accordion/item/accordion-item-header.svelte +5 -1
  5. package/dist/components/accordion/item/accordion-item-indicator.svelte +1 -1
  6. package/dist/components/accordion/item/accordion-item-root.svelte +1 -1
  7. package/dist/components/alert/alert-actions.svelte +1 -1
  8. package/dist/components/alert/alert-close-button.svelte +1 -1
  9. package/dist/components/alert/alert-content.svelte +1 -1
  10. package/dist/components/alert/alert-description.svelte +1 -1
  11. package/dist/components/alert/alert-icon.svelte +1 -1
  12. package/dist/components/alert/alert-root.svelte +1 -1
  13. package/dist/components/alert/alert-title.svelte +1 -1
  14. package/dist/components/atom/html-atom.svelte +201 -217
  15. package/dist/components/badge/badge.svelte +1 -1
  16. package/dist/components/breadcrumb/breadcrumb-item.svelte +1 -1
  17. package/dist/components/breadcrumb/breadcrumb-root.svelte +1 -1
  18. package/dist/components/breadcrumb/breadcrumb-separator.svelte +1 -1
  19. package/dist/components/button/button.stories.svelte +57 -57
  20. package/dist/components/button/button.svelte +1 -1
  21. package/dist/components/button/button.svelte.d.ts +4 -1
  22. package/dist/components/button/types.d.ts +1 -1
  23. package/dist/components/card/card-body.svelte +1 -1
  24. package/dist/components/card/card-description.svelte +1 -1
  25. package/dist/components/card/card-footer.svelte +1 -1
  26. package/dist/components/card/card-header.svelte +1 -1
  27. package/dist/components/card/card-media.svelte +1 -1
  28. package/dist/components/card/card-subtitle.svelte +1 -1
  29. package/dist/components/card/card-title.svelte +5 -1
  30. package/dist/components/checkbox/checkbox.svelte +39 -28
  31. package/dist/components/collapsible/collapsible-body.svelte +1 -1
  32. package/dist/components/collapsible/collapsible-header.svelte +1 -1
  33. package/dist/components/collapsible/collapsible-indicator.svelte +1 -1
  34. package/dist/components/collapsible/collapsible-root.svelte +1 -1
  35. package/dist/components/combobox/atoms.d.ts +5 -1
  36. package/dist/components/combobox/atoms.js +5 -1
  37. package/dist/components/combobox/{combobox-input.svelte → combobox-control.svelte} +3 -3
  38. package/dist/components/combobox/{combobox-input.svelte.d.ts → combobox-control.svelte.d.ts} +3 -3
  39. package/dist/components/combobox/combobox-trigger.svelte +1 -1
  40. package/dist/components/combobox/compobox-item.svelte +1 -1
  41. package/dist/components/container/container.svelte +1 -1
  42. package/dist/components/datagrid/datagrid-body.svelte +1 -1
  43. package/dist/components/datagrid/datagrid-footer.svelte +1 -1
  44. package/dist/components/datagrid/datagrid-header.svelte +1 -1
  45. package/dist/components/datagrid/datagrid-root.svelte +1 -1
  46. package/dist/components/datagrid/datagrid.stories.svelte +75 -75
  47. package/dist/components/datagrid/td/datagrid-td.svelte +1 -1
  48. package/dist/components/datagrid/th/datagrid-th-sort-icon.svelte +1 -1
  49. package/dist/components/datagrid/th/datagrid-th.svelte +1 -1
  50. package/dist/components/dialog/dialog-body.svelte +1 -1
  51. package/dist/components/dialog/dialog-close-button.svelte +1 -1
  52. package/dist/components/dialog/dialog-content.svelte +8 -11
  53. package/dist/components/dialog/dialog-description.svelte +1 -1
  54. package/dist/components/dialog/dialog-footer.svelte +1 -1
  55. package/dist/components/dialog/dialog-header.svelte +1 -1
  56. package/dist/components/dialog/dialog-root.svelte +123 -120
  57. package/dist/components/dialog/dialog-root.svelte.d.ts +3 -1
  58. package/dist/components/dialog/dialog-title.svelte +1 -1
  59. package/dist/components/drawer/drawer-backdrop.svelte +1 -1
  60. package/dist/components/drawer/drawer-body.svelte +1 -1
  61. package/dist/components/drawer/drawer-description.svelte +1 -1
  62. package/dist/components/drawer/drawer-footer.svelte +1 -1
  63. package/dist/components/drawer/drawer-header.svelte +1 -1
  64. package/dist/components/drawer/drawer-root.svelte +118 -113
  65. package/dist/components/drawer/drawer-root.svelte.d.ts +5 -2
  66. package/dist/components/drawer/drawer-title.svelte +1 -1
  67. package/dist/components/dropdown/dropdown-placeholder.svelte +1 -1
  68. package/dist/components/dropdown/dropdown-query.svelte +1 -1
  69. package/dist/components/dropdown/dropdown-trigger.svelte +1 -1
  70. package/dist/components/dropdown/dropdown-value.svelte +1 -3
  71. package/dist/components/dropdown/item/bond.svelte.d.ts +4 -0
  72. package/dist/components/dropdown/item/bond.svelte.js +9 -0
  73. package/dist/components/dropdown/item/dropdown-item.svelte +10 -6
  74. package/dist/components/form/field/bond.svelte.d.ts +8 -0
  75. package/dist/components/form/field/bond.svelte.js +13 -1
  76. package/dist/components/form/field/field-control.svelte +7 -0
  77. package/dist/components/form/field/field-control.svelte.d.ts +2 -2
  78. package/dist/components/form/form.stories.svelte +3 -3
  79. package/dist/components/input/atoms.d.ts +5 -1
  80. package/dist/components/input/atoms.js +5 -1
  81. package/dist/components/input/{input-value.svelte → input-control.svelte} +107 -113
  82. package/dist/components/input/input-control.svelte.d.ts +27 -0
  83. package/dist/components/input/input-icon.svelte +1 -1
  84. package/dist/components/input/input-placeholder.svelte +54 -56
  85. package/dist/components/input/input-root.svelte +5 -12
  86. package/dist/components/input/input-root.svelte.d.ts +3 -20
  87. package/dist/components/input/input.stories.svelte +2 -2
  88. package/dist/components/input/types.d.ts +22 -0
  89. package/dist/components/input/types.js +1 -0
  90. package/dist/components/list/list-group.svelte +1 -1
  91. package/dist/components/list/list-item.svelte +1 -1
  92. package/dist/components/list/list-root.svelte +6 -1
  93. package/dist/components/list/list-title.svelte +1 -1
  94. package/dist/components/menu/menu-list.svelte +1 -1
  95. package/dist/components/popover/bond.svelte.d.ts +2 -0
  96. package/dist/components/popover/bond.svelte.js +1 -1
  97. package/dist/components/popover/popover-arrow.svelte +111 -117
  98. package/dist/components/popover/popover-arrow.svelte.d.ts +1 -2
  99. package/dist/components/popover/popover-content.svelte +139 -147
  100. package/dist/components/popover/popover-content.svelte.d.ts +3 -17
  101. package/dist/components/popover/popover-indicator.svelte +1 -1
  102. package/dist/components/popover/popover-root.svelte +49 -63
  103. package/dist/components/popover/popover-root.svelte.d.ts +1 -15
  104. package/dist/components/popover/popover-trigger.svelte +47 -56
  105. package/dist/components/popover/popover-trigger.svelte.d.ts +2 -8
  106. package/dist/components/popover/types.d.ts +39 -0
  107. package/dist/components/popover/types.js +1 -0
  108. package/dist/components/portal/active-portal.svelte +22 -16
  109. package/dist/components/portal/active-portal.svelte.d.ts +2 -2
  110. package/dist/components/portal/portal-inner.svelte +1 -1
  111. package/dist/components/portal/portal-root.svelte +1 -1
  112. package/dist/components/portal/teleport.svelte +55 -49
  113. package/dist/components/portal/teleport.svelte.d.ts +3 -2
  114. package/dist/components/radio/radio-group.stories.svelte +4 -4
  115. package/dist/components/radio/radio.svelte +3 -3
  116. package/dist/components/root/root.css +24 -66
  117. package/dist/components/root/root.svelte +1 -1
  118. package/dist/components/sidebar/sidebar-content.svelte +2 -16
  119. package/dist/components/sidebar/sidebar-content.svelte.d.ts +2 -9
  120. package/dist/components/sidebar/sidebar-root.svelte +4 -23
  121. package/dist/components/sidebar/sidebar-root.svelte.d.ts +2 -13
  122. package/dist/components/sidebar/types.d.ts +19 -0
  123. package/dist/components/sidebar/types.js +1 -0
  124. package/dist/components/stack/stack-item.svelte +5 -1
  125. package/dist/components/stack/stack-root.svelte +5 -1
  126. package/dist/components/tabs/tab/tab-body.svelte +1 -1
  127. package/dist/components/tabs/tab/tab-description.svelte +1 -1
  128. package/dist/components/tabs/tab/tab-header.svelte +2 -2
  129. package/dist/components/tabs/tab/tab-root.svelte +6 -1
  130. package/dist/components/tabs/tabs-body.svelte +1 -1
  131. package/dist/components/tabs/tabs-header.svelte +1 -1
  132. package/dist/components/tabs/tabs-root.svelte +1 -1
  133. package/dist/components/textarea/textarea-input.svelte +2 -1
  134. package/dist/components/toast/toast-description.svelte +1 -1
  135. package/dist/components/toast/toast-root.svelte +1 -1
  136. package/dist/components/toast/toast-title.svelte +1 -1
  137. package/dist/components/tree/tree-body.svelte +1 -1
  138. package/dist/components/tree/tree-header.svelte +1 -1
  139. package/dist/components/tree/tree-indicator.svelte +1 -1
  140. package/dist/components/tree/tree-root.svelte +1 -1
  141. package/dist/context/preset.svelte.d.ts +1 -1
  142. package/llm/composition.md +395 -395
  143. package/llm/crafting.md +838 -838
  144. package/llm/motion.md +970 -970
  145. package/llm/philosophy.md +23 -23
  146. package/llm/preset-variant-integration.md +516 -516
  147. package/llm/preset.md +383 -383
  148. package/llm/styling.md +216 -216
  149. package/llm/usage.md +46 -46
  150. package/llm/variants.md +712 -712
  151. package/package.json +437 -437
  152. 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
- 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
- </script>
16
-
17
- <script>
18
- import type { Snippet } from 'svelte';
19
- import type { HTMLInputTypeAttribute } from 'svelte/elements';
20
- import { on } from '../../attachments/event.svelte';
21
- import { getPreset } from '../../context';
22
- import { cn, toClassValue, type ClassValue } from '../../utils';
23
- import type { PresetModuleName } from '../../context/preset.svelte';
24
- import { InputBond } from './bond.svelte';
25
-
26
- const bond = InputBond.get();
27
-
28
- let {
29
- value = $bindable(),
30
- files = $bindable(),
31
- date = $bindable(),
32
- number = $bindable(),
33
- checked = $bindable(),
34
- class: klass = '',
35
- type = 'text',
36
- preset: presetKey = 'input.value',
37
- onchange = undefined,
38
- oninput = undefined,
39
- ...restProps
40
- }: InputProps = $props();
41
-
42
- const preset = getPreset(presetKey as PresetModuleName)?.apply(bond, [bond]);
43
-
44
- const valueProps = $derived({
45
- ...(bond?.input?.() ?? {}),
46
- ...restProps
47
- });
48
-
49
- function handleChange(ev: CustomEvent) {
50
- if (!onchange) return;
51
-
52
- onchange?.(ev, {
53
- value: value,
54
- files: files,
55
- date: date,
56
- number: number,
57
- checked: checked,
58
- event: ev
59
- });
60
- }
61
-
62
- function handleInput(ev: InputEvent) {
63
- if (!oninput) return;
64
-
65
- const currentTarget = ev.currentTarget as HTMLInputElement;
66
-
67
- if (type === 'number') {
68
- number = currentTarget.valueAsNumber;
69
- }
70
-
71
- if (type === 'date' || type == 'time' || type === 'datetime-local' || type === 'date-local') {
72
- date = currentTarget.valueAsDate;
73
- }
74
-
75
- oninput?.(ev, {
76
- value: value,
77
- files: files,
78
- date: date,
79
- number: number,
80
- checked: checked,
81
- event: ev
82
- });
83
- }
84
- </script>
85
-
86
- <input
87
- {type}
88
- bind:value={
89
- () => value,
90
- (v) => {
91
- value = v;
92
- if (bond) {
93
- bond.state.props.value = v;
94
- }
95
- }
96
- }
97
- class={cn(
98
- 'h-full w-full flex-1 bg-transparent px-2 leading-1 outline-none',
99
- preset?.class,
100
- toClassValue(klass, bond)
101
- )}
102
- onchange={handleChange}
103
- oninput={handleInput}
104
- {...valueProps}
105
- {@attach (node) => {
106
- if (type === 'file') {
107
- return on('input', () => {
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
- console.log(!bond?.state.props.value);
38
-
39
- return !bond?.state.props.value;
40
- });
41
- </script>
42
-
43
- {#if shouldShowPlaceholder}
44
- <HtmlAtom
45
- preset="input.placeholder"
46
- class={[
47
- 'pointer-events-none absolute inset-0 flex h-full w-full items-center px-1 leading-1 outline-none',
48
- '$preset',
49
- klass
50
- ]}
51
- style="left:{bond?.elements?.input?.offsetLeft ?? 0}px"
52
- {...placeholderProps}
53
- >
54
- {@render children?.()}
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, toClassValue } from '../../utils';
5
- import {
6
- HtmlAtom,
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
- }: HtmlAtomProps<E, B> & HTMLAttributes<Element> = $props();
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 ElementType, type Base } from '../atom';
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: Record<string, unknown> & {
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.Value id="price-input" class="border-border box-content border-x px-2 py-2">
29
+ <AInput.Control id="price-input" class="border-border box-content border-x px-2 py-2">
30
30
  <!-- -->
31
- </AInput.Value>
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 {};
@@ -8,7 +8,7 @@
8
8
  <HtmlAtom
9
9
  preset="list.group"
10
10
  class={[
11
- 'rounded-b-inherit rounded-t-inherit flex flex-col',
11
+ 'rounded-b-inherit rounded-t-inherit border-border flex flex-col',
12
12
  '$preset',
13
13
  toClassValue.apply(null, [klass, {}])
14
14
  ]}
@@ -13,7 +13,7 @@
13
13
  <HtmlAtom
14
14
  {as}
15
15
  preset={presetKey}
16
- class={['flex w-full gap-2 px-4 py-1', '$preset', klass]}
16
+ class={['border-border flex w-full gap-2 px-4 py-1', '$preset', klass]}
17
17
  {...restProps}
18
18
  >
19
19
  {@render children?.()}
@@ -4,6 +4,11 @@
4
4
  let { class: klass = '', as = 'ul' as T, children = undefined, ...restProps } = $props();
5
5
  </script>
6
6
 
7
- <HtmlAtom {as} preset="list.root" class={['flex flex-col', '$preset', klass]} {...restProps}>
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>
@@ -7,7 +7,7 @@
7
7
  <HtmlAtom
8
8
  {as}
9
9
  preset="list.title"
10
- class={['mb-1 flex w-full px-6 py-1 font-medium', '$preset', klass]}
10
+ class={['border-border mb-1 flex w-full px-6 py-1 font-medium', '$preset', klass]}
11
11
  {...restProps}
12
12
  >
13
13
  {@render children?.()}
@@ -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
- node.style.minWidth = bond.elements.trigger.clientWidth + 'px';
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 }));