@svelte-atoms/core 1.0.0-alpha.30 → 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 (221) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +176 -739
  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 -61
  6. package/dist/components/accordion/accordion.stories.svelte +70 -145
  7. package/dist/components/accordion/item/accordion-item-body.svelte +6 -4
  8. package/dist/components/accordion/item/accordion-item-header.svelte +2 -1
  9. package/dist/components/accordion/item/accordion-item-indicator.svelte +2 -1
  10. package/dist/components/accordion/item/accordion-item-root.svelte +2 -1
  11. package/dist/components/accordion/item/bond.svelte.d.ts +2 -0
  12. package/dist/components/accordion/item/index.d.ts +3 -0
  13. package/dist/components/accordion/item/index.js +3 -0
  14. package/dist/components/accordion/item/motion.svelte.d.ts +15 -0
  15. package/dist/components/accordion/item/motion.svelte.js +30 -0
  16. package/dist/components/accordion/item/types.d.ts +7 -24
  17. package/dist/components/alert/alert-close-button.svelte +32 -36
  18. package/dist/components/alert/alert-description.svelte +1 -1
  19. package/dist/components/alert/alert-description.svelte.d.ts +3 -6
  20. package/dist/components/alert/alert-root.svelte +3 -38
  21. package/dist/components/alert/alert-root.svelte.d.ts +2 -2
  22. package/dist/components/alert/alert.stories.svelte +400 -400
  23. package/dist/components/alert/bond.svelte.d.ts +0 -13
  24. package/dist/components/alert/bond.svelte.js +0 -32
  25. package/dist/components/alert/types.d.ts +8 -32
  26. package/dist/components/atom/html-atom.svelte +93 -261
  27. package/dist/components/atom/types.d.ts +3 -2
  28. package/dist/components/atom/utils.d.ts +37 -0
  29. package/dist/components/atom/utils.js +208 -0
  30. package/dist/components/avatar/avatar.stories.svelte +22 -22
  31. package/dist/components/badge/badge.stories.svelte +12 -12
  32. package/dist/components/badge/badge.svelte +19 -19
  33. package/dist/components/breadcrumb/breadcrumb-item.svelte +1 -1
  34. package/dist/components/breadcrumb/breadcrumb-separator.svelte +5 -1
  35. package/dist/components/breadcrumb/breadcrumb.stories.svelte +16 -16
  36. package/dist/components/button/button.stories.svelte +27 -27
  37. package/dist/components/calendar/calendar-day.svelte +9 -4
  38. package/dist/components/calendar/calendar.stories.svelte +26 -26
  39. package/dist/components/card/card-body.svelte +39 -39
  40. package/dist/components/card/card-footer.svelte +41 -41
  41. package/dist/components/card/card-root.svelte +91 -91
  42. package/dist/components/card/card.stories.svelte +133 -133
  43. package/dist/components/checkbox/checkbox.stories.svelte +22 -22
  44. package/dist/components/checkbox/checkbox.svelte +159 -155
  45. package/dist/components/collapsible/bond.svelte.js +2 -1
  46. package/dist/components/collapsible/collapsible-body.svelte +3 -2
  47. package/dist/components/collapsible/collapsible.stories.svelte +172 -172
  48. package/dist/components/collapsible/motion.svelte.d.ts +6 -0
  49. package/dist/components/collapsible/motion.svelte.js +15 -0
  50. package/dist/components/combobox/atoms.d.ts +3 -3
  51. package/dist/components/combobox/atoms.js +3 -3
  52. package/dist/components/combobox/bond.svelte.d.ts +6 -6
  53. package/dist/components/combobox/bond.svelte.js +3 -26
  54. package/dist/components/combobox/combobox-control.svelte +52 -52
  55. package/dist/components/combobox/{compobox-item.svelte → combobox-item.svelte} +62 -68
  56. package/dist/components/combobox/combobox-item.svelte.d.ts +12 -0
  57. package/dist/components/combobox/combobox-root.svelte +65 -65
  58. package/dist/components/combobox/combobox.stories.svelte +50 -0
  59. package/dist/components/combobox/combobox.stories.svelte.d.ts +3 -0
  60. package/dist/components/combobox/index.d.ts +1 -0
  61. package/dist/components/container/container.stories.svelte +20 -20
  62. package/dist/components/container/container.svelte.d.ts +1 -1
  63. package/dist/components/datagrid/datagrid.stories.svelte +72 -72
  64. package/dist/components/datagrid/tr/bond.svelte.d.ts +4 -2
  65. package/dist/components/datagrid/tr/bond.svelte.js +9 -7
  66. package/dist/components/datagrid/tr/datagrid-tr.svelte +9 -7
  67. package/dist/components/date-picker/bond.svelte.d.ts +15 -5
  68. package/dist/components/date-picker/bond.svelte.js +5 -11
  69. package/dist/components/date-picker/date-picker-calendar.svelte +2 -2
  70. package/dist/components/date-picker/date-picker-root.svelte +95 -95
  71. package/dist/components/date-picker/date-picker.stories.svelte +35 -35
  72. package/dist/components/dialog/bond.svelte.d.ts +13 -3
  73. package/dist/components/dialog/bond.svelte.js +52 -6
  74. package/dist/components/dialog/dialog-content.svelte +2 -20
  75. package/dist/components/dialog/dialog-root.svelte +3 -22
  76. package/dist/components/dialog/dialog.stories.svelte +64 -64
  77. package/dist/components/dialog/motion.svelte.d.ts +13 -0
  78. package/dist/components/dialog/motion.svelte.js +44 -0
  79. package/dist/components/drawer/attachments.svelte.d.ts +1 -1
  80. package/dist/components/drawer/attachments.svelte.js +1 -3
  81. package/dist/components/drawer/bond.svelte.d.ts +30 -9
  82. package/dist/components/drawer/bond.svelte.js +80 -24
  83. package/dist/components/drawer/drawer-content.svelte +49 -57
  84. package/dist/components/drawer/drawer-root.svelte +5 -4
  85. package/dist/components/drawer/drawer.stories.svelte +141 -212
  86. package/dist/components/drawer/index.d.ts +2 -0
  87. package/dist/components/drawer/index.js +2 -0
  88. package/dist/components/drawer/motion.d.ts +15 -0
  89. package/dist/components/drawer/motion.js +28 -0
  90. package/dist/components/dropdown/atoms.d.ts +1 -1
  91. package/dist/components/dropdown/atoms.js +1 -1
  92. package/dist/components/dropdown/bond.svelte.d.ts +22 -19
  93. package/dist/components/dropdown/bond.svelte.js +29 -53
  94. package/dist/components/dropdown/dropdown-root.svelte +7 -1
  95. package/dist/components/dropdown/dropdown-values.svelte +17 -17
  96. package/dist/components/dropdown/dropdown-values.svelte.d.ts +1 -2
  97. package/dist/components/dropdown/dropdown.stories.svelte +13 -10
  98. package/dist/components/dropdown/index.d.ts +2 -0
  99. package/dist/components/dropdown/index.js +1 -0
  100. package/dist/components/dropdown/item/attachments.svelte.d.ts +2 -2
  101. package/dist/components/dropdown/item/attachments.svelte.js +2 -2
  102. package/dist/components/dropdown/item/controller.svelte.d.ts +34 -0
  103. package/dist/components/dropdown/item/controller.svelte.js +82 -0
  104. package/dist/components/dropdown/item/dropdown-item.svelte +109 -102
  105. package/dist/components/dropdown/item/dropdown-item.svelte.d.ts +13 -28
  106. package/dist/components/dropdown/item/index.d.ts +3 -0
  107. package/dist/components/dropdown/item/index.js +3 -0
  108. package/dist/components/dropdown/item/types.d.ts +29 -0
  109. package/dist/components/dropdown/item/types.js +1 -0
  110. package/dist/components/form/form.stories.svelte +96 -96
  111. package/dist/components/image/image.stories.svelte +20 -20
  112. package/dist/components/input/input.stories.svelte +35 -35
  113. package/dist/components/label/label.stories.svelte +15 -15
  114. package/dist/components/lazy/lazy.stories.svelte +28 -28
  115. package/dist/components/link/link.stories.svelte +15 -15
  116. package/dist/components/list/list-item.svelte +2 -2
  117. package/dist/components/menu/atoms.d.ts +9 -3
  118. package/dist/components/menu/atoms.js +9 -3
  119. package/dist/components/menu/bond.svelte.d.ts +54 -0
  120. package/dist/components/menu/bond.svelte.js +132 -0
  121. package/dist/components/menu/index.d.ts +3 -1
  122. package/dist/components/menu/index.js +2 -1
  123. package/dist/components/menu/item/controller.svelte.d.ts +26 -0
  124. package/dist/components/menu/item/controller.svelte.js +69 -0
  125. package/dist/components/menu/item/index.d.ts +2 -0
  126. package/dist/components/menu/item/index.js +2 -0
  127. package/dist/components/menu/item/menu-item.svelte +103 -0
  128. package/dist/components/menu/item/menu-item.svelte.d.ts +31 -0
  129. package/dist/components/menu/item/types.d.ts +62 -0
  130. package/dist/components/menu/item/types.js +1 -0
  131. package/dist/components/menu/{menu-list.svelte → menu-content.svelte} +40 -40
  132. package/dist/components/menu/{menu-list.svelte.d.ts → menu-content.svelte.d.ts} +3 -3
  133. package/dist/components/menu/menu-root.svelte +15 -0
  134. package/dist/components/menu/menu-root.svelte.d.ts +8 -0
  135. package/dist/components/menu/menu.stories.svelte +5 -5
  136. package/dist/components/menu/types.d.ts +0 -7
  137. package/dist/components/popover/bond.svelte.d.ts +18 -8
  138. package/dist/components/popover/bond.svelte.js +76 -40
  139. package/dist/components/popover/motion.d.ts +6 -0
  140. package/dist/components/popover/motion.js +56 -0
  141. package/dist/components/popover/popover-arrow.svelte +111 -111
  142. package/dist/components/popover/popover-content.svelte +137 -175
  143. package/dist/components/popover/popover-indicator.svelte +44 -44
  144. package/dist/components/popover/popover-root.svelte +48 -48
  145. package/dist/components/popover/popover.stories.svelte +37 -49
  146. package/dist/components/popover/types.d.ts +9 -7
  147. package/dist/components/portal/active-portal.svelte +12 -5
  148. package/dist/components/portal/active-portal.svelte.d.ts +2 -9
  149. package/dist/components/portal/portal-root.svelte +1 -8
  150. package/dist/components/portal/portal-root.svelte.d.ts +4 -6
  151. package/dist/components/portal/teleport.svelte +1 -2
  152. package/dist/components/portal/teleport.svelte.d.ts +3 -4
  153. package/dist/components/qr-code/qr-code.stories.svelte +18 -18
  154. package/dist/components/radio/radio-group.stories.svelte +41 -41
  155. package/dist/components/radio/radio.stories.svelte +17 -17
  156. package/dist/components/radio/radio.svelte +109 -109
  157. package/dist/components/radio/types.d.ts +98 -0
  158. package/dist/components/radio/types.js +2 -0
  159. package/dist/components/root/index.d.ts +1 -0
  160. package/dist/components/root/index.js +1 -0
  161. package/dist/components/root/l0-portal.svelte +8 -0
  162. package/dist/components/{radio/types.svelte.d.ts → root/l0-portal.svelte.d.ts} +3 -3
  163. package/dist/components/root/l1-portal.svelte +7 -0
  164. package/dist/components/root/l1-portal.svelte.d.ts +26 -0
  165. package/dist/components/root/root.css +119 -119
  166. package/dist/components/root/root.svelte +26 -44
  167. package/dist/components/root/root.svelte.d.ts +2 -6
  168. package/dist/components/root/toasts-portal.svelte +7 -0
  169. package/dist/components/root/toasts-portal.svelte.d.ts +26 -0
  170. package/dist/components/root/types.d.ts +17 -0
  171. package/dist/components/scrollable/scrollable-root.svelte.d.ts +2 -2
  172. package/dist/components/scrollable/scrollable.stories.svelte +116 -116
  173. package/dist/components/sidebar/index.d.ts +2 -0
  174. package/dist/components/sidebar/index.js +2 -0
  175. package/dist/components/sidebar/motion.svelte.d.ts +11 -0
  176. package/dist/components/sidebar/motion.svelte.js +16 -0
  177. package/dist/components/sidebar/sidebar-content.svelte +40 -50
  178. package/dist/components/sidebar/sidebar-root.svelte +39 -39
  179. package/dist/components/sidebar/sidebar.stories.svelte +43 -43
  180. package/dist/components/sidebar/types.d.ts +2 -12
  181. package/dist/components/tabs/tabs.stories.svelte +56 -56
  182. package/dist/components/textarea/atoms.d.ts +1 -0
  183. package/dist/components/textarea/atoms.js +1 -0
  184. package/dist/components/textarea/textarea-input.svelte +4 -1
  185. package/dist/components/textarea/textarea-root.svelte +2 -2
  186. package/dist/components/textarea/textarea-root.svelte.d.ts +2 -0
  187. package/dist/components/tooltip/tooltip-trigger.svelte +39 -39
  188. package/dist/components/tooltip/tooltip-trigger.svelte.d.ts +1 -0
  189. package/dist/components/tooltip/tooltip.stories.svelte +32 -32
  190. package/dist/components/tree/index.d.ts +1 -0
  191. package/dist/components/tree/index.js +1 -0
  192. package/dist/components/tree/motion.svelte.d.ts +6 -0
  193. package/dist/components/tree/motion.svelte.js +14 -0
  194. package/dist/components/tree/tree-body.svelte +4 -3
  195. package/dist/components/tree/tree.stories.svelte +142 -142
  196. package/dist/context/preset.svelte.d.ts +3 -1
  197. package/dist/icons/icon-copy.svelte +6 -0
  198. package/dist/icons/icon-copy.svelte.d.ts +26 -0
  199. package/dist/utils/dom.svelte.d.ts +2 -0
  200. package/dist/utils/dom.svelte.js +21 -0
  201. package/dist/utils/function.d.ts +1 -1
  202. package/dist/utils/promise.svelte.d.ts +5 -0
  203. package/dist/utils/promise.svelte.js +20 -0
  204. package/package.json +4 -3
  205. package/dist/components/combobox/compobox-item.svelte.d.ts +0 -34
  206. package/dist/components/combobox/compobox.stories.svelte +0 -51
  207. package/dist/components/combobox/compobox.stories.svelte.d.ts +0 -3
  208. package/dist/components/dropdown/item/bond.svelte.d.ts +0 -42
  209. package/dist/components/dropdown/item/bond.svelte.js +0 -99
  210. package/dist/components/menu/menu-item.svelte +0 -51
  211. package/dist/components/menu/menu-item.svelte.d.ts +0 -36
  212. package/dist/components/radio/types.svelte +0 -0
  213. package/llm/composition.md +0 -395
  214. package/llm/crafting.md +0 -838
  215. package/llm/motion.md +0 -970
  216. package/llm/philosophy.md +0 -23
  217. package/llm/preset-variant-integration.md +0 -516
  218. package/llm/preset.md +0 -383
  219. package/llm/styling.md +0 -216
  220. package/llm/usage.md +0 -46
  221. package/llm/variants.md +0 -1259
