@svelte-atoms/core 1.0.0-alpha.31 → 1.0.0-alpha.33

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 (136) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +289 -853
  3. package/dist/attachments/index.d.ts +1 -0
  4. package/dist/attachments/index.js +1 -0
  5. package/dist/components/accordion/accordion-root.svelte +65 -65
  6. package/dist/components/accordion/accordion.stories.svelte +70 -70
  7. package/dist/components/accordion/item/accordion-item-body.svelte +44 -44
  8. package/dist/components/accordion/item/accordion-item-header.svelte +51 -51
  9. package/dist/components/accordion/item/accordion-item-indicator.svelte +51 -51
  10. package/dist/components/accordion/item/accordion-item-root.svelte +66 -66
  11. package/dist/components/alert/alert-close-button.svelte +66 -66
  12. package/dist/components/alert/alert-description.svelte +42 -42
  13. package/dist/components/alert/alert-root.svelte +68 -68
  14. package/dist/components/atom/html-atom.svelte +26 -194
  15. package/dist/components/atom/types.d.ts +3 -2
  16. package/dist/components/atom/utils.d.ts +37 -0
  17. package/dist/components/atom/utils.js +208 -0
  18. package/dist/components/breadcrumb/breadcrumb-item.svelte +1 -1
  19. package/dist/components/breadcrumb/breadcrumb-separator.svelte +5 -1
  20. package/dist/components/breadcrumb/breadcrumb.stories.svelte +16 -16
  21. package/dist/components/calendar/calendar-day.svelte +101 -101
  22. package/dist/components/checkbox/checkbox.svelte +159 -159
  23. package/dist/components/collapsible/bond.svelte.js +2 -1
  24. package/dist/components/collapsible/collapsible-body.svelte +3 -2
  25. package/dist/components/collapsible/motion.svelte.d.ts +6 -0
  26. package/dist/components/collapsible/motion.svelte.js +15 -0
  27. package/dist/components/combobox/atoms.d.ts +3 -3
  28. package/dist/components/combobox/atoms.js +3 -3
  29. package/dist/components/combobox/bond.svelte.d.ts +6 -6
  30. package/dist/components/combobox/bond.svelte.js +3 -26
  31. package/dist/components/combobox/combobox-control.svelte +52 -52
  32. package/dist/components/combobox/{compobox-item.svelte → combobox-item.svelte} +62 -68
  33. package/dist/components/combobox/combobox-item.svelte.d.ts +12 -0
  34. package/dist/components/combobox/combobox.stories.svelte +50 -0
  35. package/dist/components/combobox/combobox.stories.svelte.d.ts +3 -0
  36. package/dist/components/datagrid/tr/datagrid-tr.svelte +90 -90
  37. package/dist/components/date-picker/bond.svelte.d.ts +15 -5
  38. package/dist/components/date-picker/bond.svelte.js +6 -11
  39. package/dist/components/date-picker/date-picker-calendar.svelte +1 -8
  40. package/dist/components/dialog/bond.svelte.js +5 -20
  41. package/dist/components/dialog/dialog-content.svelte +44 -44
  42. package/dist/components/dialog/dialog-root.svelte +91 -91
  43. package/dist/components/drawer/bond.svelte.d.ts +18 -16
  44. package/dist/components/drawer/bond.svelte.js +8 -18
  45. package/dist/components/drawer/drawer-content.svelte +49 -49
  46. package/dist/components/drawer/drawer-root.svelte +5 -4
  47. package/dist/components/drawer/drawer.stories.svelte +141 -144
  48. package/dist/components/drawer/motion.js +1 -1
  49. package/dist/components/dropdown/atoms.d.ts +1 -1
  50. package/dist/components/dropdown/atoms.js +1 -1
  51. package/dist/components/dropdown/bond.svelte.d.ts +21 -22
  52. package/dist/components/dropdown/bond.svelte.js +29 -53
  53. package/dist/components/dropdown/dropdown-root.svelte +65 -59
  54. package/dist/components/dropdown/dropdown-values.svelte +17 -17
  55. package/dist/components/dropdown/dropdown-values.svelte.d.ts +1 -2
  56. package/dist/components/dropdown/dropdown.stories.svelte +83 -80
  57. package/dist/components/dropdown/index.d.ts +1 -0
  58. package/dist/components/dropdown/index.js +1 -0
  59. package/dist/components/dropdown/item/attachments.svelte.d.ts +2 -2
  60. package/dist/components/dropdown/item/attachments.svelte.js +2 -2
  61. package/dist/components/dropdown/item/controller.svelte.d.ts +34 -0
  62. package/dist/components/dropdown/item/controller.svelte.js +82 -0
  63. package/dist/components/dropdown/item/dropdown-item.svelte +109 -102
  64. package/dist/components/dropdown/item/dropdown-item.svelte.d.ts +13 -28
  65. package/dist/components/dropdown/item/index.d.ts +3 -0
  66. package/dist/components/dropdown/item/index.js +3 -0
  67. package/dist/components/dropdown/item/types.d.ts +29 -0
  68. package/dist/components/dropdown/item/types.js +1 -0
  69. package/dist/components/list/list-item.svelte +20 -20
  70. package/dist/components/menu/atoms.d.ts +8 -3
  71. package/dist/components/menu/atoms.js +8 -3
  72. package/dist/components/menu/bond.svelte.d.ts +54 -0
  73. package/dist/components/menu/bond.svelte.js +132 -0
  74. package/dist/components/menu/index.d.ts +1 -0
  75. package/dist/components/menu/index.js +1 -0
  76. package/dist/components/menu/item/controller.svelte.d.ts +26 -0
  77. package/dist/components/menu/item/controller.svelte.js +69 -0
  78. package/dist/components/menu/item/index.d.ts +2 -0
  79. package/dist/components/menu/item/index.js +2 -0
  80. package/dist/components/menu/item/menu-item.svelte +103 -0
  81. package/dist/components/menu/item/menu-item.svelte.d.ts +31 -0
  82. package/dist/components/menu/item/types.d.ts +62 -0
  83. package/dist/components/menu/item/types.js +1 -0
  84. package/dist/components/menu/{menu-list.svelte → menu-content.svelte} +40 -40
  85. package/dist/components/menu/{menu-list.svelte.d.ts → menu-content.svelte.d.ts} +3 -3
  86. package/dist/components/menu/menu-root.svelte +15 -0
  87. package/dist/components/menu/menu-root.svelte.d.ts +8 -0
  88. package/dist/components/menu/menu.stories.svelte +33 -33
  89. package/dist/components/menu/types.d.ts +0 -7
  90. package/dist/components/popover/bond.svelte.d.ts +11 -14
  91. package/dist/components/popover/bond.svelte.js +27 -44
  92. package/dist/components/popover/popover-content.svelte +137 -137
  93. package/dist/components/popover/popover.stories.svelte +37 -49
  94. package/dist/components/portal/active-portal.svelte +29 -29
  95. package/dist/components/portal/portal-root.svelte +76 -76
  96. package/dist/components/portal/teleport.svelte +49 -49
  97. package/dist/components/radio/radio.svelte +109 -109
  98. package/dist/components/root/index.d.ts +1 -0
  99. package/dist/components/root/index.js +1 -0
  100. package/dist/components/root/l0-portal.svelte +8 -0
  101. package/dist/components/root/l0-portal.svelte.d.ts +26 -0
  102. package/dist/components/root/l1-portal.svelte +7 -0
  103. package/dist/components/root/l1-portal.svelte.d.ts +26 -0
  104. package/dist/components/root/root.css +119 -119
  105. package/dist/components/root/root.svelte +17 -18
  106. package/dist/components/root/root.svelte.d.ts +2 -6
  107. package/dist/components/root/toasts-portal.svelte +7 -0
  108. package/dist/components/root/toasts-portal.svelte.d.ts +26 -0
  109. package/dist/components/root/types.d.ts +17 -0
  110. package/dist/components/sidebar/motion.svelte.js +3 -3
  111. package/dist/components/sidebar/sidebar-content.svelte +40 -40
  112. package/dist/components/textarea/textarea-input.svelte +9 -9
  113. package/dist/components/textarea/textarea-root.svelte +9 -9
  114. package/dist/components/tooltip/tooltip-trigger.svelte +39 -39
  115. package/dist/components/tree/index.d.ts +1 -0
  116. package/dist/components/tree/index.js +1 -0
  117. package/dist/components/tree/motion.svelte.d.ts +6 -0
  118. package/dist/components/tree/motion.svelte.js +14 -0
  119. package/dist/components/tree/tree-body.svelte +4 -3
  120. package/dist/context/preset.svelte.d.ts +3 -1
  121. package/dist/icons/icon-copy.svelte +6 -6
  122. package/dist/utils/dom.svelte.d.ts +2 -0
  123. package/dist/utils/dom.svelte.js +21 -0
  124. package/dist/utils/function.d.ts +1 -1
  125. package/dist/utils/promise.svelte.d.ts +5 -0
  126. package/dist/utils/promise.svelte.js +20 -0
  127. package/package.json +4 -2
  128. package/dist/components/combobox/compobox-item.svelte.d.ts +0 -34
  129. package/dist/components/combobox/compobox.stories.svelte +0 -51
  130. package/dist/components/combobox/compobox.stories.svelte.d.ts +0 -3
  131. package/dist/components/dropdown/item/bond.svelte.d.ts +0 -42
  132. package/dist/components/dropdown/item/bond.svelte.js +0 -99
  133. package/dist/components/menu/menu-item.svelte +0 -69
  134. package/dist/components/menu/menu-item.svelte.d.ts +0 -37
  135. package/dist/utils/markdown-to-llm.d.ts +0 -28
  136. package/dist/utils/markdown-to-llm.js +0 -76
