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

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 +5 -11
  39. package/dist/components/date-picker/date-picker-calendar.svelte +67 -67
  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,2 +1,3 @@
1
1
  export { on } from './event.svelte';
2
2
  export { resizeObserver } from './resize-observer.svelte';
3
+ export { clickout } from './clickout.svelte';
@@ -1,2 +1,3 @@
1
1
  export { on } from './event.svelte';
2
2
  export { resizeObserver } from './resize-observer.svelte';
3
+ export { clickout } from './clickout.svelte';
@@ -1,65 +1,65 @@
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
- preset = 'accordion',
24
- ...restProps
25
- }: AccordionRootProps<E, B> = $props();
26
-
27
- const bondProps = defineState<AccordionStateProps>([
28
- defineProperty(
29
- 'values',
30
- () => (multiple ? values : ([value].filter(Boolean) as string[])),
31
- (v) => {
32
- values = v;
33
- value = values[0];
34
- }
35
- ),
36
- defineProperty('multiple', () => multiple),
37
- defineProperty('collapsible', () => collapsible),
38
- defineProperty('disabled', () => disabled)
39
- ]);
40
- const bond = factory(bondProps).share();
41
-
42
- const rootProps = $derived({
43
- ...bond.root(),
44
- ...restProps
45
- });
46
-
47
- function _factory(props: typeof bondProps = bondProps) {
48
- const bondState = new AccordionState(() => props);
49
-
50
- return new AccordionBond(bondState);
51
- }
52
-
53
- export function getBond() {
54
- return bond;
55
- }
56
- </script>
57
-
58
- <HtmlAtom
59
- {preset}
60
- {bond}
61
- class={['bg-card border-border flex list-none flex-col', '$preset', klass]}
62
- {...rootProps}
63
- >
64
- {@render children?.({ accordion: bond })}
65
- </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
+ preset = 'accordion',
24
+ ...restProps
25
+ }: AccordionRootProps<E, B> = $props();
26
+
27
+ const bondProps = defineState<AccordionStateProps>([
28
+ defineProperty(
29
+ 'values',
30
+ () => (multiple ? values : ([value].filter(Boolean) as string[])),
31
+ (v) => {
32
+ values = v;
33
+ value = values[0];
34
+ }
35
+ ),
36
+ defineProperty('multiple', () => multiple),
37
+ defineProperty('collapsible', () => collapsible),
38
+ defineProperty('disabled', () => disabled)
39
+ ]);
40
+ const bond = factory(bondProps).share();
41
+
42
+ const rootProps = $derived({
43
+ ...bond.root(),
44
+ ...restProps
45
+ });
46
+
47
+ function _factory(props: typeof bondProps = bondProps) {
48
+ const bondState = new AccordionState(() => props);
49
+
50
+ return new AccordionBond(bondState);
51
+ }
52
+
53
+ export function getBond() {
54
+ return bond;
55
+ }
56
+ </script>
57
+
58
+ <HtmlAtom
59
+ {preset}
60
+ {bond}
61
+ class={['bg-card border-border flex list-none flex-col', '$preset', klass]}
62
+ {...rootProps}
63
+ >
64
+ {@render children?.({ accordion: bond })}
65
+ </HtmlAtom>
@@ -1,70 +1,70 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import { Accordion as AAccordion, AccordionItem } from '.';
4
-
5
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
6
- const { Story } = defineMeta({
7
- title: 'Atoms/Accordion',
8
- // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
9
-
10
- parameters: {
11
- // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
12
- layout: 'fullscreen'
13
- },
14
- args: {}
15
- });
16
- </script>
17
-
18
- <script lang="ts">
19
- </script>
20
-
21
- <Story name="Accordion" args={{ collapsible: false, multiple: false, disabled: false }}>
22
- {#snippet template(args)}
23
- <AAccordion class="backdrop-blur-sm" {...args}>
24
- <AccordionItem.Root>
25
- <AccordionItem.Header>
26
- <div>Hello Atomic UI 1</div>
27
- <AccordionItem.Indicator class="ml-auto" />
28
- </AccordionItem.Header>
29
-
30
- <AccordionItem.Body>
31
- <div class="p-2">
32
- Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
33
- tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
34
- dolor diam nascetur.
35
- </div>
36
- </AccordionItem.Body>
37
- </AccordionItem.Root>
38
-
39
- <AccordionItem.Root>
40
- <AccordionItem.Header>
41
- <div>Hello Atomic UI 2</div>
42
- <AccordionItem.Indicator class="ml-auto" />
43
- </AccordionItem.Header>
44
-
45
- <AccordionItem.Body>
46
- <div class="p-2">
47
- Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
48
- tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
49
- dolor diam nascetur.
50
- </div>
51
- </AccordionItem.Body>
52
- </AccordionItem.Root>
53
-
54
- <AccordionItem.Root>
55
- <AccordionItem.Header>
56
- <div>Hello Atomic UI 3</div>
57
- <AccordionItem.Indicator class="ml-auto" />
58
- </AccordionItem.Header>
59
-
60
- <AccordionItem.Body>
61
- <div class="p-2">
62
- Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
63
- tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
64
- dolor diam nascetur.
65
- </div>
66
- </AccordionItem.Body>
67
- </AccordionItem.Root>
68
- </AAccordion>
69
- {/snippet}
70
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Accordion as AAccordion, AccordionItem } from '.';
4
+
5
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
6
+ const { Story } = defineMeta({
7
+ title: 'Atoms/Accordion',
8
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
9
+
10
+ parameters: {
11
+ // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
12
+ layout: 'fullscreen'
13
+ },
14
+ args: {}
15
+ });
16
+ </script>
17
+
18
+ <script lang="ts">
19
+ </script>
20
+
21
+ <Story name="Accordion" args={{ collapsible: false, multiple: false, disabled: false }}>
22
+ {#snippet template(args)}
23
+ <AAccordion class="backdrop-blur-sm" {...args}>
24
+ <AccordionItem.Root>
25
+ <AccordionItem.Header>
26
+ <div>Hello Atomic UI 1</div>
27
+ <AccordionItem.Indicator class="ml-auto" />
28
+ </AccordionItem.Header>
29
+
30
+ <AccordionItem.Body>
31
+ <div class="p-2">
32
+ Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
33
+ tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
34
+ dolor diam nascetur.
35
+ </div>
36
+ </AccordionItem.Body>
37
+ </AccordionItem.Root>
38
+
39
+ <AccordionItem.Root>
40
+ <AccordionItem.Header>
41
+ <div>Hello Atomic UI 2</div>
42
+ <AccordionItem.Indicator class="ml-auto" />
43
+ </AccordionItem.Header>
44
+
45
+ <AccordionItem.Body>
46
+ <div class="p-2">
47
+ Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
48
+ tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
49
+ dolor diam nascetur.
50
+ </div>
51
+ </AccordionItem.Body>
52
+ </AccordionItem.Root>
53
+
54
+ <AccordionItem.Root>
55
+ <AccordionItem.Header>
56
+ <div>Hello Atomic UI 3</div>
57
+ <AccordionItem.Indicator class="ml-auto" />
58
+ </AccordionItem.Header>
59
+
60
+ <AccordionItem.Body>
61
+ <div class="p-2">
62
+ Mauris et habitasse cubilia potenti at condimentum iaculis nam. Ante fusce litora
63
+ tristique letius libero. Curabitur vitae cursus consectetur feugiat aenean viverra vel
64
+ dolor diam nascetur.
65
+ </div>
66
+ </AccordionItem.Body>
67
+ </AccordionItem.Root>
68
+ </AAccordion>
69
+ {/snippet}
70
+ </Story>
@@ -1,44 +1,44 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { HtmlAtom, type Base } from '../../atom';
3
- import { AccordionItemBond } from './bond.svelte';
4
- import { enterAccordionItemBody, exitAccordionItemBody } from './motion.svelte';
5
- import type { AccordionItemBodyProps } from './types';
6
-
7
- const bond = AccordionItemBond.get();
8
- const isOpen = $derived(bond?.state.isOpen ?? false);
9
-
10
- let {
11
- class: klass = '',
12
- children = undefined,
13
- onmount = undefined,
14
- ondestroy = undefined,
15
- animate = undefined,
16
- enter = enterAccordionItemBody(),
17
- exit = exitAccordionItemBody(),
18
- initial = undefined,
19
- preset = 'accordion.item.body',
20
- ...restProps
21
- }: AccordionItemBodyProps<E, B> = $props();
22
-
23
- const bodyProps = $derived({
24
- ...bond?.body(),
25
- ...restProps
26
- });
27
- </script>
28
-
29
- {#if isOpen}
30
- <HtmlAtom
31
- {preset}
32
- {bond}
33
- class={['border-border box-content h-0 opacity-0', '$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
- {...bodyProps}
41
- >
42
- {@render children?.({ accordionItem: bond })}
43
- </HtmlAtom>
44
- {/if}
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../../atom';
3
+ import { AccordionItemBond } from './bond.svelte';
4
+ import { enterAccordionItemBody, exitAccordionItemBody } from './motion.svelte';
5
+ import type { AccordionItemBodyProps } from './types';
6
+
7
+ const bond = AccordionItemBond.get();
8
+ const isOpen = $derived(bond?.state.isOpen ?? false);
9
+
10
+ let {
11
+ class: klass = '',
12
+ children = undefined,
13
+ onmount = undefined,
14
+ ondestroy = undefined,
15
+ animate = undefined,
16
+ enter = enterAccordionItemBody(),
17
+ exit = exitAccordionItemBody(),
18
+ initial = undefined,
19
+ preset = 'accordion.item.body',
20
+ ...restProps
21
+ }: AccordionItemBodyProps<E, B> = $props();
22
+
23
+ const bodyProps = $derived({
24
+ ...bond?.body(),
25
+ ...restProps
26
+ });
27
+ </script>
28
+
29
+ {#if isOpen}
30
+ <HtmlAtom
31
+ {preset}
32
+ {bond}
33
+ class={['border-border box-content h-0 opacity-0', '$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
+ {...bodyProps}
41
+ >
42
+ {@render children?.({ accordionItem: bond })}
43
+ </HtmlAtom>
44
+ {/if}
@@ -1,51 +1,51 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { HtmlAtom, type Base } from '../../atom';
3
- import { AccordionItemBond } from './bond.svelte';
4
- import type { AccordionItemHeaderProps } from './types';
5
-
6
- let {
7
- class: klass = '',
8
- as = 'button',
9
- children = undefined,
10
- onpointerdown = undefined,
11
- onmount = undefined,
12
- ondestroy = undefined,
13
- animate = undefined,
14
- enter = undefined,
15
- exit = undefined,
16
- initial = undefined,
17
- preset = 'accordion.item.header',
18
- ...restProps
19
- }: AccordionItemHeaderProps = $props();
20
-
21
- const bond = AccordionItemBond.get();
22
-
23
- const headerProps = $derived({
24
- ...bond?.header(),
25
- ...restProps
26
- });
27
- </script>
28
-
29
- <!-- svelte-ignore a11y_no_static_element_interactions -->
30
- <HtmlAtom
31
- {as}
32
- {bond}
33
- {preset}
34
- class={[
35
- 'border-border relative box-border flex w-full cursor-pointer items-center',
36
- '$preset',
37
- klass
38
- ]}
39
- onmount={onmount?.bind(bond.state)}
40
- ondestroy={ondestroy?.bind(bond.state)}
41
- animate={animate?.bind(bond.state)}
42
- enter={enter?.bind(bond.state)}
43
- exit={exit?.bind(bond.state)}
44
- initial={initial?.bind(bond.state)}
45
- tabindex={as !== 'button' ? 0 : undefined}
46
- {...headerProps}
47
- >
48
- {@render children?.({
49
- accordionItem: bond
50
- })}
51
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { HtmlAtom, type Base } from '../../atom';
3
+ import { AccordionItemBond } from './bond.svelte';
4
+ import type { AccordionItemHeaderProps } from './types';
5
+
6
+ let {
7
+ class: klass = '',
8
+ as = 'button',
9
+ children = undefined,
10
+ onpointerdown = undefined,
11
+ onmount = undefined,
12
+ ondestroy = undefined,
13
+ animate = undefined,
14
+ enter = undefined,
15
+ exit = undefined,
16
+ initial = undefined,
17
+ preset = 'accordion.item.header',
18
+ ...restProps
19
+ }: AccordionItemHeaderProps = $props();
20
+
21
+ const bond = AccordionItemBond.get();
22
+
23
+ const headerProps = $derived({
24
+ ...bond?.header(),
25
+ ...restProps
26
+ });
27
+ </script>
28
+
29
+ <!-- svelte-ignore a11y_no_static_element_interactions -->
30
+ <HtmlAtom
31
+ {as}
32
+ {bond}
33
+ {preset}
34
+ class={[
35
+ 'border-border relative box-border flex w-full cursor-pointer items-center',
36
+ '$preset',
37
+ klass
38
+ ]}
39
+ onmount={onmount?.bind(bond.state)}
40
+ ondestroy={ondestroy?.bind(bond.state)}
41
+ animate={animate?.bind(bond.state)}
42
+ enter={enter?.bind(bond.state)}
43
+ exit={exit?.bind(bond.state)}
44
+ initial={initial?.bind(bond.state)}
45
+ tabindex={as !== 'button' ? 0 : undefined}
46
+ {...headerProps}
47
+ >
48
+ {@render children?.({
49
+ accordionItem: bond
50
+ })}
51
+ </HtmlAtom>
@@ -1,51 +1,51 @@
1
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { animate as motion } from 'motion';
3
- import { Icon } from '../../icon';
4
- import IconArrowDown from '../../../icons/icon-arrow-down.svelte';
5
- import { HtmlAtom, type Base } from '../../atom';
6
- import { AccordionItemBond } from './bond.svelte';
7
- import type { AccordionItemIndicatorProps } from './types';
8
-
9
- const bond = AccordionItemBond.get();
10
- const isOpen = $derived(bond?.state?.isOpen ?? false);
11
-
12
- let {
13
- class: klass = '',
14
- children = undefined,
15
- onmount = undefined,
16
- ondestroy = undefined,
17
- animate = _animate,
18
- enter = undefined,
19
- exit = undefined,
20
- initial = undefined,
21
- preset = 'accordion.item.indicator',
22
- ...restProps
23
- }: AccordionItemIndicatorProps<E, B> = $props();
24
-
25
- const indicatorProps = $derived({
26
- ...bond?.indicator(),
27
- ...restProps
28
- });
29
-
30
- function _animate(node: HTMLElement) {
31
- return motion(node, { rotate: 180 * +isOpen }, { duration: 0.3, ease: 'anticipate' });
32
- }
33
- </script>
34
-
35
- <HtmlAtom
36
- {preset}
37
- class={['border-border pointer-events-none flex items-center justify-center', '$preset', klass]}
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
- {...indicatorProps}
45
- >
46
- {#if children}
47
- {@render children({ accordionItem: bond })}
48
- {:else}
49
- <Icon src={IconArrowDown} />
50
- {/if}
51
- </HtmlAtom>
1
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { animate as motion } from 'motion';
3
+ import { Icon } from '../../icon';
4
+ import IconArrowDown from '../../../icons/icon-arrow-down.svelte';
5
+ import { HtmlAtom, type Base } from '../../atom';
6
+ import { AccordionItemBond } from './bond.svelte';
7
+ import type { AccordionItemIndicatorProps } from './types';
8
+
9
+ const bond = AccordionItemBond.get();
10
+ const isOpen = $derived(bond?.state?.isOpen ?? false);
11
+
12
+ let {
13
+ class: klass = '',
14
+ children = undefined,
15
+ onmount = undefined,
16
+ ondestroy = undefined,
17
+ animate = _animate,
18
+ enter = undefined,
19
+ exit = undefined,
20
+ initial = undefined,
21
+ preset = 'accordion.item.indicator',
22
+ ...restProps
23
+ }: AccordionItemIndicatorProps<E, B> = $props();
24
+
25
+ const indicatorProps = $derived({
26
+ ...bond?.indicator(),
27
+ ...restProps
28
+ });
29
+
30
+ function _animate(node: HTMLElement) {
31
+ return motion(node, { rotate: 180 * +isOpen }, { duration: 0.3, ease: 'anticipate' });
32
+ }
33
+ </script>
34
+
35
+ <HtmlAtom
36
+ {preset}
37
+ class={['border-border pointer-events-none flex items-center justify-center', '$preset', klass]}
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
+ {...indicatorProps}
45
+ >
46
+ {#if children}
47
+ {@render children({ accordionItem: bond })}
48
+ {:else}
49
+ <Icon src={IconArrowDown} />
50
+ {/if}
51
+ </HtmlAtom>