@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,119 +1,119 @@
1
- @import 'tailwindcss';
2
-
3
- :root {
4
- --background: oklch(1 0 0);
5
- --foreground: oklch(0.145 0 0);
6
- --card: oklch(1 0 0);
7
- --card-foreground: oklch(0.145 0 0);
8
- --popover: oklch(1 0 0);
9
- --popover-foreground: oklch(0.145 0 0);
10
- --primary: oklch(0.205 0 0);
11
- --primary-foreground: oklch(0.985 0 0);
12
- --secondary: oklch(0.97 0 0);
13
- --secondary-foreground: oklch(0.205 0 0);
14
- --muted: oklch(0.97 0 0);
15
- --muted-foreground: oklch(0.556 0 0);
16
- --accent: oklch(0.97 0 0);
17
- --accent-foreground: oklch(0.205 0 0);
18
- --destructive: oklch(0.577 0.245 27.325);
19
- --destructive-foreground: oklch(1 0 0);
20
- --border: oklch(0.922 0 0);
21
- --input: oklch(0.922 0 0);
22
- --ring: oklch(0.708 0 0);
23
- --chart-1: oklch(0.646 0.222 41.116);
24
- --chart-2: oklch(0.6 0.118 184.704);
25
- --chart-3: oklch(0.398 0.07 227.392);
26
- --chart-4: oklch(0.828 0.189 84.429);
27
- --chart-5: oklch(0.769 0.188 70.08);
28
- --radius: 0.625rem;
29
- --sidebar: oklch(0.985 0 0);
30
- --sidebar-foreground: oklch(0.145 0 0);
31
- --sidebar-primary: oklch(0.205 0 0);
32
- --sidebar-primary-foreground: oklch(0.985 0 0);
33
- --sidebar-accent: oklch(0.97 0 0);
34
- --sidebar-accent-foreground: oklch(0.205 0 0);
35
- --sidebar-border: oklch(0.922 0 0);
36
- --sidebar-ring: oklch(0.708 0 0);
37
- --radius: 0.625rem;
38
- --shadow-x: 0px;
39
- --shadow-y: 1px;
40
- --shadow-blur: 2px;
41
- --shadow-spread: 0px;
42
- --shadow-opacity: 0.18;
43
- --shadow-color: hsl(0 0% 0%);
44
- --tracking-normal: 0em;
45
- --spacing: 0.25rem;
46
- }
47
-
48
- .dark {
49
- --background: oklch(0.145 0 0);
50
- --foreground: oklch(0.985 0 0);
51
- --card: oklch(0.205 0 0);
52
- --card-foreground: oklch(0.985 0 0);
53
- --popover: oklch(0.205 0 0);
54
- --popover-foreground: oklch(0.985 0 0);
55
- --primary: oklch(0.922 0 0);
56
- --primary-foreground: oklch(0.205 0 0);
57
- --secondary: oklch(0.269 0 0);
58
- --secondary-foreground: oklch(0.985 0 0);
59
- --muted: oklch(0.269 0 0);
60
- --muted-foreground: oklch(0.708 0 0);
61
- --accent: oklch(0.269 0 0);
62
- --accent-foreground: oklch(0.985 0 0);
63
- --destructive: oklch(0.704 0.191 22.216);
64
- --destructive-foreground: oklch(0.985 0 0);
65
- --border: oklch(1 0 0 / 10%);
66
- --input: oklch(1 0 0 / 15%);
67
- --ring: oklch(0.556 0 0);
68
- --chart-1: oklch(0.488 0.243 264.376);
69
- --chart-2: oklch(0.696 0.17 162.48);
70
- --chart-3: oklch(0.769 0.188 70.08);
71
- --chart-4: oklch(0.627 0.265 303.9);
72
- --chart-5: oklch(0.645 0.246 16.439);
73
- --sidebar: oklch(0.205 0 0);
74
- --sidebar-foreground: oklch(0.985 0 0);
75
- --sidebar-primary: oklch(0.488 0.243 264.376);
76
- --sidebar-primary-foreground: oklch(0.985 0 0);
77
- --sidebar-accent: oklch(0.269 0 0);
78
- --sidebar-accent-foreground: oklch(0.985 0 0);
79
- --sidebar-border: oklch(1 0 0 / 10%);
80
- --sidebar-ring: oklch(0.556 0 0);
81
- --shadow-color: hsl(0, 0%, 100%);
82
- }
83
-
84
- @theme inline {
85
- --color-background: var(--background);
86
- --color-foreground: var(--foreground);
87
- --color-card: var(--card);
88
- --color-card-foreground: var(--card-foreground);
89
- --color-popover: var(--popover);
90
- --color-popover-foreground: var(--popover-foreground);
91
- --color-primary: var(--primary);
92
- --color-primary-foreground: var(--primary-foreground);
93
- --color-secondary: var(--secondary);
94
- --color-secondary-foreground: var(--secondary-foreground);
95
- --color-muted: var(--muted);
96
- --color-muted-foreground: var(--muted-foreground);
97
- --color-accent: var(--accent);
98
- --color-accent-foreground: var(--accent-foreground);
99
- --color-destructive: var(--destructive);
100
- --color-destructive-foreground: var(--destructive-foreground);
101
- --color-border: var(--border);
102
- --color-input: var(--input);
103
- --color-ring: var(--ring);
104
- --color-chart-1: var(--chart-1);
105
- --color-chart-2: var(--chart-2);
106
- --color-chart-3: var(--chart-3);
107
- --color-chart-4: var(--chart-4);
108
- --color-chart-5: var(--chart-5);
109
- --color-sidebar: var(--sidebar);
110
- --color-sidebar-foreground: var(--sidebar-foreground);
111
- --color-sidebar-primary: var(--sidebar-primary);
112
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
113
- --color-sidebar-accent: var(--sidebar-accent);
114
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
115
- --color-sidebar-border: var(--sidebar-border);
116
- --color-sidebar-ring: var(--sidebar-ring);
117
-
118
- --radius-inherit: inherit;
119
- }
1
+ @import 'tailwindcss';
2
+
3
+ :root {
4
+ --background: oklch(1 0 0);
5
+ --foreground: oklch(0.145 0 0);
6
+ --card: oklch(1 0 0);
7
+ --card-foreground: oklch(0.145 0 0);
8
+ --popover: oklch(1 0 0);
9
+ --popover-foreground: oklch(0.145 0 0);
10
+ --primary: oklch(0.205 0 0);
11
+ --primary-foreground: oklch(0.985 0 0);
12
+ --secondary: oklch(0.97 0 0);
13
+ --secondary-foreground: oklch(0.205 0 0);
14
+ --muted: oklch(0.97 0 0);
15
+ --muted-foreground: oklch(0.556 0 0);
16
+ --accent: oklch(0.97 0 0);
17
+ --accent-foreground: oklch(0.205 0 0);
18
+ --destructive: oklch(0.577 0.245 27.325);
19
+ --destructive-foreground: oklch(1 0 0);
20
+ --border: oklch(0.922 0 0);
21
+ --input: oklch(0.99 0 0);
22
+ --ring: oklch(0.708 0 0);
23
+ --chart-1: oklch(0.646 0.222 41.116);
24
+ --chart-2: oklch(0.6 0.118 184.704);
25
+ --chart-3: oklch(0.398 0.07 227.392);
26
+ --chart-4: oklch(0.828 0.189 84.429);
27
+ --chart-5: oklch(0.769 0.188 70.08);
28
+ --radius: 0.625rem;
29
+ --sidebar: oklch(0.985 0 0);
30
+ --sidebar-foreground: oklch(0.145 0 0);
31
+ --sidebar-primary: oklch(0.205 0 0);
32
+ --sidebar-primary-foreground: oklch(0.985 0 0);
33
+ --sidebar-accent: oklch(0.97 0 0);
34
+ --sidebar-accent-foreground: oklch(0.205 0 0);
35
+ --sidebar-border: oklch(0.922 0 0);
36
+ --sidebar-ring: oklch(0.708 0 0);
37
+ --radius: 0.625rem;
38
+ --shadow-x: 0px;
39
+ --shadow-y: 1px;
40
+ --shadow-blur: 2px;
41
+ --shadow-spread: 0px;
42
+ --shadow-opacity: 0.18;
43
+ --shadow-color: hsl(0 0% 0%);
44
+ --tracking-normal: 0em;
45
+ --spacing: 0.25rem;
46
+ }
47
+
48
+ .dark {
49
+ --background: oklch(0.145 0 0);
50
+ --foreground: oklch(0.985 0 0);
51
+ --card: oklch(0.205 0 0);
52
+ --card-foreground: oklch(0.985 0 0);
53
+ --popover: oklch(0.205 0 0);
54
+ --popover-foreground: oklch(0.985 0 0);
55
+ --primary: oklch(0.922 0 0);
56
+ --primary-foreground: oklch(0.205 0 0);
57
+ --secondary: oklch(0.269 0 0);
58
+ --secondary-foreground: oklch(0.985 0 0);
59
+ --muted: oklch(0.269 0 0);
60
+ --muted-foreground: oklch(0.708 0 0);
61
+ --accent: oklch(0.269 0 0);
62
+ --accent-foreground: oklch(0.985 0 0);
63
+ --destructive: oklch(0.704 0.191 22.216);
64
+ --destructive-foreground: oklch(0.985 0 0);
65
+ --border: oklch(1 0 0 / 10%);
66
+ --input: oklch(1 0 0 / 5%);
67
+ --ring: oklch(0.556 0 0);
68
+ --chart-1: oklch(0.488 0.243 264.376);
69
+ --chart-2: oklch(0.696 0.17 162.48);
70
+ --chart-3: oklch(0.769 0.188 70.08);
71
+ --chart-4: oklch(0.627 0.265 303.9);
72
+ --chart-5: oklch(0.645 0.246 16.439);
73
+ --sidebar: oklch(0.205 0 0);
74
+ --sidebar-foreground: oklch(0.985 0 0);
75
+ --sidebar-primary: oklch(0.488 0.243 264.376);
76
+ --sidebar-primary-foreground: oklch(0.985 0 0);
77
+ --sidebar-accent: oklch(0.269 0 0);
78
+ --sidebar-accent-foreground: oklch(0.985 0 0);
79
+ --sidebar-border: oklch(1 0 0 / 10%);
80
+ --sidebar-ring: oklch(0.556 0 0);
81
+ --shadow-color: hsl(0, 0%, 100%);
82
+ }
83
+
84
+ @theme inline {
85
+ --color-background: var(--background);
86
+ --color-foreground: var(--foreground);
87
+ --color-card: var(--card);
88
+ --color-card-foreground: var(--card-foreground);
89
+ --color-popover: var(--popover);
90
+ --color-popover-foreground: var(--popover-foreground);
91
+ --color-primary: var(--primary);
92
+ --color-primary-foreground: var(--primary-foreground);
93
+ --color-secondary: var(--secondary);
94
+ --color-secondary-foreground: var(--secondary-foreground);
95
+ --color-muted: var(--muted);
96
+ --color-muted-foreground: var(--muted-foreground);
97
+ --color-accent: var(--accent);
98
+ --color-accent-foreground: var(--accent-foreground);
99
+ --color-destructive: var(--destructive);
100
+ --color-destructive-foreground: var(--destructive-foreground);
101
+ --color-border: var(--border);
102
+ --color-input: var(--input);
103
+ --color-ring: var(--ring);
104
+ --color-chart-1: var(--chart-1);
105
+ --color-chart-2: var(--chart-2);
106
+ --color-chart-3: var(--chart-3);
107
+ --color-chart-4: var(--chart-4);
108
+ --color-chart-5: var(--chart-5);
109
+ --color-sidebar: var(--sidebar);
110
+ --color-sidebar-foreground: var(--sidebar-foreground);
111
+ --color-sidebar-primary: var(--sidebar-primary);
112
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
113
+ --color-sidebar-accent: var(--sidebar-accent);
114
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
115
+ --color-sidebar-border: var(--sidebar-border);
116
+ --color-sidebar-ring: var(--sidebar-ring);
117
+
118
+ --radius-inherit: inherit;
119
+ }
@@ -4,23 +4,27 @@
4
4
 
5
5
  <script lang="ts">
6
6
  import { cn, defineState, defineProperty } from '../../utils';
7
- import { RootBond, RootBondState, type RootStateProps } from './bond.svelte';
8
- import { Portal, ActivePortal, Portals } from '../portal';
9
- import { Stack } from '../stack';
10
- import { HtmlAtom } from '../atom';
7
+ import { ActivePortal, Portals } from '../portal';
8
+ import { HtmlAtom as Atom } from '../atom';
11
9
  import { HtmlElement, MathmlElement, SvgElement } from '../element';
10
+ import { RootBond, RootBondState, type RootStateProps } from './bond.svelte';
11
+ import L0Portal from './l0-portal.svelte';
12
+ import L1Portal from './l1-portal.svelte';
13
+ import type { RootProps } from './types';
12
14
 
13
15
  let {
14
16
  class: klass = '',
15
- base,
17
+ base = undefined,
16
18
  children = undefined,
17
19
  portals = undefined,
20
+ l0portal = undefined,
21
+ l1portal = undefined,
18
22
  ...restProps
19
- } = $props();
23
+ }: RootProps = $props();
20
24
 
21
- let html: typeof HtmlElement | undefined = HtmlElement;
22
- let svg: typeof SvgElement | undefined = undefined;
23
- let mathml: typeof MathmlElement | undefined = undefined;
25
+ let html: typeof HtmlElement | undefined = $state(HtmlElement);
26
+ let svg: typeof SvgElement | undefined = $state(undefined);
27
+ let mathml: typeof MathmlElement | undefined = $state(undefined);
24
28
 
25
29
  type Renderers = {
26
30
  html?: typeof HtmlElement;
@@ -65,57 +69,35 @@
65
69
  </script>
66
70
 
67
71
  <Portals id="root">
68
- <Stack.Root
72
+ <Atom
69
73
  {@attach (node) => {
70
74
  bond.rootElement = node;
71
75
  }}
72
76
  {base}
73
77
  preset="root"
74
78
  class={cn(
75
- 'atom-root bg-background text-foreground relative flex w-full flex-1 flex-col items-start justify-stretch font-sans',
79
+ 'atom-root bg-background text-foreground relative flex h-full w-full flex-1 flex-col items-start justify-stretch font-sans',
76
80
  '$preset',
77
81
  klass
78
82
  )}
79
83
  {...restProps}
80
84
  >
81
- {#if portals}
82
- {@render portals?.()}
85
+ {#if l0portal}
86
+ {@render l0portal?.()}
83
87
  {:else}
84
- <Portal.Outer
85
- base={Stack.Item}
86
- id="root.l0"
87
- class="pointer-events-none absolute inset-0 z-10 overflow-hidden"
88
- >
89
- <Portal.Inner />
90
- </Portal.Outer>
91
-
92
- <Portal.Outer
93
- base={Stack.Item}
94
- id="root.l1"
95
- class="pointer-events-none absolute inset-0 z-10 overflow-hidden"
96
- >
97
- <Portal.Inner />
98
- </Portal.Outer>
99
-
100
- <Portal.Outer
101
- base={Stack.Item}
102
- id="root.l2"
103
- class="pointer-events-none absolute inset-0 z-10 overflow-hidden"
104
- >
105
- <Portal.Inner />
106
- </Portal.Outer>
88
+ <L0Portal />
89
+ {/if}
107
90
 
108
- <Portal.Outer
109
- base={Stack.Item}
110
- id="root.l3"
111
- class="pointer-events-none absolute inset-0 z-10 overflow-hidden"
112
- >
113
- <Portal.Inner />
114
- </Portal.Outer>
91
+ {#if l1portal}
92
+ {@render l1portal?.()}
93
+ {:else}
94
+ <L1Portal />
115
95
  {/if}
116
96
 
97
+ {@render portals?.()}
98
+
117
99
  <ActivePortal portal="root.l0">
118
100
  {@render children?.()}
119
101
  </ActivePortal>
120
- </Stack.Root>
102
+ </Atom>
121
103
  </Portals>
@@ -1,9 +1,5 @@
1
1
  export type RootPortals = 'root.l0' | 'root.l1' | 'root.l2' | 'root.l3';
2
- declare const Root: import("svelte").Component<{
3
- class?: string;
4
- base: any;
5
- children?: any;
6
- portals?: any;
7
- } & Record<string, any>, {}, "">;
2
+ import type { RootProps } from './types';
3
+ declare const Root: import("svelte").Component<RootProps<"div", import("../atom").ComponentBase | import("../atom").SnippetBase>, {}, "">;
8
4
  type Root = ReturnType<typeof Root>;
9
5
  export default Root;
@@ -0,0 +1,7 @@
1
+ <script>
2
+ import { Portal } from '../portal';
3
+ </script>
4
+
5
+ <Portal.Outer id="root.l3" class="pointer-events-none absolute inset-0 z-14 overflow-hidden">
6
+ <Portal.Inner />
7
+ </Portal.Outer>
@@ -0,0 +1,26 @@
1
+ export default ToastsPortal;
2
+ type ToastsPortal = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string;
8
+ };
9
+ declare const ToastsPortal: $$__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
+ }
@@ -1,8 +1,25 @@
1
1
  import type { HtmlAtomProps, Base } from '../atom';
2
+ import type { Snippet } from 'svelte';
2
3
  /**
3
4
  * Extend this interface to add custom root properties in your application.
4
5
  */
5
6
  export interface RootExtendProps {
6
7
  }
7
8
  export interface RootProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, RootExtendProps {
9
+ /**
10
+ * Main content to render inside the root component.
11
+ */
12
+ children?: Snippet;
13
+ /**
14
+ * Custom portal configuration snippet.
15
+ */
16
+ portals?: Snippet;
17
+ /**
18
+ * Custom L0 portal snippet (z-10 layer for popovers).
19
+ */
20
+ l0portal?: Snippet;
21
+ /**
22
+ * Custom L1 portal snippet (z-12 layer).
23
+ */
24
+ l1portal?: Snippet;
8
25
  }
@@ -5,7 +5,7 @@ declare function $$render<T extends keyof HTMLElementTagNameMap>(): {
5
5
  exports: {
6
6
  getBond: () => ScrollableBond;
7
7
  };
8
- bindings: "scrollX" | "clientWidth" | "scrollWidth" | "scrollY" | "clientHeight" | "scrollHeight";
8
+ bindings: "clientHeight" | "clientWidth" | "scrollHeight" | "scrollWidth" | "scrollX" | "scrollY";
9
9
  slots: {};
10
10
  events: {};
11
11
  };
@@ -13,7 +13,7 @@ declare class __sveltets_Render<T extends keyof HTMLElementTagNameMap> {
13
13
  props(): ReturnType<typeof $$render<T>>['props'];
14
14
  events(): ReturnType<typeof $$render<T>>['events'];
15
15
  slots(): ReturnType<typeof $$render<T>>['slots'];
16
- bindings(): "scrollX" | "clientWidth" | "scrollWidth" | "scrollY" | "clientHeight" | "scrollHeight";
16
+ bindings(): "clientHeight" | "clientWidth" | "scrollHeight" | "scrollWidth" | "scrollX" | "scrollY";
17
17
  exports(): {
18
18
  getBond: () => ScrollableBond;
19
19
  };
@@ -1,116 +1,116 @@
1
- <script module>
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import { Scrollable as Scrollable_ } from '.';
4
- import { animate } from 'motion';
5
- import { ScrollableBond } from './bond.svelte';
6
- import { on } from '../../attachments/event.svelte';
7
-
8
- const { Story } = defineMeta({
9
- title: 'ATOMS/Scrollable'
10
- });
11
- </script>
12
-
13
- <Story name="Scrollable">
14
- {#snippet children({ args })}
15
- <div class="h-full w-full flex-1">
16
- <Scrollable_.Root
17
- class="border-border box-border flex min-h-full w-full rounded-lg border shadow-inner"
18
- open={false}
19
- {@attach (node) => {
20
- const scrollable = ScrollableBond.get();
21
- if (!scrollable) return;
22
-
23
- const c1 = on('pointerenter', () => {
24
- scrollable.state.props.open = true;
25
- })(node);
26
-
27
- const c2 = on('pointerleave', () => {
28
- scrollable.state.props.open = false;
29
- })(node);
30
-
31
- return () => {
32
- c1();
33
- c2();
34
- };
35
- }}
36
- >
37
- {#snippet children({ scrollable })}
38
- <Scrollable_.Container class="max-h-[100svh]">
39
- <Scrollable_.Content>
40
- <div class="mx-auto w-[600px] p-4">
41
- <h3 class="mb-4 text-lg font-semibold">Scrollable Content (New API)</h3>
42
- <div class="grid grid-cols-3 gap-4">
43
- {#each Array(99) as _, i}
44
- <div class="rounded border p-4 shadow">
45
- <h4 class="font-medium">Card {i + 1}</h4>
46
- <p class="mt-2 text-sm">
47
- This is some sample content in card {i + 1}. You can scroll horizontally and
48
- vertically to see more content.
49
- </p>
50
- </div>
51
- {/each}
52
- </div>
53
-
54
- <div class="bg-foreground/10 mt-6 rounded p-4">
55
- <p class="text-sm">
56
- This content area is larger than the container, so you can scroll both
57
- horizontally and vertically using the custom scrollbars or mouse wheel.
58
- </p>
59
- </div>
60
-
61
- <div class="mt-4 flex gap-2">
62
- <button
63
- class="rounded bg-blue-500 px-3 py-2 hover:bg-blue-600"
64
- onclick={() => scrollable.scrollTo(0, 0)}
65
- >
66
- Scroll to Top
67
- </button>
68
- <button
69
- class="rounded bg-green-500 px-3 py-2 hover:bg-green-600"
70
- onclick={() => scrollable.scrollBy(50, 50)}
71
- >
72
- Scroll +50px
73
- </button>
74
- </div>
75
- </div>
76
- </Scrollable_.Content>
77
- </Scrollable_.Container>
78
-
79
- <!-- New unified vertical scrollbar -->
80
- <Scrollable_.Track
81
- orientation="vertical"
82
- class="inset-y-0 right-0 w-[2px] rounded-md"
83
- initial={(node) => {
84
- animate(node, { opacity: 0, right: 0, top: 0, bottom: 0 }, { duration: 0 });
85
- }}
86
- enter={(node) => {
87
- animate(
88
- node,
89
- { opacity: 1, right: 8, top: 8, bottom: 8 },
90
- { duration: 0.3, ease: 'easeOut' }
91
- );
92
- return {
93
- duration: 300
94
- };
95
- }}
96
- exit={(node) => {
97
- animate(
98
- node,
99
- { opacity: 0, right: 0, top: 0, bottom: 0 },
100
- { duration: 0.3, ease: 'easeOut' }
101
- );
102
- return {
103
- duration: 300
104
- };
105
- }}
106
- >
107
- <Scrollable_.Thumb
108
- orientation="vertical"
109
- class="left-[50%] w-2 origin-center translate-x-[-50%] rounded-none transition-colors"
110
- />
111
- </Scrollable_.Track>
112
- {/snippet}
113
- </Scrollable_.Root>
114
- </div>
115
- {/snippet}
116
- </Story>
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import { Scrollable as Scrollable_ } from '.';
4
+ import { animate } from 'motion';
5
+ import { ScrollableBond } from './bond.svelte';
6
+ import { on } from '../../attachments/event.svelte';
7
+
8
+ const { Story } = defineMeta({
9
+ title: 'ATOMS/Scrollable'
10
+ });
11
+ </script>
12
+
13
+ <Story name="Scrollable">
14
+ {#snippet children({ args })}
15
+ <div class="h-full w-full flex-1">
16
+ <Scrollable_.Root
17
+ class="border-border box-border flex min-h-full w-full rounded-lg border shadow-inner"
18
+ open={false}
19
+ {@attach (node) => {
20
+ const scrollable = ScrollableBond.get();
21
+ if (!scrollable) return;
22
+
23
+ const c1 = on('pointerenter', () => {
24
+ scrollable.state.props.open = true;
25
+ })(node);
26
+
27
+ const c2 = on('pointerleave', () => {
28
+ scrollable.state.props.open = false;
29
+ })(node);
30
+
31
+ return () => {
32
+ c1();
33
+ c2();
34
+ };
35
+ }}
36
+ >
37
+ {#snippet children({ scrollable })}
38
+ <Scrollable_.Container class="max-h-[100svh]">
39
+ <Scrollable_.Content>
40
+ <div class="mx-auto w-[600px] p-4">
41
+ <h3 class="mb-4 text-lg font-semibold">Scrollable Content (New API)</h3>
42
+ <div class="grid grid-cols-3 gap-4">
43
+ {#each Array(99) as _, i}
44
+ <div class="rounded border p-4 shadow">
45
+ <h4 class="font-medium">Card {i + 1}</h4>
46
+ <p class="mt-2 text-sm">
47
+ This is some sample content in card {i + 1}. You can scroll horizontally and
48
+ vertically to see more content.
49
+ </p>
50
+ </div>
51
+ {/each}
52
+ </div>
53
+
54
+ <div class="bg-foreground/10 mt-6 rounded p-4">
55
+ <p class="text-sm">
56
+ This content area is larger than the container, so you can scroll both
57
+ horizontally and vertically using the custom scrollbars or mouse wheel.
58
+ </p>
59
+ </div>
60
+
61
+ <div class="mt-4 flex gap-2">
62
+ <button
63
+ class="rounded bg-blue-500 px-3 py-2 hover:bg-blue-600"
64
+ onclick={() => scrollable.scrollTo(0, 0)}
65
+ >
66
+ Scroll to Top
67
+ </button>
68
+ <button
69
+ class="rounded bg-green-500 px-3 py-2 hover:bg-green-600"
70
+ onclick={() => scrollable.scrollBy(50, 50)}
71
+ >
72
+ Scroll +50px
73
+ </button>
74
+ </div>
75
+ </div>
76
+ </Scrollable_.Content>
77
+ </Scrollable_.Container>
78
+
79
+ <!-- New unified vertical scrollbar -->
80
+ <Scrollable_.Track
81
+ orientation="vertical"
82
+ class="inset-y-0 right-0 w-[2px] rounded-md"
83
+ initial={(node) => {
84
+ animate(node, { opacity: 0, right: 0, top: 0, bottom: 0 }, { duration: 0 });
85
+ }}
86
+ enter={(node) => {
87
+ animate(
88
+ node,
89
+ { opacity: 1, right: 8, top: 8, bottom: 8 },
90
+ { duration: 0.3, ease: 'easeOut' }
91
+ );
92
+ return {
93
+ duration: 300
94
+ };
95
+ }}
96
+ exit={(node) => {
97
+ animate(
98
+ node,
99
+ { opacity: 0, right: 0, top: 0, bottom: 0 },
100
+ { duration: 0.3, ease: 'easeOut' }
101
+ );
102
+ return {
103
+ duration: 300
104
+ };
105
+ }}
106
+ >
107
+ <Scrollable_.Thumb
108
+ orientation="vertical"
109
+ class="left-[50%] w-2 origin-center translate-x-[-50%] rounded-none transition-colors"
110
+ />
111
+ </Scrollable_.Track>
112
+ {/snippet}
113
+ </Scrollable_.Root>
114
+ </div>
115
+ {/snippet}
116
+ </Story>