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

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 (695) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +80 -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 +8 -9
  10. package/dist/components/accordion/item/accordion-item-header.svelte +1 -14
  11. package/dist/components/accordion/item/accordion-item-indicator.svelte +1 -13
  12. package/dist/components/accordion/item/accordion-item-root.svelte +3 -14
  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-actions.svelte +0 -12
  18. package/dist/components/alert/alert-close-button.svelte +0 -12
  19. package/dist/components/alert/alert-content.svelte +0 -12
  20. package/dist/components/alert/alert-description.svelte +0 -12
  21. package/dist/components/alert/alert-icon.svelte +0 -12
  22. package/dist/components/alert/alert-root.svelte +56 -68
  23. package/dist/components/alert/alert-title.svelte +0 -12
  24. package/dist/components/alert/types.d.ts +12 -46
  25. package/dist/components/atom/html-atom.svelte +98 -95
  26. package/dist/components/atom/html-atom.svelte.d.ts +1 -2
  27. package/dist/components/atom/index.d.ts +1 -0
  28. package/dist/components/atom/index.js +1 -0
  29. package/dist/components/atom/types.d.ts +61 -10
  30. package/dist/components/atom/types.js +1 -1
  31. package/dist/components/atom/utils/base.d.ts +6 -0
  32. package/dist/components/atom/utils/base.js +8 -0
  33. package/dist/components/atom/utils/cache.d.ts +17 -0
  34. package/dist/components/atom/utils/cache.js +134 -0
  35. package/dist/components/atom/utils/classes.d.ts +14 -0
  36. package/dist/components/atom/utils/classes.js +42 -0
  37. package/dist/components/atom/utils/constants.d.ts +9 -0
  38. package/dist/components/atom/utils/constants.js +9 -0
  39. package/dist/components/atom/utils/index.d.ts +6 -0
  40. package/dist/components/atom/utils/index.js +5 -0
  41. package/dist/components/atom/utils/preset.d.ts +22 -0
  42. package/dist/components/atom/utils/preset.js +94 -0
  43. package/dist/components/atom/utils/props.d.ts +13 -0
  44. package/dist/components/atom/utils/props.js +60 -0
  45. package/dist/components/atom/utils/variants.d.ts +31 -0
  46. package/dist/components/atom/utils/variants.js +270 -0
  47. package/dist/components/avatar/types.d.ts +1 -6
  48. package/dist/components/badge/index.d.ts +1 -0
  49. package/dist/components/badge/types.d.ts +4 -7
  50. package/dist/components/button/button.svelte +31 -31
  51. package/dist/components/button/types.d.ts +9 -6
  52. package/dist/components/calendar/calendar-body.svelte +0 -1
  53. package/dist/components/calendar/calendar-day.svelte +99 -99
  54. package/dist/components/calendar/calendar-header.svelte +1 -1
  55. package/dist/components/calendar/calendar-root.svelte +206 -206
  56. package/dist/components/calendar/calendar-root.svelte.d.ts +1 -1
  57. package/dist/components/calendar/calendar-week-day.svelte +33 -33
  58. package/dist/components/calendar/types.d.ts +7 -10
  59. package/dist/components/card/card-body.svelte +0 -12
  60. package/dist/components/card/card-description.svelte +0 -12
  61. package/dist/components/card/card-footer.svelte +0 -12
  62. package/dist/components/card/card-header.svelte +0 -12
  63. package/dist/components/card/card-media.svelte +0 -12
  64. package/dist/components/card/card-root.svelte +80 -92
  65. package/dist/components/card/card-subtitle.svelte +0 -12
  66. package/dist/components/card/card-title.svelte +0 -12
  67. package/dist/components/card/types.d.ts +12 -51
  68. package/dist/components/checkbox/checkbox.svelte +65 -55
  69. package/dist/components/checkbox/checkbox.svelte.d.ts +1 -3
  70. package/dist/components/checkbox/index.d.ts +2 -0
  71. package/dist/components/checkbox/index.js +1 -0
  72. package/dist/components/checkbox/motion.d.ts +17 -0
  73. package/dist/components/checkbox/motion.js +34 -0
  74. package/dist/components/checkbox/types.d.ts +14 -7
  75. package/dist/components/chip/chip-close-button.svelte +33 -0
  76. package/dist/components/chip/chip-close-button.svelte.d.ts +4 -0
  77. package/dist/components/chip/chip.svelte +34 -41
  78. package/dist/components/chip/chip.svelte.d.ts +1 -3
  79. package/dist/components/chip/index.d.ts +2 -0
  80. package/dist/components/chip/index.js +2 -0
  81. package/dist/components/chip/types.d.ts +15 -8
  82. package/dist/components/collapsible/bond.svelte.d.ts +34 -24
  83. package/dist/components/collapsible/bond.svelte.js +73 -60
  84. package/dist/components/collapsible/collapsible-body.svelte +6 -13
  85. package/dist/components/collapsible/collapsible-header.svelte +1 -13
  86. package/dist/components/collapsible/collapsible-indicator.svelte +1 -13
  87. package/dist/components/collapsible/collapsible-root.svelte +55 -67
  88. package/dist/components/collapsible/types.d.ts +10 -22
  89. package/dist/components/combobox/bond.svelte.d.ts +13 -8
  90. package/dist/components/combobox/bond.svelte.js +30 -20
  91. package/dist/components/combobox/combobox-control.svelte +54 -66
  92. package/dist/components/combobox/combobox-item.svelte +50 -62
  93. package/dist/components/combobox/combobox-item.svelte.d.ts +0 -6
  94. package/dist/components/combobox/combobox-root.svelte +65 -65
  95. package/dist/components/combobox/combobox-root.svelte.d.ts +2 -2
  96. package/dist/components/combobox/combobox-selections.svelte +17 -17
  97. package/dist/components/combobox/combobox-trigger.svelte +34 -34
  98. package/dist/components/combobox/index.d.ts +1 -1
  99. package/dist/components/combobox/types.d.ts +6 -10
  100. package/dist/components/container/container.svelte +0 -12
  101. package/dist/components/container/index.d.ts +1 -0
  102. package/dist/components/container/types.d.ts +6 -12
  103. package/dist/components/context-menu/atoms.d.ts +4 -0
  104. package/dist/components/context-menu/atoms.js +4 -0
  105. package/dist/components/context-menu/context-menu-content.svelte +52 -0
  106. package/dist/components/context-menu/context-menu-content.svelte.d.ts +27 -0
  107. package/dist/components/context-menu/context-menu-root.svelte +8 -0
  108. package/dist/components/context-menu/context-menu-root.svelte.d.ts +4 -0
  109. package/dist/components/context-menu/context-menu-trigger.svelte +59 -0
  110. package/dist/components/context-menu/context-menu-trigger.svelte.d.ts +27 -0
  111. package/dist/components/context-menu/index.d.ts +2 -0
  112. package/dist/components/context-menu/index.js +2 -0
  113. package/dist/components/{contextmenu → context-menu}/types.d.ts +1 -6
  114. package/dist/components/datagrid/atoms.d.ts +11 -5
  115. package/dist/components/datagrid/atoms.js +11 -5
  116. package/dist/components/datagrid/bond.svelte.d.ts +29 -14
  117. package/dist/components/datagrid/bond.svelte.js +45 -33
  118. package/dist/components/datagrid/cell/bond.svelte.d.ts +29 -0
  119. package/dist/components/datagrid/cell/bond.svelte.js +42 -0
  120. package/dist/components/datagrid/cell/datagrid-cell.svelte +49 -0
  121. package/dist/components/datagrid/cell/datagrid-cell.svelte.d.ts +26 -0
  122. package/dist/components/datagrid/cell/index.d.ts +4 -0
  123. package/dist/components/datagrid/cell/index.js +4 -0
  124. package/dist/components/datagrid/col/index.d.ts +4 -0
  125. package/dist/components/datagrid/col/index.js +4 -0
  126. package/dist/components/datagrid/column/bond.svelte.d.ts +45 -0
  127. package/dist/components/datagrid/column/bond.svelte.js +76 -0
  128. package/dist/components/datagrid/{th/datagrid-th-sort-icon.svelte → column/datagrid-column-sort-icon.svelte} +6 -15
  129. package/dist/components/datagrid/{th/datagrid-th.svelte.d.ts → column/datagrid-column-sort-icon.svelte.d.ts} +6 -5
  130. package/dist/components/datagrid/{th/datagrid-th.svelte → column/datagrid-column.svelte} +27 -36
  131. package/dist/components/datagrid/column/datagrid-column.svelte.d.ts +26 -0
  132. package/dist/components/datagrid/column/index.d.ts +4 -0
  133. package/dist/components/datagrid/column/index.js +4 -0
  134. package/dist/components/datagrid/context.d.ts +2 -29
  135. package/dist/components/datagrid/context.js +4 -18
  136. package/dist/components/datagrid/datagrid-body.svelte +24 -21
  137. package/dist/components/datagrid/datagrid-body.svelte.d.ts +8 -15
  138. package/dist/components/datagrid/datagrid-checkbox.svelte +60 -63
  139. package/dist/components/datagrid/datagrid-checkbox.svelte.d.ts +1 -3
  140. package/dist/components/datagrid/datagrid-footer.svelte +27 -34
  141. package/dist/components/datagrid/datagrid-footer.svelte.d.ts +12 -12
  142. package/dist/components/datagrid/datagrid-header.svelte +10 -17
  143. package/dist/components/datagrid/datagrid-header.svelte.d.ts +12 -12
  144. package/dist/components/datagrid/datagrid-root.svelte +49 -59
  145. package/dist/components/datagrid/datagrid-root.svelte.d.ts +15 -14
  146. package/dist/components/datagrid/row/bond.svelte.d.ts +42 -0
  147. package/dist/components/datagrid/row/bond.svelte.js +72 -0
  148. package/dist/components/datagrid/{tr/datagrid-tr.css → row/datagrid-row.css} +1 -1
  149. package/dist/components/datagrid/row/datagrid-row.svelte +64 -0
  150. package/dist/components/datagrid/row/datagrid-row.svelte.d.ts +27 -0
  151. package/dist/components/datagrid/row/index.d.ts +4 -0
  152. package/dist/components/datagrid/row/index.js +4 -0
  153. package/dist/components/datagrid/types.d.ts +56 -116
  154. package/dist/components/date-picker/bond.svelte.d.ts +0 -12
  155. package/dist/components/date-picker/date-picker-calendar.svelte +58 -58
  156. package/dist/components/date-picker/date-picker-months.svelte +1 -1
  157. package/dist/components/date-picker/date-picker-root.svelte +96 -96
  158. package/dist/components/date-picker/date-picker-root.svelte.d.ts +1 -1
  159. package/dist/components/date-picker/date-picker-years.svelte +1 -1
  160. package/dist/components/date-picker/types.d.ts +6 -3
  161. package/dist/components/dialog/atoms.d.ts +1 -1
  162. package/dist/components/dialog/atoms.js +1 -1
  163. package/dist/components/dialog/bond.svelte.d.ts +66 -28
  164. package/dist/components/dialog/bond.svelte.js +136 -117
  165. package/dist/components/dialog/dialog-body.svelte +1 -13
  166. package/dist/components/dialog/dialog-close-button.svelte +0 -12
  167. package/dist/components/dialog/dialog-close.svelte +46 -0
  168. package/dist/components/dialog/dialog-close.svelte.d.ts +26 -0
  169. package/dist/components/dialog/dialog-content.svelte +6 -14
  170. package/dist/components/dialog/dialog-description.svelte +1 -13
  171. package/dist/components/dialog/dialog-footer.svelte +1 -13
  172. package/dist/components/dialog/dialog-header.svelte +1 -13
  173. package/dist/components/dialog/dialog-root.svelte +102 -82
  174. package/dist/components/dialog/dialog-title.svelte +1 -13
  175. package/dist/components/dialog/index.d.ts +3 -0
  176. package/dist/components/dialog/index.js +3 -0
  177. package/dist/components/dialog/motion.svelte.js +68 -26
  178. package/dist/components/dialog/types.d.ts +16 -51
  179. package/dist/components/divider/types.d.ts +1 -6
  180. package/dist/components/drawer/bond.svelte.d.ts +61 -36
  181. package/dist/components/drawer/bond.svelte.js +149 -121
  182. package/dist/components/drawer/drawer-backdrop.svelte +2 -13
  183. package/dist/components/drawer/drawer-body.svelte +1 -13
  184. package/dist/components/drawer/drawer-content.svelte +8 -15
  185. package/dist/components/drawer/drawer-content.svelte.d.ts +4 -1
  186. package/dist/components/drawer/drawer-description.svelte +1 -13
  187. package/dist/components/drawer/drawer-footer.svelte +1 -13
  188. package/dist/components/drawer/drawer-header.svelte +1 -13
  189. package/dist/components/drawer/drawer-root.svelte +97 -87
  190. package/dist/components/drawer/drawer-title.svelte +1 -13
  191. package/dist/components/drawer/motion.d.ts +59 -5
  192. package/dist/components/drawer/motion.js +133 -15
  193. package/dist/components/drawer/types.d.ts +15 -24
  194. package/dist/components/dropdown/atoms.d.ts +4 -8
  195. package/dist/components/dropdown/atoms.js +4 -9
  196. package/dist/components/dropdown/bond.svelte.d.ts +4 -53
  197. package/dist/components/dropdown/bond.svelte.js +4 -89
  198. package/dist/components/dropdown/dropdown-placeholder.svelte +0 -6
  199. package/dist/components/dropdown/dropdown-placeholder.svelte.d.ts +0 -6
  200. package/dist/components/dropdown/dropdown-query.svelte +31 -43
  201. package/dist/components/dropdown/dropdown-root.svelte +79 -79
  202. package/dist/components/dropdown/dropdown-root.svelte.d.ts +4 -4
  203. package/dist/components/dropdown/dropdown-selection.svelte +55 -55
  204. package/dist/components/dropdown/dropdown-selections.svelte +70 -70
  205. package/dist/components/dropdown/dropdown-trigger.svelte +30 -30
  206. package/dist/components/dropdown/index.d.ts +43 -7
  207. package/dist/components/dropdown/index.js +34 -6
  208. package/dist/components/dropdown/item/bond.svelte.d.ts +36 -0
  209. package/dist/components/dropdown/item/bond.svelte.js +85 -0
  210. package/dist/components/dropdown/item/controller.svelte.d.ts +1 -1
  211. package/dist/components/dropdown/item/dropdown-item.svelte +81 -107
  212. package/dist/components/dropdown/item/index.d.ts +11 -3
  213. package/dist/components/dropdown/item/index.js +10 -3
  214. package/dist/components/dropdown/types.d.ts +2 -67
  215. package/dist/components/dropdown-menu/atoms.d.ts +9 -0
  216. package/dist/components/dropdown-menu/atoms.js +9 -0
  217. package/dist/components/dropdown-menu/attachments.svelte.d.ts +2 -0
  218. package/dist/components/dropdown-menu/attachments.svelte.js +5 -0
  219. package/dist/components/dropdown-menu/bond.svelte.d.ts +68 -0
  220. package/dist/components/dropdown-menu/bond.svelte.js +173 -0
  221. package/dist/components/dropdown-menu/dropdown-menu-content.svelte +28 -0
  222. package/dist/components/dropdown-menu/dropdown-menu-content.svelte.d.ts +31 -0
  223. package/dist/components/dropdown-menu/dropdown-menu-root.svelte +14 -0
  224. package/dist/components/dropdown-menu/dropdown-menu-root.svelte.d.ts +4 -0
  225. package/dist/components/dropdown-menu/index.d.ts +7 -0
  226. package/dist/components/dropdown-menu/index.js +6 -0
  227. package/dist/components/dropdown-menu/item/bond.svelte.d.ts +26 -0
  228. package/dist/components/dropdown-menu/item/bond.svelte.js +54 -0
  229. package/dist/components/dropdown-menu/item/controller.svelte.d.ts +39 -0
  230. package/dist/components/dropdown-menu/item/controller.svelte.js +73 -0
  231. package/dist/components/dropdown-menu/item/dropdown-menu-item.svelte +75 -0
  232. package/dist/components/dropdown-menu/item/dropdown-menu-item.svelte.d.ts +32 -0
  233. package/dist/components/dropdown-menu/item/index.d.ts +3 -0
  234. package/dist/components/dropdown-menu/item/index.js +3 -0
  235. package/dist/components/dropdown-menu/item/types.d.ts +57 -0
  236. package/dist/components/dropdown-menu/item/types.js +1 -0
  237. package/dist/components/dropdown-menu/types.d.ts +3 -0
  238. package/dist/components/dropdown-menu/types.js +1 -0
  239. package/dist/components/element/html-element.svelte +114 -85
  240. package/dist/components/element/html-element.svelte.d.ts +1 -1
  241. package/dist/components/element/svg-element.svelte +88 -88
  242. package/dist/components/element/types.d.ts +32 -20
  243. package/dist/components/form/field/atoms.d.ts +1 -1
  244. package/dist/components/form/field/atoms.js +1 -1
  245. package/dist/components/form/field/bond.svelte.d.ts +29 -17
  246. package/dist/components/form/field/bond.svelte.js +73 -55
  247. package/dist/components/form/field/field-control.svelte +36 -12
  248. package/dist/components/form/field/field-control.svelte.d.ts +12 -22
  249. package/dist/components/form/field/field-helper-text.svelte +23 -0
  250. package/dist/components/form/field/field-helper-text.svelte.d.ts +26 -0
  251. package/dist/components/form/field/field-label.svelte +6 -8
  252. package/dist/components/form/field/field-label.svelte.d.ts +2 -2
  253. package/dist/components/form/field/field-root.svelte +18 -8
  254. package/dist/components/form/form-root.svelte +66 -66
  255. package/dist/components/form/types.d.ts +34 -58
  256. package/dist/components/icon/icon.svelte +40 -40
  257. package/dist/components/icon/types.d.ts +4 -7
  258. package/dist/components/image/index.d.ts +2 -0
  259. package/dist/components/image/index.js +2 -1
  260. package/dist/components/index.d.ts +13 -0
  261. package/dist/components/index.js +13 -0
  262. package/dist/components/input/atoms.d.ts +19 -1
  263. package/dist/components/input/atoms.js +19 -1
  264. package/dist/components/input/color/color-control.svelte +197 -0
  265. package/dist/components/input/color/color-control.svelte.d.ts +4 -0
  266. package/dist/components/input/color/index.d.ts +5 -0
  267. package/dist/components/input/color/index.js +5 -0
  268. package/dist/components/input/color/segment.svelte +240 -0
  269. package/dist/components/input/color/segment.svelte.d.ts +6 -0
  270. package/dist/components/input/color/shared.d.ts +23 -0
  271. package/dist/components/input/color/shared.js +349 -0
  272. package/dist/components/input/color/swatch.svelte +23 -0
  273. package/dist/components/input/color/swatch.svelte.d.ts +8 -0
  274. package/dist/components/input/color/types.d.ts +56 -0
  275. package/dist/components/input/color/types.js +2 -0
  276. package/dist/components/input/index.d.ts +1 -0
  277. package/dist/components/input/index.js +1 -0
  278. package/dist/components/input/input-control.svelte +3 -1
  279. package/dist/components/input/input-currency-control.svelte +189 -0
  280. package/dist/components/input/input-currency-control.svelte.d.ts +4 -0
  281. package/dist/components/input/input-email-control.svelte +128 -0
  282. package/dist/components/input/input-email-control.svelte.d.ts +4 -0
  283. package/dist/components/input/input-file-control.svelte +115 -0
  284. package/dist/components/input/input-file-control.svelte.d.ts +4 -0
  285. package/dist/components/input/input-icon.svelte +3 -3
  286. package/dist/components/input/input-icon.svelte.d.ts +1 -1
  287. package/dist/components/input/input-location.svelte +335 -0
  288. package/dist/components/input/input-location.svelte.d.ts +4 -0
  289. package/dist/components/input/input-number-control.svelte +107 -0
  290. package/dist/components/input/input-number-control.svelte.d.ts +6 -0
  291. package/dist/components/input/input-otp-control.svelte +206 -0
  292. package/dist/components/input/input-otp-control.svelte.d.ts +4 -0
  293. package/dist/components/input/input-password-control.svelte +91 -0
  294. package/dist/components/input/input-password-control.svelte.d.ts +3 -0
  295. package/dist/components/input/input-phone-control.svelte +394 -0
  296. package/dist/components/input/input-phone-control.svelte.d.ts +4 -0
  297. package/dist/components/input/input-placeholder.svelte.d.ts +1 -1
  298. package/dist/components/input/input-root.svelte +74 -74
  299. package/dist/components/input/input-text-control.svelte +64 -0
  300. package/dist/components/input/input-text-control.svelte.d.ts +4 -0
  301. package/dist/components/input/input-url-control.svelte +218 -0
  302. package/dist/components/input/input-url-control.svelte.d.ts +4 -0
  303. package/dist/components/input/time/datetime-control.svelte +281 -0
  304. package/dist/components/input/time/datetime-control.svelte.d.ts +5 -0
  305. package/dist/components/input/time/index.d.ts +6 -0
  306. package/dist/components/input/time/index.js +6 -0
  307. package/dist/components/input/time/segment.svelte +143 -0
  308. package/dist/components/input/time/segment.svelte.d.ts +6 -0
  309. package/dist/components/input/time/shared.d.ts +29 -0
  310. package/dist/components/input/time/shared.js +150 -0
  311. package/dist/components/input/time/time-control.svelte +237 -0
  312. package/dist/components/input/time/time-control.svelte.d.ts +3 -0
  313. package/dist/components/input/time/types.d.ts +34 -0
  314. package/dist/components/input/time/types.js +4 -0
  315. package/dist/components/input/types.d.ts +355 -17
  316. package/dist/components/kbd/index.d.ts +3 -0
  317. package/dist/components/kbd/index.js +3 -0
  318. package/dist/components/kbd/kbd.svelte +19 -0
  319. package/dist/components/kbd/kbd.svelte.d.ts +4 -0
  320. package/dist/components/kbd/shortcut.svelte +38 -0
  321. package/dist/components/kbd/shortcut.svelte.d.ts +4 -0
  322. package/dist/components/kbd/types.d.ts +20 -0
  323. package/dist/components/kbd/types.js +1 -0
  324. package/dist/components/label/types.d.ts +4 -7
  325. package/dist/components/layer/bond.svelte.d.ts +2 -2
  326. package/dist/components/layer/bond.svelte.js +1 -1
  327. package/dist/components/layer/index.d.ts +1 -0
  328. package/dist/components/layer/layer-inner.svelte +0 -12
  329. package/dist/components/layer/layer-inner.svelte.d.ts +1 -1
  330. package/dist/components/layer/layer-root.svelte +53 -65
  331. package/dist/components/layer/layer-root.svelte.d.ts +1 -1
  332. package/dist/components/layer/types.d.ts +6 -6
  333. package/dist/components/lazy/index.d.ts +1 -0
  334. package/dist/components/lazy/lazy.svelte +29 -29
  335. package/dist/components/lazy/types.d.ts +4 -4
  336. package/dist/components/link/index.d.ts +1 -0
  337. package/dist/components/link/types.d.ts +5 -6
  338. package/dist/components/list/index.d.ts +1 -0
  339. package/dist/components/list/types.d.ts +5 -6
  340. package/dist/components/menu/atoms.d.ts +2 -7
  341. package/dist/components/menu/atoms.js +2 -7
  342. package/dist/components/menu/bond.svelte.d.ts +9 -23
  343. package/dist/components/menu/bond.svelte.js +6 -0
  344. package/dist/components/menu/index.d.ts +40 -4
  345. package/dist/components/menu/index.js +26 -3
  346. package/dist/components/menu/item/bond.svelte.d.ts +27 -0
  347. package/dist/components/menu/item/bond.svelte.js +54 -0
  348. package/dist/components/menu/item/controller.svelte.d.ts +1 -1
  349. package/dist/components/menu/item/index.d.ts +5 -2
  350. package/dist/components/menu/item/index.js +4 -2
  351. package/dist/components/menu/item/menu-item.svelte +87 -103
  352. package/dist/components/menu/item/menu-item.svelte.d.ts +15 -14
  353. package/dist/components/menu/item/types.d.ts +5 -12
  354. package/dist/components/menu/menu-content.svelte +28 -40
  355. package/dist/components/menu/menu-content.svelte.d.ts +0 -6
  356. package/dist/components/menu/menu-root.svelte +15 -15
  357. package/dist/components/menu/menu-root.svelte.d.ts +1 -1
  358. package/dist/components/menu/types.d.ts +2 -6
  359. package/dist/components/popover/bond.svelte.d.ts +95 -39
  360. package/dist/components/popover/bond.svelte.js +212 -197
  361. package/dist/components/popover/index.d.ts +4 -1
  362. package/dist/components/popover/index.js +4 -1
  363. package/dist/components/popover/motion.svelte.d.ts +34 -0
  364. package/dist/components/popover/motion.svelte.js +135 -0
  365. package/dist/components/popover/popover-arrow.svelte +99 -110
  366. package/dist/components/popover/popover-arrow.svelte.d.ts +1 -2
  367. package/dist/components/popover/popover-content.svelte +86 -123
  368. package/dist/components/popover/popover-indicator.svelte +2 -13
  369. package/dist/components/popover/popover-indicator.svelte.d.ts +0 -6
  370. package/dist/components/popover/popover-overlay.svelte +98 -0
  371. package/dist/components/popover/popover-overlay.svelte.d.ts +4 -0
  372. package/dist/components/popover/popover-root.svelte +87 -49
  373. package/dist/components/popover/popover-root.svelte.d.ts +2 -1
  374. package/dist/components/popover/popover-trigger.svelte +44 -35
  375. package/dist/components/popover/strategies/floating.svelte +109 -0
  376. package/dist/components/popover/strategies/floating.svelte.d.ts +3 -0
  377. package/dist/components/popover/strategies/index.d.ts +1 -0
  378. package/dist/components/popover/strategies/index.js +1 -0
  379. package/dist/components/popover/strategy-types.d.ts +40 -0
  380. package/dist/components/popover/strategy-types.js +1 -0
  381. package/dist/components/popover/types.d.ts +17 -38
  382. package/dist/components/portal/active-portal.svelte +5 -4
  383. package/dist/components/portal/bond.svelte.d.ts +12 -8
  384. package/dist/components/portal/bond.svelte.js +25 -27
  385. package/dist/components/portal/index.d.ts +1 -0
  386. package/dist/components/portal/index.js +1 -0
  387. package/dist/components/portal/portal-inner.svelte +1 -13
  388. package/dist/components/portal/portal-inner.svelte.d.ts +1 -1
  389. package/dist/components/portal/portal-root.svelte +64 -76
  390. package/dist/components/portal/portal-root.svelte.d.ts +1 -1
  391. package/dist/components/portal/portals/bond.svelte.d.ts +2 -2
  392. package/dist/components/portal/portals/bond.svelte.js +2 -2
  393. package/dist/components/portal/teleport.svelte +47 -49
  394. package/dist/components/portal/teleport.svelte.d.ts +1 -2
  395. package/dist/components/portal/types.d.ts +7 -25
  396. package/dist/components/portal/utils.js +3 -3
  397. package/dist/components/portal/zlayer.svelte.d.ts +16 -0
  398. package/dist/components/portal/zlayer.svelte.js +25 -0
  399. package/dist/components/progress/index.d.ts +3 -0
  400. package/dist/components/progress/index.js +3 -0
  401. package/dist/components/progress/progress-circular.svelte +99 -0
  402. package/dist/components/progress/progress-circular.svelte.d.ts +6 -0
  403. package/dist/components/progress/progress-linear.svelte +66 -0
  404. package/dist/components/progress/progress-linear.svelte.d.ts +6 -0
  405. package/dist/components/progress/types.d.ts +18 -0
  406. package/dist/components/progress/types.js +1 -0
  407. package/dist/components/radio/index.d.ts +2 -0
  408. package/dist/components/radio/index.js +1 -0
  409. package/dist/components/radio/motion.d.ts +24 -0
  410. package/dist/components/radio/motion.js +59 -0
  411. package/dist/components/radio/radio.svelte +22 -12
  412. package/dist/components/radio/types.d.ts +5 -14
  413. package/dist/components/root/bond.svelte.d.ts +2 -2
  414. package/dist/components/root/bond.svelte.js +1 -1
  415. package/dist/components/root/root.svelte +82 -92
  416. package/dist/components/root/root.svelte.d.ts +2 -2
  417. package/dist/components/root/types.d.ts +4 -15
  418. package/dist/components/scrollable/atoms.d.ts +1 -0
  419. package/dist/components/scrollable/atoms.js +1 -0
  420. package/dist/components/scrollable/bond.svelte.d.ts +73 -189
  421. package/dist/components/scrollable/bond.svelte.js +195 -371
  422. package/dist/components/scrollable/scrollable-container.css +22 -22
  423. package/dist/components/scrollable/scrollable-container.svelte +54 -61
  424. package/dist/components/scrollable/scrollable-container.svelte.d.ts +12 -12
  425. package/dist/components/scrollable/scrollable-content.svelte +10 -17
  426. package/dist/components/scrollable/scrollable-content.svelte.d.ts +12 -12
  427. package/dist/components/scrollable/scrollable-root.svelte +94 -101
  428. package/dist/components/scrollable/scrollable-root.svelte.d.ts +12 -12
  429. package/dist/components/scrollable/scrollable-thumb.svelte +10 -45
  430. package/dist/components/scrollable/scrollable-thumb.svelte.d.ts +12 -12
  431. package/dist/components/scrollable/scrollable-track.svelte +9 -22
  432. package/dist/components/scrollable/scrollable-track.svelte.d.ts +12 -12
  433. package/dist/components/scrollable/types.d.ts +15 -38
  434. package/dist/components/select/atoms.d.ts +8 -0
  435. package/dist/components/select/atoms.js +8 -0
  436. package/dist/components/select/attachments.svelte.d.ts +2 -0
  437. package/dist/components/select/attachments.svelte.js +5 -0
  438. package/dist/components/select/bond.svelte.d.ts +52 -0
  439. package/dist/components/select/bond.svelte.js +112 -0
  440. package/dist/components/select/index.d.ts +11 -0
  441. package/dist/components/select/index.js +10 -0
  442. package/dist/components/select/item/attachments.svelte.d.ts +3 -0
  443. package/dist/components/select/item/attachments.svelte.js +6 -0
  444. package/dist/components/select/item/bond.svelte.d.ts +33 -0
  445. package/dist/components/select/item/bond.svelte.js +77 -0
  446. package/dist/components/select/item/controller.svelte.d.ts +39 -0
  447. package/dist/components/select/item/controller.svelte.js +105 -0
  448. package/dist/components/select/item/index.d.ts +5 -0
  449. package/dist/components/select/item/index.js +5 -0
  450. package/dist/components/select/item/select-item.svelte +81 -0
  451. package/dist/components/select/item/select-item.svelte.d.ts +25 -0
  452. package/dist/components/select/item/types.d.ts +29 -0
  453. package/dist/components/select/item/types.js +1 -0
  454. package/dist/components/select/runes.svelte.d.ts +10 -0
  455. package/dist/components/select/runes.svelte.js +15 -0
  456. package/dist/components/select/select-placeholder.svelte +34 -0
  457. package/dist/components/select/select-placeholder.svelte.d.ts +28 -0
  458. package/dist/components/select/select-root.svelte +80 -0
  459. package/dist/components/select/select-root.svelte.d.ts +30 -0
  460. package/dist/components/select/select-selection.svelte +55 -0
  461. package/dist/components/select/select-selection.svelte.d.ts +26 -0
  462. package/dist/components/select/select-selections.svelte +70 -0
  463. package/dist/components/select/select-selections.svelte.d.ts +5 -0
  464. package/dist/components/select/select-trigger.svelte +30 -0
  465. package/dist/components/select/select-trigger.svelte.d.ts +26 -0
  466. package/dist/components/select/types.d.ts +61 -0
  467. package/dist/components/select/types.js +1 -0
  468. package/dist/components/sidebar/bond.svelte.d.ts +10 -7
  469. package/dist/components/sidebar/bond.svelte.js +20 -15
  470. package/dist/components/sidebar/sidebar-content.svelte +6 -13
  471. package/dist/components/sidebar/sidebar-root.svelte +50 -41
  472. package/dist/components/sidebar/types.d.ts +10 -15
  473. package/dist/components/slider/index.d.ts +2 -0
  474. package/dist/components/slider/index.js +2 -0
  475. package/dist/components/slider/slider.svelte +164 -0
  476. package/dist/components/slider/slider.svelte.d.ts +6 -0
  477. package/dist/components/slider/types.d.ts +78 -0
  478. package/dist/components/slider/types.js +1 -0
  479. package/dist/components/stack/bond.svelte.d.ts +50 -0
  480. package/dist/components/stack/bond.svelte.js +180 -0
  481. package/dist/components/stack/index.d.ts +2 -0
  482. package/dist/components/stack/index.js +2 -0
  483. package/dist/components/stack/stack-item.svelte +44 -4
  484. package/dist/components/stack/stack-item.svelte.d.ts +6 -5
  485. package/dist/components/stack/stack-root.svelte +33 -4
  486. package/dist/components/stack/stack-root.svelte.d.ts +14 -5
  487. package/dist/components/stack/types.d.ts +11 -10
  488. package/dist/components/stepper/bond.svelte.d.ts +8 -7
  489. package/dist/components/stepper/bond.svelte.js +14 -11
  490. package/dist/components/stepper/step/README.md +97 -97
  491. package/dist/components/stepper/step/bond.svelte.d.ts +74 -63
  492. package/dist/components/stepper/step/bond.svelte.js +105 -69
  493. package/dist/components/stepper/step/step-body.svelte +39 -39
  494. package/dist/components/stepper/step/step-description.svelte +33 -33
  495. package/dist/components/stepper/step/step-header.svelte +34 -34
  496. package/dist/components/stepper/step/step-indicator.svelte +62 -62
  497. package/dist/components/stepper/step/step-root.svelte +42 -42
  498. package/dist/components/stepper/step/step-separator.svelte +48 -48
  499. package/dist/components/stepper/step/step-title.svelte +33 -33
  500. package/dist/components/stepper/step/types.d.ts +13 -57
  501. package/dist/components/stepper/stepper-body.svelte +31 -43
  502. package/dist/components/stepper/stepper-content.svelte +45 -45
  503. package/dist/components/stepper/stepper-footer.svelte +31 -31
  504. package/dist/components/stepper/stepper-header.svelte +27 -39
  505. package/dist/components/stepper/stepper-root.svelte +55 -61
  506. package/dist/components/stepper/types.d.ts +10 -36
  507. package/dist/components/swatch/index.d.ts +1 -0
  508. package/dist/components/swatch/index.js +1 -0
  509. package/dist/components/swatch/swatch.svelte +57 -0
  510. package/dist/components/swatch/swatch.svelte.d.ts +9 -0
  511. package/dist/components/switch/index.d.ts +2 -0
  512. package/dist/components/switch/index.js +2 -0
  513. package/dist/components/switch/switch.svelte +78 -0
  514. package/dist/components/switch/switch.svelte.d.ts +6 -0
  515. package/dist/components/switch/types.d.ts +43 -0
  516. package/dist/components/switch/types.js +1 -0
  517. package/dist/components/tabs/bond.svelte.d.ts +38 -19
  518. package/dist/components/tabs/bond.svelte.js +53 -46
  519. package/dist/components/tabs/tab/attachments.svelte.d.ts +5 -2
  520. package/dist/components/tabs/tab/attachments.svelte.js +4 -3
  521. package/dist/components/tabs/tab/bond.svelte.d.ts +35 -23
  522. package/dist/components/tabs/tab/bond.svelte.js +81 -56
  523. package/dist/components/tabs/tab/tab-body.svelte +61 -43
  524. package/dist/components/tabs/tab/tab-description.svelte +33 -33
  525. package/dist/components/tabs/tab/tab-header.svelte +61 -61
  526. package/dist/components/tabs/tab/tab-root.svelte +49 -50
  527. package/dist/components/tabs/tab/tab-root.svelte.d.ts +13 -35
  528. package/dist/components/tabs/tabs-body.svelte +37 -35
  529. package/dist/components/tabs/tabs-body.svelte.d.ts +1 -1
  530. package/dist/components/tabs/tabs-content.svelte +32 -51
  531. package/dist/components/tabs/tabs-header.svelte +32 -32
  532. package/dist/components/tabs/tabs-root.svelte +64 -56
  533. package/dist/components/tabs/types.d.ts +20 -37
  534. package/dist/components/textarea/types.d.ts +6 -12
  535. package/dist/components/toast/atoms.d.ts +1 -0
  536. package/dist/components/toast/atoms.js +1 -0
  537. package/dist/components/toast/attachments.svelte.d.ts +10 -2
  538. package/dist/components/toast/attachments.svelte.js +9 -1
  539. package/dist/components/toast/bond.svelte.d.ts +73 -0
  540. package/dist/components/toast/bond.svelte.js +132 -0
  541. package/dist/components/toast/index.d.ts +1 -0
  542. package/dist/components/toast/index.js +1 -0
  543. package/dist/components/toast/toast-close.svelte +47 -0
  544. package/dist/components/toast/toast-close.svelte.d.ts +26 -0
  545. package/dist/components/toast/toast-description.svelte +16 -24
  546. package/dist/components/toast/toast-description.svelte.d.ts +15 -19
  547. package/dist/components/toast/toast-root.svelte +36 -26
  548. package/dist/components/toast/toast-root.svelte.d.ts +16 -15
  549. package/dist/components/toast/toast-title.svelte +17 -22
  550. package/dist/components/toast/toast-title.svelte.d.ts +13 -13
  551. package/dist/components/toast/toaster.svelte.d.ts +38 -0
  552. package/dist/components/toast/toaster.svelte.js +107 -0
  553. package/dist/components/toast/types.d.ts +14 -31
  554. package/dist/components/tooltip/index.d.ts +1 -0
  555. package/dist/components/tooltip/tooltip-trigger.svelte +39 -39
  556. package/dist/components/tooltip/types.d.ts +5 -8
  557. package/dist/components/tree/bond.svelte.d.ts +28 -19
  558. package/dist/components/tree/bond.svelte.js +62 -53
  559. package/dist/components/tree/tree-body.svelte +6 -13
  560. package/dist/components/tree/tree-header.svelte +1 -13
  561. package/dist/components/tree/tree-header.svelte.d.ts +1 -1
  562. package/dist/components/tree/tree-indicator.svelte +1 -13
  563. package/dist/components/tree/tree-root.svelte +54 -66
  564. package/dist/components/tree/types.d.ts +4 -28
  565. package/dist/components/virtual/index.d.ts +2 -0
  566. package/dist/components/virtual/index.js +2 -0
  567. package/dist/components/virtual/types.d.ts +1 -6
  568. package/dist/constants/motion.d.ts +9 -0
  569. package/dist/constants/motion.js +9 -0
  570. package/dist/context/index.d.ts +1 -1
  571. package/dist/context/preset.svelte.d.ts +186 -3
  572. package/dist/context/preset.svelte.js +29 -3
  573. package/dist/runes/color-scheme.svelte.js +17 -5
  574. package/dist/shared/bond.svelte.d.ts +29 -3
  575. package/dist/shared/bond.svelte.js +126 -4
  576. package/dist/shared/index.d.ts +1 -1
  577. package/dist/shared/index.js +1 -1
  578. package/dist/shared/motion.d.ts +1 -0
  579. package/dist/shared/motion.js +2 -8
  580. package/dist/types/index.d.ts +4 -0
  581. package/dist/utils/index.d.ts +1 -1
  582. package/dist/utils/index.js +1 -1
  583. package/dist/utils/promise.svelte.d.ts +5 -0
  584. package/dist/utils/promise.svelte.js +17 -0
  585. package/dist/utils/variant.d.ts +10 -1
  586. package/dist/utils/variant.js +11 -1
  587. package/package.json +171 -48
  588. package/dist/components/accordion/accordion.stories.svelte +0 -70
  589. package/dist/components/accordion/accordion.stories.svelte.d.ts +0 -18
  590. package/dist/components/alert/alert.stories.svelte +0 -400
  591. package/dist/components/alert/alert.stories.svelte.d.ts +0 -3
  592. package/dist/components/atom/utils.d.ts +0 -37
  593. package/dist/components/atom/utils.js +0 -208
  594. package/dist/components/avatar/avatar.stories.svelte +0 -22
  595. package/dist/components/avatar/avatar.stories.svelte.d.ts +0 -26
  596. package/dist/components/badge/badge.stories.svelte +0 -12
  597. package/dist/components/badge/badge.stories.svelte.d.ts +0 -26
  598. package/dist/components/breadcrumb/breadcrumb.stories.svelte +0 -16
  599. package/dist/components/breadcrumb/breadcrumb.stories.svelte.d.ts +0 -26
  600. package/dist/components/button/button.stories.svelte +0 -27
  601. package/dist/components/button/button.stories.svelte.d.ts +0 -18
  602. package/dist/components/calendar/calendar.stories.svelte +0 -26
  603. package/dist/components/calendar/calendar.stories.svelte.d.ts +0 -26
  604. package/dist/components/card/card.stories.svelte +0 -133
  605. package/dist/components/card/card.stories.svelte.d.ts +0 -19
  606. package/dist/components/checkbox/checkbox.stories.svelte +0 -22
  607. package/dist/components/checkbox/checkbox.stories.svelte.d.ts +0 -6
  608. package/dist/components/collapsible/collapsible.stories.svelte +0 -172
  609. package/dist/components/collapsible/collapsible.stories.svelte.d.ts +0 -18
  610. package/dist/components/combobox/combobox.stories.svelte +0 -63
  611. package/dist/components/combobox/combobox.stories.svelte.d.ts +0 -3
  612. package/dist/components/container/container.stories.svelte +0 -20
  613. package/dist/components/container/container.stories.svelte.d.ts +0 -26
  614. package/dist/components/contextmenu/atoms.d.ts +0 -0
  615. package/dist/components/contextmenu/atoms.js +0 -1
  616. package/dist/components/contextmenu/contextmenu-trigger.svelte +0 -0
  617. package/dist/components/contextmenu/contextmenu-trigger.svelte.d.ts +0 -26
  618. package/dist/components/contextmenu/indext.d.ts +0 -0
  619. package/dist/components/contextmenu/indext.js +0 -1
  620. package/dist/components/datagrid/datagrid.stories.svelte +0 -72
  621. package/dist/components/datagrid/datagrid.stories.svelte.d.ts +0 -6
  622. package/dist/components/datagrid/td/bond.svelte.d.ts +0 -28
  623. package/dist/components/datagrid/td/bond.svelte.js +0 -40
  624. package/dist/components/datagrid/td/datagrid-td.svelte +0 -66
  625. package/dist/components/datagrid/td/datagrid-td.svelte.d.ts +0 -30
  626. package/dist/components/datagrid/td/index.d.ts +0 -2
  627. package/dist/components/datagrid/td/index.js +0 -2
  628. package/dist/components/datagrid/th/bond.svelte.d.ts +0 -38
  629. package/dist/components/datagrid/th/bond.svelte.js +0 -66
  630. package/dist/components/datagrid/th/datagrid-th-sort-icon.svelte.d.ts +0 -33
  631. package/dist/components/datagrid/th/index.d.ts +0 -2
  632. package/dist/components/datagrid/th/index.js +0 -2
  633. package/dist/components/datagrid/tr/bond.svelte.d.ts +0 -37
  634. package/dist/components/datagrid/tr/bond.svelte.js +0 -72
  635. package/dist/components/datagrid/tr/datagrid-tr.svelte +0 -90
  636. package/dist/components/datagrid/tr/datagrid-tr.svelte.d.ts +0 -28
  637. package/dist/components/datagrid/tr/index.d.ts +0 -2
  638. package/dist/components/datagrid/tr/index.js +0 -2
  639. package/dist/components/date-picker/date-picker.stories.svelte +0 -35
  640. package/dist/components/date-picker/date-picker.stories.svelte.d.ts +0 -3
  641. package/dist/components/dialog/dialog.stories.svelte +0 -64
  642. package/dist/components/dialog/dialog.stories.svelte.d.ts +0 -3
  643. package/dist/components/drawer/drawer.stories.svelte +0 -141
  644. package/dist/components/drawer/drawer.stories.svelte.d.ts +0 -3
  645. package/dist/components/dropdown/dropdown.stories.svelte +0 -127
  646. package/dist/components/dropdown/dropdown.stories.svelte.d.ts +0 -3
  647. package/dist/components/element/element.stories.svelte +0 -37
  648. package/dist/components/element/element.stories.svelte.d.ts +0 -3
  649. package/dist/components/form/field/field-errors.svelte +0 -9
  650. package/dist/components/form/field/field-errors.svelte.d.ts +0 -11
  651. package/dist/components/form/form.stories.svelte +0 -96
  652. package/dist/components/form/form.stories.svelte.d.ts +0 -18
  653. package/dist/components/image/image.stories.svelte +0 -20
  654. package/dist/components/image/image.stories.svelte.d.ts +0 -26
  655. package/dist/components/input/input.stories.svelte +0 -35
  656. package/dist/components/input/input.stories.svelte.d.ts +0 -18
  657. package/dist/components/label/label.stories.svelte +0 -15
  658. package/dist/components/label/label.stories.svelte.d.ts +0 -26
  659. package/dist/components/lazy/lazy.stories.svelte +0 -28
  660. package/dist/components/lazy/lazy.stories.svelte.d.ts +0 -19
  661. package/dist/components/link/link.stories.svelte +0 -15
  662. package/dist/components/link/link.stories.svelte.d.ts +0 -26
  663. package/dist/components/menu/menu.stories.svelte +0 -33
  664. package/dist/components/menu/menu.stories.svelte.d.ts +0 -3
  665. package/dist/components/popover/motion.d.ts +0 -6
  666. package/dist/components/popover/motion.js +0 -57
  667. package/dist/components/popover/popover.stories.svelte +0 -37
  668. package/dist/components/popover/popover.stories.svelte.d.ts +0 -3
  669. package/dist/components/qr-code/qr-code.stories.svelte +0 -18
  670. package/dist/components/qr-code/qr-code.stories.svelte.d.ts +0 -26
  671. package/dist/components/radio/radio-group.stories.svelte +0 -41
  672. package/dist/components/radio/radio-group.stories.svelte.d.ts +0 -6
  673. package/dist/components/radio/radio.stories.svelte +0 -17
  674. package/dist/components/radio/radio.stories.svelte.d.ts +0 -6
  675. package/dist/components/root/l0-portal.svelte +0 -8
  676. package/dist/components/root/l0-portal.svelte.d.ts +0 -26
  677. package/dist/components/root/l1-portal.svelte +0 -7
  678. package/dist/components/root/l1-portal.svelte.d.ts +0 -26
  679. package/dist/components/root/toasts-portal.svelte +0 -7
  680. package/dist/components/root/toasts-portal.svelte.d.ts +0 -26
  681. package/dist/components/scrollable/scrollable.stories.svelte +0 -116
  682. package/dist/components/scrollable/scrollable.stories.svelte.d.ts +0 -26
  683. package/dist/components/sidebar/sidebar.stories.svelte +0 -43
  684. package/dist/components/sidebar/sidebar.stories.svelte.d.ts +0 -3
  685. package/dist/components/stepper/stepper.stories.svelte +0 -264
  686. package/dist/components/stepper/stepper.stories.svelte.d.ts +0 -4
  687. package/dist/components/tabs/tabs.stories.svelte +0 -70
  688. package/dist/components/tabs/tabs.stories.svelte.d.ts +0 -3
  689. package/dist/components/toast/bond.d.ts +0 -35
  690. package/dist/components/toast/bond.js +0 -59
  691. package/dist/components/tooltip/tooltip.stories.svelte +0 -32
  692. package/dist/components/tooltip/tooltip.stories.svelte.d.ts +0 -3
  693. package/dist/components/tree/tree.stories.svelte +0 -142
  694. package/dist/components/tree/tree.stories.svelte.d.ts +0 -3
  695. /package/dist/components/{contextmenu → context-menu}/types.js +0 -0
