@svelte-atoms/core 1.0.0-alpha.41 → 1.0.0-alpha.44

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 (628) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +67 -197
  3. package/dist/attachments/clickout.svelte.d.ts +4 -1
  4. package/dist/attachments/clickout.svelte.js +2 -1
  5. package/dist/components/accordion/accordion-root.svelte +61 -66
  6. package/dist/components/accordion/accordion-root.svelte.d.ts +2 -2
  7. package/dist/components/accordion/bond.svelte.d.ts +11 -10
  8. package/dist/components/accordion/bond.svelte.js +26 -16
  9. package/dist/components/accordion/item/accordion-item-body.svelte +3 -1
  10. package/dist/components/accordion/item/accordion-item-header.svelte +1 -1
  11. package/dist/components/accordion/item/accordion-item-indicator.svelte +1 -1
  12. package/dist/components/accordion/item/accordion-item-root.svelte +3 -2
  13. package/dist/components/accordion/item/bond.svelte.d.ts +32 -18
  14. package/dist/components/accordion/item/bond.svelte.js +88 -64
  15. package/dist/components/accordion/item/types.d.ts +4 -24
  16. package/dist/components/accordion/types.d.ts +5 -9
  17. package/dist/components/alert/alert-root.svelte +68 -68
  18. package/dist/components/alert/types.d.ts +12 -46
  19. package/dist/components/atom/html-atom.svelte +84 -95
  20. package/dist/components/atom/html-atom.svelte.d.ts +1 -2
  21. package/dist/components/atom/index.d.ts +1 -0
  22. package/dist/components/atom/index.js +1 -0
  23. package/dist/components/atom/types.d.ts +52 -10
  24. package/dist/components/atom/types.js +1 -1
  25. package/dist/components/atom/utils.d.ts +10 -3
  26. package/dist/components/atom/utils.js +112 -45
  27. package/dist/components/avatar/types.d.ts +1 -6
  28. package/dist/components/badge/index.d.ts +1 -0
  29. package/dist/components/badge/types.d.ts +4 -7
  30. package/dist/components/button/button.svelte +31 -31
  31. package/dist/components/button/types.d.ts +9 -6
  32. package/dist/components/calendar/calendar-body.svelte +0 -1
  33. package/dist/components/calendar/calendar-day.svelte +99 -99
  34. package/dist/components/calendar/calendar-header.svelte +1 -1
  35. package/dist/components/calendar/calendar-root.svelte +206 -206
  36. package/dist/components/calendar/calendar-root.svelte.d.ts +1 -1
  37. package/dist/components/calendar/calendar-week-day.svelte +33 -33
  38. package/dist/components/calendar/types.d.ts +7 -10
  39. package/dist/components/card/card-root.svelte +92 -92
  40. package/dist/components/card/types.d.ts +12 -51
  41. package/dist/components/checkbox/checkbox.svelte +65 -55
  42. package/dist/components/checkbox/checkbox.svelte.d.ts +1 -3
  43. package/dist/components/checkbox/index.d.ts +2 -0
  44. package/dist/components/checkbox/index.js +1 -0
  45. package/dist/components/checkbox/motion.d.ts +17 -0
  46. package/dist/components/checkbox/motion.js +34 -0
  47. package/dist/components/checkbox/types.d.ts +14 -7
  48. package/dist/components/chip/chip-close-button.svelte +33 -0
  49. package/dist/components/chip/chip-close-button.svelte.d.ts +4 -0
  50. package/dist/components/chip/chip.svelte +34 -41
  51. package/dist/components/chip/chip.svelte.d.ts +1 -3
  52. package/dist/components/chip/index.d.ts +2 -0
  53. package/dist/components/chip/index.js +2 -0
  54. package/dist/components/chip/types.d.ts +15 -8
  55. package/dist/components/collapsible/bond.svelte.d.ts +34 -24
  56. package/dist/components/collapsible/bond.svelte.js +73 -60
  57. package/dist/components/collapsible/collapsible-body.svelte +1 -1
  58. package/dist/components/collapsible/collapsible-header.svelte +1 -1
  59. package/dist/components/collapsible/collapsible-indicator.svelte +1 -1
  60. package/dist/components/collapsible/collapsible-root.svelte +67 -67
  61. package/dist/components/collapsible/types.d.ts +10 -22
  62. package/dist/components/combobox/bond.svelte.d.ts +13 -8
  63. package/dist/components/combobox/bond.svelte.js +30 -20
  64. package/dist/components/combobox/combobox-control.svelte +66 -66
  65. package/dist/components/combobox/combobox-item.svelte +62 -62
  66. package/dist/components/combobox/combobox-root.svelte +65 -65
  67. package/dist/components/combobox/combobox-root.svelte.d.ts +2 -2
  68. package/dist/components/combobox/combobox-selections.svelte +17 -17
  69. package/dist/components/combobox/combobox-trigger.svelte +34 -34
  70. package/dist/components/combobox/types.d.ts +6 -10
  71. package/dist/components/container/index.d.ts +1 -0
  72. package/dist/components/container/types.d.ts +6 -12
  73. package/dist/components/context-menu/atoms.d.ts +4 -0
  74. package/dist/components/context-menu/atoms.js +4 -0
  75. package/dist/components/context-menu/context-menu-content.svelte +52 -0
  76. package/dist/components/context-menu/context-menu-content.svelte.d.ts +27 -0
  77. package/dist/components/context-menu/context-menu-root.svelte +8 -0
  78. package/dist/components/context-menu/context-menu-root.svelte.d.ts +4 -0
  79. package/dist/components/context-menu/context-menu-trigger.svelte +59 -0
  80. package/dist/components/context-menu/context-menu-trigger.svelte.d.ts +27 -0
  81. package/dist/components/context-menu/index.d.ts +2 -0
  82. package/dist/components/context-menu/index.js +2 -0
  83. package/dist/components/{contextmenu → context-menu}/types.d.ts +1 -6
  84. package/dist/components/datagrid/atoms.d.ts +11 -5
  85. package/dist/components/datagrid/atoms.js +11 -5
  86. package/dist/components/datagrid/bond.svelte.d.ts +29 -14
  87. package/dist/components/datagrid/bond.svelte.js +45 -33
  88. package/dist/components/datagrid/cell/bond.svelte.d.ts +29 -0
  89. package/dist/components/datagrid/cell/bond.svelte.js +42 -0
  90. package/dist/components/datagrid/cell/datagrid-cell.svelte +49 -0
  91. package/dist/components/datagrid/cell/datagrid-cell.svelte.d.ts +26 -0
  92. package/dist/components/datagrid/cell/index.d.ts +4 -0
  93. package/dist/components/datagrid/cell/index.js +4 -0
  94. package/dist/components/datagrid/col/index.d.ts +4 -0
  95. package/dist/components/datagrid/col/index.js +4 -0
  96. package/dist/components/datagrid/column/bond.svelte.d.ts +45 -0
  97. package/dist/components/datagrid/column/bond.svelte.js +76 -0
  98. package/dist/components/datagrid/{th/datagrid-th-sort-icon.svelte → column/datagrid-column-sort-icon.svelte} +3 -3
  99. package/dist/components/datagrid/{th/datagrid-th-sort-icon.svelte.d.ts → column/datagrid-column-sort-icon.svelte.d.ts} +3 -3
  100. package/dist/components/datagrid/{th/datagrid-th.svelte → column/datagrid-column.svelte} +27 -36
  101. package/dist/components/datagrid/column/datagrid-column.svelte.d.ts +26 -0
  102. package/dist/components/datagrid/column/index.d.ts +4 -0
  103. package/dist/components/datagrid/column/index.js +4 -0
  104. package/dist/components/datagrid/context.d.ts +2 -29
  105. package/dist/components/datagrid/context.js +4 -18
  106. package/dist/components/datagrid/datagrid-body.svelte +7 -20
  107. package/dist/components/datagrid/datagrid-body.svelte.d.ts +8 -15
  108. package/dist/components/datagrid/datagrid-checkbox.svelte +60 -63
  109. package/dist/components/datagrid/datagrid-checkbox.svelte.d.ts +1 -3
  110. package/dist/components/datagrid/datagrid-footer.svelte +27 -34
  111. package/dist/components/datagrid/datagrid-footer.svelte.d.ts +12 -12
  112. package/dist/components/datagrid/datagrid-header.svelte +10 -17
  113. package/dist/components/datagrid/datagrid-header.svelte.d.ts +12 -12
  114. package/dist/components/datagrid/datagrid-root.svelte +49 -59
  115. package/dist/components/datagrid/datagrid-root.svelte.d.ts +15 -14
  116. package/dist/components/datagrid/row/bond.svelte.d.ts +42 -0
  117. package/dist/components/datagrid/row/bond.svelte.js +72 -0
  118. package/dist/components/datagrid/{tr/datagrid-tr.css → row/datagrid-row.css} +1 -1
  119. package/dist/components/datagrid/row/datagrid-row.svelte +64 -0
  120. package/dist/components/datagrid/row/datagrid-row.svelte.d.ts +27 -0
  121. package/dist/components/datagrid/row/index.d.ts +4 -0
  122. package/dist/components/datagrid/row/index.js +4 -0
  123. package/dist/components/datagrid/types.d.ts +56 -116
  124. package/dist/components/date-picker/bond.svelte.d.ts +0 -12
  125. package/dist/components/date-picker/date-picker-calendar.svelte +58 -58
  126. package/dist/components/date-picker/date-picker-months.svelte +1 -1
  127. package/dist/components/date-picker/date-picker-root.svelte +96 -96
  128. package/dist/components/date-picker/date-picker-root.svelte.d.ts +1 -1
  129. package/dist/components/date-picker/date-picker-years.svelte +1 -1
  130. package/dist/components/date-picker/types.d.ts +6 -3
  131. package/dist/components/dialog/atoms.d.ts +1 -1
  132. package/dist/components/dialog/atoms.js +1 -1
  133. package/dist/components/dialog/bond.svelte.d.ts +66 -28
  134. package/dist/components/dialog/bond.svelte.js +136 -117
  135. package/dist/components/dialog/dialog-body.svelte +1 -1
  136. package/dist/components/dialog/dialog-close.svelte +58 -0
  137. package/dist/components/dialog/dialog-close.svelte.d.ts +26 -0
  138. package/dist/components/dialog/dialog-content.svelte +2 -2
  139. package/dist/components/dialog/dialog-description.svelte +1 -1
  140. package/dist/components/dialog/dialog-footer.svelte +1 -1
  141. package/dist/components/dialog/dialog-header.svelte +1 -1
  142. package/dist/components/dialog/dialog-root.svelte +102 -82
  143. package/dist/components/dialog/dialog-title.svelte +1 -1
  144. package/dist/components/dialog/motion.svelte.js +68 -26
  145. package/dist/components/dialog/types.d.ts +16 -51
  146. package/dist/components/divider/types.d.ts +1 -6
  147. package/dist/components/drawer/bond.svelte.d.ts +61 -36
  148. package/dist/components/drawer/bond.svelte.js +149 -121
  149. package/dist/components/drawer/drawer-backdrop.svelte +2 -1
  150. package/dist/components/drawer/drawer-body.svelte +1 -1
  151. package/dist/components/drawer/drawer-content.svelte +5 -5
  152. package/dist/components/drawer/drawer-content.svelte.d.ts +4 -1
  153. package/dist/components/drawer/drawer-description.svelte +1 -1
  154. package/dist/components/drawer/drawer-footer.svelte +1 -1
  155. package/dist/components/drawer/drawer-header.svelte +1 -1
  156. package/dist/components/drawer/drawer-root.svelte +96 -87
  157. package/dist/components/drawer/drawer-title.svelte +1 -1
  158. package/dist/components/drawer/motion.d.ts +59 -5
  159. package/dist/components/drawer/motion.js +133 -15
  160. package/dist/components/drawer/types.d.ts +15 -24
  161. package/dist/components/dropdown/atoms.d.ts +4 -8
  162. package/dist/components/dropdown/atoms.js +4 -9
  163. package/dist/components/dropdown/bond.svelte.d.ts +4 -53
  164. package/dist/components/dropdown/bond.svelte.js +4 -89
  165. package/dist/components/dropdown/dropdown-query.svelte +43 -43
  166. package/dist/components/dropdown/dropdown-root.svelte +79 -79
  167. package/dist/components/dropdown/dropdown-root.svelte.d.ts +4 -4
  168. package/dist/components/dropdown/dropdown-selection.svelte +55 -55
  169. package/dist/components/dropdown/dropdown-selections.svelte +70 -70
  170. package/dist/components/dropdown/dropdown-trigger.svelte +30 -30
  171. package/dist/components/dropdown/index.d.ts +43 -7
  172. package/dist/components/dropdown/index.js +34 -6
  173. package/dist/components/dropdown/item/bond.svelte.d.ts +36 -0
  174. package/dist/components/dropdown/item/bond.svelte.js +85 -0
  175. package/dist/components/dropdown/item/controller.svelte.d.ts +1 -1
  176. package/dist/components/dropdown/item/dropdown-item.svelte +81 -107
  177. package/dist/components/dropdown/item/index.d.ts +11 -3
  178. package/dist/components/dropdown/item/index.js +10 -3
  179. package/dist/components/dropdown/types.d.ts +2 -67
  180. package/dist/components/dropdown-menu/atoms.d.ts +9 -0
  181. package/dist/components/dropdown-menu/atoms.js +9 -0
  182. package/dist/components/dropdown-menu/attachments.svelte.d.ts +2 -0
  183. package/dist/components/dropdown-menu/attachments.svelte.js +5 -0
  184. package/dist/components/dropdown-menu/bond.svelte.d.ts +72 -0
  185. package/dist/components/dropdown-menu/bond.svelte.js +173 -0
  186. package/dist/components/dropdown-menu/dropdown-menu-content.svelte +40 -0
  187. package/dist/components/dropdown-menu/dropdown-menu-content.svelte.d.ts +37 -0
  188. package/dist/components/dropdown-menu/dropdown-menu-root.svelte +14 -0
  189. package/dist/components/dropdown-menu/dropdown-menu-root.svelte.d.ts +4 -0
  190. package/dist/components/dropdown-menu/index.d.ts +7 -0
  191. package/dist/components/dropdown-menu/index.js +6 -0
  192. package/dist/components/dropdown-menu/item/bond.svelte.d.ts +26 -0
  193. package/dist/components/dropdown-menu/item/bond.svelte.js +54 -0
  194. package/dist/components/dropdown-menu/item/controller.svelte.d.ts +39 -0
  195. package/dist/components/dropdown-menu/item/controller.svelte.js +73 -0
  196. package/dist/components/dropdown-menu/item/dropdown-menu-item.svelte +75 -0
  197. package/dist/components/dropdown-menu/item/dropdown-menu-item.svelte.d.ts +32 -0
  198. package/dist/components/dropdown-menu/item/index.d.ts +3 -0
  199. package/dist/components/dropdown-menu/item/index.js +3 -0
  200. package/dist/components/dropdown-menu/item/types.d.ts +57 -0
  201. package/dist/components/dropdown-menu/item/types.js +1 -0
  202. package/dist/components/dropdown-menu/types.d.ts +3 -0
  203. package/dist/components/dropdown-menu/types.js +1 -0
  204. package/dist/components/element/html-element.svelte +114 -85
  205. package/dist/components/element/html-element.svelte.d.ts +1 -1
  206. package/dist/components/element/svg-element.svelte +88 -88
  207. package/dist/components/element/types.d.ts +32 -20
  208. package/dist/components/form/field/atoms.d.ts +1 -1
  209. package/dist/components/form/field/atoms.js +1 -1
  210. package/dist/components/form/field/bond.svelte.js +0 -6
  211. package/dist/components/form/field/field-control.svelte +30 -9
  212. package/dist/components/form/field/field-control.svelte.d.ts +12 -22
  213. package/dist/components/form/field/field-helper-text.svelte +23 -0
  214. package/dist/components/form/field/field-helper-text.svelte.d.ts +26 -0
  215. package/dist/components/form/field/field-label.svelte +5 -7
  216. package/dist/components/form/field/field-label.svelte.d.ts +2 -2
  217. package/dist/components/form/field/field-root.svelte +17 -8
  218. package/dist/components/form/form-root.svelte +66 -66
  219. package/dist/components/form/types.d.ts +34 -58
  220. package/dist/components/icon/icon.svelte +40 -40
  221. package/dist/components/icon/types.d.ts +4 -7
  222. package/dist/components/image/index.d.ts +2 -0
  223. package/dist/components/image/index.js +2 -1
  224. package/dist/components/index.d.ts +11 -0
  225. package/dist/components/index.js +11 -0
  226. package/dist/components/input/atoms.d.ts +19 -1
  227. package/dist/components/input/atoms.js +19 -1
  228. package/dist/components/input/color/color-control.svelte +197 -0
  229. package/dist/components/input/color/color-control.svelte.d.ts +4 -0
  230. package/dist/components/input/color/index.d.ts +5 -0
  231. package/dist/components/input/color/index.js +5 -0
  232. package/dist/components/input/color/segment.svelte +240 -0
  233. package/dist/components/input/color/segment.svelte.d.ts +6 -0
  234. package/dist/components/input/color/shared.d.ts +23 -0
  235. package/dist/components/input/color/shared.js +349 -0
  236. package/dist/components/input/color/swatch.svelte +23 -0
  237. package/dist/components/input/color/swatch.svelte.d.ts +8 -0
  238. package/dist/components/input/color/types.d.ts +56 -0
  239. package/dist/components/input/color/types.js +2 -0
  240. package/dist/components/input/index.d.ts +1 -0
  241. package/dist/components/input/index.js +1 -0
  242. package/dist/components/input/input-control.svelte +3 -1
  243. package/dist/components/input/input-currency-control.svelte +189 -0
  244. package/dist/components/input/input-currency-control.svelte.d.ts +4 -0
  245. package/dist/components/input/input-email-control.svelte +128 -0
  246. package/dist/components/input/input-email-control.svelte.d.ts +4 -0
  247. package/dist/components/input/input-file-control.svelte +127 -0
  248. package/dist/components/input/input-file-control.svelte.d.ts +4 -0
  249. package/dist/components/input/input-icon.svelte.d.ts +1 -1
  250. package/dist/components/input/input-location.svelte +335 -0
  251. package/dist/components/input/input-location.svelte.d.ts +4 -0
  252. package/dist/components/input/input-number-control.svelte +114 -0
  253. package/dist/components/input/input-number-control.svelte.d.ts +6 -0
  254. package/dist/components/input/input-otp-control.svelte +206 -0
  255. package/dist/components/input/input-otp-control.svelte.d.ts +4 -0
  256. package/dist/components/input/input-password-control.svelte +91 -0
  257. package/dist/components/input/input-password-control.svelte.d.ts +3 -0
  258. package/dist/components/input/input-phone-control.svelte +394 -0
  259. package/dist/components/input/input-phone-control.svelte.d.ts +4 -0
  260. package/dist/components/input/input-placeholder.svelte.d.ts +1 -1
  261. package/dist/components/input/input-root.svelte +74 -74
  262. package/dist/components/input/input-text-control.svelte +59 -0
  263. package/dist/components/input/input-text-control.svelte.d.ts +4 -0
  264. package/dist/components/input/input-url-control.svelte +218 -0
  265. package/dist/components/input/input-url-control.svelte.d.ts +4 -0
  266. package/dist/components/input/time/datetime-control.svelte +281 -0
  267. package/dist/components/input/time/datetime-control.svelte.d.ts +5 -0
  268. package/dist/components/input/time/index.d.ts +6 -0
  269. package/dist/components/input/time/index.js +6 -0
  270. package/dist/components/input/time/segment.svelte +143 -0
  271. package/dist/components/input/time/segment.svelte.d.ts +6 -0
  272. package/dist/components/input/time/shared.d.ts +29 -0
  273. package/dist/components/input/time/shared.js +150 -0
  274. package/dist/components/input/time/time-control.svelte +237 -0
  275. package/dist/components/input/time/time-control.svelte.d.ts +3 -0
  276. package/dist/components/input/time/types.d.ts +34 -0
  277. package/dist/components/input/time/types.js +4 -0
  278. package/dist/components/input/types.d.ts +355 -17
  279. package/dist/components/label/types.d.ts +4 -7
  280. package/dist/components/layer/bond.svelte.d.ts +2 -2
  281. package/dist/components/layer/bond.svelte.js +1 -1
  282. package/dist/components/layer/index.d.ts +1 -0
  283. package/dist/components/layer/layer-inner.svelte.d.ts +1 -1
  284. package/dist/components/layer/layer-root.svelte +65 -65
  285. package/dist/components/layer/layer-root.svelte.d.ts +1 -1
  286. package/dist/components/layer/types.d.ts +6 -6
  287. package/dist/components/lazy/index.d.ts +1 -0
  288. package/dist/components/lazy/lazy.svelte +29 -29
  289. package/dist/components/lazy/types.d.ts +4 -4
  290. package/dist/components/link/index.d.ts +1 -0
  291. package/dist/components/link/types.d.ts +5 -6
  292. package/dist/components/list/index.d.ts +1 -0
  293. package/dist/components/list/types.d.ts +5 -6
  294. package/dist/components/menu/atoms.d.ts +2 -7
  295. package/dist/components/menu/atoms.js +2 -7
  296. package/dist/components/menu/bond.svelte.d.ts +9 -23
  297. package/dist/components/menu/bond.svelte.js +6 -0
  298. package/dist/components/menu/index.d.ts +40 -4
  299. package/dist/components/menu/index.js +26 -3
  300. package/dist/components/menu/item/bond.svelte.d.ts +27 -0
  301. package/dist/components/menu/item/bond.svelte.js +54 -0
  302. package/dist/components/menu/item/controller.svelte.d.ts +1 -1
  303. package/dist/components/menu/item/index.d.ts +5 -2
  304. package/dist/components/menu/item/index.js +4 -2
  305. package/dist/components/menu/item/menu-item.svelte +87 -103
  306. package/dist/components/menu/item/menu-item.svelte.d.ts +15 -14
  307. package/dist/components/menu/item/types.d.ts +5 -12
  308. package/dist/components/menu/menu-content.svelte +40 -40
  309. package/dist/components/menu/menu-root.svelte +15 -15
  310. package/dist/components/menu/menu-root.svelte.d.ts +1 -1
  311. package/dist/components/menu/types.d.ts +2 -6
  312. package/dist/components/popover/bond.svelte.d.ts +67 -39
  313. package/dist/components/popover/bond.svelte.js +159 -197
  314. package/dist/components/popover/index.d.ts +3 -1
  315. package/dist/components/popover/index.js +3 -1
  316. package/dist/components/popover/motion.d.ts +29 -1
  317. package/dist/components/popover/motion.js +128 -50
  318. package/dist/components/popover/popover-arrow.svelte +97 -110
  319. package/dist/components/popover/popover-arrow.svelte.d.ts +1 -2
  320. package/dist/components/popover/popover-content.svelte +159 -123
  321. package/dist/components/popover/popover-engine.svelte +118 -0
  322. package/dist/components/popover/popover-engine.svelte.d.ts +3 -0
  323. package/dist/components/popover/popover-indicator.svelte +2 -13
  324. package/dist/components/popover/popover-indicator.svelte.d.ts +0 -6
  325. package/dist/components/popover/popover-root.svelte +87 -49
  326. package/dist/components/popover/popover-root.svelte.d.ts +2 -1
  327. package/dist/components/popover/popover-trigger.svelte +35 -35
  328. package/dist/components/popover/strategies/floating.svelte +109 -0
  329. package/dist/components/popover/strategies/floating.svelte.d.ts +3 -0
  330. package/dist/components/popover/strategies/index.d.ts +1 -0
  331. package/dist/components/popover/strategies/index.js +1 -0
  332. package/dist/components/popover/strategy-types.d.ts +40 -0
  333. package/dist/components/popover/strategy-types.js +1 -0
  334. package/dist/components/popover/types.d.ts +10 -36
  335. package/dist/components/portal/active-portal.svelte +5 -4
  336. package/dist/components/portal/bond.svelte.d.ts +12 -8
  337. package/dist/components/portal/bond.svelte.js +25 -27
  338. package/dist/components/portal/index.d.ts +1 -0
  339. package/dist/components/portal/index.js +1 -0
  340. package/dist/components/portal/portal-inner.svelte +1 -1
  341. package/dist/components/portal/portal-inner.svelte.d.ts +1 -1
  342. package/dist/components/portal/portal-root.svelte +76 -76
  343. package/dist/components/portal/portal-root.svelte.d.ts +1 -1
  344. package/dist/components/portal/portals/bond.svelte.d.ts +2 -2
  345. package/dist/components/portal/portals/bond.svelte.js +2 -2
  346. package/dist/components/portal/teleport.svelte +47 -49
  347. package/dist/components/portal/teleport.svelte.d.ts +1 -2
  348. package/dist/components/portal/types.d.ts +7 -25
  349. package/dist/components/portal/utils.js +3 -3
  350. package/dist/components/portal/zlayer.svelte.d.ts +16 -0
  351. package/dist/components/portal/zlayer.svelte.js +25 -0
  352. package/dist/components/radio/index.d.ts +2 -0
  353. package/dist/components/radio/index.js +1 -0
  354. package/dist/components/radio/motion.d.ts +24 -0
  355. package/dist/components/radio/motion.js +59 -0
  356. package/dist/components/radio/radio.svelte +22 -12
  357. package/dist/components/radio/types.d.ts +5 -14
  358. package/dist/components/root/bond.svelte.d.ts +2 -2
  359. package/dist/components/root/bond.svelte.js +1 -1
  360. package/dist/components/root/root.svelte +82 -92
  361. package/dist/components/root/root.svelte.d.ts +2 -2
  362. package/dist/components/root/types.d.ts +4 -15
  363. package/dist/components/scrollable/atoms.d.ts +1 -0
  364. package/dist/components/scrollable/atoms.js +1 -0
  365. package/dist/components/scrollable/bond.svelte.d.ts +73 -189
  366. package/dist/components/scrollable/bond.svelte.js +195 -371
  367. package/dist/components/scrollable/scrollable-container.css +22 -22
  368. package/dist/components/scrollable/scrollable-container.svelte +66 -61
  369. package/dist/components/scrollable/scrollable-container.svelte.d.ts +12 -12
  370. package/dist/components/scrollable/scrollable-content.svelte +22 -17
  371. package/dist/components/scrollable/scrollable-content.svelte.d.ts +12 -12
  372. package/dist/components/scrollable/scrollable-root.svelte +106 -101
  373. package/dist/components/scrollable/scrollable-root.svelte.d.ts +12 -12
  374. package/dist/components/scrollable/scrollable-thumb.svelte +21 -45
  375. package/dist/components/scrollable/scrollable-thumb.svelte.d.ts +12 -12
  376. package/dist/components/scrollable/scrollable-track.svelte +21 -22
  377. package/dist/components/scrollable/scrollable-track.svelte.d.ts +12 -12
  378. package/dist/components/scrollable/types.d.ts +15 -38
  379. package/dist/components/select/atoms.d.ts +8 -0
  380. package/dist/components/select/atoms.js +8 -0
  381. package/dist/components/select/attachments.svelte.d.ts +2 -0
  382. package/dist/components/select/attachments.svelte.js +5 -0
  383. package/dist/components/select/bond.svelte.d.ts +56 -0
  384. package/dist/components/select/bond.svelte.js +112 -0
  385. package/dist/components/select/index.d.ts +11 -0
  386. package/dist/components/select/index.js +10 -0
  387. package/dist/components/select/item/attachments.svelte.d.ts +3 -0
  388. package/dist/components/select/item/attachments.svelte.js +6 -0
  389. package/dist/components/select/item/bond.svelte.d.ts +33 -0
  390. package/dist/components/select/item/bond.svelte.js +77 -0
  391. package/dist/components/select/item/controller.svelte.d.ts +39 -0
  392. package/dist/components/select/item/controller.svelte.js +105 -0
  393. package/dist/components/select/item/index.d.ts +5 -0
  394. package/dist/components/select/item/index.js +5 -0
  395. package/dist/components/select/item/select-item.svelte +81 -0
  396. package/dist/components/select/item/select-item.svelte.d.ts +25 -0
  397. package/dist/components/select/item/types.d.ts +29 -0
  398. package/dist/components/select/item/types.js +1 -0
  399. package/dist/components/select/runes.svelte.d.ts +10 -0
  400. package/dist/components/select/runes.svelte.js +15 -0
  401. package/dist/components/select/select-placeholder.svelte +40 -0
  402. package/dist/components/select/select-placeholder.svelte.d.ts +34 -0
  403. package/dist/components/select/select-root.svelte +80 -0
  404. package/dist/components/select/select-root.svelte.d.ts +30 -0
  405. package/dist/components/select/select-selection.svelte +55 -0
  406. package/dist/components/select/select-selection.svelte.d.ts +26 -0
  407. package/dist/components/select/select-selections.svelte +70 -0
  408. package/dist/components/select/select-selections.svelte.d.ts +5 -0
  409. package/dist/components/select/select-trigger.svelte +30 -0
  410. package/dist/components/select/select-trigger.svelte.d.ts +26 -0
  411. package/dist/components/select/types.d.ts +61 -0
  412. package/dist/components/select/types.js +1 -0
  413. package/dist/components/sidebar/bond.svelte.d.ts +10 -7
  414. package/dist/components/sidebar/bond.svelte.js +20 -15
  415. package/dist/components/sidebar/sidebar-content.svelte +1 -1
  416. package/dist/components/sidebar/sidebar-root.svelte +50 -41
  417. package/dist/components/sidebar/types.d.ts +10 -15
  418. package/dist/components/slider/index.d.ts +2 -0
  419. package/dist/components/slider/index.js +2 -0
  420. package/dist/components/slider/slider.svelte +164 -0
  421. package/dist/components/slider/slider.svelte.d.ts +6 -0
  422. package/dist/components/slider/types.d.ts +78 -0
  423. package/dist/components/slider/types.js +1 -0
  424. package/dist/components/stack/bond.svelte.d.ts +50 -0
  425. package/dist/components/stack/bond.svelte.js +174 -0
  426. package/dist/components/stack/index.d.ts +2 -0
  427. package/dist/components/stack/index.js +2 -0
  428. package/dist/components/stack/stack-item.svelte +40 -4
  429. package/dist/components/stack/stack-item.svelte.d.ts +6 -5
  430. package/dist/components/stack/stack-root.svelte +33 -4
  431. package/dist/components/stack/stack-root.svelte.d.ts +14 -5
  432. package/dist/components/stack/types.d.ts +11 -10
  433. package/dist/components/stepper/bond.svelte.d.ts +8 -7
  434. package/dist/components/stepper/bond.svelte.js +14 -11
  435. package/dist/components/stepper/step/README.md +97 -97
  436. package/dist/components/stepper/step/bond.svelte.d.ts +74 -63
  437. package/dist/components/stepper/step/bond.svelte.js +105 -69
  438. package/dist/components/stepper/step/step-body.svelte +39 -39
  439. package/dist/components/stepper/step/step-description.svelte +33 -33
  440. package/dist/components/stepper/step/step-header.svelte +34 -34
  441. package/dist/components/stepper/step/step-indicator.svelte +62 -62
  442. package/dist/components/stepper/step/step-root.svelte +42 -42
  443. package/dist/components/stepper/step/step-separator.svelte +48 -48
  444. package/dist/components/stepper/step/step-title.svelte +33 -33
  445. package/dist/components/stepper/step/types.d.ts +13 -57
  446. package/dist/components/stepper/stepper-body.svelte +31 -43
  447. package/dist/components/stepper/stepper-content.svelte +45 -45
  448. package/dist/components/stepper/stepper-footer.svelte +31 -31
  449. package/dist/components/stepper/stepper-header.svelte +27 -39
  450. package/dist/components/stepper/stepper-root.svelte +55 -61
  451. package/dist/components/stepper/types.d.ts +10 -36
  452. package/dist/components/swatch/index.d.ts +1 -0
  453. package/dist/components/swatch/index.js +1 -0
  454. package/dist/components/swatch/swatch.svelte +57 -0
  455. package/dist/components/swatch/swatch.svelte.d.ts +9 -0
  456. package/dist/components/switch/index.d.ts +2 -0
  457. package/dist/components/switch/index.js +2 -0
  458. package/dist/components/switch/switch.svelte +76 -0
  459. package/dist/components/switch/switch.svelte.d.ts +6 -0
  460. package/dist/components/switch/types.d.ts +43 -0
  461. package/dist/components/switch/types.js +1 -0
  462. package/dist/components/tabs/bond.svelte.d.ts +38 -19
  463. package/dist/components/tabs/bond.svelte.js +53 -46
  464. package/dist/components/tabs/tab/attachments.svelte.d.ts +5 -2
  465. package/dist/components/tabs/tab/attachments.svelte.js +4 -3
  466. package/dist/components/tabs/tab/bond.svelte.d.ts +35 -23
  467. package/dist/components/tabs/tab/bond.svelte.js +81 -56
  468. package/dist/components/tabs/tab/tab-body.svelte +61 -43
  469. package/dist/components/tabs/tab/tab-description.svelte +33 -33
  470. package/dist/components/tabs/tab/tab-header.svelte +61 -61
  471. package/dist/components/tabs/tab/tab-root.svelte +49 -50
  472. package/dist/components/tabs/tab/tab-root.svelte.d.ts +13 -35
  473. package/dist/components/tabs/tabs-body.svelte +39 -35
  474. package/dist/components/tabs/tabs-body.svelte.d.ts +1 -1
  475. package/dist/components/tabs/tabs-content.svelte +32 -51
  476. package/dist/components/tabs/tabs-header.svelte +32 -32
  477. package/dist/components/tabs/tabs-root.svelte +56 -56
  478. package/dist/components/tabs/types.d.ts +20 -37
  479. package/dist/components/textarea/types.d.ts +6 -12
  480. package/dist/components/toast/atoms.d.ts +1 -0
  481. package/dist/components/toast/atoms.js +1 -0
  482. package/dist/components/toast/index.d.ts +1 -0
  483. package/dist/components/toast/index.js +1 -0
  484. package/dist/components/toast/manager.svelte.d.ts +38 -0
  485. package/dist/components/toast/manager.svelte.js +82 -0
  486. package/dist/components/toast/toast-description.svelte.d.ts +1 -1
  487. package/dist/components/toast/toast-root-managed.svelte +64 -0
  488. package/dist/components/toast/toast-root-managed.svelte.d.ts +7 -0
  489. package/dist/components/toast/toast-root.svelte.d.ts +1 -1
  490. package/dist/components/toast/toast-title.svelte.d.ts +1 -1
  491. package/dist/components/toast/toast-toaster.svelte +42 -0
  492. package/dist/components/toast/toast-toaster.svelte.d.ts +4 -0
  493. package/dist/components/toast/types.d.ts +22 -31
  494. package/dist/components/tooltip/index.d.ts +1 -0
  495. package/dist/components/tooltip/tooltip-trigger.svelte +39 -39
  496. package/dist/components/tooltip/types.d.ts +5 -8
  497. package/dist/components/tree/bond.svelte.d.ts +28 -19
  498. package/dist/components/tree/bond.svelte.js +62 -53
  499. package/dist/components/tree/tree-body.svelte +1 -1
  500. package/dist/components/tree/tree-header.svelte +1 -1
  501. package/dist/components/tree/tree-header.svelte.d.ts +1 -1
  502. package/dist/components/tree/tree-indicator.svelte +1 -1
  503. package/dist/components/tree/tree-root.svelte +66 -66
  504. package/dist/components/tree/types.d.ts +4 -28
  505. package/dist/components/virtual/index.d.ts +2 -0
  506. package/dist/components/virtual/index.js +2 -0
  507. package/dist/components/virtual/types.d.ts +1 -6
  508. package/dist/constants/motion.d.ts +9 -0
  509. package/dist/constants/motion.js +9 -0
  510. package/dist/context/index.d.ts +1 -1
  511. package/dist/context/preset.svelte.d.ts +169 -2
  512. package/dist/runes/color-scheme.svelte.js +17 -5
  513. package/dist/shared/bond.svelte.d.ts +29 -3
  514. package/dist/shared/bond.svelte.js +126 -4
  515. package/dist/shared/index.d.ts +1 -1
  516. package/dist/shared/index.js +1 -1
  517. package/dist/shared/motion.d.ts +1 -0
  518. package/dist/shared/motion.js +2 -8
  519. package/dist/types/index.d.ts +4 -0
  520. package/dist/utils/index.d.ts +1 -1
  521. package/dist/utils/index.js +1 -1
  522. package/dist/utils/promise.svelte.d.ts +5 -0
  523. package/dist/utils/promise.svelte.js +17 -0
  524. package/dist/utils/variant.d.ts +10 -1
  525. package/dist/utils/variant.js +11 -1
  526. package/package.json +171 -48
  527. package/dist/components/accordion/accordion.stories.svelte +0 -70
  528. package/dist/components/accordion/accordion.stories.svelte.d.ts +0 -18
  529. package/dist/components/alert/alert.stories.svelte +0 -400
  530. package/dist/components/alert/alert.stories.svelte.d.ts +0 -3
  531. package/dist/components/avatar/avatar.stories.svelte +0 -22
  532. package/dist/components/avatar/avatar.stories.svelte.d.ts +0 -26
  533. package/dist/components/badge/badge.stories.svelte +0 -12
  534. package/dist/components/badge/badge.stories.svelte.d.ts +0 -26
  535. package/dist/components/breadcrumb/breadcrumb.stories.svelte +0 -16
  536. package/dist/components/breadcrumb/breadcrumb.stories.svelte.d.ts +0 -26
  537. package/dist/components/button/button.stories.svelte +0 -27
  538. package/dist/components/button/button.stories.svelte.d.ts +0 -18
  539. package/dist/components/calendar/calendar.stories.svelte +0 -26
  540. package/dist/components/calendar/calendar.stories.svelte.d.ts +0 -26
  541. package/dist/components/card/card.stories.svelte +0 -133
  542. package/dist/components/card/card.stories.svelte.d.ts +0 -19
  543. package/dist/components/checkbox/checkbox.stories.svelte +0 -22
  544. package/dist/components/checkbox/checkbox.stories.svelte.d.ts +0 -6
  545. package/dist/components/collapsible/collapsible.stories.svelte +0 -172
  546. package/dist/components/collapsible/collapsible.stories.svelte.d.ts +0 -18
  547. package/dist/components/combobox/combobox.stories.svelte +0 -63
  548. package/dist/components/combobox/combobox.stories.svelte.d.ts +0 -3
  549. package/dist/components/container/container.stories.svelte +0 -20
  550. package/dist/components/container/container.stories.svelte.d.ts +0 -26
  551. package/dist/components/contextmenu/atoms.d.ts +0 -0
  552. package/dist/components/contextmenu/atoms.js +0 -1
  553. package/dist/components/contextmenu/contextmenu-trigger.svelte +0 -0
  554. package/dist/components/contextmenu/contextmenu-trigger.svelte.d.ts +0 -26
  555. package/dist/components/contextmenu/indext.d.ts +0 -0
  556. package/dist/components/contextmenu/indext.js +0 -1
  557. package/dist/components/datagrid/datagrid.stories.svelte +0 -72
  558. package/dist/components/datagrid/datagrid.stories.svelte.d.ts +0 -6
  559. package/dist/components/datagrid/td/bond.svelte.d.ts +0 -28
  560. package/dist/components/datagrid/td/bond.svelte.js +0 -40
  561. package/dist/components/datagrid/td/datagrid-td.svelte +0 -66
  562. package/dist/components/datagrid/td/datagrid-td.svelte.d.ts +0 -30
  563. package/dist/components/datagrid/td/index.d.ts +0 -2
  564. package/dist/components/datagrid/td/index.js +0 -2
  565. package/dist/components/datagrid/th/bond.svelte.d.ts +0 -38
  566. package/dist/components/datagrid/th/bond.svelte.js +0 -66
  567. package/dist/components/datagrid/th/datagrid-th.svelte.d.ts +0 -26
  568. package/dist/components/datagrid/th/index.d.ts +0 -2
  569. package/dist/components/datagrid/th/index.js +0 -2
  570. package/dist/components/datagrid/tr/bond.svelte.d.ts +0 -37
  571. package/dist/components/datagrid/tr/bond.svelte.js +0 -72
  572. package/dist/components/datagrid/tr/datagrid-tr.svelte +0 -90
  573. package/dist/components/datagrid/tr/datagrid-tr.svelte.d.ts +0 -28
  574. package/dist/components/datagrid/tr/index.d.ts +0 -2
  575. package/dist/components/datagrid/tr/index.js +0 -2
  576. package/dist/components/date-picker/date-picker.stories.svelte +0 -35
  577. package/dist/components/date-picker/date-picker.stories.svelte.d.ts +0 -3
  578. package/dist/components/dialog/dialog.stories.svelte +0 -64
  579. package/dist/components/dialog/dialog.stories.svelte.d.ts +0 -3
  580. package/dist/components/drawer/drawer.stories.svelte +0 -141
  581. package/dist/components/drawer/drawer.stories.svelte.d.ts +0 -3
  582. package/dist/components/dropdown/dropdown.stories.svelte +0 -127
  583. package/dist/components/dropdown/dropdown.stories.svelte.d.ts +0 -3
  584. package/dist/components/element/element.stories.svelte +0 -37
  585. package/dist/components/element/element.stories.svelte.d.ts +0 -3
  586. package/dist/components/form/field/field-errors.svelte +0 -9
  587. package/dist/components/form/field/field-errors.svelte.d.ts +0 -11
  588. package/dist/components/form/form.stories.svelte +0 -96
  589. package/dist/components/form/form.stories.svelte.d.ts +0 -18
  590. package/dist/components/image/image.stories.svelte +0 -20
  591. package/dist/components/image/image.stories.svelte.d.ts +0 -26
  592. package/dist/components/input/input.stories.svelte +0 -35
  593. package/dist/components/input/input.stories.svelte.d.ts +0 -18
  594. package/dist/components/label/label.stories.svelte +0 -15
  595. package/dist/components/label/label.stories.svelte.d.ts +0 -26
  596. package/dist/components/lazy/lazy.stories.svelte +0 -28
  597. package/dist/components/lazy/lazy.stories.svelte.d.ts +0 -19
  598. package/dist/components/link/link.stories.svelte +0 -15
  599. package/dist/components/link/link.stories.svelte.d.ts +0 -26
  600. package/dist/components/menu/menu.stories.svelte +0 -33
  601. package/dist/components/menu/menu.stories.svelte.d.ts +0 -3
  602. package/dist/components/popover/popover.stories.svelte +0 -37
  603. package/dist/components/popover/popover.stories.svelte.d.ts +0 -3
  604. package/dist/components/qr-code/qr-code.stories.svelte +0 -18
  605. package/dist/components/qr-code/qr-code.stories.svelte.d.ts +0 -26
  606. package/dist/components/radio/radio-group.stories.svelte +0 -41
  607. package/dist/components/radio/radio-group.stories.svelte.d.ts +0 -6
  608. package/dist/components/radio/radio.stories.svelte +0 -17
  609. package/dist/components/radio/radio.stories.svelte.d.ts +0 -6
  610. package/dist/components/root/l0-portal.svelte +0 -8
  611. package/dist/components/root/l0-portal.svelte.d.ts +0 -26
  612. package/dist/components/root/l1-portal.svelte +0 -7
  613. package/dist/components/root/l1-portal.svelte.d.ts +0 -26
  614. package/dist/components/root/toasts-portal.svelte +0 -7
  615. package/dist/components/root/toasts-portal.svelte.d.ts +0 -26
  616. package/dist/components/scrollable/scrollable.stories.svelte +0 -116
  617. package/dist/components/scrollable/scrollable.stories.svelte.d.ts +0 -26
  618. package/dist/components/sidebar/sidebar.stories.svelte +0 -43
  619. package/dist/components/sidebar/sidebar.stories.svelte.d.ts +0 -3
  620. package/dist/components/stepper/stepper.stories.svelte +0 -264
  621. package/dist/components/stepper/stepper.stories.svelte.d.ts +0 -4
  622. package/dist/components/tabs/tabs.stories.svelte +0 -70
  623. package/dist/components/tabs/tabs.stories.svelte.d.ts +0 -3
  624. package/dist/components/tooltip/tooltip.stories.svelte +0 -32
  625. package/dist/components/tooltip/tooltip.stories.svelte.d.ts +0 -3
  626. package/dist/components/tree/tree.stories.svelte +0 -142
  627. package/dist/components/tree/tree.stories.svelte.d.ts +0 -3
  628. /package/dist/components/{contextmenu → context-menu}/types.js +0 -0
