@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
@@ -0,0 +1,69 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ import { createAttachmentKey } from 'svelte/attachments';
3
+ import { nanoid } from 'nanoid';
4
+ import { MenuBond, MenuBondState } from '../bond.svelte';
5
+ export class MenuItemController {
6
+ static CONTEXT_KEY = '@atoms/context/menu/item';
7
+ #id;
8
+ #props;
9
+ #element = null;
10
+ #menu;
11
+ #unmount;
12
+ constructor(props = () => ({})) {
13
+ this.#props = props;
14
+ this.#id = this.props.id ?? nanoid();
15
+ this.#menu = MenuBond.get();
16
+ if (!this.#menu) {
17
+ throw new Error('MenuItem must be used within a Menu context');
18
+ }
19
+ }
20
+ get id() {
21
+ return this.#id;
22
+ }
23
+ get props() {
24
+ return this.#props();
25
+ }
26
+ get element() {
27
+ return this.#element;
28
+ }
29
+ get menu() {
30
+ return this.#menu;
31
+ }
32
+ get isHighlighted() {
33
+ return this.#menu?.state.highlightedId === this.#id;
34
+ }
35
+ mount() {
36
+ this.#unmount = this.#menu?.state?.mountItem?.(this.#id, this) ?? undefined;
37
+ return this.unmount;
38
+ }
39
+ unmount() {
40
+ this.#unmount?.();
41
+ }
42
+ destroy() {
43
+ this.unmount();
44
+ }
45
+ share() {
46
+ return MenuItemController.set(this);
47
+ }
48
+ elementProps() {
49
+ const itemId = `item-${this.id}`;
50
+ return {
51
+ id: itemId,
52
+ role: 'menuitem',
53
+ 'data-highlighted': this.isHighlighted,
54
+ [createAttachmentKey()]: (node) => {
55
+ this.#element = node;
56
+ return () => {
57
+ // this.#unmount?.();
58
+ this.#element = null;
59
+ };
60
+ }
61
+ };
62
+ }
63
+ static get() {
64
+ return getContext(MenuItemController.CONTEXT_KEY);
65
+ }
66
+ static set(item) {
67
+ return setContext(MenuItemController.CONTEXT_KEY, item);
68
+ }
69
+ }
@@ -0,0 +1,2 @@
1
+ export { MenuItemController, type MenuItemControllerProps } from './controller.svelte';
2
+ export * from './types';
@@ -0,0 +1,2 @@
1
+ export { MenuItemController } from './controller.svelte';
2
+ export * from './types';
@@ -0,0 +1,103 @@
1
+ <script
2
+ lang="ts"
3
+ generics="D, E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base"
4
+ >
5
+ import { defineProperty, defineState } from '../../../utils';
6
+ import type { Base } from '../../atom';
7
+ import { MenuItemController, type MenuItemControllerProps } from './controller.svelte';
8
+ import { MenuBond } from '../bond.svelte';
9
+ import { List } from '../../list';
10
+ import type { MenuItemProps } from './types';
11
+
12
+ const menu = MenuBond.get();
13
+
14
+ if (!menu) {
15
+ throw new Error('<MenuItem> must be used within a <Menu>.');
16
+ }
17
+
18
+ const ID = $props.id();
19
+
20
+ let {
21
+ class: klass = '',
22
+ id = ID,
23
+ preset: presetKey = 'menu.item',
24
+ children = undefined,
25
+ onclick = undefined,
26
+ disabled = undefined,
27
+ onmount = undefined,
28
+ ondestroy = undefined,
29
+ animate = undefined,
30
+ enter = undefined,
31
+ exit = undefined,
32
+ initial = undefined,
33
+ factory = _factory,
34
+ ...restProps
35
+ }: MenuItemProps = $props();
36
+
37
+ const controller = factory().share();
38
+
39
+ const itemProps = $derived({
40
+ ...menu?.item?.(),
41
+ ...controller?.elementProps(),
42
+ ...restProps
43
+ });
44
+
45
+ $effect(() => {
46
+ return () => {
47
+ controller.destroy();
48
+ };
49
+ });
50
+
51
+ function _factory() {
52
+ const item = menu?.state?.item?.(id);
53
+
54
+ if (item) {
55
+ return item as MenuItemController;
56
+ }
57
+
58
+ const bondProps = defineState<MenuItemControllerProps>([defineProperty('id', () => id)]);
59
+ const controller = new MenuItemController(() => bondProps);
60
+
61
+ controller.mount();
62
+
63
+ return controller;
64
+ }
65
+
66
+ function handleClick(ev: MouseEvent) {
67
+ onclick?.(ev);
68
+
69
+ if (ev.defaultPrevented) {
70
+ return;
71
+ }
72
+
73
+ ev.preventDefault();
74
+
75
+ controller?.menu?.state.close();
76
+ }
77
+
78
+ export function getController() {
79
+ return controller;
80
+ }
81
+ </script>
82
+
83
+ <List.Item
84
+ bond={controller}
85
+ preset={presetKey}
86
+ class={[
87
+ 'border-border last:border-b-none hover:bg-foreground/5 active:bg-foreground/10 outline-primary cursor-pointer border-b',
88
+ '$preset',
89
+ klass
90
+ ]}
91
+ onmount={onmount?.bind(controller) as any}
92
+ ondestroy={ondestroy?.bind(controller) as any}
93
+ enter={enter?.bind(controller) as any}
94
+ exit={exit?.bind(controller) as any}
95
+ initial={initial?.bind(controller) as any}
96
+ animate={animate?.bind(controller) as any}
97
+ aria-disabled={disabled ? true : undefined}
98
+ tabIndex={disabled ? -1 : 0}
99
+ onclick={handleClick}
100
+ {...itemProps}
101
+ >
102
+ {@render children?.({ menuItem: controller })}
103
+ </List.Item>
@@ -0,0 +1,31 @@
1
+ import type { Base } from '../../atom';
2
+ import { MenuItemController } from './controller.svelte';
3
+ import type { MenuItemProps } from './types';
4
+ declare function $$render<D, E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
5
+ props: MenuItemProps;
6
+ exports: {
7
+ getController: () => MenuItemController;
8
+ };
9
+ bindings: "";
10
+ slots: {};
11
+ events: {};
12
+ };
13
+ declare class __sveltets_Render<D, E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> {
14
+ props(): ReturnType<typeof $$render<D, E, B>>['props'];
15
+ events(): ReturnType<typeof $$render<D, E, B>>['events'];
16
+ slots(): ReturnType<typeof $$render<D, E, B>>['slots'];
17
+ bindings(): "";
18
+ exports(): {
19
+ getController: () => MenuItemController;
20
+ };
21
+ }
22
+ interface $$IsomorphicComponent {
23
+ new <D, E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<D, E, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<D, E, B>['props']>, ReturnType<__sveltets_Render<D, E, B>['events']>, ReturnType<__sveltets_Render<D, E, B>['slots']>> & {
24
+ $$bindings?: ReturnType<__sveltets_Render<D, E, B>['bindings']>;
25
+ } & ReturnType<__sveltets_Render<D, E, B>['exports']>;
26
+ <D, E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<D, E, B>['props']> & {}): ReturnType<__sveltets_Render<D, E, B>['exports']>;
27
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
28
+ }
29
+ declare const MenuItem: $$IsomorphicComponent;
30
+ type MenuItem<D, E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof MenuItem<D, E, B>>;
31
+ export default MenuItem;
@@ -0,0 +1,62 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { MenuItemController } from './controller.svelte';
3
+ import type { ClassValue } from '../../../utils';
4
+ import type { Base, HtmlAtomProps } from '../../atom';
5
+ /**
6
+ * Extend this interface to add custom menu list properties in your application.
7
+ */
8
+ export interface MenuItemExtendProps {
9
+ }
10
+ export interface MenuItemProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, MenuItemExtendProps {
11
+ /**
12
+ * Custom CSS class(es) to apply to the menu item
13
+ */
14
+ class?: ClassValue;
15
+ /**
16
+ * Preset key for styling
17
+ * @default 'menu.item'
18
+ */
19
+ preset?: string;
20
+ /**
21
+ * Whether the menu item is disabled
22
+ */
23
+ disabled?: boolean;
24
+ /**
25
+ * Click event handler
26
+ */
27
+ onclick?: (event: MouseEvent) => void;
28
+ /**
29
+ * Mount lifecycle callback
30
+ */
31
+ onmount?: (this: MenuItemController) => void;
32
+ /**
33
+ * Destroy lifecycle callback
34
+ */
35
+ ondestroy?: (this: MenuItemController) => void;
36
+ /**
37
+ * Animation configuration
38
+ */
39
+ animate?: (this: MenuItemController) => any;
40
+ /**
41
+ * Enter animation configuration
42
+ */
43
+ enter?: (this: MenuItemController) => any;
44
+ /**
45
+ * Exit animation configuration
46
+ */
47
+ exit?: (this: MenuItemController) => any;
48
+ /**
49
+ * Initial state configuration
50
+ */
51
+ initial?: (this: MenuItemController) => any;
52
+ /**
53
+ * Factory function to create a custom MenuItemController instance
54
+ */
55
+ factory?: () => MenuItemController;
56
+ /**
57
+ * Render prop for children
58
+ */
59
+ children?: Snippet<[{
60
+ menuItem: MenuItemController;
61
+ }]>;
62
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,40 +1,40 @@
1
- <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { List } from '../list';
3
- import { Content } from '../popover/atoms';
4
- import type { Base } from '../atom';
5
- import { PopoverBond } from '../popover';
6
-
7
- const bond = PopoverBond.get();
8
-
9
- let {
10
- class: klass = '',
11
- as = 'ul' as T,
12
- base = List.Root as B,
13
- preset = 'menu.list',
14
- children = undefined,
15
- onmount = undefined,
16
- ondestroy = undefined,
17
- animate = undefined,
18
- enter = undefined,
19
- exit = undefined,
20
- initial = undefined,
21
- ...restProps
22
- } = $props();
23
- </script>
24
-
25
- <Content
26
- {as}
27
- {base}
28
- {bond}
29
- {preset}
30
- class={['bg-background border-border overflow-hidden p-0', '$preset', klass]}
31
- onmount={onmount?.bind(bond.state)}
32
- ondestroy={ondestroy?.bind(bond.state)}
33
- enter={enter?.bind(bond.state)}
34
- exit={exit?.bind(bond.state)}
35
- initial={initial?.bind(bond.state)}
36
- animate={animate?.bind(bond.state)}
37
- {...restProps}
38
- >
39
- {@render children?.()}
40
- </Content>
1
+ <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
+ import { Content } from '../popover/atoms';
3
+ import type { Base } from '../atom';
4
+ import { MenuBond } from './bond.svelte';
5
+ import { Root } from '../list/atoms';
6
+
7
+ const bond = MenuBond.get();
8
+
9
+ let {
10
+ class: klass = '',
11
+ as = 'ul' as T,
12
+ base = Root as B,
13
+ preset = 'menu.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
+ } = $props();
23
+ </script>
24
+
25
+ <Content
26
+ {as}
27
+ {base}
28
+ {bond}
29
+ {preset}
30
+ class={['border-border overflow-hidden p-0', '$preset', klass]}
31
+ onmount={onmount?.bind(bond.state)}
32
+ ondestroy={ondestroy?.bind(bond.state)}
33
+ enter={enter?.bind(bond.state)}
34
+ exit={exit?.bind(bond.state)}
35
+ initial={initial?.bind(bond.state)}
36
+ animate={animate?.bind(bond.state)}
37
+ {...restProps}
38
+ >
39
+ {@render children?.()}
40
+ </Content>
@@ -32,6 +32,6 @@ interface $$IsomorphicComponent {
32
32
  <T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(internal: unknown, props: ReturnType<__sveltets_Render<T, B>['props']> & {}): ReturnType<__sveltets_Render<T, B>['exports']>;
33
33
  z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
34
34
  }
35
- declare const MenuList: $$IsomorphicComponent;
36
- type MenuList<T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof MenuList<T, B>>;
37
- export default MenuList;
35
+ declare const MenuContent: $$IsomorphicComponent;
36
+ type MenuContent<T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof MenuContent<T, B>>;
37
+ export default MenuContent;
@@ -0,0 +1,15 @@
1
+ <script lang="ts">
2
+ import { MenuBond, MenuBondState, type MenuBondProps } from './bond.svelte';
3
+ import { Root } from '../popover/atoms';
4
+
5
+ let { open = $bindable(false), factory = _factory, children, ...restProps } = $props();
6
+
7
+ function _factory(props: MenuBondProps) {
8
+ const menuBondState = new MenuBondState(() => props);
9
+ return new MenuBond(menuBondState);
10
+ }
11
+ </script>
12
+
13
+ <Root bind:open {factory} {...restProps}>
14
+ {@render children?.()}
15
+ </Root>
@@ -0,0 +1,8 @@
1
+ import { MenuBond, MenuBondState, type MenuBondProps } from './bond.svelte';
2
+ declare const MenuRoot: import("svelte").Component<{
3
+ open?: boolean;
4
+ factory?: (props: MenuBondProps) => MenuBond<MenuBondProps, MenuBondState<MenuBondProps>, import(".").PopoverDomElements>;
5
+ children: any;
6
+ } & Record<string, any>, {}, "open">;
7
+ type MenuRoot = ReturnType<typeof MenuRoot>;
8
+ export default MenuRoot;
@@ -1,33 +1,33 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import { Menu as AMenu } from '.';
4
- import { Button } from '../button';
5
-
6
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
7
- const { Story } = defineMeta({
8
- title: 'Atoms/Menu',
9
- // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
10
-
11
- parameters: {
12
- // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
13
- layout: 'fullscreen'
14
- },
15
- args: {}
16
- });
17
- </script>
18
-
19
- <script lang="ts">
20
- let open = $state(false);
21
- </script>
22
-
23
- <Story name="Menu" args={{}}>
24
- <AMenu.Root bind:open offset={4}>
25
- <AMenu.Trigger base={Button}>Select a language</AMenu.Trigger>
26
- <AMenu.List>
27
- <AMenu.Item>Arabic</AMenu.Item>
28
- <AMenu.Item>English</AMenu.Item>
29
- <AMenu.Item>Spanish</AMenu.Item>
30
- <AMenu.Item>Italian</AMenu.Item>
31
- </AMenu.List>
32
- </AMenu.Root>
33
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Menu as AMenu } from '.';
4
+ import { Button } from '../button';
5
+
6
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
7
+ const { Story } = defineMeta({
8
+ title: 'Atoms/Menu',
9
+ // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
10
+
11
+ parameters: {
12
+ // More on how to position stories at: https://storybook.js.org/docs/configure/story-layout
13
+ layout: 'fullscreen'
14
+ },
15
+ args: {}
16
+ });
17
+ </script>
18
+
19
+ <script lang="ts">
20
+ let open = $state(false);
21
+ </script>
22
+
23
+ <Story name="Menu" args={{}}>
24
+ <AMenu.Root bind:open>
25
+ <AMenu.Trigger base={Button}>Select a language</AMenu.Trigger>
26
+ <AMenu.List>
27
+ <AMenu.Item onclick={() => console.log('Arabic')}>Arabic</AMenu.Item>
28
+ <AMenu.Item onclick={() => console.log('English')}>English</AMenu.Item>
29
+ <AMenu.Item onclick={() => console.log('Spanish')}>Spanish</AMenu.Item>
30
+ <AMenu.Item onclick={() => console.log('Italian')}>Italian</AMenu.Item>
31
+ </AMenu.List>
32
+ </AMenu.Root>
33
+ </Story>
@@ -1,15 +1,8 @@
1
1
  import type { HtmlAtomProps, Base } from '../atom';