@@ -1,155 +1,36 @@
1
- import { getContext, setContext } from 'svelte';
2
- import { createAttachmentKey } from 'svelte/attachments';
3
- import { autoUpdate, computePosition, arrow, flip, shift, offset } from '@floating-ui/dom';
4
- import { focus, focusTrap, getElementId, isBrowser } from '../../utils/dom.svelte.js';
5
- import { Bond, BondState } from '../../shared/bond.svelte.js';
6
- const POPOVER_ELEMENTS_KIND = {
7
- trigger: 'popover-trigger',
8
- content: 'popover-content',
9
- indicator: 'popover-indicator',
10
- arrow: 'popover-arrow'
11
- };
1
+ import { getContext, setContext, untrack } from 'svelte';
2
+ import {} from '@floating-ui/dom';
3
+ import { Bond, BondState } from '../../shared/bond.svelte';
4
+ import { BondAtom } from '../../shared';
5
+ import { focus, focusTrap, getElementId, isBrowser } from '../../utils/dom.svelte';
12
6
  export class PopoverBond extends Bond {
13
7
  static CONTEXT_KEY = '@atomic-sv/bonds/popover';
14
8
  constructor(state) {
15
- super(state);
9
+ super(state, 'popover');
16
10
  }
11
+ /** Handle for granular access to trigger attrs, handlers, and attachment */
17
12
  trigger() {
18
- const isButtonElement = isBrowser()
19
- ? this.elements.trigger instanceof HTMLButtonElement
20
- : false;
21
- const isDisabled = this.state?.props?.disabled ?? false;
22
- const isOpen = this.state?.props?.open ?? false;
23
- const kind = POPOVER_ELEMENTS_KIND.trigger;
24
- const id = getElementId(this.id, kind);
25
- const overlayId = getElementId(this.id, POPOVER_ELEMENTS_KIND.content);
26
- return {
27
- id,
28
- role: isButtonElement ? '' : 'button',
29
- disabled: isButtonElement ? isDisabled : undefined,
30
- tabindex: isDisabled ? -1 : 0,
31
- 'aria-expanded': isOpen,
32
- 'aria-disabled': isDisabled,
33
- 'aria-controls': overlayId,
34
- 'aria-haspopup': 'dialog',
35
- 'data-kind': kind,
36
- onclick: (ev) => {
37
- if (ev.button === 2) {
38
- return; // Ignore right-clicks
39
- }
40
- if (ev.defaultPrevented) {
41
- return;
42
- }
43
- this.state.toggle();
44
- },
45
- onkeydown: (ev) => {
46
- if (isDisabled)
47
- return;
48
- // Toggle on Enter or Space
49
- if (ev.key === 'Enter' || ev.key === ' ') {
50
- this.state.toggle();
51
- return;
52
- }
53
- if (ev.key === 'Tab') {
54
- this.elements.content?.focus();
55
- return;
56
- }
57
- if (ev.key === 'Escape') {
58
- this.state.close();
59
- }
60
- },
61
- [createAttachmentKey()]: (node) => {
62
- this.elements.trigger = node;
63
- }
64
- };
13
+ return this.atom('trigger', () => new PopoverTriggerAtom(this));
65
14
  }
66
- content(params = { engine: 'internal' }) {
67
- const kind = POPOVER_ELEMENTS_KIND.content;
68
- const id = getElementId(this.id, kind);
69
- const triggerId = getElementId(this.id, POPOVER_ELEMENTS_KIND.trigger);
70
- const isOpen = this.state?.props?.open ?? false;
71
- const isDisabled = this.state?.props?.disabled ?? false;
72
- const isActive = isOpen && !isDisabled;
73
- // Focus management
74
- const focusManager = (ev) => {
75
- if (ev.key === 'Escape') {
76
- this.state.close();
77
- this.elements.trigger?.focus();
78
- return;
79
- }
80
- focusTrap(ev);
81
- };
82
- return {
83
- id,
84
- role: 'dialog',
85
- 'aria-modal': false,
86
- 'aria-labelledby': triggerId,
87
- inert: !isActive ? true : undefined,
88
- tabindex: -1,
89
- 'data-atom': this.id,
90
- 'data-kind': POPOVER_ELEMENTS_KIND.content,
91
- 'data-active': isActive,
92
- onkeydown: isOpen ? focusManager : undefined,
93
- [createAttachmentKey()]: (node) => {
94
- this.elements.content = node;
95
- const triggerElement = this.elements.trigger;
96
- if (!triggerElement) {
97
- return;
98
- }
99
- if (!this.state.isOpen) {
100
- return;
101
- }
102
- // check if trigger contains a focusable element and the focus is already inside
103
- // check if the in-focus element is an input, textarea or select to avoid stealing focus
104
- const activeElement = document.activeElement;
105
- const triggerContainsFocus = ['input', 'textarea'].includes(activeElement.tagName.toLowerCase()) &&
106
- triggerElement.contains(activeElement);
107
- // Move focus to popover when opened
108
- if (!triggerContainsFocus) {
109
- setTimeout(() => focus(node, ['textarea:not([disabled])', 'input:not([disabled])']), 0);
110
- }
111
- if (params?.engine === undefined) {
112
- return;
113
- }
114
- if (params?.engine && typeof params.engine === 'function') {
115
- const cleanup = params.engine(this)({});
116
- return () => {
117
- cleanup?.();
118
- };
119
- }
120
- const cleanup = popover(this)({}, autoUpdate);
121
- return () => {
122
- cleanup?.();
123
- };
124
- }
125
- };
15
+ /** Handle for granular access to the virtual trigger reference */
16
+ virtualTrigger() {
17
+ return this.atom('virtual-trigger', () => new PopoverVirtualTriggerAtom(this));
126
18
  }
127
- indicator() {
128
- const kind = POPOVER_ELEMENTS_KIND.indicator;
129
- const id = getElementId(this.id, kind);
130
- const isOpen = this.state?.props?.open ?? false;
131
- return {
132
- id,
133
- 'aria-hidden': true,
134
- 'aria-live': isOpen ? 'polite' : 'off',
135
- 'data-kind': kind,
136
- [createAttachmentKey()]: (node) => {
137
- this.elements.indicator = node;
138
- }
139
- };
19
+ /** Handle for granular access to content attrs, handlers, and attachment */
20
+ overlay() {
21
+ return this.atom('overlay', () => new PopoverOverlayAtom(this));
22
+ }
23
+ /** Handle for granular access to content attrs, handlers, and attachment */
24
+ content() {
25
+ return this.atom('content', () => new PopoverContentAtom(this));
140
26
  }
27
+ /** Handle for granular access to arrow attrs and attachment */
141
28
  arrow() {
142
- const kind = POPOVER_ELEMENTS_KIND.arrow;
143
- const id = getElementId(this.id, kind);
144
- return {
145
- id: id,
146
- role: 'presentation',
147
- 'aria-hidden': true,
148
- 'data-kind': kind,
149
- [createAttachmentKey()]: (node) => {
150
- this.elements.arrow = node;
151
- }
152
- };
29
+ return this.atom('arrow', () => new PopoverArrowAtom(this));
30
+ }
31
+ /** Handle for granular access to indicator attrs and attachment */
32
+ indicator() {
33
+ return this.atom('indicator', () => new PopoverIndicatorAtom(this));
153
34
  }
154
35
  share() {
155
36
  return PopoverBond.set(this);
@@ -163,9 +44,37 @@ export class PopoverBond extends Bond {
163
44
  }
164
45
  export class PopoverState extends BondState {
165
46
  position = $state();
47
+ /**
48
+ * Controls whether the positioning strategy should actively compute the
49
+ * popover position. Defaults to `open` when unset, but can be toggled
50
+ * independently to keep computing while the content is hiding, or to
51
+ * start computing on hover before the popover is opened.
52
+ */
53
+ tracking = $state(undefined);
54
+ #computedResolve;
55
+ /**
56
+ * A promise that resolves with the next position computation. The promise
57
+ * is renewed after each resolution, so consumers can `await bond.state.computed`
58
+ * repeatedly to wait for subsequent computations.
59
+ */
60
+ computed = this.#createComputed();
166
61
  constructor(props) {
167
62
  super(props);
168
63
  }
64
+ #createComputed() {
65
+ return new Promise((resolve) => {
66
+ this.#computedResolve = resolve;
67
+ });
68
+ }
69
+ /** Notify awaiters of a fresh computation and renew the promise. */
70
+ notifyComputed(position) {
71
+ this.position = position;
72
+ this.#computedResolve(position);
73
+ this.computed = this.#createComputed();
74
+ }
75
+ get shouldTrackPosition() {
76
+ return this.tracking ?? this.isOpen;
77
+ }
169
78
  get isOpen() {
170
79
  return this.props.open ?? false;
171
80
  }
@@ -179,62 +88,168 @@ export class PopoverState extends BondState {
179
88
  this.props.open = !this.props.open;
180
89
  }
181
90
  }
182
- function popover(bond) {
183
- return (props, updater) => {
184
- const { offset: ofs, placements, placement } = bond.state.props;
185
- // Guard: ensure required elements exist
186
- if (!bond.elements.content || !bond.elements.trigger) {
91
+ export class PopoverArrowAtom extends BondAtom {
92
+ constructor(bond) {
93
+ super(bond, 'arrow');
94
+ }
95
+ get attrs() {
96
+ return {
97
+ ...super.attrs,
98
+ role: 'presentation',
99
+ 'aria-hidden': true
100
+ };
101
+ }
102
+ }
103
+ export class PopoverVirtualTriggerAtom extends BondAtom {
104
+ constructor(bond) {
105
+ super(bond, 'virtual-trigger');
106
+ }
107
+ get attrs() {
108
+ return {};
109
+ }
110
+ get handlers() {
111
+ return {};
112
+ }
113
+ get attachments() {
114
+ return {};
115
+ }
116
+ get spread() {
117
+ return {};
118
+ }
119
+ get element() {
120
+ return super.element;
121
+ }
122
+ set element(element) {
123
+ this.setElement(element);
124
+ }
125
+ }
126
+ export class PopoverOverlayAtom extends BondAtom {
127
+ constructor(bond) {
128
+ super(bond, 'overlay');
129
+ }
130
+ get attrs() {
131
+ const triggerId = getElementId(this.bond.id, `${this.bond.name}-trigger`);
132
+ const isOpen = this.bond.state?.props?.open ?? false;
133
+ const isDisabled = this.bond.state?.props?.disabled ?? false;
134
+ const isActive = isOpen && !isDisabled;
135
+ return {
136
+ ...super.attrs,
137
+ role: 'dialog',
138
+ 'aria-modal': false,
139
+ 'aria-labelledby': triggerId,
140
+ inert: !isActive ? true : undefined,
141
+ tabindex: -1,
142
+ 'data-active': isActive
143
+ };
144
+ }
145
+ get handlers() {
146
+ const isOpen = this.bond.state?.props?.open ?? false;
147
+ const focusManager = (ev) => {
148
+ if (ev.key === 'Escape') {
149
+ this.bond.state.close();
150
+ this.bond.element('trigger')?.focus();
151
+ return;
152
+ }
153
+ focusTrap(ev);
154
+ };
155
+ return {
156
+ onkeydown: isOpen ? focusManager : undefined
157
+ };
158
+ }
159
+ onmount(node) {
160
+ const triggerElement = this.bond.element('trigger');
161
+ if (!triggerElement)
162
+ return;
163
+ const isOpen = untrack(() => this.bond.state?.props)?.open ?? false;
164
+ if (!isOpen)
187
165
  return;
166
+ // Avoid stealing focus from inputs/textareas inside trigger
167
+ const activeElement = document.activeElement;
168
+ const triggerContainsFocus = ['input', 'textarea'].includes(activeElement.tagName.toLowerCase()) &&
169
+ triggerElement.contains(activeElement);
170
+ if (!triggerContainsFocus) {
171
+ setTimeout(() => focus(node, ['textarea:not([disabled])', 'input:not([disabled])']), 0);
188
172
  }
189
- const { content, trigger, arrow: arrowElement } = bond.elements;
190
- // Build middleware stack
191
- const middleware = [
192
- offset(ofs),
193
- flip({
194
- fallbackPlacements: placements,
195
- padding: 8,
196
- crossAxis: true,
197
- fallbackStrategy: 'bestFit'
198
- }),
199
- shift({
200
- padding: 8,
201
- limiter: {
202
- fn: (state) => {
203
- const { x, y } = state;
204
- return {
205
- x,
206
- y
207
- };
208
- }
173
+ }
174
+ }
175
+ export class PopoverContentAtom extends BondAtom {
176
+ constructor(bond) {
177
+ super(bond, 'content');
178
+ }
179
+ get attrs() {
180
+ const isOpen = this.bond.state?.props?.open ?? false;
181
+ const isDisabled = this.bond.state?.props?.disabled ?? false;
182
+ const isActive = isOpen && !isDisabled;
183
+ return {
184
+ ...super.attrs,
185
+ 'data-active': isActive
186
+ };
187
+ }
188
+ get handlers() {
189
+ return {};
190
+ }
191
+ onmount(_node) {
192
+ void _node;
193
+ return;
194
+ }
195
+ }
196
+ export class PopoverIndicatorAtom extends BondAtom {
197
+ constructor(bond) {
198
+ super(bond, 'indicator');
199
+ }
200
+ get attrs() {
201
+ const isOpen = this.bond.state?.props?.open ?? false;
202
+ return {
203
+ ...super.attrs,
204
+ 'aria-hidden': true,
205
+ 'aria-live': isOpen ? 'polite' : 'off'
206
+ };
207
+ }
208
+ }
209
+ export class PopoverTriggerAtom extends BondAtom {
210
+ constructor(bond) {
211
+ super(bond, 'trigger');
212
+ }
213
+ get attrs() {
214
+ const isButtonElement = isBrowser() ? this.element instanceof HTMLButtonElement : false;
215
+ const isDisabled = this.bond.state?.props?.disabled ?? false;
216
+ const isOpen = this.bond.state?.props?.open ?? false;
217
+ const overlayId = getElementId(this.bond.id, `${this.bond.name}-content`);
218
+ return {
219
+ ...super.attrs,
220
+ role: isButtonElement ? '' : 'button',
221
+ disabled: isButtonElement ? isDisabled : undefined,
222
+ tabindex: isDisabled ? -1 : 0,
223
+ 'aria-expanded': isOpen,
224
+ 'aria-disabled': isDisabled,
225
+ 'aria-controls': overlayId,
226
+ 'aria-haspopup': 'dialog'
227
+ };
228
+ }
229
+ get handlers() {
230
+ return {
231
+ onclick: (ev) => {
232
+ if (ev.button === 2)
233
+ return;
234
+ if (ev.defaultPrevented)
235
+ return;
236
+ this.bond.state.toggle();
237
+ },
238
+ onkeydown: (ev) => {
239
+ if (this.bond.state?.props?.disabled)
240
+ return;
241
+ if (ev.key === 'Enter' || ev.key === ' ') {
242
+ this.bond.state.toggle();
243
+ return;
209
244
  }
210
- })
211
- ];
212
- // Add arrow middleware if element exists
213
- if (arrowElement) {
214
- middleware.push(arrow({ element: arrowElement }));
215
- }
216
- // Debounce position change callback
217
- const onchangeCallback = props.onchange;
218
- // Compute position and notify listeners
219
- const compute = async () => {
220
- // Wait for next frame to ensure DOM has settled and styles are applied
221
- // Double requestAnimationFrame - This ensures the browser has completed both layout calculation AND painting, giving us accurate final dimensions
222
- await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve)));
223
- const position = await computePosition(trigger, content, {
224
- placement: placement ?? 'bottom',
225
- middleware
226
- });
227
- bond.state.position = position;
228
- onchangeCallback?.(content, position);
229
- // Set minimum width to match trigger
230
- requestAnimationFrame(() => {
231
- content.style.minWidth = `${trigger.clientWidth}px`;
232
- });
245
+ if (ev.key === 'Tab') {
246
+ this.bond.element('content')?.focus();
247
+ return;
248
+ }
249
+ if (ev.key === 'Escape') {
250
+ this.bond.state.close();
251
+ }
252
+ }
233
253
  };
234
- // Use auto-update if provided, otherwise compute once
235
- if (updater) {
236
- return updater(trigger, content, compute, {});
237
- }
238
- compute();
239
- };
254
+ }
240
255
  }
@@ -1,4 +1,7 @@
1
1
  export * as Popover from './atoms';
2
2
  export { clickoutPopover, popover } from './attachments.svelte';
3
- export { PopoverBond, type PopoverDomElements, type PopoverParams, PopoverState, type PopoverStateProps, type TriggerParams } from './bond.svelte';
3
+ export { PopoverBond, type PopoverDomElements, type PopoverParams, PopoverState, type PopoverStateProps, type TriggerParams, PopoverTriggerAtom, PopoverContentAtom, PopoverArrowAtom, PopoverIndicatorAtom, PopoverVirtualTriggerAtom } from './bond.svelte';
4
+ export * from './motion.svelte';
4
5
  export * from './types';
6
+ export * from './strategy-types';
7
+ export * as PopoverStrategies from './strategies';
@@ -1,4 +1,7 @@
1
1
  export * as Popover from './atoms';
2
2
  export { clickoutPopover, popover } from './attachments.svelte';
3
- export { PopoverBond, PopoverState } from './bond.svelte';
3
+ export { PopoverBond, PopoverState, PopoverTriggerAtom, PopoverContentAtom, PopoverArrowAtom, PopoverIndicatorAtom, PopoverVirtualTriggerAtom } from './bond.svelte';
4
+ export * from './motion.svelte';
4
5
  export * from './types';
6
+ export * from './strategy-types';
7
+ export * as PopoverStrategies from './strategies';
@@ -0,0 +1,34 @@
1
+ export type AnimatePopoverContentParams = {
2
+ /** Animation duration in seconds (default: 0.2) */
3
+ duration?: number;
4
+ /** Delay before animation starts in seconds (default: 0) */
5
+ delay?: number;
6
+ /** Use spring physics for natural motion (default: false) */
7
+ spring?: boolean;
8
+ /** Spring stiffness (default: 300) */
9
+ stiffness?: number;
10
+ /** Spring damping (default: 30) */
11
+ damping?: number;
12
+ };
13
+ /**
14
+ * Modern popover animation inspired by Radix UI and Linear
15
+ *
16
+ * Features:
17
+ * - Vertical scale only (0.96 → 1) for depth without width distortion
18
+ * - Smart directional slide (adapts to offset and arrow presence)
19
+ * - Smooth fade (0 → 1)
20
+ * - Optional spring physics for natural feel
21
+ * - Transform origin anchored to trigger side
22
+ *
23
+ * Edge cases handled:
24
+ * - offset=0: Minimal slide (4px) for subtle effect
25
+ * - No arrow: Uses offset-based slide distance
26
+ * - With arrow: Enhanced slide for arrow reveal
27
+ *
28
+ * @example
29
+ * ```svelte
30
+ * <Popover.Content animate={animatePopoverContent()}>
31
+ * <Popover.Content animate={animatePopoverContent({ spring: true })}>
32
+ * ```
33
+ */
34
+ export declare function animatePopoverContent(params?: AnimatePopoverContentParams): (node: HTMLElement) => void;
@@ -0,0 +1,135 @@
1
+ import { animate, spring } from 'motion';
2
+ import { untrack } from 'svelte';
3
+ import { PopoverBond } from '.';
4
+ /**
5
+ * Modern popover animation inspired by Radix UI and Linear
6
+ *
7
+ * Features:
8
+ * - Vertical scale only (0.96 → 1) for depth without width distortion
9
+ * - Smart directional slide (adapts to offset and arrow presence)
10
+ * - Smooth fade (0 → 1)
11
+ * - Optional spring physics for natural feel
12
+ * - Transform origin anchored to trigger side
13
+ *
14
+ * Edge cases handled:
15
+ * - offset=0: Minimal slide (4px) for subtle effect
16
+ * - No arrow: Uses offset-based slide distance
17
+ * - With arrow: Enhanced slide for arrow reveal
18
+ *
19
+ * @example
20
+ * ```svelte
21
+ * <Popover.Content animate={animatePopoverContent()}>
22
+ * <Popover.Content animate={animatePopoverContent({ spring: true })}>
23
+ * ```
24
+ */
25
+ export function animatePopoverContent(params = {}) {
26
+ let prevOpen;
27
+ const bond = PopoverBond.get();
28
+ return (node) => {
29
+ const { duration = .05, delay = 0, spring: useSpring = false, stiffness = 300, damping = 30 } = params;
30
+ const isOpen = bond?.state.props.open ?? false;
31
+ const position = bond?.state.position;
32
+ if (!position)
33
+ return;
34
+ // Skip animation if open state hasn't changed
35
+ if (isOpen === prevOpen)
36
+ return;
37
+ prevOpen = isOpen;
38
+ requestAnimationFrame(() => {
39
+ const placement = untrack(() => position.placement);
40
+ const [side, alignment] = placement?.split('-') ?? ['bottom', ''];
41
+ // Get offset and arrow configuration
42
+ const offset = untrack(() => bond?.state.props.offset ?? 0);
43
+ const hasArrow = untrack(() => bond?.state.props.arrow ?? false);
44
+ // Calculate transform origin (anchor point relative to trigger)
45
+ const transformOrigin = getTransformOrigin(side, alignment);
46
+ // Calculate smart directional offset based on offset and arrow
47
+ const slideDistance = getSmartSlideDistance(offset, hasArrow);
48
+ const { x: offsetX, y: offsetY } = getDirectionalOffset(side, slideDistance);
49
+ // Set initial styles
50
+ node.style.transformOrigin = transformOrigin;
51
+ node.style.pointerEvents = 'none';
52
+ // Modern animation values
53
+ const keyframes = {
54
+ scaleY: isOpen ? [0.96, 1] : [1, 0.96],
55
+ translateX: isOpen ? [`${offsetX}px`, '0px'] : ['0px', `${offsetX}px`],
56
+ translateY: isOpen ? [`${offsetY}px`, '0px'] : ['0px', `${offsetY}px`],
57
+ opacity: isOpen ? [0, 1] : [1, 0]
58
+ };
59
+ // Animate with spring or standard easing
60
+ const animation = animate(node, keyframes, useSpring
61
+ ? { easing: spring({ stiffness, damping }), delay }
62
+ : { duration, easing: [0.16, 1, 0.3, 1], delay } // Custom cubic-bezier for smooth motion
63
+ );
64
+ animation.finished.then(() => {
65
+ node.style.pointerEvents = 'auto';
66
+ });
67
+ });
68
+ };
69
+ }
70
+ /**
71
+ * Calculate transform origin based on popover placement
72
+ * Anchors the animation to the side closest to the trigger
73
+ */
74
+ function getTransformOrigin(side, alignment) {
75
+ const horizontal = (() => {
76
+ if (side === 'top' || side === 'bottom') {
77
+ if (alignment === 'start')
78
+ return 'left';
79
+ if (alignment === 'end')
80
+ return 'right';
81
+ return 'center';
82
+ }
83
+ return side === 'left' ? 'right' : side === 'right' ? 'left' : 'center';
84
+ })();
85
+ const vertical = (() => {
86
+ if (side === 'left' || side === 'right') {
87
+ if (alignment === 'start')
88
+ return 'top';
89
+ if (alignment === 'end')
90
+ return 'bottom';
91
+ return 'center';
92
+ }
93
+ return side === 'top' ? 'bottom' : side === 'bottom' ? 'top' : 'center';
94
+ })();
95
+ return `${horizontal} ${vertical}`;
96
+ }
97
+ /**
98
+ * Calculate smart slide distance based on offset and arrow configuration
99
+ *
100
+ * Logic:
101
+ * - offset=0 & no arrow: 4px (minimal, subtle effect)
102
+ * - offset=0 & arrow: 6px (enough to show arrow animation)
103
+ * - offset>0 & no arrow: min(offset/2, 8px) (proportional to gap)
104
+ * - offset>0 & arrow: 8px (standard directional slide)
105
+ */
106
+ function getSmartSlideDistance(offset, hasArrow) {
107
+ if (offset === 0) {
108
+ // Flush against trigger - use minimal slide
109
+ return hasArrow ? 6 : 4;
110
+ }
111
+ if (hasArrow) {
112
+ // With arrow, use standard 8px slide for consistent arrow reveal
113
+ return 8;
114
+ }
115
+ // No arrow, offset > 0: Use proportional slide (max 8px)
116
+ // This creates a subtle effect that scales with the gap
117
+ return Math.min(offset / 2, 8);
118
+ }
119
+ /**
120
+ * Calculate directional offset based on placement side
121
+ */
122
+ function getDirectionalOffset(side, distance) {
123
+ switch (side) {
124
+ case 'top':
125
+ return { x: 0, y: distance };
126
+ case 'bottom':
127
+ return { x: 0, y: -distance };
128
+ case 'left':
129
+ return { x: distance, y: 0 };
130
+ case 'right':
131
+ return { x: -distance, y: 0 };
132
+ default:
133
+ return { x: 0, y: -distance };
134
+ }
135
+ }