@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="E extends keyof HTMLElementTagNameMap='div', B extends Base = Base">
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- import type { SlideoverFooterProps } from './types';
4
- import { DrawerBond } from './bond.svelte';
5
- import { HtmlAtom, type Base } from '../atom';
6
-
7
- type Element = HTMLElementTagNameMap[E];
8
-
9
- const bond = DrawerBond.get();
10
-
11
- let {
12
- class: klass = '',
13
- children = undefined,
14
- onmount = undefined,
15
- ondestroy = undefined,
16
- animate = undefined,
17
- enter = undefined,
18
- exit = undefined,
19
- initial = undefined,
20
- ...restProps
21
- }: SlideoverFooterProps<E, B> & HTMLAttributes<Element> = $props();
22
-
23
- const footerProps = $derived({
24
- ...bond?.footer(),
25
- ...restProps
26
- });
27
- </script>
28
-
29
- <HtmlAtom
30
- {bond}
31
- class={['border-border', '$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
- {...footerProps}
39
- >
40
- {@render children?.({ drawer: bond })}
41
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap='div', B extends Base = Base">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import type { SlideoverFooterProps } from './types';
4
+ import { DrawerBond } from './bond.svelte';
5
+ import { HtmlAtom, type Base } from '../atom';
6
+
7
+ type Element = HTMLElementTagNameMap[E];
8
+
9
+ const bond = DrawerBond.get();
10
+
11
+ let {
12
+ class: klass = '',
13
+ children = undefined,
14
+ onmount = undefined,
15
+ ondestroy = undefined,
16
+ animate = undefined,
17
+ enter = undefined,
18
+ exit = undefined,
19
+ initial = undefined,
20
+ ...restProps
21
+ }: SlideoverFooterProps<E, B> & HTMLAttributes<Element> = $props();
22
+
23
+ const footerProps = $derived({
24
+ ...bond?.footer(),
25
+ ...restProps
26
+ });
27
+ </script>
28
+
29
+ <HtmlAtom
30
+ {bond}
31
+ class={['border-border', '$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
+ {...footerProps}
39
+ >
40
+ {@render children?.({ drawer: bond })}
41
+ </HtmlAtom>
@@ -1,43 +1,43 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- import type { SlideoverHeaderProps } from './types';
4
- import { DrawerBond } from './bond.svelte';
5
- import { HtmlAtom, type Base } from '../atom';
6
-
7
- type Element = HTMLElementTagNameMap[E];
8
-
9
- const bond = DrawerBond.get();
10
-
11
- let {
12
- class: klass = '',
13
- children = undefined,
14
- onmount = undefined,
15
- ondestroy = undefined,
16
- animate = undefined,
17
- enter = undefined,
18
- exit = undefined,
19
- initial = undefined,
20
- ...restProps
21
- }: SlideoverHeaderProps<E, B> & HTMLAttributes<Element> = $props();
22
-
23
- const headerProps = $derived({
24
- ...bond?.header(),
25
- ...restProps
26
- });
27
- </script>
28
-
29
- <HtmlAtom
30
- {bond}
31
- preset="drawer.header"
32
- class={['border-border', '$preset', klass]}
33
- onmount={onmount?.bind(bond.state)}
34
- ondestroy={ondestroy?.bind(bond.state)}
35
- enter={enter?.bind(bond.state)}
36
- exit={exit?.bind(bond.state)}
37
- initial={initial?.bind(bond.state)}
38
- animate={animate?.bind(bond.state)}
39
- {...headerProps}
40
- {...restProps}
41
- >
42
- {@render children?.({ drawer: bond })}
43
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import type { SlideoverHeaderProps } from './types';
4
+ import { DrawerBond } from './bond.svelte';
5
+ import { HtmlAtom, type Base } from '../atom';
6
+
7
+ type Element = HTMLElementTagNameMap[E];
8
+
9
+ const bond = DrawerBond.get();
10
+
11
+ let {
12
+ class: klass = '',
13
+ children = undefined,
14
+ onmount = undefined,
15
+ ondestroy = undefined,
16
+ animate = undefined,
17
+ enter = undefined,
18
+ exit = undefined,
19
+ initial = undefined,
20
+ ...restProps
21
+ }: SlideoverHeaderProps<E, B> & HTMLAttributes<Element> = $props();
22
+
23
+ const headerProps = $derived({
24
+ ...bond?.header(),
25
+ ...restProps
26
+ });
27
+ </script>
28
+
29
+ <HtmlAtom
30
+ {bond}
31
+ preset="drawer.header"
32
+ class={['border-border', '$preset', klass]}
33
+ onmount={onmount?.bind(bond.state)}
34
+ ondestroy={ondestroy?.bind(bond.state)}
35
+ enter={enter?.bind(bond.state)}
36
+ exit={exit?.bind(bond.state)}
37
+ initial={initial?.bind(bond.state)}
38
+ animate={animate?.bind(bond.state)}
39
+ {...headerProps}
40
+ {...restProps}
41
+ >
42
+ {@render children?.({ drawer: bond })}
43
+ </HtmlAtom>
@@ -1,93 +1,93 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap='dialog', B extends Base = Base">
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- import { defineProperty, defineState } from '../../utils';
4
- import Teleport from '../portal/teleport.svelte';
5
- import type { Base } from '../atom';
6
- import { DrawerBond, DrawerBondState, type DrawerBondProps } from './bond.svelte';
7
- import type { SlideoverRootProps } from './types';
8
- import { ActivePortal } from '../portal';
9
-
10
- type Element = HTMLElementTagNameMap[E];
11
-
12
- let {
13
- open = $bindable(false),
14
- children = undefined,
15
- class: klass = '',
16
- as = 'dialog',
17
- disabled = false,
18
- portal = undefined,
19
- onclose = undefined,
20
- onmount = undefined,
21
- ondestroy = undefined,
22
- animate = undefined,
23
- enter = undefined,
24
- exit = undefined,
25
- initial = undefined,
26
- factory = _factory,
27
- ...restProps
28
- }: SlideoverRootProps<E, B> & HTMLAttributes<Element> = $props();
29
-
30
- const bondProps = defineState<DrawerBondProps>(
31
- [
32
- defineProperty(
33
- 'open',
34
- () => open,
35
- (v) => {
36
- open = v;
37
- }
38
- ),
39
- defineProperty('disabled', () => disabled)
40
- ],
41
- () => ({})
42
- );
43
- const bond = _factory(bondProps).share();
44
-
45
- const rootProps = $derived({
46
- ...bond?.root(),
47
- ...restProps
48
- });
49
-
50
- $effect(() => {
51
- if (bond.elements.root instanceof HTMLDialogElement) {
52
- if (open) {
53
- bond.elements.root?.show?.();
54
- }
55
- }
56
- });
57
-
58
- function _factory(props: typeof bondProps) {
59
- const bondState = new DrawerBondState(() => props);
60
- const bond = new DrawerBond(bondState);
61
-
62
- return bond;
63
- }
64
-
65
- export function getBond() {
66
- return bond;
67
- }
68
- </script>
69
-
70
- <Teleport
71
- {as}
72
- {bond}
73
- portal={portal ?? 'root.l1'}
74
- preset="drawer"
75
- class={[
76
- 'border-border pointer-events-auto h-full w-full overflow-hidden bg-transparent',
77
- !open && 'pointer-events-none',
78
- '$preset',
79
- klass
80
- ]}
81
- closeby="none"
82
- onmount={onmount?.bind(bond.state)}
83
- ondestroy={ondestroy?.bind(bond.state)}
84
- enter={enter?.bind(bond.state)}
85
- exit={exit?.bind(bond.state)}
86
- initial={initial?.bind(bond.state)}
87
- animate={animate?.bind(bond.state)}
88
- {...rootProps}
89
- >
90
- <ActivePortal portal={portal ?? 'root.l1'}>
91
- {@render children?.({ drawer: bond })}
92
- </ActivePortal>
93
- </Teleport>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap='dialog', B extends Base = Base">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { defineProperty, defineState } from '../../utils';
4
+ import Teleport from '../portal/teleport.svelte';
5
+ import type { Base } from '../atom';
6
+ import { DrawerBond, DrawerBondState, type DrawerBondProps } from './bond.svelte';
7
+ import type { SlideoverRootProps } from './types';
8
+ import { ActivePortal } from '../portal';
9
+
10
+ type Element = HTMLElementTagNameMap[E];
11
+
12
+ let {
13
+ open = $bindable(false),
14
+ children = undefined,
15
+ class: klass = '',
16
+ as = 'dialog',
17
+ disabled = false,
18
+ portal = undefined,
19
+ onclose = undefined,
20
+ onmount = undefined,
21
+ ondestroy = undefined,
22
+ animate = undefined,
23
+ enter = undefined,
24
+ exit = undefined,
25
+ initial = undefined,
26
+ factory = _factory,
27
+ ...restProps
28
+ }: SlideoverRootProps<E, B> & HTMLAttributes<Element> = $props();
29
+
30
+ const bondProps = defineState<DrawerBondProps>(
31
+ [
32
+ defineProperty(
33
+ 'open',
34
+ () => open,
35
+ (v) => {
36
+ open = v;
37
+ }
38
+ ),
39
+ defineProperty('disabled', () => disabled)
40
+ ],
41
+ () => ({})
42
+ );
43
+ const bond = _factory(bondProps).share();
44
+
45
+ const rootProps = $derived({
46
+ ...bond?.root(),
47
+ ...restProps
48
+ });
49
+
50
+ $effect(() => {
51
+ if (bond.elements.root instanceof HTMLDialogElement) {
52
+ if (open) {
53
+ bond.elements.root?.show?.();
54
+ }
55
+ }
56
+ });
57
+
58
+ function _factory(props: typeof bondProps) {
59
+ const bondState = new DrawerBondState(() => props);
60
+ const bond = new DrawerBond(bondState);
61
+
62
+ return bond;
63
+ }
64
+
65
+ export function getBond() {
66
+ return bond;
67
+ }
68
+ </script>
69
+
70
+ <Teleport
71
+ {as}
72
+ {bond}
73
+ portal={portal ?? 'root.l1'}
74
+ preset="drawer"
75
+ class={[
76
+ 'border-border pointer-events-auto h-full w-full overflow-hidden bg-transparent',
77
+ !open && 'pointer-events-none',
78
+ '$preset',
79
+ klass
80
+ ]}
81
+ closeby="none"
82
+ onmount={onmount?.bind(bond.state)}
83
+ ondestroy={ondestroy?.bind(bond.state)}
84
+ enter={enter?.bind(bond.state)}
85
+ exit={exit?.bind(bond.state)}
86
+ initial={initial?.bind(bond.state)}
87
+ animate={animate?.bind(bond.state)}
88
+ {...rootProps}
89
+ >
90
+ <ActivePortal portal={portal ?? 'root.l1'}>
91
+ {@render children?.({ drawer: bond })}
92
+ </ActivePortal>
93
+ </Teleport>
@@ -1,44 +1,44 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'h3', B extends Base = Base">
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- import { HtmlAtom, type Base } from '../atom';
4
- import { DrawerBond } from './bond.svelte';
5
- import type { SlideoverTitleProps } from './types';
6
-
7
- type Element = HTMLElementTagNameMap[E];
8
-
9
- const bond = DrawerBond.get();
10
-
11
- let {
12
- class: klass = '',
13
- as = 'h3' as E,
14
- children,
15
- onmount = undefined,
16
- ondestroy = undefined,
17
- animate = undefined,
18
- enter = undefined,
19
- exit = undefined,
20
- initial = undefined,
21
- ...restProps
22
- }: SlideoverTitleProps<E, B> & HTMLAttributes<Element> = $props();
23
-
24
- const titleProps = $derived({
25
- ...bond?.title(),
26
- ...restProps
27
- });
28
- </script>
29
-
30
- <HtmlAtom
31
- {as}
32
- {bond}
33
- preset="drawer.title"
34
- class={['border-border', '$preset', klass]}
35
- onmount={onmount?.bind(bond.state)}
36
- ondestroy={ondestroy?.bind(bond.state)}
37
- enter={enter?.bind(bond.state)}
38
- exit={exit?.bind(bond.state)}
39
- initial={initial?.bind(bond.state)}
40
- animate={animate?.bind(bond.state)}
41
- {...titleProps}
42
- >
43
- {@render children?.({ drawer: bond })}
44
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'h3', B extends Base = Base">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { HtmlAtom, type Base } from '../atom';
4
+ import { DrawerBond } from './bond.svelte';
5
+ import type { SlideoverTitleProps } from './types';
6
+
7
+ type Element = HTMLElementTagNameMap[E];
8
+
9
+ const bond = DrawerBond.get();
10
+
11
+ let {
12
+ class: klass = '',
13
+ as = 'h3' as E,
14
+ children,
15
+ onmount = undefined,
16
+ ondestroy = undefined,
17
+ animate = undefined,
18
+ enter = undefined,
19
+ exit = undefined,
20
+ initial = undefined,
21
+ ...restProps
22
+ }: SlideoverTitleProps<E, B> & HTMLAttributes<Element> = $props();
23
+
24
+ const titleProps = $derived({
25
+ ...bond?.title(),
26
+ ...restProps
27
+ });
28
+ </script>
29
+
30
+ <HtmlAtom
31
+ {as}
32
+ {bond}
33
+ preset="drawer.title"
34
+ class={['border-border', '$preset', klass]}
35
+ onmount={onmount?.bind(bond.state)}
36
+ ondestroy={ondestroy?.bind(bond.state)}
37
+ enter={enter?.bind(bond.state)}
38
+ exit={exit?.bind(bond.state)}
39
+ initial={initial?.bind(bond.state)}
40
+ animate={animate?.bind(bond.state)}
41
+ {...titleProps}
42
+ >
43
+ {@render children?.({ drawer: bond })}
44
+ </HtmlAtom>
@@ -1,54 +1,54 @@
1
- <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { onMount } from 'svelte';
3
- import { DropdownBond } from './bond.svelte';
4
- import { Input } from '../input';
5
- import { type Base } from '../atom';
6
-
7
- const bond = DropdownBond.get() as DropdownBond;
8
-
9
- if (!bond) {
10
- throw new Error('Combobox atom was not found');
11
- }
12
-
13
- let {
14
- class: klass = '',
15
- children = undefined,
16
- onpointerdown,
17
- onmount = undefined,
18
- ondestroy = undefined,
19
- animate = undefined,
20
- enter = undefined,
21
- exit = undefined,
22
- initial = undefined,
23
- ...restProps
24
- } = $props();
25
-
26
- let isMounted = $state(false);
27
-
28
- onMount(() => {
29
- isMounted = true;
30
- });
31
-
32
- const isMultiple = $derived(bond?.state.props?.multiple ?? false);
33
- const selectedText = $derived(
34
- isMounted || isMultiple ? (bond.state.selectedItems.at(0)?.text ?? '') : ''
35
- );
36
-
37
- const value = $derived(
38
- bond?.state.props?.query ?? (bond?.state.props?.text || selectedText || '')
39
- );
40
- </script>
41
-
42
- <Input.Control
43
- bind:value={bond.state.query}
44
- {bond}
45
- preset="dropdown.query"
46
- class={['inline-flex h-auto w-auto flex-1 py-1', '$preset', klass]}
47
- onmount={onmount?.bind(bond.state)}
48
- ondestroy={ondestroy?.bind(bond.state)}
49
- enter={enter?.bind(bond.state)}
50
- exit={exit?.bind(bond.state)}
51
- initial={initial?.bind(bond.state)}
52
- animate={animate?.bind(bond.state)}
53
- {...restProps}
54
- />
1
+ <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { onMount } from 'svelte';
3
+ import { DropdownBond } from './bond.svelte';
4
+ import { Input } from '../input';
5
+ import { type Base } from '../atom';
6
+
7
+ const bond = DropdownBond.get() as DropdownBond;
8
+
9
+ if (!bond) {
10
+ throw new Error('Combobox atom was not found');
11
+ }
12
+
13
+ let {
14
+ class: klass = '',
15
+ children = undefined,
16
+ onpointerdown,
17
+ onmount = undefined,
18
+ ondestroy = undefined,
19
+ animate = undefined,
20
+ enter = undefined,
21
+ exit = undefined,
22
+ initial = undefined,
23
+ ...restProps
24
+ } = $props();
25
+
26
+ let isMounted = $state(false);
27
+
28
+ onMount(() => {
29
+ isMounted = true;
30
+ });
31
+
32
+ const isMultiple = $derived(bond?.state.props?.multiple ?? false);
33
+ const selectedText = $derived(
34
+ isMounted || isMultiple ? (bond.state.selectedItems.at(0)?.text ?? '') : ''
35
+ );
36
+
37
+ const value = $derived(
38
+ bond?.state.props?.query ?? (bond?.state.props?.text || selectedText || '')
39
+ );
40
+ </script>
41
+
42
+ <Input.Control
43
+ bind:value={bond.state.query}
44
+ {bond}
45
+ preset="dropdown.query"
46
+ class={['inline-flex h-auto w-auto flex-1 py-1', '$preset', klass]}
47
+ onmount={onmount?.bind(bond.state)}
48
+ ondestroy={ondestroy?.bind(bond.state)}
49
+ enter={enter?.bind(bond.state)}
50
+ exit={exit?.bind(bond.state)}
51
+ initial={initial?.bind(bond.state)}
52
+ animate={animate?.bind(bond.state)}
53
+ {...restProps}
54
+ />
@@ -1,59 +1,59 @@
1
- <script lang="ts" generics="T">
2
- import { defineProperty, defineState } from '../../utils';
3
- import { DropdownBond, DropdownBondState, type DropdownStateProps } from './bond.svelte';
4
-
5
- let {
6
- open = $bindable(false),
7
- value = $bindable(),
8
- values = $bindable(),
9
- multiple = false,
10
- disabled = false,
11
- placements = ['bottom-start', 'bottom-end', 'top-start', 'top-end'],
12
- placement = 'bottom-start',
13
- offset = 4,
14
- keys = [],
15
- factory = _factory,
16
- children = undefined,
17
- onquerychange = undefined,
18
- ...restProps
19
- } = $props();
20
-
21
- const bondProps = defineState<DropdownStateProps>(
22
- [
23
- defineProperty(
24
- 'open',
25
- () => open,
26
- (v) => {
27
- open = v;
28
- }
29
- ),
30
- defineProperty(
31
- 'values',
32
- () => (multiple ? values : [value].filter(Boolean)),
33
- (v) => {
34
- values = v;
35
- value = v[0];
36
- }
37
- ),
38
- defineProperty('multiple', () => multiple),
39
- defineProperty('disabled', () => disabled),
40
- defineProperty('placement', () => placement),
41
- defineProperty('offset', () => offset),
42
- defineProperty('placements', () => placements ?? []),
43
- defineProperty('keys', () => keys ?? [])
44
- ],
45
- () => ({ onquerychange })
46
- );
47
- const bond = factory(bondProps).share();
48
-
49
- function _factory(props: typeof bondProps) {
50
- const bondState = new DropdownBondState<T>(() => props);
51
- return new DropdownBond(bondState);
52
- }
53
-
54
- export function getBond() {
55
- return bond;
56
- }
57
- </script>
58
-
59
- {@render children?.({ dropdown: bond })}
1
+ <script lang="ts" generics="T">
2
+ import { defineProperty, defineState } from '../../utils';
3
+ import { DropdownBond, DropdownBondState, type DropdownStateProps } from './bond.svelte';
4
+
5
+ let {
6
+ open = $bindable(false),
7
+ value = $bindable(),
8
+ values = $bindable(),
9
+ multiple = false,
10
+ disabled = false,
11
+ placements = ['bottom-start', 'bottom-end', 'top-start', 'top-end'],
12
+ placement = 'bottom-start',
13
+ offset = 4,
14
+ keys = [],
15
+ factory = _factory,
16
+ children = undefined,
17
+ onquerychange = undefined,
18
+ ...restProps
19
+ } = $props();
20
+
21
+ const bondProps = defineState<DropdownStateProps>(
22
+ [
23
+ defineProperty(
24
+ 'open',
25
+ () => open,
26
+ (v) => {
27
+ open = v;
28
+ }
29
+ ),
30
+ defineProperty(
31
+ 'values',
32
+ () => (multiple ? values : [value].filter(Boolean)),
33
+ (v) => {
34
+ values = v;
35
+ value = v[0];
36
+ }
37
+ ),
38
+ defineProperty('multiple', () => multiple),
39
+ defineProperty('disabled', () => disabled),
40
+ defineProperty('placement', () => placement),
41
+ defineProperty('offset', () => offset),
42
+ defineProperty('placements', () => placements ?? []),
43
+ defineProperty('keys', () => keys ?? [])
44
+ ],
45
+ () => ({ onquerychange })
46
+ );
47
+ const bond = factory(bondProps).share();
48
+
49
+ function _factory(props: typeof bondProps) {
50
+ const bondState = new DropdownBondState<T>(() => props);
51
+ return new DropdownBond(bondState);
52
+ }
53
+
54
+ export function getBond() {
55
+ return bond;
56
+ }
57
+ </script>
58
+
59
+ {@render children?.({ dropdown: bond })}