@@ -0,0 +1,109 @@
1
+ <script lang="ts">
2
+ import {
3
+ autoUpdate,
4
+ computePosition,
5
+ arrow,
6
+ flip,
7
+ shift,
8
+ offset,
9
+ type ComputePositionConfig
10
+ } from '@floating-ui/dom';
11
+ import { PopoverBond, type PopoverParams } from '../bond.svelte';
12
+ import type { BondVirtualElement } from '../../../shared/bond.svelte';
13
+
14
+ const bond = PopoverBond.get();
15
+
16
+ const open = $derived(bond?.state.props.open);
17
+ const reference = $derived(bond?.element<BondVirtualElement>('virtual-trigger') ?? bond?.element<Element>('trigger'));
18
+ const content = $derived(bond?.element<HTMLElement>('content'));
19
+
20
+ $effect.pre(() => {
21
+ if (!(reference) || !content || !open) return;
22
+
23
+ // Use the existing positioning behavior
24
+ const cleanup = compute(bond)({}, autoUpdate);
25
+
26
+ return () => cleanup?.();
27
+ });
28
+
29
+ function compute(bond: PopoverBond) {
30
+ return (props: Record<string, unknown>, updater?: typeof autoUpdate) => {
31
+ const { offset: ofs, placements, placement } = bond.state.props;
32
+
33
+ const arrowElement = bond.element<HTMLElement>('arrow');
34
+
35
+ // Guard: ensure required elements exist
36
+ if (!reference || !content) {
37
+ return;
38
+ }
39
+
40
+ // Build middleware stack
41
+ const middleware: ComputePositionConfig['middleware'] = [
42
+ offset(ofs),
43
+ flip({
44
+ fallbackPlacements: placements,
45
+ padding: 8,
46
+ crossAxis: true,
47
+ fallbackStrategy: 'bestFit'
48
+ }),
49
+ shift({
50
+ padding: 8,
51
+ limiter: {
52
+ fn: (state) => {
53
+ const { x, y } = state;
54
+ return { x, y };
55
+ }
56
+ }
57
+ })
58
+ ];
59
+
60
+ // Add arrow middleware if element exists
61
+ if (arrowElement) {
62
+ middleware.push(arrow({ element: arrowElement }));
63
+ }
64
+
65
+ const onchangeCallback = props.onchange as PopoverParams['onchange'];
66
+
67
+ // Compute position and notify listeners
68
+ const compute = async () => {
69
+ // Double rAF ensures browser has completed layout + paint
70
+ await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve)));
71
+
72
+ const position = await computePosition(reference, content, {
73
+ placement: placement ?? 'bottom',
74
+ middleware,
75
+ strategy: bond.state.props.positionStrategy
76
+ });
77
+
78
+ // Round to 0.01 precision to avoid excessive updates from sub-pixel changes
79
+ const x = Math.round((position.x ?? 0) * 100) / 100;
80
+ const y = Math.round((position.y ?? 0) * 100) / 100;
81
+
82
+ bond.state.position = {
83
+ middlewareData: position.middlewareData,
84
+ placement: position.placement,
85
+ strategy: position.strategy,
86
+ x,
87
+ y
88
+ };
89
+ onchangeCallback?.(content, position);
90
+
91
+ // Set minimum width to match trigger
92
+ if (reference && (reference instanceof Element)) {
93
+ requestAnimationFrame(() => {
94
+ content.style.minWidth = `${reference.clientWidth}px`;
95
+ });
96
+ }
97
+ };
98
+
99
+ // Use auto-update if provided, otherwise compute once
100
+ if (updater) {
101
+ return updater(reference, content, compute, {
102
+ ancestorScroll: false
103
+ });
104
+ }
105
+
106
+ compute();
107
+ };
108
+ }
109
+ </script>
@@ -0,0 +1,3 @@
1
+ declare const Floating: import("svelte").Component<Record<string, never>, {}, "">;
2
+ type Floating = ReturnType<typeof Floating>;
3
+ export default Floating;
@@ -0,0 +1 @@
1
+ export { default as FloatingStrategy } from './floating.svelte';
@@ -0,0 +1 @@
1
+ export { default as FloatingStrategy } from './floating.svelte';
@@ -0,0 +1,40 @@
1
+ import type { Component } from 'svelte';
2
+ import type { PopoverBond } from './bond.svelte';
3
+ /**
4
+ * Props passed to all popover strategy components
5
+ */
6
+ export type PopoverStrategyProps = {
7
+ /** The popover bond instance */
8
+ bond: PopoverBond;
9
+ /** Reference to trigger element (may be undefined during mount) */
10
+ trigger?: HTMLElement;
11
+ /** Reference to content element (may be undefined during mount) */
12
+ content?: HTMLElement;
13
+ /** Whether the popover is currently open */
14
+ open: boolean;
15
+ };
16
+ /**
17
+ * A strategy component that controls how popover content is rendered and positioned.
18
+ *
19
+ * Strategy components receive the bond, trigger, content elements, and open state.
20
+ * They are responsible for:
21
+ * - Positioning the content element
22
+ * - Handling layout/rendering logic
23
+ * - Cleanup on unmount
24
+ *
25
+ * @example
26
+ * ```svelte
27
+ * <!-- MyStrategy.svelte -->
28
+ * <script lang="ts">
29
+ * import type { PopoverStrategyProps } from '@svelte-atoms/core/popover';
30
+ *
31
+ * let { bond, trigger, content, open }: PopoverStrategyProps = $props();
32
+ *
33
+ * $effect(() => {
34
+ * if (!trigger || !content || !open) return;
35
+ * // Position content relative to trigger
36
+ * });
37
+ * </script>
38
+ * ```
39
+ */
40
+ export type PopoverStrategy = Component<PopoverStrategyProps>;
@@ -0,0 +1 @@
1
+ export {};
@@ -5,32 +5,10 @@ import type { PopoverBond } from './bond.svelte';
5
5
  import type { Base, HtmlAtomProps } from '../atom';
