@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,118 @@
1
- <script module lang="ts">
2
- import type { Factory } from '../../types';
3
-
4
- export type SlideoverRootProps<
5
- E extends keyof HTMLElementTagNameMap,
6
- B extends Base = Base
7
- > = Override<
8
- HtmlAtomProps<E, B>,
9
- {
10
- children?: Snippet<[{ slideover: DrawerBond }]>;
11
- initial?: (node: HTMLElement, bond: DrawerBond) => void;
12
- enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
13
- exit?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
14
- }
15
- > & {
16
- open?: boolean;
17
- disabled?: boolean;
18
- onclose?: (event: Event, bond: DrawerBond) => void;
19
- factory?: Factory<DrawerBond>;
20
- };
21
- </script>
22
-
23
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap='dialog', B extends Base = Base">
24
- import type { Snippet } from 'svelte';
25
- import type { HTMLAttributes } from 'svelte/elements';
26
- import type { Override } from '../../types';
27
- import { defineProperty, defineState } from '../../utils';
28
- import { type TransitionFunction } from '../element';
29
- import Teleport from '../portal/teleport.svelte';
30
- import type { HtmlAtomProps, Base } from '../atom';
31
- import { DrawerBond, DrawerBondState, type DrawerBondProps } from './bond.svelte';
32
-
33
- type Element = HTMLElementTagNameMap[E];
34
-
35
- let {
36
- open = $bindable(false),
37
- children = undefined,
38
- class: klass = '',
39
- as = 'dialog',
40
- disabled = false,
41
- onclose = undefined,
42
- onmount = undefined,
43
- ondestroy = undefined,
44
- animate = undefined,
45
- enter = undefined,
46
- exit = undefined,
47
- initial = undefined,
48
- factory = _factory,
49
- ...restProps
50
- }: SlideoverRootProps<E, B> & HTMLAttributes<Element> = $props();
51
-
52
- const bondProps = defineState<DrawerBondProps>(
53
- [
54
- defineProperty(
55
- 'open',
56
- () => open,
57
- (v) => {
58
- open = v;
59
- }
60
- ),
61
- defineProperty('disabled', () => disabled)
62
- ],
63
- () => ({})
64
- );
65
- const bond = _factory(bondProps).share();
66
-
67
- const rootProps = $derived({
68
- ...bond?.root(),
69
- ...restProps
70
- });
71
-
72
- $effect(() => {
73
- if (bond.elements.root instanceof HTMLDialogElement) {
74
- if (open) {
75
- bond.elements.root?.show?.();
76
- }
77
- }
78
- });
79
-
80
- function _factory(props: typeof bondProps) {
81
- const bondState = new DrawerBondState(() => props);
82
- const bond = new DrawerBond(bondState);
83
-
84
- return bond;
85
- }
86
-
87
- export function getBond() {
88
- return bond;
89
- }
90
- </script>
91
-
92
- <Teleport
93
- {as}
94
- {bond}
95
- portal="root.l1"
96
- preset="drawer"
97
- class={[
98
- 'pointer-events-auto h-full w-full overflow-hidden bg-transparent',
99
- !open && 'pointer-events-none',
100
- '$preset',
101
- klass
102
- ]}
103
- closeby="none"
104
- onmount={onmount?.bind(bond.state)}
105
- ondestroy={ondestroy?.bind(bond.state)}
106
- enter={enter?.bind(bond.state)}
107
- exit={exit?.bind(bond.state)}
108
- initial={initial?.bind(bond.state)}
109
- animate={animate?.bind(bond.state)}
110
- {...rootProps}
111
- >
112
- {@render children?.({ drawer: bond })}
113
- </Teleport>
1
+ <script module lang="ts">
2
+ import type { Factory } from '../../types';
3
+
4
+ export type SlideoverRootProps<
5
+ E extends keyof HTMLElementTagNameMap,
6
+ B extends Base = Base
7
+ > = Override<
8
+ HtmlAtomProps<E, B>,
9
+ {
10
+ children?: Snippet<[{ drawer: DrawerBond }]>;
11
+ initial?: (node: HTMLElement, bond: DrawerBond) => void;
12
+ enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
13
+ exit?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
14
+ }
15
+ > & {
16
+ open?: boolean;
17
+ disabled?: boolean;
18
+ portal?: string | PortalBond;
19
+ onclose?: (event: Event, bond: DrawerBond) => void;
20
+ factory?: Factory<DrawerBond>;
21
+ };
22
+ </script>
23
+
24
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap='dialog', B extends Base = Base">
25
+ import type { Snippet } from 'svelte';
26
+ import type { HTMLAttributes } from 'svelte/elements';
27
+ import type { Override } from '../../types';
28
+ import { defineProperty, defineState } from '../../utils';
29
+ import { type TransitionFunction } from '../element';
30
+ import Teleport from '../portal/teleport.svelte';
31
+ import type { HtmlAtomProps, Base } from '../atom';
32
+ import { DrawerBond, DrawerBondState, type DrawerBondProps } from './bond.svelte';
33
+ import { ActivePortal, type PortalBond } from '../portal';
34
+
35
+ type Element = HTMLElementTagNameMap[E];
36
+
37
+ let {
38
+ open = $bindable(false),
39
+ children = undefined,
40
+ class: klass = '',
41
+ as = 'dialog',
42
+ disabled = false,
43
+ portal = undefined,
44
+ onclose = undefined,
45
+ onmount = undefined,
46
+ ondestroy = undefined,
47
+ animate = undefined,
48
+ enter = undefined,
49
+ exit = undefined,
50
+ initial = undefined,
51
+ factory = _factory,
52
+ ...restProps
53
+ }: SlideoverRootProps<E, B> & HTMLAttributes<Element> = $props();
54
+
55
+ const bondProps = defineState<DrawerBondProps>(
56
+ [
57
+ defineProperty(
58
+ 'open',
59
+ () => open,
60
+ (v) => {
61
+ open = v;
62
+ }
63
+ ),
64
+ defineProperty('disabled', () => disabled)
65
+ ],
66
+ () => ({})
67
+ );
68
+ const bond = _factory(bondProps).share();
69
+
70
+ const rootProps = $derived({
71
+ ...bond?.root(),
72
+ ...restProps
73
+ });
74
+
75
+ $effect(() => {
76
+ if (bond.elements.root instanceof HTMLDialogElement) {
77
+ if (open) {
78
+ bond.elements.root?.show?.();
79
+ }
80
+ }
81
+ });
82
+
83
+ function _factory(props: typeof bondProps) {
84
+ const bondState = new DrawerBondState(() => props);
85
+ const bond = new DrawerBond(bondState);
86
+
87
+ return bond;
88
+ }
89
+
90
+ export function getBond() {
91
+ return bond;
92
+ }
93
+ </script>
94
+
95
+ <Teleport
96
+ {as}
97
+ {bond}
98
+ portal={portal ?? 'root.l1'}
99
+ preset="drawer"
100
+ class={[
101
+ 'border-border pointer-events-auto h-full w-full overflow-hidden bg-transparent',
102
+ !open && 'pointer-events-none',
103
+ '$preset',
104
+ klass
105
+ ]}
106
+ closeby="none"
107
+ onmount={onmount?.bind(bond.state)}
108
+ ondestroy={ondestroy?.bind(bond.state)}
109
+ enter={enter?.bind(bond.state)}
110
+ exit={exit?.bind(bond.state)}
111
+ initial={initial?.bind(bond.state)}
112
+ animate={animate?.bind(bond.state)}
113
+ {...rootProps}
114
+ >
115
+ <ActivePortal portal={portal ?? 'root.l1'}>
116
+ {@render children?.({ drawer: bond })}
117
+ </ActivePortal>
118
+ </Teleport>
@@ -1,7 +1,7 @@
1
1
  import type { Factory } from '../../types';
