@svelte-atoms/core 1.0.0-alpha.28 → 1.0.0-alpha.30

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/README.md +852 -856
  2. package/dist/attachments/clickout.svelte.d.ts +1 -1
  3. package/dist/attachments/clickout.svelte.js +2 -2
  4. package/dist/components/accordion/accordion-root.svelte +61 -61
  5. package/dist/components/accordion/accordion-root.svelte.d.ts +1 -1
  6. package/dist/components/accordion/accordion.stories.svelte +145 -134
  7. package/dist/components/alert/alert-actions.svelte +43 -43
  8. package/dist/components/alert/alert-close-button.svelte +70 -70
  9. package/dist/components/alert/alert-content.svelte +43 -43
  10. package/dist/components/alert/alert-description.svelte +42 -42
  11. package/dist/components/alert/alert-icon.svelte +47 -47
  12. package/dist/components/alert/alert-root.svelte +103 -103
  13. package/dist/components/alert/alert-title.svelte +42 -42
  14. package/dist/components/alert/alert.stories.svelte +10 -11
  15. package/dist/components/atom/html-atom.svelte +75 -19
  16. package/dist/components/atom/html-atom.svelte.d.ts +1 -1
  17. package/dist/components/atom/snippet-renderer.svelte +5 -5
  18. package/dist/components/avatar/avatar.stories.svelte +22 -27
  19. package/dist/components/badge/badge.stories.svelte +12 -17
  20. package/dist/components/badge/badge.svelte +19 -19
  21. package/dist/components/breadcrumb/breadcrumb.stories.svelte +16 -21
  22. package/dist/components/button/button.stories.svelte +1 -34
  23. package/dist/components/calendar/calendar-body.svelte +107 -107
  24. package/dist/components/calendar/calendar-day.svelte +96 -97
  25. package/dist/components/calendar/calendar-header.svelte +29 -33
  26. package/dist/components/calendar/calendar-header.svelte.d.ts +0 -1
  27. package/dist/components/calendar/calendar-root.svelte +206 -208
  28. package/dist/components/calendar/calendar-week-day.svelte +34 -34
  29. package/dist/components/calendar/calendar.css +26 -26
  30. package/dist/components/calendar/calendar.stories.svelte +10 -20
  31. package/dist/components/calendar/calendar.stories.svelte.d.ts +24 -4
  32. package/dist/components/card/card-body.svelte +39 -39
  33. package/dist/components/card/card-footer.svelte +41 -41
  34. package/dist/components/card/card-root.svelte +91 -91
  35. package/dist/components/card/card.stories.svelte +133 -145
  36. package/dist/components/checkbox/checkbox.stories.svelte +22 -27
  37. package/dist/components/checkbox/checkbox.svelte +155 -157
  38. package/dist/components/collapsible/collapsible.stories.svelte +172 -173
  39. package/dist/components/combobox/combobox-root.svelte +65 -65
  40. package/dist/components/combobox/compobox.stories.svelte +51 -54
  41. package/dist/components/container/container.stories.svelte +20 -23
  42. package/dist/components/datagrid/datagrid-root.svelte +2 -2
  43. package/dist/components/datagrid/datagrid.css +0 -42
  44. package/dist/components/datagrid/datagrid.stories.svelte +72 -75
  45. package/dist/components/datagrid/types.d.ts +1 -1
  46. package/dist/components/date-picker/atoms.d.ts +0 -4
  47. package/dist/components/date-picker/atoms.js +0 -4
  48. package/dist/components/date-picker/date-picker-calendar.svelte +67 -42
  49. package/dist/components/date-picker/date-picker-calendar.svelte.d.ts +2 -5
  50. package/dist/components/date-picker/date-picker-header.svelte +100 -105
  51. package/dist/components/date-picker/date-picker-header.svelte.d.ts +2 -5
  52. package/dist/components/date-picker/date-picker-months.svelte +142 -150
  53. package/dist/components/date-picker/date-picker-months.svelte.d.ts +2 -5
  54. package/dist/components/date-picker/date-picker-root.svelte +4 -3
  55. package/dist/components/date-picker/date-picker-root.svelte.d.ts +2 -15
  56. package/dist/components/date-picker/date-picker-years.svelte +205 -214
  57. package/dist/components/date-picker/date-picker-years.svelte.d.ts +2 -5
  58. package/dist/components/date-picker/date-picker.stories.svelte +15 -31
  59. package/dist/components/date-picker/types.d.ts +53 -1
  60. package/dist/components/dialog/dialog-content.svelte +1 -1
  61. package/dist/components/dialog/dialog.stories.svelte +64 -67
  62. package/dist/components/drawer/attachments.svelte.js +8 -9
  63. package/dist/components/drawer/drawer-content.svelte +57 -42
  64. package/dist/components/drawer/drawer.stories.svelte +212 -224
  65. package/dist/components/dropdown/dropdown-root.svelte +59 -59
  66. package/dist/components/dropdown/dropdown.stories.svelte +80 -83
  67. package/dist/components/element/html-element.svelte +85 -85
  68. package/dist/components/element/types.d.ts +1 -1
  69. package/dist/components/form/form.stories.svelte +96 -99
  70. package/dist/components/image/image.stories.svelte +20 -23
  71. package/dist/components/index.d.ts +1 -0
  72. package/dist/components/index.js +1 -0
  73. package/dist/components/input/input.stories.svelte +35 -38
  74. package/dist/components/label/label.stories.svelte +15 -26
  75. package/dist/components/label/label.stories.svelte.d.ts +24 -4
  76. package/dist/components/lazy/index.d.ts +1 -0
  77. package/dist/components/lazy/index.js +1 -0
  78. package/dist/components/lazy/lazy.stories.svelte +28 -0
  79. package/dist/components/lazy/lazy.stories.svelte.d.ts +19 -0
  80. package/dist/components/lazy/lazy.svelte +28 -0
  81. package/dist/components/lazy/lazy.svelte.d.ts +5 -0
  82. package/dist/components/lazy/types.d.ts +10 -0
  83. package/dist/components/lazy/types.js +1 -0
  84. package/dist/components/link/link.stories.svelte +15 -26
  85. package/dist/components/link/link.stories.svelte.d.ts +24 -4
  86. package/dist/components/menu/menu-list.svelte +2 -1
  87. package/dist/components/menu/menu-list.svelte.d.ts +1 -0
  88. package/dist/components/menu/menu.stories.svelte +33 -36
  89. package/dist/components/popover/bond.svelte.js +31 -25
  90. package/dist/components/popover/popover-arrow.svelte +111 -111
  91. package/dist/components/popover/popover-content.svelte +2 -5
  92. package/dist/components/popover/popover-indicator.svelte +44 -43
  93. package/dist/components/popover/popover-root.svelte +1 -1
  94. package/dist/components/popover/popover.stories.svelte +18 -21
  95. package/dist/components/qr-code/index.d.ts +1 -0
  96. package/dist/components/qr-code/index.js +1 -0
  97. package/dist/components/qr-code/qr-code.stories.svelte +4 -10
  98. package/dist/components/qr-code/qr-code.svelte +75 -25
  99. package/dist/components/qr-code/qr-code.svelte.d.ts +2 -4
  100. package/dist/components/qr-code/types.d.ts +14 -0
  101. package/dist/components/qr-code/types.js +1 -0
  102. package/dist/components/radio/radio-group.stories.svelte +41 -50
  103. package/dist/components/radio/radio.stories.svelte +17 -26
  104. package/dist/components/radio/radio.svelte +109 -109
  105. package/dist/components/root/root.svelte +121 -121
  106. package/dist/components/root/root.svelte.d.ts +1 -1
  107. package/dist/components/scrollable/scrollable.stories.svelte +116 -126
  108. package/dist/components/sidebar/bond.svelte.d.ts +0 -5
  109. package/dist/components/sidebar/bond.svelte.js +1 -12
  110. package/dist/components/sidebar/sidebar-content.svelte +50 -39
  111. package/dist/components/sidebar/sidebar-content.svelte.d.ts +2 -2
  112. package/dist/components/sidebar/sidebar-root.svelte +39 -68
  113. package/dist/components/sidebar/sidebar-root.svelte.d.ts +2 -2
  114. package/dist/components/sidebar/sidebar.stories.svelte +43 -52
  115. package/dist/components/sidebar/types.d.ts +7 -6
  116. package/dist/components/tabs/tab/bond.svelte.d.ts +4 -1
  117. package/dist/components/tabs/tab/bond.svelte.js +4 -1
  118. package/dist/components/tabs/tabs.stories.svelte +56 -59
  119. package/dist/components/tooltip/tooltip-trigger.svelte +39 -37
  120. package/dist/components/tooltip/tooltip.stories.svelte +32 -35
  121. package/dist/components/tree/tree.stories.svelte +142 -134
  122. package/dist/context/preset.svelte.d.ts +3 -3
  123. package/dist/utils/function.d.ts +2 -0
  124. package/dist/utils/function.js +6 -0
  125. package/llm/variants.md +1259 -1261
  126. package/package.json +7 -9
  127. package/dist/actions/animation.svelte.d.ts +0 -6
  128. package/dist/actions/animation.svelte.js +0 -14
  129. package/dist/actions/clickout.svelte.d.ts +0 -2
  130. package/dist/actions/clickout.svelte.js +0 -15
  131. package/dist/actions/popover.svelte.d.ts +0 -19
  132. package/dist/actions/popover.svelte.js +0 -81
  133. package/dist/actions/portal.svelte.d.ts +0 -8
  134. package/dist/actions/portal.svelte.js +0 -32
  135. package/dist/attachments/gsap.svelte.d.ts +0 -2
  136. package/dist/attachments/gsap.svelte.js +0 -26
