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

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 (186) hide show
  1. package/README.md +852 -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 +43 -42
  8. package/dist/components/alert/alert-close-button.svelte +70 -72
  9. package/dist/components/alert/alert-content.svelte +43 -42
  10. package/dist/components/alert/alert-description.svelte +42 -41
  11. package/dist/components/alert/alert-icon.svelte +47 -46
  12. package/dist/components/alert/alert-root.svelte +103 -102
  13. package/dist/components/alert/alert-title.svelte +42 -41
  14. package/dist/components/alert/alert.stories.svelte +384 -23
  15. package/dist/components/alert/alert.stories.svelte.d.ts +2 -5
  16. package/dist/components/atom/html-atom.svelte +207 -201
  17. package/dist/components/atom/html-atom.svelte.d.ts +1 -1
  18. package/dist/components/atom/snippet-renderer.svelte +5 -0
  19. package/dist/components/atom/snippet-renderer.svelte.d.ts +5 -0
  20. package/dist/components/avatar/avatar.stories.svelte.d.ts +1 -1
  21. package/dist/components/badge/badge.stories.svelte.d.ts +1 -1
  22. package/dist/components/breadcrumb/breadcrumb.stories.svelte.d.ts +1 -1
  23. package/dist/components/button/button.stories.svelte +17 -14
  24. package/dist/components/calendar/atoms.d.ts +5 -0
  25. package/dist/components/calendar/atoms.js +5 -0
  26. package/dist/components/calendar/bond.svelte.d.ts +72 -0
  27. package/dist/components/calendar/bond.svelte.js +132 -0
  28. package/dist/components/calendar/calendar-body.svelte +107 -0
  29. package/dist/components/calendar/calendar-body.svelte.d.ts +8 -0
  30. package/dist/components/calendar/calendar-day.svelte +96 -0
  31. package/dist/components/calendar/calendar-day.svelte.d.ts +4 -0
  32. package/dist/components/calendar/calendar-header.svelte +29 -0
  33. package/dist/components/calendar/calendar-header.svelte.d.ts +6 -0
  34. package/dist/components/calendar/calendar-root.svelte +206 -0
  35. package/dist/components/calendar/calendar-root.svelte.d.ts +8 -0
  36. package/dist/components/calendar/calendar-week-day.svelte +34 -0
  37. package/dist/components/calendar/calendar-week-day.svelte.d.ts +9 -0
  38. package/dist/components/calendar/calendar.css +26 -0
  39. package/dist/components/calendar/calendar.stories.svelte +31 -0
  40. package/dist/components/calendar/calendar.stories.svelte.d.ts +26 -0
  41. package/dist/components/calendar/index.d.ts +4 -0
  42. package/dist/components/calendar/index.js +4 -0
  43. package/dist/components/calendar/runes.svelte.d.ts +3 -0
  44. package/dist/components/calendar/runes.svelte.js +25 -0
  45. package/dist/components/calendar/types.d.ts +62 -0
  46. package/dist/components/calendar/types.js +1 -0
  47. package/dist/components/card/card-body.svelte +39 -39
  48. package/dist/components/card/card-description.svelte +41 -41
  49. package/dist/components/card/card-footer.svelte +41 -41
  50. package/dist/components/card/card-header.svelte +41 -41
  51. package/dist/components/card/card-media.svelte +41 -41
  52. package/dist/components/card/card-root.svelte +91 -91
  53. package/dist/components/card/card-subtitle.svelte +41 -41
  54. package/dist/components/card/card-title.svelte +45 -45
  55. package/dist/components/collapsible/collapsible-body.svelte +39 -39
  56. package/dist/components/collapsible/collapsible-header.svelte +39 -39
  57. package/dist/components/collapsible/collapsible-indicator.svelte +50 -50
  58. package/dist/components/collapsible/collapsible-root.svelte +66 -66
  59. package/dist/components/combobox/combobox-root.svelte +65 -65
  60. package/dist/components/container/container.stories.svelte.d.ts +1 -1
  61. package/dist/components/contextmenu/contextmenu-trigger.svelte.d.ts +1 -1
  62. package/dist/components/datagrid/bond.svelte.d.ts +2 -2
  63. package/dist/components/datagrid/datagrid-body.svelte +37 -37
  64. package/dist/components/datagrid/datagrid-checkbox.svelte +101 -101
  65. package/dist/components/datagrid/datagrid-footer.svelte +34 -34
  66. package/dist/components/datagrid/datagrid-header.svelte +49 -49
  67. package/dist/components/datagrid/datagrid-root.svelte +2 -2
  68. package/dist/components/datagrid/datagrid.css +5 -47
  69. package/dist/components/datagrid/td/datagrid-td.svelte +66 -66
  70. package/dist/components/datagrid/th/datagrid-th.svelte +106 -106
  71. package/dist/components/datagrid/tr/datagrid-tr.svelte +88 -88
  72. package/dist/components/datagrid/types.d.ts +1 -1
  73. package/dist/components/date-picker/atoms.d.ts +3 -0
  74. package/dist/components/date-picker/atoms.js +3 -0
  75. package/dist/components/date-picker/bond.svelte.d.ts +67 -0
  76. package/dist/components/date-picker/bond.svelte.js +174 -0
  77. package/dist/components/date-picker/date-picker-calendar.svelte +67 -0
  78. package/dist/components/date-picker/date-picker-calendar.svelte.d.ts +4 -0
  79. package/dist/components/date-picker/date-picker-header.svelte +100 -0
  80. package/dist/components/date-picker/date-picker-header.svelte.d.ts +4 -0
  81. package/dist/components/date-picker/date-picker-months.svelte +142 -0
  82. package/dist/components/date-picker/date-picker-months.svelte.d.ts +4 -0
  83. package/dist/components/date-picker/date-picker-root.svelte +95 -0
  84. package/dist/components/date-picker/date-picker-root.svelte.d.ts +4 -0
  85. package/dist/components/date-picker/date-picker-years.svelte +205 -0
  86. package/dist/components/date-picker/date-picker-years.svelte.d.ts +4 -0
  87. package/dist/components/date-picker/date-picker.stories.svelte +42 -0
  88. package/dist/components/date-picker/date-picker.stories.svelte.d.ts +3 -0
  89. package/dist/components/date-picker/index.d.ts +3 -0
  90. package/dist/components/date-picker/index.js +3 -0
  91. package/dist/components/date-picker/types.d.ts +53 -0
  92. package/dist/components/date-picker/types.js +1 -0
  93. package/dist/components/dialog/dialog-body.svelte +39 -39
  94. package/dist/components/dialog/dialog-close-button.svelte +58 -58
  95. package/dist/components/dialog/dialog-content.svelte +1 -1
  96. package/dist/components/dialog/dialog-description.svelte +40 -40
  97. package/dist/components/dialog/dialog-footer.svelte +39 -39
  98. package/dist/components/dialog/dialog-header.svelte +39 -39
  99. package/dist/components/dialog/dialog-root.svelte +110 -110
  100. package/dist/components/dialog/dialog-title.svelte +41 -41
  101. package/dist/components/drawer/drawer-backdrop.svelte +38 -38
  102. package/dist/components/drawer/drawer-body.svelte +42 -42
  103. package/dist/components/drawer/drawer-content.svelte +42 -42
  104. package/dist/components/drawer/drawer-description.svelte +44 -44
  105. package/dist/components/drawer/drawer-footer.svelte +41 -41
  106. package/dist/components/drawer/drawer-header.svelte +43 -43
  107. package/dist/components/drawer/drawer-root.svelte +93 -93
  108. package/dist/components/drawer/drawer-title.svelte +44 -44
  109. package/dist/components/dropdown/dropdown-query.svelte +54 -54
  110. package/dist/components/dropdown/dropdown-root.svelte +59 -59
  111. package/dist/components/dropdown/dropdown-trigger.svelte +41 -41
  112. package/dist/components/dropdown/dropdown-value.svelte +60 -60
  113. package/dist/components/element/types.d.ts +1 -1
  114. package/dist/components/form/bond.svelte.d.ts +1 -1
  115. package/dist/components/form/field/field-control.svelte +48 -48
  116. package/dist/components/form/field/field-label.svelte +24 -24
  117. package/dist/components/form/field/field-root.svelte +59 -59
  118. package/dist/components/icon/icon.svelte +44 -44
  119. package/dist/components/image/image.stories.svelte.d.ts +1 -1
  120. package/dist/components/index.d.ts +4 -0
  121. package/dist/components/index.js +4 -0
  122. package/dist/components/input/input-control.svelte +103 -103
  123. package/dist/components/label/label.svelte +25 -25
  124. package/dist/components/lazy/index.d.ts +1 -0
  125. package/dist/components/lazy/index.js +1 -0
  126. package/dist/components/lazy/lazy.stories.svelte +35 -0
  127. package/dist/components/lazy/lazy.stories.svelte.d.ts +19 -0
  128. package/dist/components/lazy/lazy.svelte +28 -0
  129. package/dist/components/lazy/lazy.svelte.d.ts +5 -0
  130. package/dist/components/lazy/types.d.ts +10 -0
  131. package/dist/components/lazy/types.js +1 -0
  132. package/dist/components/menu/menu-list.svelte +40 -39
  133. package/dist/components/menu/menu-list.svelte.d.ts +1 -0
  134. package/dist/components/popover/popover-arrow.svelte +111 -111
  135. package/dist/components/popover/popover-content.svelte +178 -139
  136. package/dist/components/popover/popover-root.svelte +16 -17
  137. package/dist/components/popover/popover.stories.svelte +0 -15
  138. package/dist/components/portal/portal-root.svelte +83 -83
  139. package/dist/components/portal/teleport.svelte +50 -50
  140. package/dist/components/qr-code/index.d.ts +2 -0
  141. package/dist/components/qr-code/index.js +2 -0
  142. package/dist/components/qr-code/qr-code.stories.svelte +27 -0
  143. package/dist/components/qr-code/qr-code.stories.svelte.d.ts +26 -0
  144. package/dist/components/qr-code/qr-code.svelte +75 -0
  145. package/dist/components/qr-code/qr-code.svelte.d.ts +4 -0
  146. package/dist/components/qr-code/types.d.ts +14 -0
  147. package/dist/components/qr-code/types.js +1 -0
  148. package/dist/components/radio/radio.svelte +109 -109
  149. package/dist/components/radio/types.svelte.d.ts +1 -1
  150. package/dist/components/scrollable/scrollable-container.svelte +82 -82
  151. package/dist/components/scrollable/scrollable-content.svelte +41 -41
  152. package/dist/components/scrollable/scrollable-root.svelte +100 -100
  153. package/dist/components/scrollable/scrollable-thumb.svelte +75 -75
  154. package/dist/components/scrollable/scrollable-track.svelte +59 -59
  155. package/dist/components/scrollable/scrollable.stories.svelte.d.ts +1 -1
  156. package/dist/components/sidebar/bond.svelte.d.ts +0 -5
  157. package/dist/components/sidebar/bond.svelte.js +1 -12
  158. package/dist/components/sidebar/sidebar-content.svelte +39 -39
  159. package/dist/components/sidebar/sidebar-content.svelte.d.ts +2 -2
  160. package/dist/components/sidebar/sidebar-root.svelte +41 -68
  161. package/dist/components/sidebar/sidebar-root.svelte.d.ts +2 -2
  162. package/dist/components/sidebar/sidebar.stories.svelte +54 -52
  163. package/dist/components/sidebar/types.d.ts +6 -6
  164. package/dist/components/tabs/tab/tab-body.svelte +52 -52
  165. package/dist/components/tabs/tab/tab-description.svelte +41 -41
  166. package/dist/components/tabs/tab/tab-header.svelte +71 -71
  167. package/dist/components/tabs/tab/tab-root.svelte +86 -86
  168. package/dist/components/toast/toast-description.svelte +38 -38
  169. package/dist/components/toast/toast-root.svelte +61 -61
  170. package/dist/components/toast/toast-title.svelte +35 -35
  171. package/dist/components/tree/tree-body.svelte +39 -39
  172. package/dist/components/tree/tree-header.svelte +54 -54
  173. package/dist/components/tree/tree-indicator.svelte +40 -40
  174. package/dist/components/tree/tree-root.svelte +65 -65
  175. package/dist/components/virtual/virtual-root.svelte +239 -239
  176. package/dist/context/preset.svelte.d.ts +1 -1
  177. package/dist/icons/icon-arrow-down.svelte.d.ts +1 -1
  178. package/dist/icons/icon-checkmark.svelte.d.ts +1 -1
  179. package/dist/icons/icon-close.svelte.d.ts +1 -1
  180. package/dist/icons/icon-more-vert.svelte.d.ts +1 -1
  181. package/dist/runes/container.svelte.d.ts +2 -2
  182. package/dist/shared/bond.svelte.d.ts +1 -1
  183. package/dist/utils/state.d.ts +1 -1
  184. package/dist/utils/state.js +2 -1
  185. package/llm/variants.md +650 -103
  186. package/package.json +465 -437
