@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.
Files changed (177) hide show
  1. package/dist/components/accordion/accordion-root.svelte +1 -1
  2. package/dist/components/accordion/accordion-root.svelte.d.ts +2 -2
  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-actions.svelte.d.ts +1 -0
  9. package/dist/components/alert/alert-close-button.svelte +1 -1
  10. package/dist/components/alert/alert-close-button.svelte.d.ts +1 -0
  11. package/dist/components/alert/alert-content.svelte +1 -1
  12. package/dist/components/alert/alert-content.svelte.d.ts +1 -0
  13. package/dist/components/alert/alert-description.svelte +1 -1
  14. package/dist/components/alert/alert-icon.svelte +1 -1
  15. package/dist/components/alert/alert-root.svelte +1 -1
  16. package/dist/components/alert/alert-title.svelte +1 -1
  17. package/dist/components/atom/html-atom.svelte +147 -16
  18. package/dist/components/atom/html-atom.svelte.d.ts +4 -2
  19. package/dist/components/atom/types.d.ts +7 -0
  20. package/dist/components/badge/badge.svelte +1 -1
  21. package/dist/components/breadcrumb/breadcrumb-item.svelte +1 -1
  22. package/dist/components/breadcrumb/breadcrumb-root.svelte +1 -1
  23. package/dist/components/breadcrumb/breadcrumb-separator.svelte +1 -1
  24. package/dist/components/button/button.stories.svelte +41 -1
  25. package/dist/components/button/button.stories.svelte.d.ts +6 -14
  26. package/dist/components/button/button.svelte +1 -1
  27. package/dist/components/button/button.svelte.d.ts +4 -1
  28. package/dist/components/button/types.d.ts +1 -1
  29. package/dist/components/card/card-body.svelte +1 -1
  30. package/dist/components/card/card-description.svelte +1 -1
  31. package/dist/components/card/card-footer.svelte +1 -1
  32. package/dist/components/card/card-header.svelte +1 -1
  33. package/dist/components/card/card-media.svelte +1 -1
  34. package/dist/components/card/card-subtitle.svelte +1 -1
  35. package/dist/components/card/card-title.svelte +5 -1
  36. package/dist/components/checkbox/checkbox.svelte +39 -28
  37. package/dist/components/checkbox/checkbox.svelte.d.ts +1 -1
  38. package/dist/components/collapsible/collapsible-body.svelte +1 -1
  39. package/dist/components/collapsible/collapsible-header.svelte +1 -1
  40. package/dist/components/collapsible/collapsible-indicator.svelte +1 -1
  41. package/dist/components/collapsible/collapsible-root.svelte +1 -1
  42. package/dist/components/combobox/atoms.d.ts +5 -1
  43. package/dist/components/combobox/atoms.js +5 -1
  44. package/dist/components/combobox/{combobox-input.svelte → combobox-control.svelte} +3 -3
  45. package/dist/components/combobox/{combobox-input.svelte.d.ts → combobox-control.svelte.d.ts} +3 -3
  46. package/dist/components/combobox/combobox-root.svelte.d.ts +2 -2
  47. package/dist/components/combobox/combobox-trigger.svelte +1 -1
  48. package/dist/components/combobox/compobox-item.svelte +1 -1
  49. package/dist/components/container/container.svelte +1 -1
  50. package/dist/components/datagrid/datagrid-body.svelte +1 -1
  51. package/dist/components/datagrid/datagrid-footer.svelte +1 -1
  52. package/dist/components/datagrid/datagrid-header.svelte +1 -1
  53. package/dist/components/datagrid/datagrid-root.svelte +1 -1
  54. package/dist/components/datagrid/td/datagrid-td.svelte +1 -1
  55. package/dist/components/datagrid/th/datagrid-th-sort-icon.svelte +1 -1
  56. package/dist/components/datagrid/th/datagrid-th.svelte +1 -1
  57. package/dist/components/dialog/dialog-body.svelte +1 -1
  58. package/dist/components/dialog/dialog-close-button.svelte +1 -1
  59. package/dist/components/dialog/dialog-content.svelte +8 -11
  60. package/dist/components/dialog/dialog-description.svelte +1 -1
  61. package/dist/components/dialog/dialog-footer.svelte +1 -1
  62. package/dist/components/dialog/dialog-header.svelte +1 -1
  63. package/dist/components/dialog/dialog-root.svelte +123 -120
  64. package/dist/components/dialog/dialog-root.svelte.d.ts +3 -1
  65. package/dist/components/dialog/dialog-title.svelte +1 -1
  66. package/dist/components/drawer/drawer-backdrop.svelte +1 -1
  67. package/dist/components/drawer/drawer-backdrop.svelte.d.ts +1 -0
  68. package/dist/components/drawer/drawer-body.svelte +1 -1
  69. package/dist/components/drawer/drawer-description.svelte +1 -1
  70. package/dist/components/drawer/drawer-footer.svelte +1 -1
  71. package/dist/components/drawer/drawer-header.svelte +1 -1
  72. package/dist/components/drawer/drawer-root.svelte +118 -113
  73. package/dist/components/drawer/drawer-root.svelte.d.ts +5 -2
  74. package/dist/components/drawer/drawer-title.svelte +1 -1
  75. package/dist/components/dropdown/dropdown-placeholder.svelte +1 -1
  76. package/dist/components/dropdown/dropdown-query.svelte +1 -1
  77. package/dist/components/dropdown/dropdown-trigger.svelte +1 -1
  78. package/dist/components/dropdown/dropdown-value.svelte +1 -3
  79. package/dist/components/dropdown/item/bond.svelte.d.ts +4 -0
  80. package/dist/components/dropdown/item/bond.svelte.js +9 -0
  81. package/dist/components/dropdown/item/dropdown-item.svelte +10 -6
  82. package/dist/components/form/field/bond.svelte.d.ts +8 -0
  83. package/dist/components/form/field/bond.svelte.js +13 -1
  84. package/dist/components/form/field/field-control.svelte +7 -0
  85. package/dist/components/form/field/field-control.svelte.d.ts +2 -2
  86. package/dist/components/form/form.stories.svelte +3 -3
  87. package/dist/components/icon/icon.svelte.d.ts +1 -0
  88. package/dist/components/input/atoms.d.ts +5 -1
  89. package/dist/components/input/atoms.js +5 -1
  90. package/dist/components/input/{input-value.svelte → input-control.svelte} +14 -20
  91. package/dist/components/input/input-control.svelte.d.ts +27 -0
  92. package/dist/components/input/input-icon.svelte +1 -1
  93. package/dist/components/input/input-placeholder.svelte +1 -3
  94. package/dist/components/input/input-placeholder.svelte.d.ts +1 -0
  95. package/dist/components/input/input-root.svelte +5 -12
  96. package/dist/components/input/input-root.svelte.d.ts +3 -19
  97. package/dist/components/input/input.stories.svelte +2 -2
  98. package/dist/components/input/types.d.ts +22 -0
  99. package/dist/components/input/types.js +1 -0
  100. package/dist/components/label/label.svelte.d.ts +1 -0
  101. package/dist/components/layer/layer-inner.svelte.d.ts +1 -0
  102. package/dist/components/layer/layer-root.svelte.d.ts +1 -0
  103. package/dist/components/list/list-group.svelte +1 -1
  104. package/dist/components/list/list-item.svelte +1 -1
  105. package/dist/components/list/list-root.svelte +6 -1
  106. package/dist/components/list/list-title.svelte +1 -1
  107. package/dist/components/menu/menu-list.svelte +1 -1
  108. package/dist/components/popover/bond.svelte.d.ts +2 -0
  109. package/dist/components/popover/bond.svelte.js +1 -1
  110. package/dist/components/popover/popover-arrow.svelte +111 -117
  111. package/dist/components/popover/popover-arrow.svelte.d.ts +2 -2
  112. package/dist/components/popover/popover-content.svelte +139 -147
  113. package/dist/components/popover/popover-content.svelte.d.ts +3 -17
  114. package/dist/components/popover/popover-indicator.svelte +1 -1
  115. package/dist/components/popover/popover-root.svelte +49 -63
  116. package/dist/components/popover/popover-root.svelte.d.ts +1 -15
  117. package/dist/components/popover/popover-trigger.svelte +47 -56
  118. package/dist/components/popover/popover-trigger.svelte.d.ts +2 -8
  119. package/dist/components/popover/types.d.ts +39 -0
  120. package/dist/components/popover/types.js +1 -0
  121. package/dist/components/portal/active-portal.svelte +22 -16
  122. package/dist/components/portal/active-portal.svelte.d.ts +2 -2
  123. package/dist/components/portal/portal-inner.svelte +1 -1
  124. package/dist/components/portal/portal-inner.svelte.d.ts +1 -0
  125. package/dist/components/portal/portal-root.svelte +1 -1
  126. package/dist/components/portal/portal-root.svelte.d.ts +1 -0
  127. package/dist/components/portal/teleport.svelte +55 -49
  128. package/dist/components/portal/teleport.svelte.d.ts +4 -2
  129. package/dist/components/radio/radio-group.stories.svelte +4 -4
  130. package/dist/components/radio/radio.svelte +3 -3
  131. package/dist/components/radio/radio.svelte.d.ts +2 -2
  132. package/dist/components/root/root.css +24 -66
  133. package/dist/components/root/root.svelte +1 -1
  134. package/dist/components/sidebar/sidebar-content.svelte +2 -16
  135. package/dist/components/sidebar/sidebar-content.svelte.d.ts +2 -9
  136. package/dist/components/sidebar/sidebar-root.svelte +4 -23
  137. package/dist/components/sidebar/sidebar-root.svelte.d.ts +2 -13
  138. package/dist/components/sidebar/types.d.ts +19 -0
  139. package/dist/components/sidebar/types.js +1 -0
  140. package/dist/components/stack/stack-item.svelte +5 -1
  141. package/dist/components/stack/stack-root.svelte +5 -1
  142. package/dist/components/stack/stack-root.svelte.d.ts +1 -0
  143. package/dist/components/tabs/tab/tab-body.svelte +1 -1
  144. package/dist/components/tabs/tab/tab-description.svelte +1 -1
  145. package/dist/components/tabs/tab/tab-header.svelte +2 -2
  146. package/dist/components/tabs/tab/tab-root.svelte +6 -1
  147. package/dist/components/tabs/tabs-body.svelte +1 -1
  148. package/dist/components/tabs/tabs-header.svelte +1 -1
  149. package/dist/components/tabs/tabs-root.svelte +1 -1
  150. package/dist/components/textarea/textarea-input.svelte +2 -1
  151. package/dist/components/toast/toast-description.svelte +1 -1
  152. package/dist/components/toast/toast-description.svelte.d.ts +1 -0
  153. package/dist/components/toast/toast-root.svelte +1 -1
  154. package/dist/components/toast/toast-root.svelte.d.ts +1 -0
  155. package/dist/components/toast/toast-title.svelte +1 -1
  156. package/dist/components/toast/toast-title.svelte.d.ts +1 -0
  157. package/dist/components/tree/tree-body.svelte +1 -1
  158. package/dist/components/tree/tree-header.svelte +1 -1
  159. package/dist/components/tree/tree-header.svelte.d.ts +1 -0
  160. package/dist/components/tree/tree-indicator.svelte +1 -1
  161. package/dist/components/tree/tree-root.svelte +1 -1
  162. package/dist/context/preset.svelte.d.ts +4 -1
  163. package/dist/utils/index.d.ts +1 -0
  164. package/dist/utils/index.js +1 -0
  165. package/dist/utils/variant.d.ts +213 -0
  166. package/dist/utils/variant.js +137 -0
  167. package/llm/composition.md +395 -0
  168. package/llm/crafting.md +838 -0
  169. package/llm/motion.md +970 -0
  170. package/llm/philosophy.md +23 -0
  171. package/llm/preset-variant-integration.md +516 -0
  172. package/llm/preset.md +383 -0
  173. package/llm/styling.md +216 -0
  174. package/llm/usage.md +46 -0
  175. package/llm/variants.md +712 -0
  176. package/package.json +2 -1
  177. 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 _onclick(ev: MouseEvent) {
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/10',
84
- bond.state.isSelected && 'bg-accent/10',
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={_onclick}
95
- {...restProps}
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().state;
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.Value}
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.Value} placeholder="Enter your last name" />
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</Field.Label>
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
- export { default as Value } from './input-value.svelte';
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
- export { default as Value } from './input-value.svelte';
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, type ClassValue } from '../../utils';
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.value',
24
+ preset: presetKey = 'input.control',
37
25
  onchange = undefined,
38
26
  oninput = undefined,
39
27
  ...restProps
40
- }: InputProps = $props();
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, 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,24 +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
- } & 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.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 {};
@@ -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;
@@ -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 }));