@svelte-atoms/core 1.0.0-alpha.27 → 1.0.0-alpha.28

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 (163) hide show
  1. package/README.md +856 -645
  2. package/dist/components/accordion/accordion-root.svelte +61 -61
  3. package/dist/components/accordion/item/accordion-item-body.svelte +42 -42
  4. package/dist/components/accordion/item/accordion-item-header.svelte +50 -50
  5. package/dist/components/accordion/item/accordion-item-indicator.svelte +50 -50
  6. package/dist/components/accordion/item/accordion-item-root.svelte +65 -65
  7. package/dist/components/alert/alert-actions.svelte +2 -1
  8. package/dist/components/alert/alert-close-button.svelte +18 -20
  9. package/dist/components/alert/alert-content.svelte +2 -1
  10. package/dist/components/alert/alert-description.svelte +2 -1
  11. package/dist/components/alert/alert-icon.svelte +2 -1
  12. package/dist/components/alert/alert-root.svelte +3 -2
  13. package/dist/components/alert/alert-title.svelte +2 -1
  14. package/dist/components/alert/alert.stories.svelte +401 -40
  15. package/dist/components/alert/alert.stories.svelte.d.ts +2 -5
  16. package/dist/components/atom/html-atom.svelte +205 -201
  17. package/dist/components/atom/snippet-renderer.svelte +5 -0
  18. package/dist/components/atom/snippet-renderer.svelte.d.ts +5 -0
  19. package/dist/components/avatar/avatar.stories.svelte.d.ts +1 -1
  20. package/dist/components/badge/badge.stories.svelte.d.ts +1 -1
  21. package/dist/components/breadcrumb/breadcrumb.stories.svelte.d.ts +1 -1
  22. package/dist/components/button/button.stories.svelte +60 -57
  23. package/dist/components/calendar/atoms.d.ts +5 -0
  24. package/dist/components/calendar/atoms.js +5 -0
  25. package/dist/components/calendar/bond.svelte.d.ts +72 -0
  26. package/dist/components/calendar/bond.svelte.js +132 -0
  27. package/dist/components/calendar/calendar-body.svelte +107 -0
  28. package/dist/components/calendar/calendar-body.svelte.d.ts +8 -0
  29. package/dist/components/calendar/calendar-day.svelte +97 -0
  30. package/dist/components/calendar/calendar-day.svelte.d.ts +4 -0
  31. package/dist/components/calendar/calendar-header.svelte +33 -0
  32. package/dist/components/calendar/calendar-header.svelte.d.ts +7 -0
  33. package/dist/components/calendar/calendar-root.svelte +208 -0
  34. package/dist/components/calendar/calendar-root.svelte.d.ts +8 -0
  35. package/dist/components/calendar/calendar-week-day.svelte +34 -0
  36. package/dist/components/calendar/calendar-week-day.svelte.d.ts +9 -0
  37. package/dist/components/calendar/calendar.css +26 -0
  38. package/dist/components/calendar/calendar.stories.svelte +36 -0
  39. package/dist/components/calendar/calendar.stories.svelte.d.ts +6 -0
  40. package/dist/components/calendar/index.d.ts +4 -0
  41. package/dist/components/calendar/index.js +4 -0
  42. package/dist/components/calendar/runes.svelte.d.ts +3 -0
  43. package/dist/components/calendar/runes.svelte.js +25 -0
  44. package/dist/components/calendar/types.d.ts +62 -0
  45. package/dist/components/calendar/types.js +1 -0
  46. package/dist/components/card/card-body.svelte +39 -39
  47. package/dist/components/card/card-description.svelte +41 -41
  48. package/dist/components/card/card-footer.svelte +41 -41
  49. package/dist/components/card/card-header.svelte +41 -41
  50. package/dist/components/card/card-media.svelte +41 -41
  51. package/dist/components/card/card-root.svelte +91 -91
  52. package/dist/components/card/card-subtitle.svelte +41 -41
  53. package/dist/components/card/card-title.svelte +45 -45
  54. package/dist/components/collapsible/collapsible-body.svelte +39 -39
  55. package/dist/components/collapsible/collapsible-header.svelte +39 -39
  56. package/dist/components/collapsible/collapsible-indicator.svelte +50 -50
  57. package/dist/components/collapsible/collapsible-root.svelte +66 -66
  58. package/dist/components/combobox/combobox-root.svelte +65 -65
  59. package/dist/components/container/container.stories.svelte.d.ts +1 -1
  60. package/dist/components/contextmenu/contextmenu-trigger.svelte.d.ts +1 -1
  61. package/dist/components/datagrid/bond.svelte.d.ts +2 -2
  62. package/dist/components/datagrid/datagrid-body.svelte +37 -37
  63. package/dist/components/datagrid/datagrid-checkbox.svelte +101 -101
  64. package/dist/components/datagrid/datagrid-footer.svelte +34 -34
  65. package/dist/components/datagrid/datagrid-header.svelte +49 -49
  66. package/dist/components/datagrid/datagrid-root.svelte +59 -59
  67. package/dist/components/datagrid/td/datagrid-td.svelte +66 -66
  68. package/dist/components/datagrid/th/datagrid-th.svelte +106 -106
  69. package/dist/components/datagrid/tr/datagrid-tr.svelte +88 -88
  70. package/dist/components/date-picker/atoms.d.ts +7 -0
  71. package/dist/components/date-picker/atoms.js +7 -0
  72. package/dist/components/date-picker/bond.svelte.d.ts +67 -0
  73. package/dist/components/date-picker/bond.svelte.js +174 -0
  74. package/dist/components/date-picker/date-picker-calendar.svelte +42 -0
  75. package/dist/components/date-picker/date-picker-calendar.svelte.d.ts +7 -0
  76. package/dist/components/date-picker/date-picker-header.svelte +105 -0
  77. package/dist/components/date-picker/date-picker-header.svelte.d.ts +7 -0
  78. package/dist/components/date-picker/date-picker-months.svelte +150 -0
  79. package/dist/components/date-picker/date-picker-months.svelte.d.ts +7 -0
  80. package/dist/components/date-picker/date-picker-root.svelte +94 -0
  81. package/dist/components/date-picker/date-picker-root.svelte.d.ts +17 -0
  82. package/dist/components/date-picker/date-picker-years.svelte +214 -0
  83. package/dist/components/date-picker/date-picker-years.svelte.d.ts +7 -0
  84. package/dist/components/date-picker/date-picker.stories.svelte +51 -0
  85. package/dist/components/date-picker/date-picker.stories.svelte.d.ts +3 -0
  86. package/dist/components/date-picker/index.d.ts +3 -0
  87. package/dist/components/date-picker/index.js +3 -0
  88. package/dist/components/date-picker/types.d.ts +1 -0
  89. package/dist/components/date-picker/types.js +1 -0
  90. package/dist/components/dialog/dialog-body.svelte +39 -39
  91. package/dist/components/dialog/dialog-close-button.svelte +58 -58
  92. package/dist/components/dialog/dialog-content.svelte +62 -62
  93. package/dist/components/dialog/dialog-description.svelte +40 -40
  94. package/dist/components/dialog/dialog-footer.svelte +39 -39
  95. package/dist/components/dialog/dialog-header.svelte +39 -39
  96. package/dist/components/dialog/dialog-root.svelte +110 -110
  97. package/dist/components/dialog/dialog-title.svelte +41 -41
  98. package/dist/components/drawer/drawer-backdrop.svelte +38 -38
  99. package/dist/components/drawer/drawer-body.svelte +42 -42
  100. package/dist/components/drawer/drawer-content.svelte +42 -42
  101. package/dist/components/drawer/drawer-description.svelte +44 -44
  102. package/dist/components/drawer/drawer-footer.svelte +41 -41
  103. package/dist/components/drawer/drawer-header.svelte +43 -43
  104. package/dist/components/drawer/drawer-root.svelte +93 -93
  105. package/dist/components/drawer/drawer-title.svelte +44 -44
  106. package/dist/components/dropdown/dropdown-query.svelte +54 -54
  107. package/dist/components/dropdown/dropdown-root.svelte +59 -59
  108. package/dist/components/dropdown/dropdown-trigger.svelte +41 -41
  109. package/dist/components/dropdown/dropdown-value.svelte +60 -60
  110. package/dist/components/element/html-element.svelte +85 -85
  111. package/dist/components/form/bond.svelte.d.ts +1 -1
  112. package/dist/components/form/field/field-control.svelte +48 -48
  113. package/dist/components/form/field/field-label.svelte +24 -24
  114. package/dist/components/form/field/field-root.svelte +59 -59
  115. package/dist/components/icon/icon.svelte +44 -44
  116. package/dist/components/image/image.stories.svelte.d.ts +1 -1
  117. package/dist/components/index.d.ts +3 -0
  118. package/dist/components/index.js +3 -0
  119. package/dist/components/input/input-control.svelte +103 -103
  120. package/dist/components/label/label.svelte +25 -25
  121. package/dist/components/popover/popover-arrow.svelte +111 -111
  122. package/dist/components/popover/popover-content.svelte +46 -7
  123. package/dist/components/popover/popover-root.svelte +48 -49
  124. package/dist/components/popover/popover.stories.svelte +52 -67
  125. package/dist/components/portal/portal-root.svelte +83 -83
  126. package/dist/components/portal/teleport.svelte +50 -50
  127. package/dist/components/qr-code/index.d.ts +1 -0
  128. package/dist/components/qr-code/index.js +1 -0
  129. package/dist/components/qr-code/qr-code.stories.svelte +24 -0
  130. package/dist/components/qr-code/qr-code.stories.svelte.d.ts +26 -0
  131. package/dist/components/qr-code/qr-code.svelte +25 -0
  132. package/dist/components/qr-code/qr-code.svelte.d.ts +6 -0
  133. package/dist/components/radio/radio.svelte +109 -109
  134. package/dist/components/radio/types.svelte.d.ts +1 -1
  135. package/dist/components/scrollable/scrollable-container.svelte +82 -82
  136. package/dist/components/scrollable/scrollable-content.svelte +41 -41
  137. package/dist/components/scrollable/scrollable-root.svelte +100 -100
  138. package/dist/components/scrollable/scrollable-thumb.svelte +75 -75
  139. package/dist/components/scrollable/scrollable-track.svelte +59 -59
  140. package/dist/components/scrollable/scrollable.stories.svelte.d.ts +1 -1
  141. package/dist/components/tabs/tab/tab-body.svelte +52 -52
  142. package/dist/components/tabs/tab/tab-description.svelte +41 -41
  143. package/dist/components/tabs/tab/tab-header.svelte +71 -71
  144. package/dist/components/tabs/tab/tab-root.svelte +86 -86
  145. package/dist/components/toast/toast-description.svelte +38 -38
  146. package/dist/components/toast/toast-root.svelte +61 -61
  147. package/dist/components/toast/toast-title.svelte +35 -35
  148. package/dist/components/tree/tree-body.svelte +39 -39
  149. package/dist/components/tree/tree-header.svelte +54 -54
  150. package/dist/components/tree/tree-indicator.svelte +40 -40
  151. package/dist/components/tree/tree-root.svelte +65 -65
  152. package/dist/components/virtual/virtual-root.svelte +239 -239
  153. package/dist/context/preset.svelte.d.ts +1 -1
  154. package/dist/icons/icon-arrow-down.svelte.d.ts +1 -1
  155. package/dist/icons/icon-checkmark.svelte.d.ts +1 -1
  156. package/dist/icons/icon-close.svelte.d.ts +1 -1
  157. package/dist/icons/icon-more-vert.svelte.d.ts +1 -1
  158. package/dist/runes/container.svelte.d.ts +2 -2
  159. package/dist/shared/bond.svelte.d.ts +1 -1
  160. package/dist/utils/state.d.ts +1 -1
  161. package/dist/utils/state.js +2 -1
  162. package/llm/variants.md +1261 -712
  163. package/package.json +464 -437