@@ -1,61 +1,61 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { AccordionBond, AccordionState, type AccordionStateProps } from './bond.svelte';
3
- import { defineProperty, defineState } from '../../utils';
4
- import { HtmlAtom, type Base } from '../atom';
5
- import type { AccordionRootProps } from './types';
6
-
7
- let {
8
- value = $bindable(undefined),
9
- values = $bindable([]),
10
- data = $bindable([]),
11
- class: klass = '',
12
- multiple = false,
13
- collapsible = false,
14
- disabled = false,
15
- children = undefined,
16
- factory = _factory,
17
- onmount = undefined,
18
- ondestroy = undefined,
19
- animate = undefined,
20
- enter = undefined,
21
- exit = undefined,
22
- initial = undefined,
23
- ...restProps
24
- }: AccordionRootProps<E, B> = $props();
25
-
26
- const bondProps = defineState<AccordionStateProps>([
27
- defineProperty(
28
- 'values',
29
- () => (multiple ? values : ([value].filter(Boolean) as string[])),
30
- (v) => {
31
- values = v;
32
- value = values[0];
33
- }
34
- )
35
- ]);
36
- const bond = factory(bondProps).share();
37
-
38
- const rootProps = $derived({
39
- ...bond.root(),
40
- ...restProps
41
- });
42
-
43
- function _factory(props: typeof bondProps = bondProps) {
44
- const bondState = new AccordionState(() => props);
45
-
46
- return new AccordionBond(bondState);
47
- }
48
-
49
- export function getBond() {
50
- return bond;
51
- }
52
- </script>
53
-
54
- <HtmlAtom
55
- preset="accordion"
56
- class={['bg-card border-border flex list-none flex-col', '$preset', klass]}
57
- {bond}
58
- {...rootProps}
59
- >
60
- {@render children?.({ accordion: bond })}
61
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { AccordionBond, AccordionState, type AccordionStateProps } from './bond.svelte';
3
+ import { defineProperty, defineState } from '../../utils';
4
+ import { HtmlAtom, type Base } from '../atom';
5
+ import type { AccordionRootProps } from './types';
6
+
7
+ let {
8
+ value = $bindable(undefined),
9
+ values = $bindable([]),
10
+ data = $bindable([]),
11
+ class: klass = '',
12
+ multiple = false,
13
+ collapsible = false,
14
+ disabled = false,
15
+ children = undefined,
16
+ factory = _factory,
17
+ onmount = undefined,
18
+ ondestroy = undefined,
19
+ animate = undefined,
20
+ enter = undefined,
21
+ exit = undefined,
22
+ initial = undefined,
23
+ ...restProps
24
+ }: AccordionRootProps<E, B> = $props();
25
+
26
+ const bondProps = defineState<AccordionStateProps>([
27
+ defineProperty(
28
+ 'values',
29
+ () => (multiple ? values : ([value].filter(Boolean) as string[])),
30
+ (v) => {
31
+ values = v;
32
+ value = values[0];
33
+ }
34
+ )
35
+ ]);
36
+ const bond = factory(bondProps).share();
37
+
38
+ const rootProps = $derived({
39
+ ...bond.root(),
40
+ ...restProps
41
+ });
42
+
43
+ function _factory(props: typeof bondProps = bondProps) {
44
+ const bondState = new AccordionState(() => props);
45
+
46
+ return new AccordionBond(bondState);
47
+ }
48
+
49
+ export function getBond() {
50
+ return bond;
51
+ }
52
+ </script>
53
+
54
+ <HtmlAtom
55
+ preset="accordion"
56
+ class={['bg-card border-border flex list-none flex-col', '$preset', klass]}
57
+ {bond}
58
+ {...rootProps}
59
+ >
60
+ {@render children?.({ accordion: bond })}
61
+ </HtmlAtom>
@@ -1,42 +1,42 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { HtmlAtom, type Base } from '../../atom';
3
- import { AccordionItemBond } from './bond.svelte';
4
- import type { AccordionItemBodyProps } from './types';
5
-
6
- const bond = AccordionItemBond.get();
7
- const isOpen = $derived(bond?.state.isOpen ?? false);
8
-
9
- let {
10
- class: klass = '',
11
- children = undefined,
12
- onmount = undefined,
13
- ondestroy = undefined,
14
- animate = undefined,
15
- enter = undefined,
16
- exit = undefined,
17
- initial = undefined,
18
- ...restProps
19
- }: AccordionItemBodyProps<E, B> = $props();
20
-
21
- const bodyProps = $derived({
22
- ...bond?.body(),
23
- ...restProps
24
- });
25
- </script>
26
-
27
- {#if isOpen}
28
- <HtmlAtom
29
- preset="accordion.item.body"
30
- class={['border-border box-content', '$preset', klass]}
31
- {bond}
32
- onmount={onmount?.bind(bond.state)}
33
- ondestroy={ondestroy?.bind(bond.state)}
34
- animate={animate?.bind(bond.state)}
35
- enter={enter?.bind(bond.state)}
36
- exit={exit?.bind(bond.state)}
37
- initial={initial?.bind(bond.state)}
38
- {...bodyProps}
39
- >
40
- {@render children?.({ accordionItem: bond })}
41
- </HtmlAtom>
42
- {/if}
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../../atom';
3
+ import { AccordionItemBond } from './bond.svelte';
4
+ import type { AccordionItemBodyProps } from './types';
5
+
6
+ const bond = AccordionItemBond.get();
7
+ const isOpen = $derived(bond?.state.isOpen ?? false);
8
+
9
+ let {
10
+ class: klass = '',
11
+ children = undefined,
12
+ onmount = undefined,
13
+ ondestroy = undefined,
14
+ animate = undefined,
15
+ enter = undefined,
16
+ exit = undefined,
17
+ initial = undefined,
18
+ ...restProps
19
+ }: AccordionItemBodyProps<E, B> = $props();
20
+
21
+ const bodyProps = $derived({
22
+ ...bond?.body(),
23
+ ...restProps
24
+ });
25
+ </script>
26
+
27
+ {#if isOpen}
28
+ <HtmlAtom
29
+ preset="accordion.item.body"
30
+ class={['border-border box-content', '$preset', klass]}
31
+ {bond}
32
+ onmount={onmount?.bind(bond.state)}
33
+ ondestroy={ondestroy?.bind(bond.state)}
34
+ animate={animate?.bind(bond.state)}
35
+ enter={enter?.bind(bond.state)}
36
+ exit={exit?.bind(bond.state)}
37
+ initial={initial?.bind(bond.state)}
38
+ {...bodyProps}
39
+ >
40
+ {@render children?.({ accordionItem: bond })}
41
+ </HtmlAtom>
42
+ {/if}
@@ -1,50 +1,50 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { HtmlAtom, type Base } from '../../atom';
3
- import { AccordionItemBond } from './bond.svelte';
4
- import type { AccordionItemHeaderProps } from './types';
5
-
6
- let {
7
- class: klass = '',
8
- as = 'button',
9
- children = undefined,
10
- onpointerdown = undefined,
11
- onmount = undefined,
12
- ondestroy = undefined,
13
- animate = undefined,
14
- enter = undefined,
15
- exit = undefined,
16
- initial = undefined,
17
- ...restProps
18
- }: AccordionItemHeaderProps = $props();
19
-
20
- const bond = AccordionItemBond.get();
21
-
22
- const headerProps = $derived({
23
- ...bond?.header(),
24
- ...restProps
25
- });
26
- </script>
27
-
28
- <!-- svelte-ignore a11y_no_static_element_interactions -->
29
- <HtmlAtom
30
- {as}
31
- {bond}
32
- preset="accordion.item.header"
33
- class={[
34
- 'border-border relative box-border flex w-full cursor-pointer items-center',
35
- '$preset',
36
- klass
37
- ]}
38
- onmount={onmount?.bind(bond.state)}
39
- ondestroy={ondestroy?.bind(bond.state)}
40
- animate={animate?.bind(bond.state)}
41
- enter={enter?.bind(bond.state)}
42
- exit={exit?.bind(bond.state)}
43
- initial={initial?.bind(bond.state)}
44
- tabindex={as !== 'button' ? 0 : undefined}
45
- {...headerProps}
46
- >
47
- {@render children?.({
48
- accordionItem: bond
49
- })}
50
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../../atom';
3
+ import { AccordionItemBond } from './bond.svelte';
4
+ import type { AccordionItemHeaderProps } from './types';
5
+
6
+ let {
7
+ class: klass = '',
8
+ as = 'button',
9
+ children = undefined,
10
+ onpointerdown = undefined,
11
+ onmount = undefined,
12
+ ondestroy = undefined,
13
+ animate = undefined,
14
+ enter = undefined,
15
+ exit = undefined,
16
+ initial = undefined,
17
+ ...restProps
18
+ }: AccordionItemHeaderProps = $props();
19
+
20
+ const bond = AccordionItemBond.get();
21
+
22
+ const headerProps = $derived({
23
+ ...bond?.header(),
24
+ ...restProps
25
+ });
26
+ </script>
27
+
28
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
29
+ <HtmlAtom
30
+ {as}
31
+ {bond}
32
+ preset="accordion.item.header"
33
+ class={[
34
+ 'border-border relative box-border flex w-full cursor-pointer items-center',
35
+ '$preset',
36
+ klass
37
+ ]}
38
+ onmount={onmount?.bind(bond.state)}
39
+ ondestroy={ondestroy?.bind(bond.state)}
40
+ animate={animate?.bind(bond.state)}
41
+ enter={enter?.bind(bond.state)}
42
+ exit={exit?.bind(bond.state)}
43
+ initial={initial?.bind(bond.state)}
44
+ tabindex={as !== 'button' ? 0 : undefined}
45
+ {...headerProps}
46
+ >
47
+ {@render children?.({
48
+ accordionItem: bond
49
+ })}
50
+ </HtmlAtom>
@@ -1,50 +1,50 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { animate as motion } from 'motion';
3
- import { Icon } from '../../icon';
4
- import IconArrowDown from '../../../icons/icon-arrow-down.svelte';
5
- import { HtmlAtom, type Base } from '../../atom';
6
- import { AccordionItemBond } from './bond.svelte';
7
- import type { AccordionItemIndicatorProps } from './types';
8
-
9
- const bond = AccordionItemBond.get();
10
- const isOpen = $derived(bond?.state?.isOpen ?? false);
11
-
12
- let {
13
- class: klass = '',
14
- children = undefined,
15
- onmount = undefined,
16
- ondestroy = undefined,
17
- animate = _animate,
18
- enter = undefined,
19
- exit = undefined,
20
- initial = undefined,
21
- ...restProps
22
- }: AccordionItemIndicatorProps<E, B> = $props();
23
-
24
- const indicatorProps = $derived({
25
- ...bond?.indicator(),
26
- ...restProps
27
- });
28
-
29
- function _animate(node: HTMLElement) {
30
- return motion(node, { rotate: 180 * +isOpen }, { duration: 0.3, ease: 'anticipate' });
31
- }
32
- </script>
33
-
34
- <HtmlAtom
35
- preset="accordion.item.indicator"
36
- class={['border-border pointer-events-none flex items-center justify-center', '$preset', klass]}
37
- onmount={onmount?.bind(bond.state)}
38
- ondestroy={ondestroy?.bind(bond.state)}
39
- animate={animate?.bind(bond.state)}
40
- enter={enter?.bind(bond.state)}
41
- exit={exit?.bind(bond.state)}
42
- initial={initial?.bind(bond.state)}
43
- {...indicatorProps}
44
- >
45
- {#if children}
46
- {@render children({ accordionItem: bond })}
47
- {:else}
48
- <Icon src={IconArrowDown} />
49
- {/if}
50
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { animate as motion } from 'motion';
3
+ import { Icon } from '../../icon';
4
+ import IconArrowDown from '../../../icons/icon-arrow-down.svelte';
5
+ import { HtmlAtom, type Base } from '../../atom';
6
+ import { AccordionItemBond } from './bond.svelte';
7
+ import type { AccordionItemIndicatorProps } from './types';
8
+
9
+ const bond = AccordionItemBond.get();
10
+ const isOpen = $derived(bond?.state?.isOpen ?? false);
11
+
12
+ let {
13
+ class: klass = '',
14
+ children = undefined,
15
+ onmount = undefined,
16
+ ondestroy = undefined,
17
+ animate = _animate,
18
+ enter = undefined,
19
+ exit = undefined,
20
+ initial = undefined,
21
+ ...restProps
22
+ }: AccordionItemIndicatorProps<E, B> = $props();
23
+
24
+ const indicatorProps = $derived({
25
+ ...bond?.indicator(),
26
+ ...restProps
27
+ });
28
+
29
+ function _animate(node: HTMLElement) {
30
+ return motion(node, { rotate: 180 * +isOpen }, { duration: 0.3, ease: 'anticipate' });
31
+ }
32
+ </script>
33
+
34
+ <HtmlAtom
35
+ preset="accordion.item.indicator"
36
+ class={['border-border pointer-events-none flex items-center justify-center', '$preset', klass]}
37
+ onmount={onmount?.bind(bond.state)}
38
+ ondestroy={ondestroy?.bind(bond.state)}
39
+ animate={animate?.bind(bond.state)}
40
+ enter={enter?.bind(bond.state)}
41
+ exit={exit?.bind(bond.state)}
42
+ initial={initial?.bind(bond.state)}
43
+ {...indicatorProps}
44
+ >
45
+ {#if children}
46
+ {@render children({ accordionItem: bond })}
47
+ {:else}
48
+ <Icon src={IconArrowDown} />
49
+ {/if}
50
+ </HtmlAtom>
@@ -1,65 +1,65 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { nanoid } from 'nanoid';
3
- import { defineProperty, defineState } from '../../../utils';
4
- import { HtmlAtom, type Base } from '../../atom';
5
- import {
6
- AccordionItemBond,
7
- AccordionItemBondState,
8
- type AccordionItemBondProps
9
- } from './bond.svelte';
10
- import type { AccordionItemRootProps } from './types';
11
-
12
- let {
13
- class: klass = '',
14
- value = nanoid(),
15
- data = undefined,
16
- disabled = false,
17
- factory = _factory,
18
- children = undefined,
19
- onmount = undefined,
20
- ondestroy = undefined,
21
- animate = undefined,
22
- enter = undefined,
23
- exit = undefined,
24
- initial = undefined,
25
- ...restProps
26
- }: AccordionItemRootProps<E, B> = $props();
27
-
28
- const accordionItemProps = defineState<AccordionItemBondProps>([
29
- defineProperty('data', () => data),
30
- defineProperty('disabled', () => disabled),
31
- defineProperty('value', () => value)
32
- ]);
33
- const bond = factory(accordionItemProps).share();
34
-
35
- bond.state.mount();
36
-
37
- const rootProps = $derived({
38
- ...bond.root(),
39
- ...restProps
40
- });
41
-
42
- function _factory(props: typeof accordionItemProps) {
43
- const accordionItemState = new AccordionItemBondState(() => props);
44
- return new AccordionItemBond(accordionItemState);
45
- }
46
-
47
- export function getBond() {
48
- return bond;
49
- }
50
- </script>
51
-
52
- <HtmlAtom
53
- {bond}
54
- preset="accordion.item"
55
- class={['border-border', '$preset', klass]}
56
- onmount={onmount?.bind(bond.state)}
57
- ondestroy={ondestroy?.bind(bond.state)}
58
- animate={animate?.bind(bond.state)}
59
- enter={enter?.bind(bond.state)}
60
- exit={exit?.bind(bond.state)}
61
- initial={initial?.bind(bond.state)}
62
- {...rootProps}
63
- >
64
- {@render children?.({ accordionItem: bond })}
65
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { nanoid } from 'nanoid';
3
+ import { defineProperty, defineState } from '../../../utils';
4
+ import { HtmlAtom, type Base } from '../../atom';
5
+ import {
6
+ AccordionItemBond,
7
+ AccordionItemBondState,
8
+ type AccordionItemBondProps
9
+ } from './bond.svelte';
10
+ import type { AccordionItemRootProps } from './types';
11
+
12
+ let {
13
+ class: klass = '',
14
+ value = nanoid(),
15
+ data = undefined,
16
+ disabled = false,
17
+ factory = _factory,
18
+ children = undefined,
19
+ onmount = undefined,
20
+ ondestroy = undefined,
21
+ animate = undefined,
22
+ enter = undefined,
23
+ exit = undefined,
24
+ initial = undefined,
25
+ ...restProps
26
+ }: AccordionItemRootProps<E, B> = $props();
27
+
28
+ const accordionItemProps = defineState<AccordionItemBondProps>([
29
+ defineProperty('data', () => data),
30
+ defineProperty('disabled', () => disabled),
31
+ defineProperty('value', () => value)
32
+ ]);
33
+ const bond = factory(accordionItemProps).share();
34
+
35
+ bond.state.mount();
36
+
37
+ const rootProps = $derived({
38
+ ...bond.root(),
39
+ ...restProps
40
+ });
41
+
42
+ function _factory(props: typeof accordionItemProps) {
43
+ const accordionItemState = new AccordionItemBondState(() => props);
44
+ return new AccordionItemBond(accordionItemState);
45
+ }
46
+
47
+ export function getBond() {
48
+ return bond;
49
+ }
50
+ </script>
51
+
52
+ <HtmlAtom
53
+ {bond}
54
+ preset="accordion.item"
55
+ class={['border-border', '$preset', klass]}
56
+ onmount={onmount?.bind(bond.state)}
57
+ ondestroy={ondestroy?.bind(bond.state)}
58
+ animate={animate?.bind(bond.state)}
59
+ enter={enter?.bind(bond.state)}
60
+ exit={exit?.bind(bond.state)}
61
+ initial={initial?.bind(bond.state)}
62
+ {...rootProps}
63
+ >
64
+ {@render children?.({ accordionItem: bond })}
65
+ </HtmlAtom>
@@ -1,42 +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 { HtmlAtom, type Base } from '../atom';
4
- import { AlertBond } from './bond.svelte';
5
- import type { AlertActionsProps } from './types';
6
-
7
- type Element = HTMLElementTagNameMap[E];
8
-
9
- const bond = AlertBond.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
- }: AlertActionsProps<E, B> & HTMLAttributes<Element> = $props();
22
-
23
- const actionsProps = $derived({
24
- ...bond?.actions(),
25
- ...restProps
26
- });
27
- </script>
28
-
29
- <HtmlAtom
30
- {bond}
31
- preset="alert.actions"
32
- class={['alert-actions border-border mt-3 flex items-center gap-2', '$preset', klass]}
33
- onmount={onmount?.bind(bond.state)}
34
- ondestroy={ondestroy?.bind(bond.state)}
35
- animate={animate?.bind(bond.state)}
36
- enter={enter?.bind(bond.state)}
37
- exit={exit?.bind(bond.state)}
38
- initial={initial?.bind(bond.state)}
39
- {...actionsProps}
40
- >
41
- {@render children?.({ alert: bond! })}
42
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ import { HtmlAtom, type Base } from '../atom';
4
+ import { AlertBond } from './bond.svelte';
5
+ import type { AlertActionsProps } from './types';
6
+
7
+ type Element = HTMLElementTagNameMap[E];
8
+
9
+ const bond = AlertBond.get();
10
+
11
+ let {
12
+ class: klass = '',
13
+ preset = 'alert.actions',
14
+ children = undefined,
15
+ onmount = undefined,
16
+ ondestroy = undefined,
17
+ animate = undefined,
18
+ enter = undefined,
19
+ exit = undefined,
20
+ initial = undefined,
21
+ ...restProps
22
+ }: AlertActionsProps<E, B> & HTMLAttributes<Element> = $props();
23
+
24
+ const actionsProps = $derived({
25
+ ...bond?.actions(),
26
+ ...restProps
27
+ });
28
+ </script>
29
+
30
+ <HtmlAtom
31
+ {bond}
32
+ {preset}
33
+ class={['alert-actions border-border mt-3 flex items-center gap-2', '$preset', klass]}
34
+ onmount={onmount?.bind(bond.state)}
35
+ ondestroy={ondestroy?.bind(bond.state)}
36
+ animate={animate?.bind(bond.state)}
37
+ enter={enter?.bind(bond.state)}
38
+ exit={exit?.bind(bond.state)}
39
+ initial={initial?.bind(bond.state)}
40
+ {...actionsProps}
41
+ >
42
+ {@render children?.({ alert: bond! })}
43
+ </HtmlAtom>