2
- /**
3
- * Extend this interface to add custom menu item properties in your application.
4
- */
5
- export interface MenuItemExtendProps {
6
- }
7
2
  /**
8
3
  * Extend this interface to add custom menu list properties in your application.
9
4
  */
10
5
  export interface MenuListExtendProps {
11
6
  }
12
- export interface MenuItemProps<E extends keyof HTMLElementTagNameMap = 'button', B extends Base = Base> extends HtmlAtomProps<E, B>, MenuItemExtendProps {
13
- }
14
7
  export interface MenuListProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, MenuListExtendProps {
15
8
  }
@@ -34,12 +34,8 @@ export declare class PopoverBond<Props extends PopoverStateProps = PopoverStateP
34
34
  static CONTEXT_KEY: string;
35
35
  position: ComputePositionReturn | undefined;
36
36
  constructor(state: State);
37
- trigger(props?: Record<string, unknown> & {
38
- onclick?: (ev: PointerEvent) => void;
39
- onkeydown?: (ev: KeyboardEvent) => void;
40
- }): {
41
- onclick: (ev: PointerEvent) => void;
42
- onkeydown: (ev: KeyboardEvent) => void;
37
+ trigger(): {
38
+ [x: symbol]: (node: HTMLElement) => (() => void) | undefined;
43
39
  id: string;
44
40
  role: string;
45
41
  disabled: boolean | undefined;
@@ -49,30 +45,31 @@ export declare class PopoverBond<Props extends PopoverStateProps = PopoverStateP
49
45
  'aria-controls': string;
50
46
  'aria-haspopup': string;
51
47
  'data-kind': string;
48
+ onclick: (ev: PointerEvent) => void;
49
+ onkeydown: (ev: KeyboardEvent) => void;
52
50
  };
53
- content(props?: Record<string, unknown> & {
54
- onchange?: (node: HTMLElement, position: ComputePositionReturn) => void;
55
- }): {
56
- onchange?: (node: HTMLElement, position: ComputePositionReturn) => void;
51
+ content(): {
52
+ [x: symbol]: (node: HTMLElement) => (() => void) | undefined;
57
53
  id: string;
58
54
  role: string;
59
55
  'aria-modal': boolean;
60
56
  'aria-labelledby': string;
61
- 'aria-hidden': boolean;
62
- inert: string | undefined;
57
+ inert: boolean | undefined;
63
58
  tabindex: number;
64
59
  'data-atom': string;
65
60
  'data-kind': string;
66
61
  'data-active': boolean;
67
62
  onkeydown: ((ev: KeyboardEvent) => void) | undefined;
68
63
  };
69
- indicator(props?: Record<string, unknown>): {
64
+ indicator(): {
65
+ [x: symbol]: (node: HTMLElement) => void;
70
66
  id: string;
71
67
  'aria-hidden': boolean;
72
68
  'aria-live': string;
73
69
  'data-kind': string;
74
70
  };
75
- arrow(props?: Record<string, unknown>): {
71
+ arrow(): {
72
+ [x: symbol]: (node: HTMLElement) => void;
76
73
  id: string;
77
74
  role: string;
78
75
  'aria-hidden': boolean;