@@ -1,13 +1,6 @@
1
- export default ActivePortal;
2
- type ActivePortal = {
3
- $on?(type: string, callback: (e: any) => void): () => void;
4
- $set?(props: Partial<$$ComponentProps>): void;
5
- };
6
1
  declare const ActivePortal: import("svelte").Component<{
7
2
  portal: any;
8
3
  children?: any;
9
4
  }, {}, "">;
10
- type $$ComponentProps = {
11
- portal: any;
12
- children?: any;
13
- };
5
+ type ActivePortal = ReturnType<typeof ActivePortal>;
6
+ export default ActivePortal;
@@ -3,18 +3,11 @@
3
3
  </script>
4
4
 
5
5
  <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
6
- import type { Snippet } from 'svelte';
7
6
  import type { HTMLAttributes } from 'svelte/elements';
8
7
  import type { PortalOuterProps } from './types';
9
8
  import { PortalsBond, PortalBond, PortalState, type PortalStateProps } from '.';
10
9
  import { RootBond } from '../root';
11
- import type { RootPortals } from '../root/root.svelte';
12
- import {
13
- HtmlAtom,
14
- type ElementType,
15
- type HtmlAtomProps,
16
- type Base
17
- } from '../atom';
10
+ import { HtmlAtom, type ElementType, type Base } from '../atom';
18
11
  import { defineProperty, defineState } from '../../utils';
