@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,58 +1,58 @@
1
- <script
2
- lang="ts"
3
- generics="E extends keyof HTMLElementTagNameMap = 'button', B extends Base = Base"
4
- >
5
- import { Icon } from '../icon';
6
- import Close from '../../icons/icon-close.svelte';
7
- import { HtmlAtom, type Base } from '../atom';
8
- import { DialogBond } from './bond.svelte';
9
- import type { DialogCloseButtonProps } from './types';
10
-
11
- const bond = DialogBond.get();
12
-
13
- let {
14
- class: klass = '',
15
- as = 'button' as E,
16
- children = undefined,
17
- onmount = undefined,
18
- ondestroy = undefined,
19
- animate = undefined,
20
- enter = undefined,
21
- exit = undefined,
22
- initial = undefined,
23
- onclick = undefined,
24
- ...restProps
25
- }: DialogCloseButtonProps<E, B> = $props();
26
-
27
- function onclick_(ev: MouseEvent) {
28
- onclick?.(ev);
29
- if (ev.defaultPrevented) {
30
- return;
31
- }
32
-
33
- bond?.state.close();
34
- }
35
- </script>
36
-
37
- <HtmlAtom
38
- {as}
39
- {bond}
40
- preset="dialog.close-button"
41
- class={['border-border cursor-pointer', '$preset', klass]}
42
- enter={enter?.bind(bond.state)}
43
- exit={exit?.bind(bond.state)}
44
- initial={initial?.bind(bond.state)}
45
- animate={animate?.bind(bond.state)}
46
- onmount={onmount?.bind(bond.state)}
47
- ondestroy={ondestroy?.bind(bond.state)}
48
- onclick={onclick_}
49
- {...restProps}
50
- >
51
- {#if children}
52
- {@render children?.()}
53
- {:else}
54
- <Icon>
55
- <Close />
56
- </Icon>
57
- {/if}
58
- </HtmlAtom>
1
+ <script
2
+ lang="ts"
3
+ generics="E extends keyof HTMLElementTagNameMap = 'button', B extends Base = Base"
4
+ >
5
+ import { Icon } from '../icon';
6
+ import Close from '../../icons/icon-close.svelte';
7
+ import { HtmlAtom, type Base } from '../atom';
8
+ import { DialogBond } from './bond.svelte';
9
+ import type { DialogCloseButtonProps } from './types';
10
+
11
+ const bond = DialogBond.get();
12
+
13
+ let {
14
+ class: klass = '',
15
+ as = 'button' as E,
16
+ children = undefined,
17
+ onmount = undefined,
18
+ ondestroy = undefined,
19
+ animate = undefined,
20
+ enter = undefined,
21
+ exit = undefined,
22
+ initial = undefined,
23
+ onclick = undefined,
24
+ ...restProps
25
+ }: DialogCloseButtonProps<E, B> = $props();
26
+
27
+ function onclick_(ev: MouseEvent) {
28
+ onclick?.(ev);
29
+ if (ev.defaultPrevented) {
30
+ return;
31
+ }
32
+
33
+ bond?.state.close();
34
+ }
35
+ </script>
36
+
37
+ <HtmlAtom
38
+ {as}
39
+ {bond}
40
+ preset="dialog.close-button"
41
+ class={['border-border cursor-pointer', '$preset', klass]}
42
+ enter={enter?.bind(bond.state)}
43
+ exit={exit?.bind(bond.state)}
44
+ initial={initial?.bind(bond.state)}
45
+ animate={animate?.bind(bond.state)}
46
+ onmount={onmount?.bind(bond.state)}
47
+ ondestroy={ondestroy?.bind(bond.state)}
48
+ onclick={onclick_}
49
+ {...restProps}
50
+ >
51
+ {#if children}
52
+ {@render children?.()}
53
+ {:else}
54
+ <Icon>
55
+ <Close />
56
+ </Icon>
57
+ {/if}
58
+ </HtmlAtom>
@@ -45,7 +45,7 @@
45
45
  <HtmlAtom
46
46
  preset="dialog.content"
47
47
  class={[
48
- 'bg-card text-foreground border-border flex h-fit w-full max-w-[90svw] flex-col rounded-md border py-4 shadow-sm md:min-w-sm lg:max-w-xl lg:min-w-md',
48
+ 'bg-card text-foreground border-border flex h-fit w-full max-w-[90svw] flex-col rounded-md border py-4 shadow-sm',
49
49
  '$preset',
50
50
  klass
51
51
  ]}
@@ -1,40 +1,40 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base">
2
- import { HtmlAtom, type Base } from '../atom';
3
- import type { DialogDescriptionProps } from './types';
4
- import { DialogBond } from './bond.svelte';
5
-
6
- let {
7
- class: klass = '',
8
- as = 'p' as E,
9
- children = undefined,
10
- onmount = undefined,
11
- ondestroy = undefined,
12
- animate = undefined,
13
- enter = undefined,
14
- exit = undefined,
15
- initial = undefined,
16
- ...restProps
17
- }: DialogDescriptionProps<E, B> = $props();
18
-
19
- const bond = DialogBond.get();
20
-
21
- const descriptionProps = $derived({
22
- ...bond?.description({}),
23
- ...restProps
24
- });
25
- </script>
26
-
27
- <HtmlAtom
28
- {as}
29
- preset="dialog.description"
30
- class={['border-border', '$preset', klass]}
31
- enter={enter?.bind(bond.state)}
32
- exit={exit?.bind(bond.state)}
33
- initial={initial?.bind(bond.state)}
34
- animate={animate?.bind(bond.state)}
35
- onmount={onmount?.bind(bond.state)}
36
- ondestroy={ondestroy?.bind(bond.state)}
37
- {...descriptionProps}
38
- >
39
- {@render children?.({ dialog: bond })}
40
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../atom';
3
+ import type { DialogDescriptionProps } from './types';
4
+ import { DialogBond } from './bond.svelte';
5
+
6
+ let {
7
+ class: klass = '',
8
+ as = 'p' as E,
9
+ children = undefined,
10
+ onmount = undefined,
11
+ ondestroy = undefined,
12
+ animate = undefined,
13
+ enter = undefined,
14
+ exit = undefined,
15
+ initial = undefined,
16
+ ...restProps
17
+ }: DialogDescriptionProps<E, B> = $props();
18
+
19
+ const bond = DialogBond.get();
20
+
21
+ const descriptionProps = $derived({
22
+ ...bond?.description({}),
23
+ ...restProps
24
+ });
25
+ </script>
26
+
27
+ <HtmlAtom
28
+ {as}
29
+ preset="dialog.description"
30
+ class={['border-border', '$preset', klass]}
31
+ enter={enter?.bind(bond.state)}
32
+ exit={exit?.bind(bond.state)}
33
+ initial={initial?.bind(bond.state)}
34
+ animate={animate?.bind(bond.state)}
35
+ onmount={onmount?.bind(bond.state)}
36
+ ondestroy={ondestroy?.bind(bond.state)}
37
+ {...descriptionProps}
38
+ >
39
+ {@render children?.({ dialog: bond })}
40
+ </HtmlAtom>
@@ -1,39 +1,39 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { HtmlAtom, type Base } from '../atom';
3
- import { DialogBond } from './bond.svelte';
4
- import type { DialogFooterProps } from './types';
5
-
6
- let {
7
- class: klass = '',
8
- children = undefined,
9
- onmount = undefined,
10
- ondestroy = undefined,
11
- animate = undefined,
12
- enter = undefined,
13
- exit = undefined,
14
- initial = undefined,
15
- ...restProps
16
- }: DialogFooterProps<E, B> = $props();
17
-
18
- const bond = DialogBond.get();
19
-
20
- const footerProps = $derived({
21
- ...bond?.footer({}),
22
- ...restProps
23
- });
24
- </script>
25
-
26
- <HtmlAtom
27
- {bond}
28
- preset="dialog.footer"
29
- class={['border-border', 'flex px-4', '$preset', klass]}
30
- enter={enter?.bind(bond.state)}
31
- exit={exit?.bind(bond.state)}
32
- initial={initial?.bind(bond.state)}
33
- animate={animate?.bind(bond.state)}
34
- onmount={onmount?.bind(bond.state)}
35
- ondestroy={ondestroy?.bind(bond.state)}
36
- {...footerProps}
37
- >
38
- {@render children?.({ dialog: bond })}
39
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../atom';
3
+ import { DialogBond } from './bond.svelte';
4
+ import type { DialogFooterProps } from './types';
5
+
6
+ let {
7
+ class: klass = '',
8
+ children = undefined,
9
+ onmount = undefined,
10
+ ondestroy = undefined,
11
+ animate = undefined,
12
+ enter = undefined,
13
+ exit = undefined,
14
+ initial = undefined,
15
+ ...restProps
16
+ }: DialogFooterProps<E, B> = $props();
17
+
18
+ const bond = DialogBond.get();
19
+
20
+ const footerProps = $derived({
21
+ ...bond?.footer({}),
22
+ ...restProps
23
+ });
24
+ </script>
25
+
26
+ <HtmlAtom
27
+ {bond}
28
+ preset="dialog.footer"
29
+ class={['border-border', 'flex px-4', '$preset', klass]}
30
+ enter={enter?.bind(bond.state)}
31
+ exit={exit?.bind(bond.state)}
32
+ initial={initial?.bind(bond.state)}
33
+ animate={animate?.bind(bond.state)}
34
+ onmount={onmount?.bind(bond.state)}
35
+ ondestroy={ondestroy?.bind(bond.state)}
36
+ {...footerProps}
37
+ >
38
+ {@render children?.({ dialog: bond })}
39
+ </HtmlAtom>
@@ -1,39 +1,39 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { HtmlAtom, type Base } from '../atom';
3
- import type { DialogHeaderProps } from './types';
4
- import { DialogBond } from './bond.svelte';
5
-
6
- let {
7
- class: klass = '',
8
- children = undefined,
9
- onmount = undefined,
10
- ondestroy = undefined,
11
- animate = undefined,
12
- enter = undefined,
13
- exit = undefined,
14
- initial = undefined,
15
- ...restProps
16
- }: DialogHeaderProps<E, B> = $props();
17
-
18
- const bond = DialogBond.get();
19
-
20
- const headerProps = $derived({
21
- ...bond?.header({}),
22
- ...restProps
23
- });
24
- </script>
25
-
26
- <HtmlAtom
27
- {bond}
28
- preset="dialog.header"
29
- class={['border-border', 'flex w-full px-4 text-xl', '$preset', klass]}
30
- enter={enter?.bind(bond.state)}
31
- exit={exit?.bind(bond.state)}
32
- initial={initial?.bind(bond.state)}
33
- animate={animate?.bind(bond.state)}
34
- onmount={onmount?.bind(bond.state)}
35
- ondestroy={ondestroy?.bind(bond.state)}
36
- {...headerProps}
37
- >
38
- {@render children?.({ dialog: bond })}
39
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../atom';
3
+ import type { DialogHeaderProps } from './types';
4
+ import { DialogBond } from './bond.svelte';
5
+
6
+ let {
7
+ class: klass = '',
8
+ children = undefined,
9
+ onmount = undefined,
10
+ ondestroy = undefined,
11
+ animate = undefined,
12
+ enter = undefined,
13
+ exit = undefined,
14
+ initial = undefined,
15
+ ...restProps
16
+ }: DialogHeaderProps<E, B> = $props();
17
+
18
+ const bond = DialogBond.get();
19
+
20
+ const headerProps = $derived({
21
+ ...bond?.header({}),
22
+ ...restProps
23
+ });
24
+ </script>
25
+
26
+ <HtmlAtom
27
+ {bond}
28
+ preset="dialog.header"
29
+ class={['border-border', 'flex w-full px-4 text-xl', '$preset', klass]}
30
+ enter={enter?.bind(bond.state)}
31
+ exit={exit?.bind(bond.state)}
32
+ initial={initial?.bind(bond.state)}
33
+ animate={animate?.bind(bond.state)}
34
+ onmount={onmount?.bind(bond.state)}
35
+ ondestroy={ondestroy?.bind(bond.state)}
36
+ {...headerProps}
37
+ >
38
+ {@render children?.({ dialog: bond })}
39
+ </HtmlAtom>
@@ -1,110 +1,110 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { animate as motion } from 'motion';
3
- import { Teleport, ActivePortal } from '../portal';
4
- import { defineProperty, defineState } from '../../utils';
5
- import type { Base } from '../atom';
6
- import { DURATION } from '../../shared';
7
- import { DialogBond, DialogBondState, type DialogBondProps } from './bond.svelte';
8
- import type { DialogProps } from './types';
9
-
10
- let {
11
- class: klass = '',
12
- open = $bindable(false),
13
- disabled = false,
14
- as = 'dialog' as E,
15
- portal = undefined,
16
- factory = _factory,
17
- onmount = undefined,
18
- ondestroy = undefined,
19
- animate = _animate,
20
- enter = undefined,
21
- exit = undefined,
22
- initial = undefined,
23
- children = undefined,
24
- ...restProps
25
- }: DialogProps<E, B> = $props();
26
-
27
- const bondProps = defineState<DialogBondProps>(
28
- [
29
- defineProperty(
30
- 'open',
31
- () => open,
32
- (v) => {
33
- open = v;
34
- }
35
- )
36
- ],
37
- () => ({ disabled })
38
- );
39
- const bond = _factory(bondProps).share();
40
-
41
- const rootProps = $derived({
42
- ...bond?.root({}),
43
- ...restProps
44
- });
45
-
46
- function _factory(props: typeof bondProps) {
47
- const bondState = new DialogBondState(() => props);
48
- return new DialogBond(bondState);
49
- }
50
-
51
- function _animate(node: HTMLDialogElement) {
52
- motion(
53
- node,
54
- {
55
- opacity: +open
56
- },
57
- {
58
- duration: DURATION.normal / 1000,
59
- ease: 'anticipate',
60
- onComplete: () => {
61
- if (!open) {
62
- node?.close?.();
63
- }
64
- }
65
- }
66
- );
67
- }
68
-
69
- function onclickDialogElement(ev: MouseEvent) {
70
- if (bond?.elements?.content?.contains(ev.target)) {
71
- return;
72
- }
73
-
74
- // Clicked the backdrop
75
- bond.state.close();
76
- }
77
-
78
- export function getBond() {
79
- return bond;
80
- }
81
- </script>
82
-
83
- <Teleport
84
- {as}
85
- {bond}
86
- preset="dialog"
87
- portal={portal ?? 'root.l1'}
88
- class={[
89
- 'border-border pointer-events-auto fixed top-0 left-0 flex h-full w-full items-center justify-center bg-neutral-900/10 opacity-0',
90
- !open && 'pointer-events-none',
91
- '$preset',
92
- klass
93
- ]}
94
- enter={enter?.bind(bond.state)}
95
- exit={exit?.bind(bond.state)}
96
- initial={initial?.bind(bond.state)}
97
- animate={animate?.bind(bond.state)}
98
- onmount={onmount?.bind(bond.state)}
99
- ondestroy={ondestroy?.bind(bond.state)}
100
- onclick={onclickDialogElement}
101
- oncancel={(ev) => {
102
- ev.preventDefault();
103
- open = false;
104
- }}
105
- {...rootProps}
106
- >
107
- <ActivePortal portal={portal ?? 'root.l1'}>
108
- {@render children?.({ dialog: bond })}
109
- </ActivePortal>
110
- </Teleport>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { animate as motion } from 'motion';
3
+ import { Teleport, ActivePortal } from '../portal';
4
+ import { defineProperty, defineState } from '../../utils';
5
+ import type { Base } from '../atom';
6
+ import { DURATION } from '../../shared';
7
+ import { DialogBond, DialogBondState, type DialogBondProps } from './bond.svelte';
8
+ import type { DialogProps } from './types';
9
+
10
+ let {
11
+ class: klass = '',
12
+ open = $bindable(false),
13
+ disabled = false,
14
+ as = 'dialog' as E,
15
+ portal = undefined,
16
+ factory = _factory,
17
+ onmount = undefined,
18
+ ondestroy = undefined,
19
+ animate = _animate,
20
+ enter = undefined,
21
+ exit = undefined,
22
+ initial = undefined,
23
+ children = undefined,
24
+ ...restProps
25
+ }: DialogProps<E, B> = $props();
26
+
27
+ const bondProps = defineState<DialogBondProps>(
28
+ [
29
+ defineProperty(
30
+ 'open',
31
+ () => open,
32
+ (v) => {
33
+ open = v;
34
+ }
35
+ )
36
+ ],
37
+ () => ({ disabled })
38
+ );
39
+ const bond = _factory(bondProps).share();
40
+
41
+ const rootProps = $derived({
42
+ ...bond?.root({}),
43
+ ...restProps
44
+ });
45
+
46
+ function _factory(props: typeof bondProps) {
47
+ const bondState = new DialogBondState(() => props);
48
+ return new DialogBond(bondState);
49
+ }
50
+
51
+ function _animate(node: HTMLDialogElement) {
52
+ motion(
53
+ node,
54
+ {
55
+ opacity: +open
56
+ },
57
+ {
58
+ duration: DURATION.normal / 1000,
59
+ ease: 'anticipate',
60
+ onComplete: () => {
61
+ if (!open) {
62
+ node?.close?.();
63
+ }
64
+ }
65
+ }
66
+ );
67
+ }
68
+
69
+ function onclickDialogElement(ev: MouseEvent) {
70
+ if (bond?.elements?.content?.contains(ev.target)) {
71
+ return;
72
+ }
73
+
74
+ // Clicked the backdrop
75
+ bond.state.close();
76
+ }
77
+
78
+ export function getBond() {
79
+ return bond;
80
+ }
81
+ </script>
82
+
83
+ <Teleport
84
+ {as}
85
+ {bond}
86
+ preset="dialog"
87
+ portal={portal ?? 'root.l1'}
88
+ class={[
89
+ 'border-border pointer-events-auto fixed top-0 left-0 flex h-full w-full items-center justify-center bg-neutral-900/10 opacity-0',
90
+ !open && 'pointer-events-none',
91
+ '$preset',
92
+ klass
93
+ ]}
94
+ enter={enter?.bind(bond.state)}
95
+ exit={exit?.bind(bond.state)}
96
+ initial={initial?.bind(bond.state)}
97
+ animate={animate?.bind(bond.state)}
98
+ onmount={onmount?.bind(bond.state)}
99
+ ondestroy={ondestroy?.bind(bond.state)}
100
+ onclick={onclickDialogElement}
101
+ oncancel={(ev) => {
102
+ ev.preventDefault();
103
+ open = false;
104
+ }}
105
+ {...rootProps}
106
+ >
107
+ <ActivePortal portal={portal ?? 'root.l1'}>
108
+ {@render children?.({ dialog: bond })}
109
+ </ActivePortal>
110
+ </Teleport>
@@ -1,41 +1,41 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'h2', B extends Base = Base">
2
- import { HtmlAtom, type Base } from '../atom';
3
- import { DialogBond } from './bond.svelte';
4
- import type { DialogTitleProps } from './types';
5
-
6
- let {
7
- class: klass = '',
8
- as = 'h3' as E,
9
- children = undefined,
10
- onmount = undefined,
11
- ondestroy = undefined,
12
- animate = undefined,
13
- enter = undefined,
14
- exit = undefined,
15
- initial = undefined,
16
- ...restProps
17
- }: DialogTitleProps<E, B> = $props();
18
-
19
- const bond = DialogBond.get();
20
-
21
- const titleProps = $derived({
22
- ...bond?.title({}),
23
- ...restProps
24
- });
25
- </script>
26
-
27
- <HtmlAtom
28
- {as}
29
- {bond}
30
- preset="dialog.title"
31
- class={['border-border', '$preset', klass]}
32
- enter={enter?.bind(bond.state)}
33
- exit={exit?.bind(bond.state)}
34
- initial={initial?.bind(bond.state)}
35
- animate={animate?.bind(bond.state)}
36
- onmount={onmount?.bind(bond.state)}
37
- ondestroy={ondestroy?.bind(bond.state)}
38
- {...titleProps}
39
- >
40
- {@render children?.({ dialog: bond })}
41
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'h2', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../atom';
3
+ import { DialogBond } from './bond.svelte';
4
+ import type { DialogTitleProps } from './types';
5
+
6
+ let {
7
+ class: klass = '',
8
+ as = 'h3' as E,
9
+ children = undefined,
10
+ onmount = undefined,
11
+ ondestroy = undefined,
12
+ animate = undefined,
13
+ enter = undefined,
14
+ exit = undefined,
15
+ initial = undefined,
16
+ ...restProps
17
+ }: DialogTitleProps<E, B> = $props();
18
+
19
+ const bond = DialogBond.get();
20
+
21
+ const titleProps = $derived({
22
+ ...bond?.title({}),
23
+ ...restProps
24
+ });
25
+ </script>
26
+
27
+ <HtmlAtom
28
+ {as}
29
+ {bond}
30
+ preset="dialog.title"
31
+ class={['border-border', '$preset', klass]}
32
+ enter={enter?.bind(bond.state)}
33
+ exit={exit?.bind(bond.state)}
34
+ initial={initial?.bind(bond.state)}
35
+ animate={animate?.bind(bond.state)}
36
+ onmount={onmount?.bind(bond.state)}
37
+ ondestroy={ondestroy?.bind(bond.state)}
38
+ {...titleProps}
39
+ >
40
+ {@render children?.({ dialog: bond })}
41
+ </HtmlAtom>