2
2
  export type SlideoverRootProps<E extends keyof HTMLElementTagNameMap, B extends Base = Base> = Override<HtmlAtomProps<E, B>, {
3
3
  children?: Snippet<[{
4
- slideover: DrawerBond;
4
+ drawer: DrawerBond;
5
5
  }]>;
6
6
  initial?: (node: HTMLElement, bond: DrawerBond) => void;
7
7
  enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
@@ -9,6 +9,7 @@ export type SlideoverRootProps<E extends keyof HTMLElementTagNameMap, B extends
9
9
  }> & {
10
10
  open?: boolean;
11
11
  disabled?: boolean;
12
+ portal?: string | PortalBond;
12
13
  onclose?: (event: Event, bond: DrawerBond) => void;
13
14
  factory?: Factory<DrawerBond>;
14
15
  };
@@ -18,10 +19,11 @@ import type { Override } from '../../types';
18
19
  import { type TransitionFunction } from '../element';
19
20
  import type { HtmlAtomProps, Base } from '../atom';
20
21
  import { DrawerBond, DrawerBondState, type DrawerBondProps } from './bond.svelte';
22
+ import { type PortalBond } from '../portal';
21
23
  declare function $$render<E extends keyof HTMLElementTagNameMap = 'dialog', B extends Base = Base>(): {
22
24
  props: Omit<HtmlAtomProps<E, B>, "initial" | "enter" | "exit" | "children"> & {
23
25
  children?: Snippet<[{
24
- slideover: DrawerBond;
26
+ drawer: DrawerBond;
25
27
  }]>;
26
28
  initial?: (node: HTMLElement, bond: DrawerBond) => void;
27
29
  enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<"dialog">;
@@ -29,6 +31,7 @@ declare function $$render<E extends keyof HTMLElementTagNameMap = 'dialog', B ex
29
31
  } & {
30
32
  open?: boolean;
31
33
  disabled?: boolean;
34
+ portal?: string | PortalBond;
32
35
  onclose?: (event: Event, bond: DrawerBond) => void;
33
36
  factory?: Factory<DrawerBond>;
34
37
  } & HTMLAttributes<HTMLElementTagNameMap[E]>;
@@ -44,7 +44,7 @@
44
44
  {as}
45
45
  {bond}
46
46
  preset="drawer.title"
47
- class={['$preset', klass]}
47
+ class={['border-border', '$preset', klass]}
48
48
  onmount={onmount?.bind(bond.state)}
49
49
  ondestroy={ondestroy?.bind(bond.state)}
50
50
  enter={enter?.bind(bond.state)}
@@ -29,7 +29,7 @@
29
29
  {bond}
30
30
  preset="dropdown.placeholder"
31
31
  class={[
32
- 'absolute inset-0 flex h-full w-full items-center px-2 leading-1 opacity-50 outline-none',
32
+ 'border-border absolute inset-0 flex h-full w-full items-center px-2 leading-1 opacity-50 outline-none',
33
33
  '$preset',
34
34
  klass
35
35
  ]}
@@ -38,7 +38,7 @@
38
38
  );
39
39
  </script>
40
40
 
41
- <Input.Value
41
+ <Input.Control
42
42
  bind:value={bond.state.query}
43
43
  {bond}
44
44
  preset="dropdown.query"
@@ -39,7 +39,7 @@
39
39
  {as}
40
40
  {bond}
41
41
  preset="dropdown.trigger"
42
- class={['relative flex h-auto min-h-10 flex-wrap items-center', '$preset', klass]}
42
+ class={['border-border relative flex h-auto min-h-10 flex-wrap items-center', '$preset', klass]}
43
43
  onmount={onmount?.bind(bond.state)}
44
44
  ondestroy={ondestroy?.bind(bond.state)}
45
45
  enter={enter?.bind(bond.state)}
@@ -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>
@@ -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';