19
12
 
20
13
  type Element = ElementType<E>;
@@ -1,13 +1,11 @@
1
1
  export type { PortalOuterProps } from './types';
2
- import type { Snippet } from 'svelte';
3
2
  import type { HTMLAttributes } from 'svelte/elements';
4
3
  import { PortalBond } from '.';
5
- import type { RootPortals } from '../root/root.svelte';
6
- import { type ElementType, type HtmlAtomProps, type Base } from '../atom';
4
+ import { type ElementType, type Base } from '../atom';
7
5
  declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
8
- props: HtmlAtomProps<E, B> & import("./types").PortalOuterExtendProps & {
9
- id: RootPortals | (string & {});
10
- children?: Snippet;
6
+ props: import("../atom").HtmlAtomProps<E, B> & import("./types").PortalOuterExtendProps & {
7
+ id: import("../root/root.svelte").RootPortals | (string & {});
8
+ children?: import("svelte").Snippet;
11
9
  } & HTMLAttributes<ElementType<E>>;
12
10
  exports: {
13
11
  getBond: () => PortalBond;
@@ -5,12 +5,11 @@
5
5
  <script lang="ts" generics="E extends HtmlElementTagName = 'div', B extends Base = Base">
6
6
  import type { HTMLAttributes } from 'svelte/elements';
7
7
  import type { TeleportProps } from './types';
8
- import { HtmlAtom, type HtmlAtomProps, type Base } from '../atom';
8
+ import { HtmlAtom, type Base } from '../atom';
9
9
  import type { HtmlElementTagName, HtmlElementType } from '../element';
10
10
  import { PortalsBond } from './portals';
11
11
  import { RootBond } from '../root/bond.svelte';
12
12
  import { port } from './utils';
13
- import type { PortalBond } from '.';
14
13
 
15
14
  type Element = HtmlElementType<E>;
16
15
 
@@ -1,11 +1,10 @@
1
1
  export type { TeleportProps } from './types';
2
2
  import type { HTMLAttributes } from 'svelte/elements';
3
- import { type HtmlAtomProps, type Base } from '../atom';
3
+ import { type Base } from '../atom';
4
4
  import type { HtmlElementTagName, HtmlElementType } from '../element';
5
- import type { PortalBond } from '.';
6
5
  declare function $$render<E extends HtmlElementTagName = 'div', B extends Base = Base>(): {
7
- props: HtmlAtomProps<E, B> & import("./types").TeleportExtendProps & {
8
- portal?: string | PortalBond;
6
+ props: import("../atom").HtmlAtomProps<E, B> & import("./types").TeleportExtendProps & {
7
+ portal?: string | import("./bond.svelte").PortalBond;
9
8
  } & HTMLAttributes<HtmlElementType<E>>;
10
9
  exports: {};
11
10
  bindings: "";
@@ -1,18 +1,18 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import QrCodeComponent from './qr-code.svelte';
4
-
5
- const { Story } = defineMeta({
6
- title: 'Atoms/QR Code'
7
- });
8
- </script>
9
-
10
- <script>
11
- </script>
12
-
13
- <Story name="QR Code">
14
- <QrCodeComponent
15
- class="text-primary-foreground bg-primary size-64 rounded-2xl p-1"
16
- value="Hello World 123"
17
- />
18
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import QrCodeComponent from './qr-code.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Atoms/QR Code'
7
+ });
8
+ </script>
9
+
10
+ <script>
11
+ </script>
12
+
13
+ <Story name="QR Code">
14
+ <QrCodeComponent
15
+ class="text-primary-foreground bg-primary size-64 rounded-2xl p-1"
16
+ value="Hello World 123"
17
+ />
18
+ </Story>
@@ -1,41 +1,41 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import { default as RadioComponent } from './radio.svelte';
4
- import { default as RadioGroupComponent } from './radio-group.svelte';
5
-
6
- const { Story } = defineMeta({
7
- title: 'ATOMS/Radio'
8
- });
9
- </script>
10
-
11
- <script>
12
- let value = $state('t1');
13
- </script>
14
-
15
- <Story name="Group">
16
- <RadioGroupComponent class="gap-4" name="choice" bind:value>
17
- <label class="flex items-center gap-2">
18
- <RadioComponent class="size-8" value="t1" />
19
- <div>Test 1</div>
20
- </label>
21
-
22
- <label class="flex items-center gap-2">
23
- <RadioComponent class="size-8" value="t2" />
24
- <div>Test 2</div>
25
- </label>
26
-
27
- <label class="flex items-center gap-2">
28
- <RadioComponent class="size-8" value="t3" />
29
- <div>Test 3</div>
30
- </label>
31
-
32
- <label class="flex items-center gap-2">
33
- <RadioComponent class="size-8" value="t4" />
34
- <div>Test 4</div>
35
- </label>
36
- </RadioGroupComponent>
37
-
38
- <div class="mt-8">
39
- Selected value: <strong>{value}</strong>
40
- </div>
41
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { default as RadioComponent } from './radio.svelte';
4
+ import { default as RadioGroupComponent } from './radio-group.svelte';
5
+
6
+ const { Story } = defineMeta({
7
+ title: 'ATOMS/Radio'
8
+ });
9
+ </script>
10
+
11
+ <script>
12
+ let value = $state('t1');
13
+ </script>
14
+
15
+ <Story name="Group">
16
+ <RadioGroupComponent class="gap-4" name="choice" bind:value>
17
+ <label class="flex items-center gap-2">
18
+ <RadioComponent class="size-8" value="t1" />
19
+ <div>Test 1</div>
20
+ </label>
21
+
22
+ <label class="flex items-center gap-2">
23
+ <RadioComponent class="size-8" value="t2" />
24
+ <div>Test 2</div>
25
+ </label>
26
+
27
+ <label class="flex items-center gap-2">
28
+ <RadioComponent class="size-8" value="t3" />
29
+ <div>Test 3</div>
30
+ </label>
31
+
32
+ <label class="flex items-center gap-2">
33
+ <RadioComponent class="size-8" value="t4" />
34
+ <div>Test 4</div>
35
+ </label>
36
+ </RadioGroupComponent>
37
+
38
+ <div class="mt-8">
39
+ Selected value: <strong>{value}</strong>
40
+ </div>
41
+ </Story>
@@ -1,17 +1,17 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import { default as RadioModule } from './radio.svelte';
4
-
5
- const { Story } = defineMeta({
6
- title: 'ATOMS/Radio'
7
- });
8
- </script>
9
-
10
- <script>
11
- let value = $state(undefined);
12
- let checked = $state(false);
13
- </script>
14
-
15
- <Story name="Radio">
16
- <RadioModule class="size-5" />
17
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { default as RadioModule } from './radio.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'ATOMS/Radio'
7
+ });
8
+ </script>
9
+
10
+ <script>
11
+ let value = $state(undefined);
12
+ let checked = $state(false);
13
+ </script>
14
+
15
+ <Story name="Radio">
16
+ <RadioModule class="size-5" />
17
+ </Story>
@@ -1,109 +1,109 @@
1
- <script lang="ts">
2
- import { getRadioGroupContext } from './context';
3
- import { Stack } from '../stack';
4
- import { toClassValue } from '../../utils';
5
- import { HtmlAtom, type Base } from '../atom';
6
-
7
- const radioGroupContext = getRadioGroupContext();
8
-
9
- let {
10
- class: klass = '',
11
- value = $bindable(undefined),
12
- group = $bindable(),
13
- id = undefined,
14
- name = undefined,
15
- disabled = false,
16
- required = false,
17
- readonly = false,
18
- onchange = undefined,
19
- oninput = undefined,
20
- checkedContent = undefined,
21
- ...restProps
22
- } = $props();
23
-
24
- const _disabled = $derived(radioGroupContext?.disabled);
25
- const _required = $derived(radioGroupContext?.required);
26
- const _readonly = $derived(radioGroupContext?.readonly);
27
- const _name = $derived(radioGroupContext?.name);
28
-
29
- const proxy = {
30
- get current() {
31
- return radioGroupContext?.value ?? group;
32
- },
33
- set current(v) {
34
- group = v;
35
- if (radioGroupContext) {
36
- radioGroupContext.value = v;
37
- }
38
- }
39
- };
40
-
41
- const isDisabled = $derived(_disabled || disabled);
42
- const isRequired = $derived(_required || required);
43
- const isReadonly = $derived(_readonly || readonly);
44
- const isChecked = $derived(proxy.current === value);
45
-
46
- function handleChange(ev: Event) {
47
- const checked = (ev.currentTarget as HTMLInputElement)?.checked ?? false;
48
-
49
- onchange?.(ev, {
50
- checked,
51
- value: checked,
52
- type: 'boolean'
53
- });
54
- }
55
-
56
- function handleInput(ev: Event) {
57
- const currentTarget = ev.currentTarget as HTMLInputElement;
58
- const _checked = currentTarget?.checked ?? false;
59
-
60
- oninput?.(ev, {
61
- checked: _checked,
62
- value: _checked,
63
- type: 'boolean'
64
- });
65
-
66
- if (ev.defaultPrevented) {
67
- return;
68
- }
69
- }
70
- </script>
71
-
72
- <Stack.Root
73
- preset="radio"
74
- class={[
75
- 'text-foreground bg-input box-border inline-flex aspect-square size-4 max-h-fit cursor-pointer place-items-center rounded-full border p-0',
76
- isDisabled && 'pointer-events-none opacity-50',
77
- '$preset',
78
- toClassValue.apply(null, [klass, {}])
79
- ]}
80
- as="label"
81
- {...restProps}
82
- >
83
- <Stack.Item class="pointer-events-none flex size-full">
84
- <input
85
- bind:group={proxy.current}
86
- {id}
87
- {value}
88
- class="pointer-events-auto size-0 opacity-0"
89
- type="radio"
90
- name={_name ?? name}
91
- disabled={isDisabled}
92
- required={isRequired}
93
- readonly={isReadonly}
94
- onchange={handleChange}
95
- oninput={handleInput}
96
- />
97
- </Stack.Item>
98
-
99
- {#if isChecked}
100
- {#if checkedContent}
101
- <HtmlAtom
102
- class="rounded-inherit pointer-events-none size-full scale-50 bg-current"
103
- base={checkedContent}
104
- />
105
- {:else}
106
- <Stack.Item class="rounded-inherit pointer-events-none size-full scale-50 bg-current" />
107
- {/if}
108
- {/if}
109
- </Stack.Root>
1
+ <script lang="ts">
2
+ import { getRadioGroupContext } from './context';
3
+ import { Stack } from '../stack';
4
+ import { toClassValue } from '../../utils';
5
+ import { HtmlAtom, type Base } from '../atom';
6
+
7
+ const radioGroupContext = getRadioGroupContext();
8
+
9
+ let {
10
+ class: klass = '',
11
+ value = $bindable(undefined),
12
+ group = $bindable(),
13
+ id = undefined,
14
+ name = undefined,
15
+ disabled = false,
16
+ required = false,
17
+ readonly = false,
18
+ onchange = undefined,
19
+ oninput = undefined,
20
+ checkedContent = undefined,
21
+ ...restProps
22
+ } = $props();
23
+
24
+ const _disabled = $derived(radioGroupContext?.disabled);
25
+ const _required = $derived(radioGroupContext?.required);
26
+ const _readonly = $derived(radioGroupContext?.readonly);
27
+ const _name = $derived(radioGroupContext?.name);
28
+
29
+ const proxy = {
30
+ get current() {
31
+ return radioGroupContext?.value ?? group;
32
+ },
33
+ set current(v) {
34
+ group = v;
35
+ if (radioGroupContext) {
36
+ radioGroupContext.value = v;
37
+ }
38
+ }
39
+ };
40
+
41
+ const isDisabled = $derived(_disabled || disabled);
42
+ const isRequired = $derived(_required || required);
43
+ const isReadonly = $derived(_readonly || readonly);
44
+ const isChecked = $derived(proxy.current === value);
45
+
46
+ function handleChange(ev: Event) {
47
+ const checked = (ev.currentTarget as HTMLInputElement)?.checked ?? false;
48
+
49
+ onchange?.(ev, {
50
+ checked,
51
+ value: checked,
52
+ type: 'boolean'
53
+ });
54
+ }
55
+
56
+ function handleInput(ev: Event) {
57
+ const currentTarget = ev.currentTarget as HTMLInputElement;
58
+ const _checked = currentTarget?.checked ?? false;
59
+
60
+ oninput?.(ev, {
61
+ checked: _checked,
62
+ value: _checked,
63
+ type: 'boolean'
64
+ });
65
+
66
+ if (ev.defaultPrevented) {
67
+ return;
68
+ }
69
+ }
70
+ </script>
71
+
72
+ <Stack.Root
73
+ preset="radio"
74
+ class={[
75
+ 'text-foreground bg-input box-border inline-flex aspect-square size-4 max-h-fit max-w-fit cursor-pointer place-items-center rounded-full border p-0',
76
+ isDisabled && 'pointer-events-none opacity-50',
77
+ '$preset',
78
+ toClassValue.apply(null, [klass, {}])
79
+ ]}
80
+ as="label"
81
+ {...restProps}
82
+ >
83
+ <Stack.Item class="pointer-events-none flex size-full">
84
+ <input
85
+ bind:group={proxy.current}
86
+ {id}
87
+ {value}
88
+ class="pointer-events-auto size-0 opacity-0"
89
+ type="radio"
90
+ name={_name ?? name}
91
+ disabled={isDisabled}
92
+ required={isRequired}
93
+ readonly={isReadonly}
94
+ onchange={handleChange}
95
+ oninput={handleInput}
96
+ />
97
+ </Stack.Item>
98
+
99
+ {#if isChecked}
100
+ {#if checkedContent}
101
+ <HtmlAtom
102
+ class="rounded-inherit pointer-events-none size-full scale-50 bg-current"
103
+ base={checkedContent}
104
+ />
105
+ {:else}
106
+ <Stack.Item class="rounded-inherit pointer-events-none size-full scale-50 bg-current" />
107
+ {/if}
108
+ {/if}
109
+ </Stack.Root>
@@ -0,0 +1,98 @@
1
+ import { type Component, type Snippet } from 'svelte';
2
+ import { type HtmlAtomProps } from '../atom';
3
+ /**
4
+ * Extend this interface to add custom radio properties in your application.
5
+ */
6
+ export interface RadioExtendProps {
7
+ }
8
+ /**
9
+ * Extend this interface to add custom radio group properties in your application.
10
+ */
11
+ export interface RadioGroupExtendProps {
12
+ }
13
+ export interface RadioProps<T = string> extends HtmlAtomProps<'label'>, RadioExtendProps {
14
+ /**
15
+ * The value of the radio button
16
+ */
17
+ value?: T;
18
+ /**
19
+ * The currently selected value (for standalone radios)
20
+ */
21
+ group?: T;
22
+ /**
23
+ * The id attribute of the radio input
24
+ */
25
+ id?: string;
26
+ /**
27
+ * The name attribute of the radio input
28
+ */
29
+ name?: string;
30
+ /**
31
+ * Whether the radio button is disabled
32
+ */
33
+ disabled?: boolean;
34
+ /**
35
+ * Whether the radio button is required
36
+ */
37
+ required?: boolean;
38
+ /**
39
+ * Whether the radio button is readonly
40
+ */
41
+ readonly?: boolean;
42
+ /**
43
+ * Custom content to display when the radio is checked
44
+ */
45
+ checkedContent?: Component | Snippet;
46
+ /**
47
+ * Child content (label text)
48
+ */
49
+ children?: Snippet<[]>;
50
+ /**
51
+ * Change event handler
52
+ */
53
+ onchange?: (ev: Event, options?: {
54
+ checked: boolean;
55
+ value: boolean;
56
+ type: 'boolean';
57
+ }) => void;
58
+ /**
59
+ * Input event handler
60
+ */
61
+ oninput?: (ev: Event, options?: {
62
+ checked: boolean;
63
+ value: boolean;
64
+ type: 'boolean';
65
+ }) => void;
66
+ }
67
+ export interface RadioGroupProps<T = string> extends HtmlAtomProps<'div'>, RadioGroupExtendProps {
68
+ /**
69
+ * The currently selected value
70
+ */
71
+ value?: T;
72
+ /**
73
+ * Whether all radio buttons in the group are disabled
74
+ */
75
+ disabled?: boolean;
76
+ /**
77
+ * Whether all radio buttons in the group are required
78
+ */
79
+ required?: boolean;
80
+ /**
81
+ * Whether all radio buttons in the group are readonly
82
+ */
83
+ readonly?: boolean;
84
+ /**
85
+ * The name attribute shared by all radio buttons in the group
86
+ */
87
+ name?: string;
88
+ /**
89
+ * Child content (radio buttons)
90
+ */
91
+ children?: Snippet<[]>;
92
+ /**
93
+ * Input event handler triggered when the selected value changes
94
+ */
95
+ oninput?: (ev: CustomEvent, options?: {
96
+ value: T;
97
+ }) => void;
98
+ }
@@ -0,0 +1,2 @@
1
+ import {} from 'svelte';
2
+ import {} from '../atom';
@@ -1,2 +1,3 @@
1
1
  export { default as Root } from './root.svelte';
2
2
  export { RootBondState, type RootStateProps, RootBond } from './bond.svelte';
3
+ export * from './types';
@@ -1,2 +1,3 @@
1
1
  export { default as Root } from './root.svelte';
2
2
  export { RootBondState, RootBond } from './bond.svelte';
3
+ export * from './types';
@@ -0,0 +1,8 @@
1
+ <script>
2
+ import { Portal } from "../portal";
3
+
4
+ </script>
5
+
6
+ <Portal.Outer id="root.l0" class="pointer-events-none absolute inset-0 z-10 overflow-hidden">
7
+ <Portal.Inner />
8
+ </Portal.Outer>
@@ -1,12 +1,12 @@
1
- export default Types;
2
- type Types = SvelteComponent<{
1
+ export default L0Portal;
2
+ type L0Portal = SvelteComponent<{
3
3
  [x: string]: never;
4
4
  }, {
5
5
  [evt: string]: CustomEvent<any>;
6
6
  }, {}> & {
7
7
  $$bindings?: string;
8
8
  };
9
- declare const Types: $$__sveltets_2_IsomorphicComponent<{
9
+ declare const L0Portal: $$__sveltets_2_IsomorphicComponent<{
10
10
  [x: string]: never;
11
11
  }, {
12
12
  [evt: string]: CustomEvent<any>;
@@ -0,0 +1,7 @@
1
+ <script>
2
+ import { Portal } from '../portal';
3
+ </script>
4
+
5
+ <Portal.Outer id="root.l1" class="pointer-events-none absolute inset-0 z-12 overflow-hidden">
6
+ <Portal.Inner />
7
+ </Portal.Outer>
@@ -0,0 +1,26 @@
1
+ export default L1Portal;
2
+ type L1Portal = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string;
8
+ };
9
+ declare const L1Portal: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }