@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,99 +0,0 @@
1
- import { getContext, setContext } from 'svelte';
2
- import { Bond, BondState } from '../../../shared/bond.svelte';
3
- import { DropdownBond, DropdownBondState } from '../bond.svelte';
4
- import { createAttachmentKey } from 'svelte/attachments';
5
- export class DropdownItemBond extends Bond {
6
- static CONTEXT_KEY = '@atoms/context/dropdown/item';
7
- #dropdown;
8
- constructor(state) {
9
- super(state);
10
- this.#dropdown = DropdownBond.get();
11
- if (!this.#dropdown) {
12
- throw new Error('DropdownItemAtom must be used within a DropdownAtom context');
13
- }
14
- }
15
- get value() {
16
- return this.state.value;
17
- }
18
- get text() {
19
- const element = (this.elements?.root?.querySelector('[data-text]') ?? this.elements?.root);
20
- return element?.innerText ?? '';
21
- }
22
- get dropdown() {
23
- return this.#dropdown;
24
- }
25
- mount() {
26
- this.dropdown?.state.mountItem(this.state.value, this);
27
- return () => this.unmount();
28
- }
29
- unmount() {
30
- this.dropdown?.state.unmountItem(this.state.value);
31
- }
32
- share() {
33
- return DropdownItemBond.set(this);
34
- }
35
- root() {
36
- return {
37
- 'data-selected': this.state.isSelected,
38
- [createAttachmentKey()]: (node) => {
39
- this.elements.root = node;
40
- }
41
- };
42
- }
43
- static get() {
44
- return getContext(DropdownItemBond.CONTEXT_KEY);
45
- }
46
- static set(bond) {
47
- return setContext(DropdownItemBond.CONTEXT_KEY, bond);
48
- }
49
- }
50
- export class DropdownItemBondState extends BondState {
51
- #dropdown;
52
- constructor(props) {
53
- super(props);
54
- this.#dropdown = DropdownBond.get();
55
- if (!this.#dropdown) {
56
- throw new Error('DropdownItemState must be used within a DropdownAtom context');
57
- }
58
- }
59
- get value() {
60
- return this.props.value;
61
- }
62
- get data() {
63
- return this.props.data;
64
- }
65
- get isSelected() {
66
- return this.dropdown?.props.values?.includes(this.props.value) ?? false;
67
- }
68
- set isSelected(val) {
69
- if (val) {
70
- this.dropdown?.select([this.props.value]);
71
- }
72
- else {
73
- this.dropdown?.unselect([this.props.value]);
74
- }
75
- }
76
- get isHighlighted() {
77
- return this.dropdown?.highlightedItem?.id === this.id;
78
- }
79
- get dropdown() {
80
- return this.#dropdown?.state;
81
- }
82
- select() {
83
- this.dropdown?.select([this.value]);
84
- }
85
- unselect() {
86
- this.dropdown?.unselect([this.value]);
87
- }
88
- toggle() {
89
- if (this.isSelected) {
90
- this.unselect();
91
- }
92
- else {
93
- this.select();
94
- }
95
- }
96
- close() {
97
- this.dropdown?.close();
98
- }
99
- }
@@ -1,69 +0,0 @@
1
- <script lang="ts" generics="T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
2
- import { PopoverBond } from '../popover/bond.svelte';
3
- import type { Base } from '../atom';
4
- import { List } from '../list';
5
-
6
- const bond = PopoverBond.get();
7
-
8
- let {
9
- class: klass = '',
10
- preset: presetKey = 'menu.item',
11
- children = undefined,
12
- onclick = undefined,
13
- disabled = undefined,
14
- onmount = undefined,
15
- ondestroy = undefined,
16
- animate = undefined,
17
- enter = undefined,
18
- exit = undefined,
19
- initial = undefined,
20
- ...restProps
21
- } = $props();
22
-
23
- function _onclick(ev: MouseEvent) {
24
- onclick?.(ev);
25
-
26
- if (ev.defaultPrevented) {
27
- return;
28
- }
29
-
30
- bond?.state.close();
31
- }
32
-
33
- function _onkeydown(ev: KeyboardEvent) {
34
- if (disabled) return;
35
-
36
- // Activate on Enter or Space
37
- if (ev.key === 'Enter' || ev.key === ' ') {
38
- ev.preventDefault();
39
- // Call the click handler if provided
40
- // cast to any to avoid strict event-type mismatch when forwarding
41
- onclick?.(ev as unknown as MouseEvent);
42
- bond?.state.close();
43
- }
44
- }
45
- </script>
46
-
47
- <List.Item
48
- {bond}
49
- preset={presetKey}
50
- class={[
51
- 'border-border last:border-b-none hover:bg-foreground/5 active:bg-foreground/10 cursor-pointer border-b',
52
- '$preset',
53
- klass
54
- ]}
55
- onmount={onmount?.bind(bond.state)}
56
- ondestroy={ondestroy?.bind(bond.state)}
57
- enter={enter?.bind(bond.state)}
58
- exit={exit?.bind(bond.state)}
59
- initial={initial?.bind(bond.state)}
60
- animate={animate?.bind(bond.state)}
61
- role="menuitem"
62
- aria-disabled={disabled ? true : undefined}
63
- tabIndex={disabled ? -1 : 0}
64
- onkeydown={_onkeydown}
65
- onclick={_onclick}
66
- {...restProps}
67
- >
68
- {@render children?.({ menu: bond })}
69
- </List.Item>
@@ -1,37 +0,0 @@
1
- import type { Base } from '../atom';
2
- declare function $$render<T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
3
- props: {
4
- class?: string;
5
- preset?: string;
6
- children?: any;
7
- onclick?: any;
8
- disabled?: any;
9
- onmount?: any;
10
- ondestroy?: any;
11
- animate?: any;
12
- enter?: any;
13
- exit?: any;
14
- initial?: any;
15
- } & Record<string, any>;
16
- exports: {};
17
- bindings: "";
18
- slots: {};
19
- events: {};
20
- };
21
- declare class __sveltets_Render<T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> {
22
- props(): ReturnType<typeof $$render<T, B>>['props'];
23
- events(): ReturnType<typeof $$render<T, B>>['events'];
24
- slots(): ReturnType<typeof $$render<T, B>>['slots'];
25
- bindings(): "";
26
- exports(): {};
27
- }
28
- interface $$IsomorphicComponent {
29
- new <T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T, B>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T, B>['props']>, ReturnType<__sveltets_Render<T, B>['events']>, ReturnType<__sveltets_Render<T, B>['slots']>> & {
30
- $$bindings?: ReturnType<__sveltets_Render<T, B>['bindings']>;
31
- } & ReturnType<__sveltets_Render<T, B>['exports']>;
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
- z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
34
- }
35
- declare const MenuItem: $$IsomorphicComponent;
36
- type MenuItem<T extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> = InstanceType<typeof MenuItem<T, B>>;
37
- export default MenuItem;
@@ -1,28 +0,0 @@
1
- export interface PropDefinition {
2
- name: string;
3
- type: string;
4
- default: string;
5
- description: string;
6
- }
7
- /**
8
- * Converts prop definitions to markdown table format
9
- */
10
- export declare function propsToMarkdown(props: PropDefinition[]): string;
11
- /**
12
- * Injects props into markdown content by replacing placeholders
13
- * Placeholders format: {{propName}}
14
- */
15
- export declare function injectPropsIntoMarkdown(markdown: string, propsMap: Record<string, PropDefinition[]>): string;
16
- /**
17
- * Converts markdown content to LLM-friendly text format
18
- * Keeps markdown syntax as-is since LLMs parse it well
19
- */
20
- export declare function markdownToLLM(markdown: string): string;
21
- /**
22
- * Reads markdown files from the docs directory
23
- */
24
- export declare function readMarkdownFile(filePath: string): Promise<string>;
25
- /**
26
- * Generate LLM-friendly documentation metadata
27
- */
28
- export declare function generateLLMHeader(title: string, description: string, version?: string): string;
@@ -1,76 +0,0 @@
1
- /**
2
- * Converts prop definitions to markdown table format
3
- */
4
- export function propsToMarkdown(props) {
5
- if (!props || props.length === 0)
6
- return '';
7
- let markdown = '| Name | Type | Default | Description |\n';
8
- markdown += '|------|------|---------|-------------|\n';
9
- for (const prop of props) {
10
- const name = prop.name.replace(/\|/g, '\\|');
11
- const type = prop.type.replace(/\|/g, '\\|');
12
- const defaultVal = prop.default.replace(/\|/g, '\\|');
13
- const description = prop.description.replace(/\|/g, '\\|');
14
- markdown += `| ${name} | ${type} | ${defaultVal} | ${description} |\n`;
15
- }
16
- return markdown;
17
- }
18
- /**
19
- * Injects props into markdown content by replacing placeholders
20
- * Placeholders format: {{propName}}
21
- */
22
- export function injectPropsIntoMarkdown(markdown, propsMap) {
23
- let result = markdown;
24
- for (const [key, props] of Object.entries(propsMap)) {
25
- const placeholder = new RegExp(`{{${key}}}`, 'g');
26
- const propsMarkdown = propsToMarkdown(props);
27
- result = result.replace(placeholder, propsMarkdown);
28
- }
29
- return result;
30
- }
31
- /**
32
- * Converts markdown content to LLM-friendly text format
33
- * Keeps markdown syntax as-is since LLMs parse it well
34
- */
35
- export function markdownToLLM(markdown) {
36
- let text = markdown;
37
- // Remove HTML comments
38
- text = text.replace(/<!--[\s\S]*?-->/g, '');
39
- // Remove excessive blank lines (more than 2)
40
- text = text.replace(/\n{3,}/g, '\n\n');
41
- // Trim whitespace
42
- text = text.trim();
43
- return text;
44
- }
45
- /**
46
- * Reads markdown files from the docs directory
47
- */
48
- export async function readMarkdownFile(filePath) {
49
- try {
50
- // In production, you might want to use a different approach
51
- // This is a placeholder - adjust based on your build setup
52
- const response = await fetch(filePath);
53
- if (!response.ok)
54
- throw new Error(`Failed to fetch ${filePath}`);
55
- return await response.text();
56
- }
57
- catch (error) {
58
- console.error(`Error reading markdown file: ${filePath}`, error);
59
- return '';
60
- }
61
- }
62
- /**
63
- * Generate LLM-friendly documentation metadata
64
- */
65
- export function generateLLMHeader(title, description, version = '1.0.0-alpha.30') {
66
- return `# ${title}
67
-
68
- ${description}
69
-
70
- ---
71
- Generated: ${new Date().toISOString()}
72
- Version: ${version}
73
- ---
74
-
75
- `;
76
- }