@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,72 +1,70 @@
1
- <script
2
- lang="ts"
3
- generics="E extends keyof HTMLElementTagNameMap = 'button', B extends Base = Base"
4
- >
5
- import type { HTMLAttributes } from 'svelte/elements';
6
- import { AlertBond } from './bond.svelte';
7
- import { HtmlAtom, type Base } from '../atom';
8
- import type { AlertCloseButtonProps } from './types';
9
-
10
- type Element = HTMLElementTagNameMap[E];
11
-
12
- const bond = AlertBond.get();
13
-
14
- let {
15
- class: klass = '',
16
- as = 'button' as E,
17
- children = undefined,
18
- onmount = undefined,
19
- ondestroy = undefined,
20
- animate = undefined,
21
- enter = undefined,
22
- exit = undefined,
23
- initial = undefined,
24
- ...restProps
25
- }: AlertCloseButtonProps<E, B> & HTMLAttributes<Element> = $props();
26
-
27
- const isDismissible = $derived(bond?.state.isDismissible ?? false);
28
-
29
- const closeButtonProps = $derived({
30
- ...bond?.closeButton(),
31
- ...restProps
32
- });
33
- </script>
34
-
35
- {#if isDismissible}
36
- <HtmlAtom
37
- {as}
38
- {bond}
39
- preset="alert.close-button"
40
- class={[
41
- 'alert-close-button border-border absolute top-2 right-2 rounded p-1 transition-colors hover:bg-black/10 dark:hover:bg-white/10',
42
- 'focus:ring-2 focus:ring-offset-1 focus:outline-none',
43
- {
44
- 'focus:ring-blue-500': bond?.state.variant === 'info',
45
- 'focus:ring-green-500': bond?.state.variant === 'success',
46
- 'focus:ring-yellow-500': bond?.state.variant === 'warning',
47
- 'focus:ring-red-500': bond?.state.variant === 'error'
48
- },
49
- '$preset',
50
- klass
51
- ]}
52
- onmount={onmount?.bind(bond.state)}
53
- ondestroy={ondestroy?.bind(bond.state)}
54
- animate={animate?.bind(bond.state)}
55
- enter={enter?.bind(bond.state)}
56
- exit={exit?.bind(bond.state)}
57
- initial={initial?.bind(bond.state)}
58
- {...closeButtonProps}
59
- >
60
- {@render children?.({ alert: bond! })}
61
- {#if !children}
62
- <svg class="h-4 w-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
63
- <path
64
- stroke-linecap="round"
65
- stroke-linejoin="round"
66
- stroke-width="2"
67
- d="M6 18L18 6M6 6l12 12"
68
- />
69
- </svg>
70
- {/if}
71
- </HtmlAtom>
72
- {/if}
1
+ <script
2
+ lang="ts"
3
+ generics="E extends keyof HTMLElementTagNameMap = 'button', B extends Base = Base"
4
+ >
5
+ import type { HTMLAttributes } from 'svelte/elements';
6
+ import { HtmlAtom, type Base } from '../atom';
7
+ import { AlertBond } from './bond.svelte';
8
+ import type { AlertCloseButtonProps } from './types';
9
+ import { Icon } from '../icon';
10
+
11
+ type Element = HTMLElementTagNameMap[E];
12
+
13
+ const bond = AlertBond.get();
14
+
15
+ let {
16
+ class: klass = '',
17
+ as = 'button' as E,
18
+ preset = 'alert.close-button',
19
+ children = undefined,
20
+ onmount = undefined,
21
+ ondestroy = undefined,
22
+ animate = undefined,
23
+ enter = undefined,
24
+ exit = undefined,
25
+ initial = undefined,
26
+ ...restProps
27
+ }: AlertCloseButtonProps<E, B> & HTMLAttributes<Element> = $props();
28
+
29
+ const isDismissible = $derived(bond?.state.isDismissible ?? false);
30
+
31
+ const closeButtonProps = $derived({
32
+ ...bond?.closeButton(),
33
+ ...restProps
34
+ });
35
+ </script>
36
+
37
+ {#if isDismissible}
38
+ <HtmlAtom
39
+ {as}
40
+ {bond}
41
+ {preset}
42
+ class={[
43
+ 'alert-close-button border-border flex size-6 items-center justify-center rounded p-0.5 transition-colors hover:bg-black/10 dark:hover:bg-white/10',
44
+ '$preset',
45
+ klass
46
+ ]}
47
+ onmount={onmount?.bind(bond.state)}
48
+ ondestroy={ondestroy?.bind(bond.state)}
49
+ animate={animate?.bind(bond.state)}
50
+ enter={enter?.bind(bond.state)}
51
+ exit={exit?.bind(bond.state)}
52
+ initial={initial?.bind(bond.state)}
53
+ {...closeButtonProps}
54
+ >
55
+ {#if children}
56
+ {@render children({ alert: bond! })}
57
+ {:else}
58
+ <Icon class="h-full">
59
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
60
+ <path
61
+ stroke-linecap="round"
62
+ stroke-linejoin="round"
63
+ stroke-width="2"
64
+ d="M6 18L18 6M6 6l12 12"
65
+ />
66
+ </svg>
67
+ </Icon>
68
+ {/if}
69
+ </HtmlAtom>
70
+ {/if}
@@ -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 { AlertContentProps } 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
- }: AlertContentProps<E, B> & HTMLAttributes<Element> = $props();
22
-
23
- const contentProps = $derived({
24
- ...bond?.content(),
25
- ...restProps
26
- });
27
- </script>
28
-
29
- <HtmlAtom
30
- {bond}
31
- preset="alert.content"
32
- class={['alert-content border-border flex-1 space-y-1', '$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
- {...contentProps}
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 { AlertContentProps } from './types';
6
+
7
+ type Element = HTMLElementTagNameMap[E];
8
+
9
+ const bond = AlertBond.get();
10
+
11
+ let {
12
+ class: klass = '',
13
+ preset = 'alert.content',
14
+ children = undefined,
15
+ onmount = undefined,
16
+ ondestroy = undefined,
17
+ animate = undefined,
18
+ enter = undefined,
19
+ exit = undefined,
20
+ initial = undefined,
21
+ ...restProps
22
+ }: AlertContentProps<E, B> & HTMLAttributes<Element> = $props();
23
+
24
+ const contentProps = $derived({
25
+ ...bond?.content(),
26
+ ...restProps
27
+ });
28
+ </script>
29
+
30
+ <HtmlAtom
31
+ {bond}
32
+ {preset}
33
+ class={['alert-content border-border flex-1 space-y-1', '$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
+ {...contentProps}
41
+ >
42
+ {@render children?.({ alert: bond! })}
43
+ </HtmlAtom>
@@ -1,41 +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 { AlertBond } from './bond.svelte';
4
- export type { AlertDescriptionProps } from './types';
5
-
6
- const bond = AlertBond.get();
7
-
8
- let {
9
- class: klass = '',
10
- as = 'p' as E,
11
- children = undefined,
12
- onmount = undefined,
13
- ondestroy = undefined,
14
- animate = undefined,
15
- enter = undefined,
16
- exit = undefined,
17
- initial = undefined,
18
- ...restProps
19
- }: AlertDescriptionProps<E, B> = $props();
20
-
21
- const descriptionProps = $derived({
22
- ...bond?.description(),
23
- ...restProps
24
- });
25
- </script>
26
-
27
- <HtmlAtom
28
- {bond}
29
- preset="alert.description"
30
- class={['alert-description border-border mt-1 text-sm leading-relaxed', '$preset', klass]}
31
- onmount={onmount?.bind(bond.state)}
32
- ondestroy={ondestroy?.bind(bond.state)}
33
- animate={animate?.bind(bond.state)}
34
- enter={enter?.bind(bond.state)}
35
- exit={exit?.bind(bond.state)}
36
- initial={initial?.bind(bond.state)}
37
- {as}
38
- {...descriptionProps}
39
- >
40
- {@render children?.({ alert: bond! })}
41
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../atom';
3
+ import { AlertBond } from './bond.svelte';
4
+ export type { AlertDescriptionProps } from './types';
5
+
6
+ const bond = AlertBond.get();
7
+
8
+ let {
9
+ class: klass = '',
10
+ as = 'p' as E,
11
+ preset = 'alert.description',
12
+ children = undefined,
13
+ onmount = undefined,
14
+ ondestroy = undefined,
15
+ animate = undefined,
16
+ enter = undefined,
17
+ exit = undefined,
18
+ initial = undefined,
19
+ ...restProps
20
+ }: AlertDescriptionProps<E, B> = $props();
21
+
22
+ const descriptionProps = $derived({
23
+ ...bond?.description(),
24
+ ...restProps
25
+ });
26
+ </script>
27
+
28
+ <HtmlAtom
29
+ {bond}
30
+ {preset}
31
+ class={['alert-description border-border mt-1 text-sm leading-relaxed', '$preset', klass]}
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
+ {as}
39
+ {...descriptionProps}
40
+ >
41
+ {@render children?.({ alert: bond! })}
42
+ </HtmlAtom>
@@ -1,46 +1,47 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { Icon } from '../icon';
3
- import { type Base, HtmlAtom } from '../atom';
4
- import { AlertBond } from './bond.svelte';
5
- import type { AlertIconProps } from './types';
6
-
7
- const bond = AlertBond.get();
8
-
9
- let {
10
- class: klass = '',
11
- base = Icon,
12
- children = undefined,
13
- onmount = undefined,
14
- ondestroy = undefined,
15
- animate = undefined,
16
- enter = undefined,
17
- exit = undefined,
18
- initial = undefined,
19
- ...restProps
20
- }: AlertIconProps<E, B> = $props();
21
-
22
- const iconProps = $derived({
23
- ...bond?.icon(),
24
- ...restProps
25
- });
26
- </script>
27
-
28
- <HtmlAtom
29
- {bond}
30
- {base}
31
- preset="alert.icon"
32
- class={[
33
- 'alert-icon border-border inline-flex aspect-square h-5 items-center justify-center rounded-full text-sm font-medium',
34
- '$preset',
35
- klass
36
- ]}
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
- {...iconProps}
44
- >
45
- {@render children?.({ alert: bond! })}
46
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { Icon } from '../icon';
3
+ import { type Base, HtmlAtom } from '../atom';
4
+ import { AlertBond } from './bond.svelte';
5
+ import type { AlertIconProps } from './types';
6
+
7
+ const bond = AlertBond.get();
8
+
9
+ let {
10
+ class: klass = '',
11
+ base = Icon,
12
+ preset = 'alert.icon',
13
+ children = undefined,
14
+ onmount = undefined,
15
+ ondestroy = undefined,
16
+ animate = undefined,
17
+ enter = undefined,
18
+ exit = undefined,
19
+ initial = undefined,
20
+ ...restProps
21
+ }: AlertIconProps<E, B> = $props();
22
+
23
+ const iconProps = $derived({
24
+ ...bond?.icon(),
25
+ ...restProps
26
+ });
27
+ </script>
28
+
29
+ <HtmlAtom
30
+ {bond}
31
+ {base}
32
+ {preset}
33
+ class={[
34
+ 'alert-icon border-border inline-flex aspect-square h-5 items-center justify-center rounded-full text-sm font-medium',
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
+ {...iconProps}
45
+ >
46
+ {@render children?.({ alert: bond! })}
47
+ </HtmlAtom>
@@ -1,102 +1,103 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { defineProperty, defineState } from '../../utils';
3
- import { HtmlAtom, type Base } from '../atom';
4
- import { AlertBond, AlertBondState, type AlertBondProps } from './bond.svelte';
5
- import type { AlertRootProps } from './types';
6
- import './alert.css';
7
-
8
- let {
9
- class: klass = '',
10
- dismissible = false,
11
- dismissed = $bindable(false),
12
- disabled = false,
13
- extend = {},
14
- factory = _factory,
15
- children = undefined,
16
- onmount = undefined,
17
- ondestroy = undefined,
18
- animate = undefined,
19
- enter = undefined,
20
- exit = undefined,
21
- initial = undefined,
22
- ...restProps
23
- }: AlertRootProps<E, B> = $props();
24
-
25
- const bondProps = defineState<AlertBondProps>(
26
- [
27
- defineProperty(
28
- 'dismissed',
29
- () => dismissed,
30
- (v) => {
31
- dismissed = v;
32
- }
33
- )
34
- ],
35
- () => ({ dismissible, disabled, extend })
36
- );
37
- const bond = factory(bondProps).share();
38
-
39
- const rootProps = $derived({
40
- ...bond.root(),
41
- ...restProps
42
- });
43
-
44
- // Auto-hide logic for dismissed alerts
45
- $effect(() => {
46
- if (dismissed && bond.elements.root) {
47
- // Add smooth transition out animation
48
- const element = bond.elements.root;
49
- element.style.transition = 'opacity 0.3s ease-out, transform 0.3s ease-out';
50
- element.style.opacity = '0';
51
- element.style.transform = 'translateY(-10px)';
52
-
53
- // Optional: Remove from DOM after animation
54
- setTimeout(() => {
55
- if (element?.parentNode) {
56
- element.style.display = 'none';
57
- }
58
- }, 300);
59
- } else if (!dismissed && bond.elements.root) {
60
- // Restore visibility
61
- const element = bond.elements.root;
62
- element.style.display = '';
63
- element.style.opacity = '1';
64
- element.style.transform = 'translateY(0)';
65
- }
66
- });
67
-
68
- function _factory(props: typeof bondProps) {
69
- const bondState = new AlertBondState(() => props);
70
- return new AlertBond(bondState);
71
- }
72
-
73
- export function getBond() {
74
- return bond;
75
- }
76
- </script>
77
-
78
- <HtmlAtom
79
- preset="alert"
80
- class={[
81
- 'alert border-border relative flex gap-3 rounded-md border p-4 transition-all duration-200',
82
- // Base styles
83
- 'bg-background text-foreground',
84
- // State styles
85
- {
86
- 'pointer-events-none opacity-60': disabled,
87
- 'pointer-events-none opacity-0': dismissed
88
- },
89
- '$preset',
90
- klass
91
- ]}
92
- {bond}
93
- onmount={onmount?.bind(bond.state)}
94
- ondestroy={ondestroy?.bind(bond.state)}
95
- animate={animate?.bind(bond.state)}
96
- enter={enter?.bind(bond.state)}
97
- exit={exit?.bind(bond.state)}
98
- initial={initial?.bind(bond.state)}
99
- {...rootProps}
100
- >
101
- {@render children?.({ alert: bond })}
102
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { defineProperty, defineState } from '../../utils';
3
+ import { HtmlAtom, type Base } from '../atom';
4
+ import { AlertBond, AlertBondState, type AlertBondProps } from './bond.svelte';
5
+ import type { AlertRootProps } from './types';
6
+ import './alert.css';
7
+
8
+ let {
9
+ class: klass = '',
10
+ preset = 'alert',
11
+ dismissible = false,
12
+ dismissed = $bindable(false),
13
+ disabled = false,
14
+ extend = {},
15
+ factory = _factory,
16
+ children = undefined,
17
+ onmount = undefined,
18
+ ondestroy = undefined,
19
+ animate = undefined,
20
+ enter = undefined,
21
+ exit = undefined,
22
+ initial = undefined,
23
+ ...restProps
24
+ }: AlertRootProps<E, B> = $props();
25
+
26
+ const bondProps = defineState<AlertBondProps>(
27
+ [
28
+ defineProperty(
29
+ 'dismissed',
30
+ () => dismissed,
31
+ (v) => {
32
+ dismissed = v;
33
+ }
34
+ )
35
+ ],
36
+ () => ({ dismissible, disabled, extend })
37
+ );
38
+ const bond = factory(bondProps).share();
39
+
40
+ const rootProps = $derived({
41
+ ...bond.root(),
42
+ ...restProps
43
+ });
44
+
45
+ // Auto-hide logic for dismissed alerts
46
+ $effect(() => {
47
+ if (dismissed && bond.elements.root) {
48
+ // Add smooth transition out animation
49
+ const element = bond.elements.root;
50
+ element.style.transition = 'opacity 0.3s ease-out, transform 0.3s ease-out';
51
+ element.style.opacity = '0';
52
+ element.style.transform = 'translateY(-10px)';
53
+
54
+ // Optional: Remove from DOM after animation
55
+ setTimeout(() => {
56
+ if (element?.parentNode) {
57
+ element.style.display = 'none';
58
+ }
59
+ }, 300);
60
+ } else if (!dismissed && bond.elements.root) {
61
+ // Restore visibility
62
+ const element = bond.elements.root;
63
+ element.style.display = '';
64
+ element.style.opacity = '1';
65
+ element.style.transform = 'translateY(0)';
66
+ }
67
+ });
68
+
69
+ function _factory(props: typeof bondProps) {
70
+ const bondState = new AlertBondState(() => props);
71
+ return new AlertBond(bondState);
72
+ }
73
+
74
+ export function getBond() {
75
+ return bond;
76
+ }
77
+ </script>
78
+
79
+ <HtmlAtom
80
+ {preset}
81
+ class={[
82
+ 'alert border-border relative flex gap-1 rounded-md border p-4 transition-all duration-200',
83
+ // Base styles
84
+ 'bg-background text-foreground',
85
+ // State styles
86
+ {
87
+ 'pointer-events-none opacity-60': disabled,
88
+ 'pointer-events-none opacity-0': dismissed
89
+ },
90
+ '$preset',
91
+ klass
92
+ ]}
93
+ {bond}
94
+ onmount={onmount?.bind(bond.state)}
95
+ ondestroy={ondestroy?.bind(bond.state)}
96
+ animate={animate?.bind(bond.state)}
97
+ enter={enter?.bind(bond.state)}
98
+ exit={exit?.bind(bond.state)}
99
+ initial={initial?.bind(bond.state)}
100
+ {...rootProps}
101
+ >
102
+ {@render children?.({ alert: bond })}
103
+ </HtmlAtom>