6
6
  import type { HtmlElementTagName } from '../element';
7
7
  import type { PortalBond } from '../portal';
8
- /**
9
- * Extend this interface to add custom popover root properties in your application.
10
- */
11
- export interface PopoverRootExtendProps {
12
- }
13
- /**
14
- * Extend this interface to add custom popover content properties in your application.
15
- */
16
- export interface PopoverContentExtendProps {
17
- }
18
- /**
19
- * Extend this interface to add custom popover indicator properties in your application.
20
- */
21
- export interface PopoverIndicatorExtendProps {
22
- }
23
- /**
24
- * Extend this interface to add custom popover arrow properties in your application.
25
- */
26
- export interface PopoverArrowExtendProps {
27
- }
28
- /**
29
- * Extend this interface to add custom popover trigger properties in your application.
30
- */
31
- export interface PopoverTriggerExtendProps {
32
- }
33
- export interface PopoverRootProps extends PopoverRootExtendProps {
8
+ export type PopoverChildren = Snippet<[{
9
+ popover: PopoverBond;
10
+ }]>;
11
+ export interface PopoverRootProps {
34
12
  open?: boolean;
35
13
  disabled?: boolean;
36
14
  placements?: Placement[];
@@ -39,9 +17,7 @@ export interface PopoverRootProps extends PopoverRootExtendProps {
39
17
  portal?: string | PortalBond;
40
18
  extend?: Record<string, unknown>;
41
19
  factory?: Factory<PopoverBond>;
42
- children?: Snippet<[{
43
- popover: PopoverBond;
44
- }]>;
20
+ children?: PopoverChildren;
45
21
  }
46
22
  export interface AnimateParams {
47
23
  x: number;
@@ -50,14 +26,12 @@ export interface AnimateParams {
50
26
  yOffset: number;
51
27
  open: boolean;
52
28
  }
53
- export interface PopoverContentProps<T extends HtmlElementTagName, B extends Base = Base> extends HtmlAtomProps<T, B>, PopoverContentExtendProps {
29
+ export interface PopoverContentProps<T extends HtmlElementTagName, B extends Base = Base> extends HtmlAtomProps<T, B, PopoverChildren> {
30
+ onclickoutside?: (ev: PointerEvent, atom: PopoverBond) => void;
54
31
  }
55
- export interface PopoverIndicatorProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, PopoverIndicatorExtendProps {
32
+ export interface PopoverIndicatorProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B, PopoverChildren> {
56
33
  }
57
- export interface PopoverArrowProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, PopoverArrowExtendProps {
34
+ export interface PopoverArrowProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B, PopoverChildren> {
58
35
  }
59
- export interface PopoverTriggerProps<T extends keyof HTMLElementTagNameMap, B extends Base = Base> extends HtmlAtomProps<T, B>, PopoverTriggerExtendProps {
60
- children?: Snippet<[{
61
- popover?: PopoverBond;
62
- }]>;
36
+ export interface PopoverTriggerProps<T extends keyof HTMLElementTagNameMap, B extends Base = Base> extends HtmlAtomProps<T, B, PopoverChildren> {
63
37
  }
@@ -13,10 +13,13 @@
13
13
  return portal as PortalBond;
14
14
  });
15
15
 
16
+
16
17
  if (!portalsBond) {
17
18
  throw new Error('Portals bond is not found');
18
19
  }
19
-
20
+
21
+ const content = $derived(activePortal ? proxy : undefined);
22
+
20
23
  function proxy(...args: any[]) {
21
24
  activePortal?.share();
22
25
 
@@ -24,6 +27,4 @@
24
27
  }
25
28
  </script>
26
29
 
27
- {#if activePortal}
28
- {@render proxy?.()}
29
- {/if}
30
+ {@render content?.()}
@@ -1,4 +1,4 @@
1
- import { Bond, BondState, type BondElements, type BondStateProps } from '../../shared/bond.svelte.js';
1
+ import { Bond, BondState, BondAtom, type BondElements, type BondStateProps } from '../../shared/bond.svelte';
2
2
  export type PortalStateProps = BondStateProps & {
3
3
  id: string;
4
4
  readonly rest?: Record<string, unknown>;
@@ -7,17 +7,21 @@ export type PortalElements = BondElements & {
7
7
  root?: HTMLElement;
8
8
  inner?: HTMLElement;
9
9
  };
10
+ export declare class PortalRootAtom extends BondAtom<PortalBond, HTMLElement> {
11
+ constructor(bond: PortalBond);
12
+ get attrs(): {
13
+ id: string;
14
+ };
15
+ }
16
+ export declare class PortalInnerAtom extends BondAtom<PortalBond, HTMLElement> {
17
+ constructor(bond: PortalBond);
18
+ }
10
19
  export declare class PortalBond extends Bond<PortalStateProps, PortalState, PortalElements> {
11
20
  static CONTEXT_KEY: string;
12
21
  constructor(atom: PortalState);
13
22
  get targetElement(): HTMLElement | undefined;
14
- root(props?: Record<string, unknown>): {
15
- id: string;
16
- 'data-kind': string;
17
- };
18
- inner(props?: Record<string, unknown>): {
19
- 'data-kind': string;
20
- };
23
+ root(): PortalRootAtom;
24
+ inner(): PortalInnerAtom;
21
25
  share(): this;
22
26
  destroy(): void;
23
27
  static get(): PortalBond | undefined;
@@ -1,44 +1,42 @@
1
- import { createAttachmentKey } from 'svelte/attachments';
2
1
  import { getContext, setContext } from 'svelte';
3
- import { Bond, BondState } from '../../shared/bond.svelte.js';
4
- const PORTAL_ELEMENTS_KIND = {
5
- root: 'portal-root',
6
- inner: 'portal-inner'
7
- };
2
+ import { Bond, BondState, BondAtom } from '../../shared/bond.svelte';
3
+ export class PortalRootAtom extends BondAtom {
4
+ constructor(bond) {
5
+ super(bond, 'root');
6
+ }
7
+ get attrs() {
8
+ return {
9
+ ...super.attrs,
10
+ id: this.bond.id
11
+ };
12
+ }
13
+ }
14
+ export class PortalInnerAtom extends BondAtom {
15
+ constructor(bond) {
16
+ super(bond, 'inner');
17
+ }
18
+ }
8
19
  export class PortalBond extends Bond {
9
20
  static CONTEXT_KEY = '@atoms/context/portal';
10
21
  constructor(atom) {
11
- super(atom);
22
+ super(atom, 'portal');
12
23
  }
13
24
  get targetElement() {
14
- return this.elements.inner ?? this.elements.root;
25
+ return this.element('inner') ?? this.element('root');
15
26
  }
16
- root(props = {}) {
17
- return {
18
- id: this.id,
19
- 'data-kind': PORTAL_ELEMENTS_KIND.root,
20
- ...props,
21
- [createAttachmentKey()]: (node) => {
22
- this.elements.root = node;
23
- }
24
- };
27
+ root() {
28
+ return this.atom('root', () => new PortalRootAtom(this));
25
29
  }
26
- inner(props = {}) {
27
- return {
28
- 'data-kind': PORTAL_ELEMENTS_KIND.inner,
29
- ...props,
30
- [createAttachmentKey()]: (node) => {
31
- this.elements.inner = node;
32
- }
33
- };
30
+ inner() {
31
+ return this.atom('inner', () => new PortalInnerAtom(this));
34
32
  }
35
33
  share() {
36
34
  return PortalBond.set(this);
37
35
  }
38
36
  destroy() {
39
37
  super.destroy();
40
- this.elements.inner?.remove();
41
- this.elements.root?.remove();
38
+ this.element('inner')?.remove();
39
+ this.element('root')?.remove();
42
40
  }
43
41
  static get() {
44
42
  return getContext(PortalBond.CONTEXT_KEY);
@@ -3,6 +3,7 @@ export * as Portal from './atoms';
3
3
  export { PortalBond, PortalState, type PortalStateProps } from './bond.svelte';
4
4
  export { portal } from './attachements.svelte';
5
5
  export { port } from './utils';
6
+ export { ZLayer, LAYER_BASE, type LayerName } from './zlayer.svelte';
6
7
  export { default as ActivePortal } from './active-portal.svelte';
7
8
  export { default as Teleport } from './teleport.svelte';
8
9
  export * from './portals';
@@ -3,6 +3,7 @@ export * as Portal from './atoms';
3
3
  export { PortalBond, PortalState } from './bond.svelte';
4
4
  export { portal } from './attachements.svelte';
5
5
  export { port } from './utils';
6
+ export { ZLayer, LAYER_BASE } from './zlayer.svelte';
6
7
  export { default as ActivePortal } from './active-portal.svelte';
7
8
  export { default as Teleport } from './teleport.svelte';
8
9
  export * from './portals';
@@ -25,7 +25,7 @@
25
25
  }: HtmlAtomProps<E, B> & HTMLAttributes<Element> = $props();
26
26
 
27
27
  const bondProps = $derived({
28
- ...bond?.inner(),
28
+ ...bond?.inner().spread,
29
29
  ...restProps
30
30
  });
31
31
  </script>
@@ -1,7 +1,7 @@
1
1
  import type { HTMLAttributes } from 'svelte/elements';
2
2
  import { type ElementType, type HtmlAtomProps, type Base } from '../atom';
3
3
  declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
4
- props: HtmlAtomProps<E, B> & HTMLAttributes<ElementType<E>>;
4
+ props: HtmlAtomProps<E, B, import("svelte").Snippet<[]>> & HTMLAttributes<ElementType<E>>;
5
5
  exports: {};
6
6
  bindings: "";
7
7
  slots: {};
@@ -1,76 +1,76 @@
1
- <script module lang="ts">
2
- export type { PortalOuterProps } from './types';
3
- </script>
4
-
5
- <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
6
- import type { HTMLAttributes } from 'svelte/elements';
7
- import type { PortalOuterProps } from './types';
8
- import { PortalsBond, PortalBond, PortalState, type PortalStateProps } from '.';
9
- import { RootBond } from '../root';
10
- import { HtmlAtom, type ElementType, type Base } from '../atom';
11
- import { defineProperty, defineState } from '../../utils';
12
-
13
- type Element = ElementType<E>;
14
-
15
- let {
16
- class: klass = '',
17
- id,
18
- factory = _factory,
19
- children = undefined,
20
- onmount = undefined,
21
- ondestroy = undefined,
22
- animate = undefined,
23
- enter = undefined,
24
- exit = undefined,
25
- initial = undefined,
26
- ...restProps
27
- }: PortalOuterProps<E, B> & HTMLAttributes<Element> = $props();
28
-
29
- const rootBond = RootBond.get();
30
- const portalsBond = PortalsBond.get();
31
-
32
- const bondProps = defineState<PortalStateProps>([defineProperty('id', () => id), defineProperty('rest', () => restProps)]);
33
- const bond = factory(bondProps).share() as PortalBond;
34
-
35
- portalsBond?.state.set(id, bond);
36
-
37
- $effect(() => {
38
- if (rootBond) {
39
- rootBond.state.setPortal(id, bond);
40
- }
41
-
42
- return () => {
43
- portalsBond?.state.delete(id);
44
- bond.destroy();
45
- };
46
- });
47
-
48
- const rootProps = $derived({
49
- ...bond.root(),
50
- ...restProps
51
- });
52
-
53
- function _factory(props: typeof bondProps) {
54
- const portalState = new PortalState(() => props);
55
- return new PortalBond(portalState);
56
- }
57
-
58
- export function getBond() {
59
- return bond;
60
- }
61
- </script>
62
-
63
- <HtmlAtom
64
- {bond}
65
- preset="portal"
66
- class={['border-border pointer-events-none', '$preset', klass]}
67
- enter={enter?.bind(bond.state)}
68
- exit={exit?.bind(bond.state)}
69
- initial={initial?.bind(bond.state)}
70
- animate={animate?.bind(bond.state)}
71
- onmount={onmount?.bind(bond.state)}
72
- ondestroy={ondestroy?.bind(bond.state)}
73
- {...rootProps}
74
- >
75
- {@render children?.()}
76
- </HtmlAtom>
1
+ <script module lang="ts">
2
+ export type { PortalOuterProps } from './types';
3
+ </script>
4
+
5
+ <script lang="ts" generics="E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base">
6
+ import type { HTMLAttributes } from 'svelte/elements';
7
+ import type { PortalOuterProps } from './types';
8
+ import { PortalsBond, PortalBond, PortalState, type PortalStateProps } from '.';
9
+ import { RootBond } from '../root';
10
+ import { HtmlAtom, type ElementType, type Base } from '../atom';
11
+ import { defineProperty, defineState } from '../../utils';
12
+
13
+ type Element = ElementType<E>;
14
+
15
+ let {
16
+ class: klass = '',
17
+ id,
18
+ factory = _factory,
19
+ children = undefined,
20
+ onmount = undefined,
21
+ ondestroy = undefined,
22
+ animate = undefined,
23
+ enter = undefined,
24
+ exit = undefined,
25
+ initial = undefined,
26
+ ...restProps
27
+ }: PortalOuterProps<E, B> & HTMLAttributes<Element> = $props();
28
+
29
+ const rootBond = RootBond.get();
30
+ const portalsBond = PortalsBond.get();
31
+
32
+ const bondProps = defineState<PortalStateProps>([defineProperty('id', () => id), defineProperty('rest', () => restProps)]);
33
+ const bond = factory(bondProps).share() as PortalBond;
34
+
35
+ portalsBond?.state.set(id, bond);
36
+
37
+ $effect(() => {
38
+ if (rootBond) {
39
+ rootBond.state.setPortal(id, bond);
40
+ }
41
+
42
+ return () => {
43
+ portalsBond?.state.delete(id);
44
+ bond.destroy();
45
+ };
46
+ });
47
+
48
+ const rootProps = $derived({
49
+ ...bond.root().spread,
50
+ ...restProps
51
+ });
52
+
53
+ function _factory(props: typeof bondProps) {
54
+ const portalState = new PortalState(() => props);
55
+ return new PortalBond(portalState);
56
+ }
57
+
58
+ export function getBond() {
59
+ return bond;
60
+ }
61
+ </script>
62
+
63
+ <HtmlAtom
64
+ {bond}
65
+ preset="portal"
66
+ class={['border-border pointer-events-none', '$preset', klass]}
67
+ enter={enter?.bind(bond.state)}
68
+ exit={exit?.bind(bond.state)}
69
+ initial={initial?.bind(bond.state)}
70
+ animate={animate?.bind(bond.state)}
71
+ onmount={onmount?.bind(bond.state)}
72
+ ondestroy={ondestroy?.bind(bond.state)}
73
+ {...rootProps}
74
+ >
75
+ {@render children?.()}
76
+ </HtmlAtom>
@@ -3,7 +3,7 @@ import type { HTMLAttributes } from 'svelte/elements';
3
3
  import { PortalBond } from '.';
4
4
  import { type ElementType, type Base } from '../atom';
5
5
  declare function $$render<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base>(): {
6
- props: import("../atom").HtmlAtomProps<E, B> & import("./types").PortalOuterExtendProps & {
6
+ props: import("../atom").HtmlAtomProps<E, B, import("./types").PortalChildren> & {
7
7
  id: import("../root/root.svelte").RootPortals | (string & {});
8
8
  children?: import("svelte").Snippet;
9
9
  } & HTMLAttributes<ElementType<E>>;
@@ -1,5 +1,5 @@
1
- import type { PortalBond } from '../bond.svelte.js';
2
- import { Bond, BondState, type BondStateProps } from '../../../shared/bond.svelte.js';
1
+ import type { PortalBond } from '../bond.svelte';
2
+ import { Bond, BondState, type BondStateProps } from '../../../shared/bond.svelte';
3
3
  export type PortalsStateProps = BondStateProps & {
4
4
  id: string;
5
5
  };
@@ -1,10 +1,10 @@
1
1
  import { SvelteMap } from 'svelte/reactivity';
2
2
  import { getContext, setContext } from 'svelte';
3
- import { Bond, BondState } from '../../../shared/bond.svelte.js';
3
+ import { Bond, BondState } from '../../../shared/bond.svelte';
4
4
  export class PortalsBond extends Bond {
5
5
  static CONTEXT_KEY = '@atoms/context/portals';
6
6
  constructor(bond) {
7
- super(bond);
7
+ super(bond, 'portals');
8
8
  }
9
9
  share() {
10
10
  return PortalsBond.set(this);