@@ -1,41 +1,41 @@
1
- <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { Trigger } from '../popover/atoms';
3
- import type { Base } from '../atom';
4
- import { DropdownBond } from './bond.svelte';
5
- import type { DropdownTriggerProps } from './types';
6
-
7
- const bond = DropdownBond.get();
8
-
9
- if (!bond) {
10
- throw new Error('dropdown atom was not found');
11
- }
12
-
13
- let {
14
- class: klass = '',
15
- as = 'button' as T,
16
- children = undefined,
17
- onmount = undefined,
18
- ondestroy = undefined,
19
- animate = undefined,
20
- enter = undefined,
21
- exit = undefined,
22
- initial = undefined,
23
- ...restProps
24
- }: DropdownTriggerProps<T, B> = $props();
25
- </script>
26
-
27
- <Trigger
28
- {as}
29
- {bond}
30
- preset="dropdown.trigger"
31
- class={['border-border relative flex h-auto min-h-10 flex-wrap items-center', '$preset', klass]}
32
- onmount={onmount?.bind(bond.state)}
33
- ondestroy={ondestroy?.bind(bond.state)}
34
- enter={enter?.bind(bond.state)}
35
- exit={exit?.bind(bond.state)}
36
- initial={initial?.bind(bond.state)}
37
- animate={animate?.bind(bond.state)}
38
- {...restProps}
39
- >
40
- {@render children?.({ dropdown: bond })}
41
- </Trigger>
1
+ <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { Trigger } from '../popover/atoms';
3
+ import type { Base } from '../atom';
4
+ import { DropdownBond } from './bond.svelte';
5
+ import type { DropdownTriggerProps } from './types';
6
+
7
+ const bond = DropdownBond.get();
8
+
9
+ if (!bond) {
10
+ throw new Error('dropdown atom was not found');
11
+ }
12
+
13
+ let {
14
+ class: klass = '',
15
+ as = 'button' as T,
16
+ children = undefined,
17
+ onmount = undefined,
18
+ ondestroy = undefined,
19
+ animate = undefined,
20
+ enter = undefined,
21
+ exit = undefined,
22
+ initial = undefined,
23
+ ...restProps
24
+ }: DropdownTriggerProps<T, B> = $props();
25
+ </script>
26
+
27
+ <Trigger
28
+ {as}
29
+ {bond}
30
+ preset="dropdown.trigger"
31
+ class={['border-border relative flex h-auto min-h-10 flex-wrap items-center', '$preset', klass]}
32
+ onmount={onmount?.bind(bond.state)}
33
+ ondestroy={ondestroy?.bind(bond.state)}
34
+ enter={enter?.bind(bond.state)}
35
+ exit={exit?.bind(bond.state)}
36
+ initial={initial?.bind(bond.state)}
37
+ animate={animate?.bind(bond.state)}
38
+ {...restProps}
39
+ >
40
+ {@render children?.({ dropdown: bond })}
41
+ </Trigger>
@@ -1,60 +1,60 @@
1
- <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { Icon } from '../icon';
3
- import { HtmlAtom, type Base } from '../atom';
4
- import CloseIcon from '../../icons/icon-close.svelte';
5
- import { DropdownBond } from './bond.svelte';
6
-
7
- const bond = DropdownBond.get();
8
-
9
- if (!bond) {
10
- throw new Error('DropdownValue must be used within a Dropdown');
11
- }
12
-
13
- let {
14
- class: klass = '',
15
- as = 'div' as T,
16
- value,
17
- children,
18
- onmount = undefined,
19
- ondestroy = undefined,
20
- animate = undefined,
21
- enter = undefined,
22
- exit = undefined,
23
- initial = undefined,
24
- ...restProps
25
- } = $props();
26
-
27
- function handleClick(ev: Event) {
28
- ev.preventDefault();
29
- ev.stopPropagation();
30
-
31
- bond?.state.unselect([value]);
32
- }
33
- </script>
34
-
35
- <HtmlAtom
36
- {as}
37
- {bond}
38
- preset="dropdown.value"
39
- class={[
40
- 'dropdown-value border-border bg-foreground/5 inline-flex flex-nowrap items-center gap-1 rounded-xs px-1 whitespace-nowrap',
41
- '$preset',
42
- klass
43
- ]}
44
- onmount={onmount?.bind(bond.state)}
45
- ondestroy={ondestroy?.bind(bond.state)}
46
- enter={enter?.bind(bond.state)}
47
- exit={exit?.bind(bond.state)}
48
- initial={initial?.bind(bond.state)}
49
- animate={animate?.bind(bond.state)}
50
- {...restProps}
51
- >
52
- {@render children?.()}
53
-
54
- <button
55
- class="bg-foreground/5 flex aspect-square h-4 cursor-pointer items-center justify-center rounded-xs p-0"
56
- onclick={handleClick}
57
- >
58
- <Icon class="h-3" src={CloseIcon} />
59
- </button>
60
- </HtmlAtom>
1
+ <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { Icon } from '../icon';
3
+ import { HtmlAtom, type Base } from '../atom';
4
+ import CloseIcon from '../../icons/icon-close.svelte';
5
+ import { DropdownBond } from './bond.svelte';
6
+
7
+ const bond = DropdownBond.get();
8
+
9
+ if (!bond) {
10
+ throw new Error('DropdownValue must be used within a Dropdown');
11
+ }
12
+
13
+ let {
14
+ class: klass = '',
15
+ as = 'div' as T,
16
+ value,
17
+ children,
18
+ onmount = undefined,
19
+ ondestroy = undefined,
20
+ animate = undefined,
21
+ enter = undefined,
22
+ exit = undefined,
23
+ initial = undefined,
24
+ ...restProps
25
+ } = $props();
26
+
27
+ function handleClick(ev: Event) {
28
+ ev.preventDefault();
29
+ ev.stopPropagation();
30
+
31
+ bond?.state.unselect([value]);
32
+ }
33
+ </script>
34
+
35
+ <HtmlAtom
36
+ {as}
37
+ {bond}
38
+ preset="dropdown.value"
39
+ class={[
40
+ 'dropdown-value border-border bg-foreground/5 inline-flex flex-nowrap items-center gap-1 rounded-xs px-1 whitespace-nowrap',
41
+ '$preset',
42
+ klass
43
+ ]}
44
+ onmount={onmount?.bind(bond.state)}
45
+ ondestroy={ondestroy?.bind(bond.state)}
46
+ enter={enter?.bind(bond.state)}
47
+ exit={exit?.bind(bond.state)}
48
+ initial={initial?.bind(bond.state)}
49
+ animate={animate?.bind(bond.state)}
50
+ {...restProps}
51
+ >
52
+ {@render children?.()}
53
+
54
+ <button
55
+ class="bg-foreground/5 flex aspect-square h-4 cursor-pointer items-center justify-center rounded-xs p-0"
56
+ onclick={handleClick}
57
+ >
58
+ <Icon class="h-3" src={CloseIcon} />
59
+ </button>
60
+ </HtmlAtom>
@@ -1,85 +1,85 @@
1
- <script lang="ts" generics="T extends HtmlElementTagName">
2
- import { untrack } from 'svelte';
3
- import type { HTMLAttributes } from 'svelte/elements';
4
- import { createAttachmentKey } from 'svelte/attachments';
5
- import { cn, toClassValue } from '../../utils';
6
- import type { ElementType, HtmlElementProps, HtmlElementTagName } from './types';
7
-
8
- type Element = ElementType<T>;
9
-
10
- let {
11
- class: klass = '',
12
- as = 'div' as T,
13
- global = true,
14
- initial = undefined,
15
- enter = undefined,
16
- exit = undefined,
17
- animate = undefined,
18
- onmount = undefined,
19
- ondestroy = undefined,
20
- children = undefined,
21
- ...restProps
22
- }: HtmlElementProps<T> & Omit<HTMLAttributes<Element>, keyof HtmlElementProps<T>> = $props();
23
-
24
- let node = $state<Element>();
25
-
26
- let skipFirstAnimate = $state(!!enter);
27
-
28
- $effect(() => {
29
- if (!node) return;
30
-
31
- const unmount = untrack(() => onmount?.(node!));
32
-
33
- return () => {
34
- if (typeof unmount === 'function') unmount(node!);
35
- ondestroy?.(node!);
36
- };
37
- });
38
-
39
- $effect(() => {
40
- const fn = animate;
41
-
42
- if (!node) return;
43
- const shouldSkip = untrack(() => skipFirstAnimate);
44
-
45
- if (shouldSkip) {
46
- skipFirstAnimate = false;
47
- return;
48
- }
49
-
50
- fn?.(node);
51
- });
52
-
53
- const elementProps = $derived({
54
- [createAttachmentKey()]: (n: Element) => {
55
- node = n;
56
- },
57
- class: cn(toClassValue(klass)),
58
- ...restProps
59
- });
60
-
61
- function _enter(node: Element) {
62
- initial?.(node);
63
- return () => {
64
- const { duration = 0, delay = 0, easing = undefined } = enter?.(node) ?? {};
65
- return { duration, delay, easing };
66
- };
67
- }
68
-
69
- function _exit(node: Element) {
70
- return () => {
71
- const { duration = 0, delay = 0, easing = undefined } = exit?.(node) ?? {};
72
- return { duration, delay, easing };
73
- };
74
- }
75
- </script>
76
-
77
- {#if global}
78
- <svelte:element this={as} in:_enter|global out:_exit|global {...elementProps}>
79
- {@render children?.()}
80
- </svelte:element>
81
- {:else}
82
- <svelte:element this={as} in:_enter out:_exit {...elementProps}>
83
- {@render children?.()}
84
- </svelte:element>
85
- {/if}
1
+ <script lang="ts" generics="T extends HtmlElementTagName">
2
+ import { untrack } from 'svelte';
3
+ import type { HTMLAttributes } from 'svelte/elements';
4
+ import { createAttachmentKey } from 'svelte/attachments';
5
+ import { cn, toClassValue } from '../../utils';
6
+ import type { ElementType, HtmlElementProps, HtmlElementTagName } from './types';
7
+
8
+ type Element = ElementType<T>;
9
+
10
+ let {
11
+ class: klass = '',
12
+ as = 'div' as T,
13
+ global = true,
14
+ initial = undefined,
15
+ enter = undefined,
16
+ exit = undefined,
17
+ animate = undefined,
18
+ onmount = undefined,
19
+ ondestroy = undefined,
20
+ children = undefined,
21
+ ...restProps
22
+ }: HtmlElementProps<T> & Omit<HTMLAttributes<Element>, keyof HtmlElementProps<T>> = $props();
23
+
24
+ let node = $state<Element>();
25
+
26
+ let skipFirstAnimate = $state(!!enter);
27
+
28
+ $effect(() => {
29
+ if (!node) return;
30
+
31
+ const unmount = untrack(() => onmount?.(node!));
32
+
33
+ return () => {
34
+ if (typeof unmount === 'function') unmount(node!);
35
+ ondestroy?.(node!);
36
+ };
37
+ });
38
+
39
+ $effect(() => {
40
+ const fn = animate;
41
+
42
+ if (!node) return;
43
+ const shouldSkip = untrack(() => skipFirstAnimate);
44
+
45
+ if (shouldSkip) {
46
+ skipFirstAnimate = false;
47
+ return;
48
+ }
49
+
50
+ fn?.(node);
51
+ });
52
+
53
+ const elementProps = $derived({
54
+ [createAttachmentKey()]: (n: Element) => {
55
+ node = n;
56
+ },
57
+ class: cn(toClassValue(klass)),
58
+ ...restProps
59
+ });
60
+
61
+ function _enter(node: Element) {
62
+ initial?.(node);
63
+ return () => {
64
+ const { duration = 0, delay = 0, easing = undefined } = enter?.(node) ?? {};
65
+ return { duration, delay, easing };
66
+ };
67
+ }
68
+
69
+ function _exit(node: Element) {
70
+ return () => {
71
+ const { duration = 0, delay = 0, easing = undefined } = exit?.(node) ?? {};
72
+ return { duration, delay, easing };
73
+ };
74
+ }
75
+ </script>
76
+
77
+ {#if global}
78
+ <svelte:element this={as} in:_enter|global out:_exit|global {...elementProps}>
79
+ {@render children?.()}
80
+ </svelte:element>
81
+ {:else}
82
+ <svelte:element this={as} in:_enter out:_exit {...elementProps}>
83
+ {@render children?.()}
84
+ </svelte:element>
85
+ {/if}
@@ -24,5 +24,5 @@ export declare class FormBondState<Props extends FormProps = FormProps> extends
24
24
  unmountField(id: string): void;
25
25
  validate(): void;
26
26
  clear(): void;
27
- get fields(): FieldBond[];
27
+ get fields(): any;
28
28
  }
@@ -1,48 +1,48 @@
1
- <script lang="ts" generics="B extends Base<{value: unknown}>">
2
- import { HtmlAtom, type Base } from '../../atom';
3
- import { FieldBond } from './bond.svelte';
4
- import type { FieldControlProps } from '../types';
5
-
6
- const bond = FieldBond.get();
7
- const name = $derived(bond?.state?.props?.name);
8
-
9
- let {
10
- class: klass = '',
11
- value = $bindable(),
12
- checked = $bindable(),
13
- number = $bindable(),
14
- date = $bindable(),
15
- files = $bindable(),
16
- children = undefined,
17
- oninput = undefined,
18
- ...restProps
19
- }: FieldControlProps<B> = $props();
20
- const controlProps = $derived({ ...bond.control(), ...restProps });
21
-
22
- function handleInput(ev: CustomEvent, detail: any) {
23
- oninput?.(ev);
24
-
25
- if (ev.defaultPrevented) {
26
- return;
27
- }
28
-
29
- bond.state.props.value = value = detail?.value;
30
- bond.state.props.files = files = detail?.files ?? [];
31
- bond.state.props.date = date = detail?.date ?? null;
32
- bond.state.props.number = number = detail?.number ?? null;
33
- bond.state.props.checked = checked = detail?.checked ?? false;
34
- }
35
- </script>
36
-
37
- <HtmlAtom
38
- {bond}
39
- {value}
40
- {checked}
41
- {name}
42
- preset="field.control"
43
- class={['flex items-center', '$preset', klass]}
44
- oninput={handleInput}
45
- {...controlProps}
46
- >
47
- {@render children?.()}
48
- </HtmlAtom>
1
+ <script lang="ts" generics="B extends Base<{value: unknown}>">
2
+ import { HtmlAtom, type Base } from '../../atom';
3
+ import { FieldBond } from './bond.svelte';
4
+ import type { FieldControlProps } from '../types';
5
+
6
+ const bond = FieldBond.get();
7
+ const name = $derived(bond?.state?.props?.name);
8
+
9
+ let {
10
+ class: klass = '',
11
+ value = $bindable(),
12
+ checked = $bindable(),
13
+ number = $bindable(),
14
+ date = $bindable(),
15
+ files = $bindable(),
16
+ children = undefined,
17
+ oninput = undefined,
18
+ ...restProps
19
+ }: FieldControlProps<B> = $props();
20
+ const controlProps = $derived({ ...bond.control(), ...restProps });
21
+
22
+ function handleInput(ev: CustomEvent, detail: any) {
23
+ oninput?.(ev);
24
+
25
+ if (ev.defaultPrevented) {
26
+ return;
27
+ }
28
+
29
+ bond.state.props.value = value = detail?.value;
30
+ bond.state.props.files = files = detail?.files ?? [];
31
+ bond.state.props.date = date = detail?.date ?? null;
32
+ bond.state.props.number = number = detail?.number ?? null;
33
+ bond.state.props.checked = checked = detail?.checked ?? false;
34
+ }
35
+ </script>
36
+
37
+ <HtmlAtom
38
+ {bond}
39
+ {value}
40
+ {checked}
41
+ {name}
42
+ preset="field.control"
43
+ class={['flex items-center', '$preset', klass]}
44
+ oninput={handleInput}
45
+ {...controlProps}
46
+ >
47
+ {@render children?.()}
48
+ </HtmlAtom>
@@ -1,24 +1,24 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'label', B extends Base = Base">
2
- import { Label } from '../../label';
3
- import type { Base } from '../../atom';
4
- import { FieldBond } from './bond.svelte';
5
- import type { FieldLabelProps } from '../types';
6
-
7
- const bond = FieldBond.get();
8
-
9
- let {
10
- class: klass = '',
11
- as = 'label' as E,
12
- children = undefined,
13
- ...restProps
14
- }: FieldLabelProps = $props();
15
-
16
- const labelProps = $derived({
17
- ...bond?.label(),
18
- ...restProps
19
- });
20
- </script>
21
-
22
- <Label {as} {bond} preset="field.label" class={['flex flex-col', '$preset', klass]} {...labelProps}>
23
- {@render children?.()}
24
- </Label>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'label', B extends Base = Base">
2
+ import { Label } from '../../label';
3
+ import type { Base } from '../../atom';
4
+ import { FieldBond } from './bond.svelte';
5
+ import type { FieldLabelProps } from '../types';
6
+
7
+ const bond = FieldBond.get();
8
+
9
+ let {
10
+ class: klass = '',
11
+ as = 'label' as E,
12
+ children = undefined,
13
+ ...restProps
14
+ }: FieldLabelProps = $props();
15
+
16
+ const labelProps = $derived({
17
+ ...bond?.label(),
18
+ ...restProps
19
+ });
20
+ </script>
21
+
22
+ <Label {as} {bond} preset="field.label" class={['flex flex-col', '$preset', klass]} {...labelProps}>
23
+ {@render children?.()}
24
+ </Label>
@@ -1,59 +1,59 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { onDestroy } from 'svelte';
3
- import { defineProperty, defineState } from '../../../utils';
4
- import { HtmlAtom, type Base } from '../../atom';
5
- import { FieldBond, FieldBondState, type FieldStateProps } from './bond.svelte';
6
- import type { FieldRootProps } from '../types';
7
- import { FormBond } from '../bond.svelte';
8
-
9
- const formBond = FormBond.get();
10
-
11
- let {
12
- value = $bindable(),
13
- class: klass = '',
14
- name = undefined,
15
- schema = undefined,
16
- validator = undefined,
17
- factory = _factory,
18
- children = undefined,
19
- ...restProps
20
- }: FieldRootProps<E, B> = $props();
21
-
22
- const bondProps = defineState<FieldStateProps>([
23
- defineProperty(
24
- 'name',
25
- () => name,
26
- (v) => (name = v)
27
- ),
28
- defineProperty(
29
- 'value',
30
- () => value,
31
- (v) => (value = v)
32
- ),
33
- defineProperty('type', () => typeof value),
34
- defineProperty('schema', () => schema),
35
- defineProperty('validator', () => validator ?? formBond.state.props.validator)
36
- ]);
37
- const bond = factory(bondProps).share();
38
-
39
- const rootProps = $derived({
40
- ...bond?.root(),
41
- ...restProps
42
- });
43
-
44
- const unmount = formBond.state.mountField(bond.id, bond);
45
- onDestroy(() => unmount());
46
-
47
- function _factory(props: typeof bondProps) {
48
- const bondState = new FieldBondState(() => props);
49
- return new FieldBond(bondState);
50
- }
51
-
52
- export function getBond() {
53
- return bond;
54
- }
55
- </script>
56
-
57
- <HtmlAtom preset="field" class={['flex flex-col', '$preset', klass]} {...rootProps}>
58
- {@render children?.({ field: bond })}
59
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { onDestroy } from 'svelte';
3
+ import { defineProperty, defineState } from '../../../utils';
4
+ import { HtmlAtom, type Base } from '../../atom';
5
+ import { FieldBond, FieldBondState, type FieldStateProps } from './bond.svelte';
6
+ import type { FieldRootProps } from '../types';
7
+ import { FormBond } from '../bond.svelte';
8
+
9
+ const formBond = FormBond.get();
10
+
11
+ let {
12
+ value = $bindable(),
13
+ class: klass = '',
14
+ name = undefined,
15
+ schema = undefined,
16
+ validator = undefined,
17
+ factory = _factory,
18
+ children = undefined,
19
+ ...restProps
20
+ }: FieldRootProps<E, B> = $props();
21
+
22
+ const bondProps = defineState<FieldStateProps>([
23
+ defineProperty(
24
+ 'name',
25
+ () => name,
26
+ (v) => (name = v)
27
+ ),
28
+ defineProperty(
29
+ 'value',
30
+ () => value,
31
+ (v) => (value = v)
32
+ ),
33
+ defineProperty('type', () => typeof value),
34
+ defineProperty('schema', () => schema),
35
+ defineProperty('validator', () => validator ?? formBond.state.props.validator)
36
+ ]);
37
+ const bond = factory(bondProps).share();
38
+
39
+ const rootProps = $derived({
40
+ ...bond?.root(),
41
+ ...restProps
42
+ });
43
+
44
+ const unmount = formBond.state.mountField(bond.id, bond);
45
+ onDestroy(() => unmount());
46
+
47
+ function _factory(props: typeof bondProps) {
48
+ const bondState = new FieldBondState(() => props);
49
+ return new FieldBond(bondState);
50
+ }
51
+
52
+ export function getBond() {
53
+ return bond;
54
+ }
55
+ </script>
56
+
57
+ <HtmlAtom preset="field" class={['flex flex-col', '$preset', klass]} {...rootProps}>
58
+ {@render children?.({ field: bond })}
59
+ </HtmlAtom>