@@ -1 +1 @@
1
- export declare function clickout<T extends Element>(onclick?: (ev: PointerEvent, node?: T) => void): (node: T) => () => void;
1
+ export declare function clickout<T extends Element>(onclick?: (ev: PointerEvent, node?: T) => void, options?: AddEventListenerOptions | undefined): (node: T) => () => void;
@@ -1,5 +1,5 @@
1
1
  import { on } from 'svelte/events';
2
- export function clickout(onclick) {
2
+ export function clickout(onclick, options) {
3
3
  return (node) => {
4
4
  const handler = (ev) => {
5
5
  const target = ev.target;
@@ -7,7 +7,7 @@ export function clickout(onclick) {
7
7
  onclick?.(ev, node);
8
8
  }
9
9
  };
10
- const cleanup = on(window, 'click', handler);
10
+ const cleanup = on(window, 'click', handler, options);
11
11
  return () => {
12
12
  cleanup();
13
13
  };
@@ -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 { defineProperty, defineState } from '../../utils';
3
+ import { HtmlAtom, type Base } from '../atom';
4
+ import { AccordionBond, AccordionState, type AccordionStateProps } from './bond.svelte';
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,5 +1,5 @@
1
- import { AccordionBond } from './bond.svelte';
2
1
  import { type Base } from '../atom';
2
+ import { AccordionBond } from './bond.svelte';
3
3
  import type { AccordionRootProps } from './types';
4
4
  declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
5
5
  props: AccordionRootProps<E, B>;
@@ -1,134 +1,145 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import { Accordion as AAccordion, AccordionItem } from '.';
4
- import Root from '../root/root.svelte';
5
- import gsap from 'gsap';
6
- import { linear } from 'svelte/easing';
7
- import { toTransitionConfig } from '../../utils/gsap';
8
-
9
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
10
- const { Story } = defineMeta({
11
- title: 'Atoms/Accordion',
12
- // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
13
-
14
- parameters: {
15
- // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
16
- layout: 'fullscreen'
17
- },
18
- args: {}
19
- });
20
- </script>
21
-
22
- <script lang="ts">
23
- </script>
24
-
25
- <Story name="Accordion" args={{ collapsible: false, multiple: false, disabled: false }}>
26
- {#snippet children(args)}
27
- <Root class="flex items-center justify-center p-4">
28
- <AAccordion class="backdrop-blur-sm" {...args}>
29
- <AccordionItem.Root>
30
- <AccordionItem.Header>
31
- <div>Hello Atomic UI 1</div>
32
- <AccordionItem.Indicator />
33
- </AccordionItem.Header>
34
-
35
- <AccordionItem.Body
36
- initial={(node) => {
37
- gsap.set(node, { opacity: 0, height: 0 });
38
- }}
39
- enter={function (node) {
40
- console.log(this);
41
- const tween = gsap.to(node, {
42
- opacity: 1,
43
- height: 'auto',
44
- duration: 0.2,
45
- ease: linear
46
- });
47
-
48
- return toTransitionConfig(tween);
49
- }}
50
- exit={(node) => {
51
- const tween = gsap.to(node, { opacity: 0, height: 0, duration: 0.2, ease: linear });
52
-
53
- return toTransitionConfig(tween);
54
- }}
55
- >
56
- <div class="p-2">
57
- Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
58
- tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
59
- dolor diam nascetur.
60
- </div>
61
- </AccordionItem.Body>
62
- </AccordionItem.Root>
63
-
64
- <AccordionItem.Root>
65
- <AccordionItem.Header>
66
- <div>Hello Atomic UI 2</div>
67
- <AccordionItem.Indicator />
68
- </AccordionItem.Header>
69
-
70
- <AccordionItem.Body
71
- initial={(node) => {
72
- gsap.set(node, { opacity: 0, height: 0 });
73
- }}
74
- enter={(node) => {
75
- const tween = gsap.to(node, {
76
- opacity: 1,
77
- height: 'auto',
78
- duration: 0.2,
79
- ease: linear
80
- });
81
-
82
- return toTransitionConfig(tween);
83
- }}
84
- exit={(node) => {
85
- const tween = gsap.to(node, { opacity: 0, height: 0, duration: 0.2, ease: linear });
86
-
87
- return toTransitionConfig(tween);
88
- }}
89
- >
90
- <div class="p-2">
91
- Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
92
- tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
93
- dolor diam nascetur.
94
- </div>
95
- </AccordionItem.Body>
96
- </AccordionItem.Root>
97
-
98
- <AccordionItem.Root>
99
- <AccordionItem.Header>
100
- <div>Hello Atomic UI 3</div>
101
- <AccordionItem.Indicator />
102
- </AccordionItem.Header>
103
-
104
- <AccordionItem.Body
105
- initial={(node) => {
106
- gsap.set(node, { opacity: 0, height: 0 });
107
- }}
108
- enter={(node) => {
109
- const tween = gsap.to(node, {
110
- opacity: 1,
111
- height: 'auto',
112
- duration: 0.2,
113
- ease: linear
114
- });
115
-
116
- return toTransitionConfig(tween);
117
- }}
118
- exit={(node) => {
119
- const tween = gsap.to(node, { opacity: 0, height: 0, duration: 0.2, ease: linear });
120
-
121
- return toTransitionConfig(tween);
122
- }}
123
- >
124
- <div class="p-2">
125
- Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
126
- tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
127
- dolor diam nascetur.
128
- </div>
129
- </AccordionItem.Body>
130
- </AccordionItem.Root>
131
- </AAccordion>
132
- </Root>
133
- {/snippet}
134
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Accordion as AAccordion, AccordionItem } from '.';
4
+ import { linear } from 'svelte/easing';
5
+ import { animate } from 'motion';
6
+
7
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
8
+ const { Story } = defineMeta({
9
+ title: 'Atoms/Accordion',
10
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
11
+
12
+ parameters: {
13
+ // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
14
+ layout: 'fullscreen'
15
+ },
16
+ args: {}
17
+ });
18
+ </script>
19
+
20
+ <script lang="ts">
21
+ </script>
22
+
23
+ <Story name="Accordion" args={{ collapsible: false, multiple: false, disabled: false }}>
24
+ {#snippet children(args)}
25
+ <AAccordion class="backdrop-blur-sm" {...args}>
26
+ <AccordionItem.Root>
27
+ <AccordionItem.Header>
28
+ <div>Hello Atomic UI 1</div>
29
+ <AccordionItem.Indicator />
30
+ </AccordionItem.Header>
31
+
32
+ <AccordionItem.Body
33
+ initial={(node) => {
34
+ Object.assign(node.style, { opacity: 0, height: 0 });
35
+ }}
36
+ enter={function (node) {
37
+ const d = 0.2;
38
+ animate(
39
+ node,
40
+ {
41
+ opacity: 1,
42
+ height: 'auto'
43
+ },
44
+ {
45
+ duration: d
46
+ }
47
+ );
48
+
49
+ return { duration: d * 1000 };
50
+ }}
51
+ exit={(node) => {
52
+ const d = 0.2;
53
+ animate(node, { opacity: 0, height: 0 }, { duration: d });
54
+
55
+ return { duration: d * 1000 };
56
+ }}
57
+ >
58
+ <div class="p-2">
59
+ Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
60
+ tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
61
+ dolor diam nascetur.
62
+ </div>
63
+ </AccordionItem.Body>
64
+ </AccordionItem.Root>
65
+
66
+ <AccordionItem.Root>
67
+ <AccordionItem.Header>
68
+ <div>Hello Atomic UI 2</div>
69
+ <AccordionItem.Indicator />
70
+ </AccordionItem.Header>
71
+
72
+ <AccordionItem.Body
73
+ initial={(node) => {
74
+ Object.assign(node.style, { opacity: 0, height: 0 });
75
+ }}
76
+ enter={(node) => {
77
+ animate(
78
+ node,
79
+ {
80
+ opacity: 1,
81
+ height: 'auto'
82
+ },
83
+ {
84
+ duration: 0.2,
85
+ ease: linear
86
+ }
87
+ );
88
+
89
+ return { duration: 0.2 };
90
+ }}
91
+ exit={(node) => {
92
+ animate(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: linear });
93
+
94
+ return { duration: 0.2 };
95
+ }}
96
+ >
97
+ <div class="p-2">
98
+ Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
99
+ tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
100
+ dolor diam nascetur.
101
+ </div>
102
+ </AccordionItem.Body>
103
+ </AccordionItem.Root>
104
+
105
+ <AccordionItem.Root>
106
+ <AccordionItem.Header>
107
+ <div>Hello Atomic UI 3</div>
108
+ <AccordionItem.Indicator />
109
+ </AccordionItem.Header>
110
+
111
+ <AccordionItem.Body
112
+ initial={(node) => {
113
+ Object.assign(node.style, { opacity: 0, height: 0 });
114
+ }}
115
+ enter={(node) => {
116
+ animate(
117
+ node,
118
+ {
119
+ opacity: 1,
120
+ height: 'auto'
121
+ },
122
+ {
123
+ duration: 0.2,
124
+ ease: linear
125
+ }
126
+ );
127
+
128
+ return { duration: 0.2 };
129
+ }}
130
+ exit={(node) => {
131
+ animate(node, { opacity: 0, height: 0 }, { duration: 0.2, ease: linear });
132
+
133
+ return { duration: 0.2 };
134
+ }}
135
+ >
136
+ <div class="p-2">
137
+ Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
138
+ tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
139
+ dolor diam nascetur.
140
+ </div>
141
+ </AccordionItem.Body>
142
+ </AccordionItem.Root>
143
+ </AAccordion>
144
+ {/snippet}
145
+ </Story>
@@ -1,43 +1,43 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- import { 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>
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>
@@ -1,70 +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 { 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
+ <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}