@@ -1,66 +1,66 @@
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
- preset = 'accordion.item',
26
- ...restProps
27
- }: AccordionItemRootProps<E, B> = $props();
28
-
29
- const accordionItemProps = defineState<AccordionItemBondProps>([
30
- defineProperty('data', () => data),
31
- defineProperty('disabled', () => disabled),
32
- defineProperty('value', () => value)
33
- ]);
34
- const bond = factory(accordionItemProps).share();
35
-
36
- bond.state.mount();
37
-
38
- const rootProps = $derived({
39
- ...bond.root(),
40
- ...restProps
41
- });
42
-
43
- function _factory(props: typeof accordionItemProps) {
44
- const accordionItemState = new AccordionItemBondState(() => props);
45
- return new AccordionItemBond(accordionItemState);
46
- }
47
-
48
- export function getBond() {
49
- return bond;
50
- }
51
- </script>
52
-
53
- <HtmlAtom
54
- {bond}
55
- {preset}
56
- class={['border-border', '$preset', klass]}
57
- onmount={onmount?.bind(bond.state)}
58
- ondestroy={ondestroy?.bind(bond.state)}
59
- animate={animate?.bind(bond.state)}
60
- enter={enter?.bind(bond.state)}
61
- exit={exit?.bind(bond.state)}
62
- initial={initial?.bind(bond.state)}
63
- {...rootProps}
64
- >
65
- {@render children?.({ accordionItem: bond })}
66
- </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
+ preset = 'accordion.item',
26
+ ...restProps
27
+ }: AccordionItemRootProps<E, B> = $props();
28
+
29
+ const accordionItemProps = defineState<AccordionItemBondProps>([
30
+ defineProperty('data', () => data),
31
+ defineProperty('disabled', () => disabled),
32
+ defineProperty('value', () => value)
33
+ ]);
34
+ const bond = factory(accordionItemProps).share();
35
+
36
+ bond.state.mount();
37
+
38
+ const rootProps = $derived({
39
+ ...bond.root(),
40
+ ...restProps
41
+ });
42
+
43
+ function _factory(props: typeof accordionItemProps) {
44
+ const accordionItemState = new AccordionItemBondState(() => props);
45
+ return new AccordionItemBond(accordionItemState);
46
+ }
47
+
48
+ export function getBond() {
49
+ return bond;
50
+ }
51
+ </script>
52
+
53
+ <HtmlAtom
54
+ {bond}
55
+ {preset}
56
+ class={['border-border', '$preset', klass]}
57
+ onmount={onmount?.bind(bond.state)}
58
+ ondestroy={ondestroy?.bind(bond.state)}
59
+ animate={animate?.bind(bond.state)}
60
+ enter={enter?.bind(bond.state)}
61
+ exit={exit?.bind(bond.state)}
62
+ initial={initial?.bind(bond.state)}
63
+ {...rootProps}
64
+ >
65
+ {@render children?.({ accordionItem: bond })}
66
+ </HtmlAtom>
@@ -1,66 +1,66 @@
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 closeButtonProps = $derived({
30
- ...bond?.closeButton(),
31
- ...restProps
32
- });
33
- </script>
34
-
35
- <HtmlAtom
36
- {as}
37
- {bond}
38
- {preset}
39
- class={[
40
- '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',
41
- '$preset',
42
- klass
43
- ]}
44
- onmount={onmount?.bind(bond.state)}
45
- ondestroy={ondestroy?.bind(bond.state)}
46
- animate={animate?.bind(bond.state)}
47
- enter={enter?.bind(bond.state)}
48
- exit={exit?.bind(bond.state)}
49
- initial={initial?.bind(bond.state)}
50
- {...closeButtonProps}
51
- >
52
- {#if children}
53
- {@render children({ alert: bond! })}
54
- {:else}
55
- <Icon class="h-full">
56
- <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
57
- <path
58
- stroke-linecap="round"
59
- stroke-linejoin="round"
60
- stroke-width="2"
61
- d="M6 18L18 6M6 6l12 12"
62
- />
63
- </svg>
64
- </Icon>
65
- {/if}
66
- </HtmlAtom>
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 closeButtonProps = $derived({
30
+ ...bond?.closeButton(),
31
+ ...restProps
32
+ });
33
+ </script>
34
+
35
+ <HtmlAtom
36
+ {as}
37
+ {bond}
38
+ {preset}
39
+ class={[
40
+ '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',
41
+ '$preset',
42
+ klass
43
+ ]}
44
+ onmount={onmount?.bind(bond.state)}
45
+ ondestroy={ondestroy?.bind(bond.state)}
46
+ animate={animate?.bind(bond.state)}
47
+ enter={enter?.bind(bond.state)}
48
+ exit={exit?.bind(bond.state)}
49
+ initial={initial?.bind(bond.state)}
50
+ {...closeButtonProps}
51
+ >
52
+ {#if children}
53
+ {@render children({ alert: bond! })}
54
+ {:else}
55
+ <Icon class="h-full">
56
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
57
+ <path
58
+ stroke-linecap="round"
59
+ stroke-linejoin="round"
60
+ stroke-width="2"
61
+ d="M6 18L18 6M6 6l12 12"
62
+ />
63
+ </svg>
64
+ </Icon>
65
+ {/if}
66
+ </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 { AlertBond } from './bond.svelte';
4
- import 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
+ <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
+ import 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,68 +1,68 @@
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
- disabled = false,
12
- extend = {},
13
- factory = _factory,
14
- children = undefined,
15
- onmount = undefined,
16
- ondestroy = undefined,
17
- animate = undefined,
18
- enter = undefined,
19
- exit = undefined,
20
- initial = undefined,
21
- ...restProps
22
- }: AlertRootProps<E, B> = $props();
23
-
24
- const bondProps = defineState<AlertBondProps>(
25
- [defineProperty('disabled', () => disabled)],
26
- () => ({ disabled, extend })
27
- );
28
- const bond = factory(bondProps).share();
29
-
30
- const rootProps = $derived({
31
- ...bond.root(),
32
- ...restProps
33
- });
34
-
35
- function _factory(props: typeof bondProps) {
36
- const bondState = new AlertBondState(() => props);
37
- return new AlertBond(bondState);
38
- }
39
-
40
- export function getBond() {
41
- return bond;
42
- }
43
- </script>
44
-
45
- <HtmlAtom
46
- {preset}
47
- class={[
48
- 'alert border-border relative flex gap-1 rounded-md border p-4 transition-all duration-200',
49
- // Base styles
50
- 'bg-background text-foreground',
51
- // State styles
52
- {
53
- 'pointer-events-none opacity-50': disabled
54
- },
55
- '$preset',
56
- klass
57
- ]}
58
- {bond}
59
- onmount={onmount?.bind(bond.state)}
60
- ondestroy={ondestroy?.bind(bond.state)}
61
- animate={animate?.bind(bond.state)}
62
- enter={enter?.bind(bond.state)}
63
- exit={exit?.bind(bond.state)}
64
- initial={initial?.bind(bond.state)}
65
- {...rootProps}
66
- >
67
- {@render children?.({ alert: bond })}
68
- </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
+ disabled = false,
12
+ extend = {},
13
+ factory = _factory,
14
+ children = undefined,
15
+ onmount = undefined,
16
+ ondestroy = undefined,
17
+ animate = undefined,
18
+ enter = undefined,
19
+ exit = undefined,
20
+ initial = undefined,
21
+ ...restProps
22
+ }: AlertRootProps<E, B> = $props();
23
+
24
+ const bondProps = defineState<AlertBondProps>(
25
+ [defineProperty('disabled', () => disabled)],
26
+ () => ({ disabled, extend })
27
+ );
28
+ const bond = factory(bondProps).share();
29
+
30
+ const rootProps = $derived({
31
+ ...bond.root(),
32
+ ...restProps
33
+ });
34
+
35
+ function _factory(props: typeof bondProps) {
36
+ const bondState = new AlertBondState(() => props);
37
+ return new AlertBond(bondState);
38
+ }
39
+
40
+ export function getBond() {
41
+ return bond;
42
+ }
43
+ </script>
44
+
45
+ <HtmlAtom
46
+ {preset}
47
+ class={[
48
+ 'alert border-border relative flex gap-1 rounded-md border p-4 transition-all duration-200',
49
+ // Base styles
50
+ 'bg-background text-foreground',
51
+ // State styles
52
+ {
53
+ 'pointer-events-none opacity-50': disabled
54
+ },
55
+ '$preset',
56
+ klass
57
+ ]}
58
+ {bond}
59
+ onmount={onmount?.bind(bond.state)}
60
+ ondestroy={ondestroy?.bind(bond.state)}
61
+ animate={animate?.bind(bond.state)}
62
+ enter={enter?.bind(bond.state)}
63
+ exit={exit?.bind(bond.state)}
64
+ initial={initial?.bind(bond.state)}
65
+ {...rootProps}
66
+ >
67
+ {@render children?.({ alert: bond })}
68
+ </HtmlAtom>