@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
@@ -1,15 +1,69 @@
1
- import { type Easing } from 'motion';
1
+ import { type Easing, type Spring } from 'motion';
2
+ export type DrawerSide = 'left' | 'right' | 'top' | 'bottom';
3
+ type EasingOption = Easing | Easing[] | Spring;
2
4
  type AnimateDrawerContentParams = {
5
+ /** Animation duration in seconds (default: 0.3) */
3
6
  duration?: number;
7
+ /** Delay before animation starts in seconds (default: 0) */
4
8
  delay?: number;
5
- ease?: Easing | Easing[];
6
- side?: 'left' | 'right' | 'top' | 'bottom';
9
+ /** Easing for open animation (default: smooth deceleration) */
10
+ easeOpen?: EasingOption;
11
+ /** Easing for close animation (default: snappy acceleration) */
12
+ easeClose?: EasingOption;
13
+ /** Easing override for both open/close */
14
+ ease?: EasingOption;
15
+ /** Use spring physics for natural motion (default: false) */
16
+ spring?: boolean;
17
+ /** Spring stiffness (default: 300) */
18
+ stiffness?: number;
19
+ /** Spring damping (default: 30) */
20
+ damping?: number;
21
+ /** Disable pointer events during animation (default: true) */
22
+ inert?: boolean;
7
23
  };
8
- export declare function animateDrawerContent(params: AnimateDrawerContentParams): (node: HTMLElement) => void;
24
+ /**
25
+ * Modern drawer animation with smooth sliding and subtle fade
26
+ *
27
+ * Features:
28
+ * - Smooth directional slide from edge
29
+ * - Subtle opacity fade (0.3 → 1) for depth
30
+ * - Optimized easing curves for natural feel
31
+ * - Optional spring physics
32
+ * - Proper inert handling during animation
33
+ * - Reads 'side' from Drawer.Root bond automatically
34
+ *
35
+ * Improvements over old version:
36
+ * - Added opacity fade for better visual hierarchy
37
+ * - Smoother easing curves (custom cubic-bezier)
38
+ * - Optional spring physics for bouncy feel
39
+ * - Better duration defaults (0.3s vs 0.5s)
40
+ * - Cleaner inert management
41
+ * - Auto-detects side from bond (no manual prop needed)
42
+ *
43
+ * @example
44
+ * ```svelte
45
+ * <Drawer.Root side="right">
46
+ * <Drawer.Content animate={animateDrawerContent()}>
47
+ * </Drawer.Root>
48
+ *
49
+ * <Drawer.Root side="left">
50
+ * <Drawer.Content animate={animateDrawerContent({ spring: true })}>
51
+ * </Drawer.Root>
52
+ * ```
53
+ */
54
+ export declare function animateDrawerContent(params?: AnimateDrawerContentParams): (node: HTMLElement) => () => void;
9
55
  type AnimateDrawerRootParams = {
56
+ /** Animation duration in seconds (default: 0.3) */
10
57
  duration?: number;
58
+ /** Delay before animation starts in seconds (default: 0) */
11
59
  delay?: number;
12
- ease?: Easing | Easing[];
60
+ /** Easing function (default: smooth in-out) */
61
+ ease?: EasingOption;
13
62
  };
63
+ /**
64
+ * Backdrop/overlay fade animation for drawer
65
+ *
66
+ * Fades the backdrop in/out smoothly when drawer opens/closes
67
+ */
14
68
  export declare function animateDrawerRoot(params?: AnimateDrawerRootParams): (node: HTMLElement) => void;
15
69
  export {};
@@ -1,25 +1,143 @@
1
- import { animate } from 'motion';
1
+ import { animate, spring } from 'motion';
2
2
  import { DURATION } from '../../shared';
3
3
  import { DrawerBond } from '.';
4
- export function animateDrawerContent(params) {
5
- const { duration = DURATION.fast / 1000, delay = 0, ease = 'easeInOut', side = 'left' } = params;
6
- const bond = DrawerBond.get();
7
- const mainProp = side === 'left' || side === 'right' ? 'x' : 'y';
8
- const crossProp = mainProp === 'x' ? 'y' : 'x';
9
- const d = side === 'left' || side === 'top' ? -1 : 1;
4
+ import { untrack } from 'svelte';
5
+ /**
6
+ * Modern drawer animation with smooth sliding and subtle fade
7
+ *
8
+ * Features:
9
+ * - Smooth directional slide from edge
10
+ * - Subtle opacity fade (0.3 → 1) for depth
11
+ * - Optimized easing curves for natural feel
12
+ * - Optional spring physics
13
+ * - Proper inert handling during animation
14
+ * - Reads 'side' from Drawer.Root bond automatically
15
+ *
16
+ * Improvements over old version:
17
+ * - Added opacity fade for better visual hierarchy
18
+ * - Smoother easing curves (custom cubic-bezier)
19
+ * - Optional spring physics for bouncy feel
20
+ * - Better duration defaults (0.3s vs 0.5s)
21
+ * - Cleaner inert management
22
+ * - Auto-detects side from bond (no manual prop needed)
23
+ *
24
+ * @example
25
+ * ```svelte
26
+ * <Drawer.Root side="right">
27
+ * <Drawer.Content animate={animateDrawerContent()}>
28
+ * </Drawer.Root>
29
+ *
30
+ * <Drawer.Root side="left">
31
+ * <Drawer.Content animate={animateDrawerContent({ spring: true })}>
32
+ * </Drawer.Root>
33
+ * ```
34
+ */
35
+ export function animateDrawerContent(params = {}) {
36
+ const { duration = 0.3, delay = 0, ease, easeOpen = [0.16, 1, 0.3, 1], // Smooth deceleration (similar to popover)
37
+ easeClose = [0.4, 0, 0.6, 1], // Quick acceleration out
38
+ spring: useSpring = false, stiffness = 280, damping = 28, inert = true } = params;
39
+ const bond = untrack(() => DrawerBond.get());
40
+ // Read side from bond (set in Drawer.Root)
41
+ const side = bond?.state.props.side ?? 'right';
42
+ const position = getSidePosition(side);
43
+ const hidden = getHiddenTransform(side);
44
+ let animated = false;
10
45
  return (node) => {
11
46
  const isOpen = bond?.state.props.open ?? false;
12
- animate(node, {
13
- [mainProp]: isOpen ? 0 : d * 100 + '%',
14
- [crossProp]: 0,
15
- left: 'unset',
16
- right: 'unset',
17
- [side]: 0
18
- }, { duration, ease, delay });
47
+ // Apply initial hidden state immediately (before any animation)
48
+ // This prevents FOUC (flash of unstyled content)
49
+ if (!animated) {
50
+ node.style.transform = `translate(${hidden.x}, ${hidden.y})`;
51
+ node.style.opacity = '0.3';
52
+ Object.assign(node.style, position);
53
+ }
54
+ // Disable interactions during animation
55
+ if (inert) {
56
+ node.style.pointerEvents = 'none';
57
+ }
58
+ let controller;
59
+ // Initial mount (closed state)
60
+ if (!animated && !isOpen) {
61
+ controller = animate(node, {
62
+ x: hidden.x,
63
+ y: hidden.y,
64
+ opacity: 0.3,
65
+ ...position
66
+ }, {
67
+ duration: 0,
68
+ onComplete: () => {
69
+ if (inert)
70
+ node.style.pointerEvents = 'auto';
71
+ }
72
+ });
73
+ animated = true;
74
+ }
75
+ else {
76
+ // Animated open/close transition
77
+ const resolvedEase = ease ?? (isOpen ? easeOpen : easeClose);
78
+ const keyframes = {
79
+ x: isOpen ? '0%' : hidden.x,
80
+ y: isOpen ? '0%' : hidden.y,
81
+ opacity: isOpen ? 1 : 0.3,
82
+ ...position
83
+ };
84
+ const animationOptions = useSpring
85
+ ? { easing: spring({ stiffness, damping }), delay }
86
+ : { duration, ease: resolvedEase, delay };
87
+ controller = animate(node, keyframes, {
88
+ ...animationOptions,
89
+ onComplete: () => {
90
+ if (inert) {
91
+ node.style.pointerEvents = isOpen ? 'auto' : 'none';
92
+ }
93
+ }
94
+ });
95
+ }
96
+ return () => {
97
+ controller?.stop();
98
+ if (inert)
99
+ node.style.pointerEvents = 'auto';
100
+ };
19
101
  };
20
102
  }
103
+ /**
104
+ * Returns the hidden (offscreen) translate values for each side.
105
+ * The panel slides in from its edge — e.g. left panel starts at -100% x.
106
+ */
107
+ function getHiddenTransform(side) {
108
+ switch (side) {
109
+ case 'left':
110
+ return { x: '-100%', y: '0%' };
111
+ case 'right':
112
+ return { x: '100%', y: '0%' };
113
+ case 'top':
114
+ return { x: '0%', y: '-100%' };
115
+ case 'bottom':
116
+ return { x: '0%', y: '100%' };
117
+ }
118
+ }
119
+ /**
120
+ * Returns the CSS positioning properties to anchor the panel to its side.
121
+ */
122
+ function getSidePosition(side) {
123
+ switch (side) {
124
+ case 'left':
125
+ return { top: '0', bottom: '0', left: '0', right: 'unset' };
126
+ case 'right':
127
+ return { top: '0', bottom: '0', right: '0', left: 'unset' };
128
+ case 'top':
129
+ return { top: '0', left: '0', right: '0', bottom: 'unset' };
130
+ case 'bottom':
131
+ return { bottom: '0', left: '0', right: '0', top: 'unset' };
132
+ }
133
+ }
134
+ /**
135
+ * Backdrop/overlay fade animation for drawer
136
+ *
137
+ * Fades the backdrop in/out smoothly when drawer opens/closes
138
+ */
21
139
  export function animateDrawerRoot(params = {}) {
22
- const { duration = DURATION.fast / 1000, delay = 0, ease = 'easeInOut' } = params;
140
+ const { duration = 0.3, delay = 0, ease = [0.16, 1, 0.3, 1] } = params;
23
141
  return (node) => {
24
142
  const bond = DrawerBond.get();
25
143
  const isOpen = bond?.state.props.open ?? false;
@@ -1,5 +1,5 @@
1
1
  import type { Snippet } from 'svelte';
2
- import type { HtmlAtomProps, Base } from '../atom';
2
+ import type { HtmlAtomProps, Base, SnippetProps } from '../atom';
3
3
  import type { Override, Factory } from '../../types';
4
4
  import type { TransitionFunction } from '../element';
5
5
  import type { PortalBond } from '../portal';
@@ -44,43 +44,34 @@ export interface DrawerDescriptionExtendProps {
44
44
  */
45
45
  export interface DrawerBackdropExtendProps {
46
46
  }
47
- export interface SlideoverRootProps<E extends keyof HTMLElementTagNameMap, B extends Base = Base> extends Override<HtmlAtomProps<E, B>, {
48
- children?: Snippet<[{
49
- drawer: DrawerBond;
50
- }]>;
47
+ export interface DrawerSnippetProps extends SnippetProps {
48
+ drawer: DrawerBond;
49
+ }
50
+ export type DrawerChildren = Snippet<[DrawerSnippetProps]>;
51
+ export interface SlideoverRootProps<E extends keyof HTMLElementTagNameMap, B extends Base = Base> extends Override<HtmlAtomProps<E, B, DrawerChildren>, {
51
52
  initial?: (node: HTMLElement, bond: DrawerBond) => void;
52
53
  enter?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
53
54
  exit?: (node: HTMLElement, bond: DrawerBond) => TransitionFunction<'dialog'>;
54
55
  }>, DrawerExtendProps {
56
+ "z-index"?: number;
55
57
  open?: boolean;
56
58
  disabled?: boolean;
59
+ side?: 'left' | 'right' | 'top' | 'bottom';
57
60
  portal?: string | PortalBond;
58
61
  onclose?: (event: Event, bond: DrawerBond) => void;
59
62
  factory?: Factory<DrawerBond>;
60
63
  }
61
- export interface SlideoverContentProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, DrawerContentExtendProps {
64
+ export interface SlideoverContentProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B, DrawerChildren> {
62
65
  }
63
- export interface SlideoverHeaderProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends Override<HtmlAtomProps<E, B>, {
64
- children?: Snippet<[{
65
- drawer?: DrawerBond;
66
- }]>;
67
- }>, DrawerHeaderExtendProps {
66
+ export interface SlideoverHeaderProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B, DrawerChildren> {
68
67
  }
69
- export interface DrawerBodyProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends Override<HtmlAtomProps<E, B>, {
70
- children?: Snippet<[{
71
- drawer?: DrawerBond;
72
- }]>;
73
- }>, DrawerBodyExtendProps {
68
+ export interface DrawerBodyProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B, DrawerChildren> {
74
69
  }
75
- export interface SlideoverFooterProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends Override<HtmlAtomProps<E, B>, {
76
- children?: Snippet<[{
77
- drawer?: DrawerBond;
78
- }]>;
79
- }>, DrawerFooterExtendProps {
70
+ export interface SlideoverFooterProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B, DrawerChildren> {
80
71
  }
81
- export interface SlideoverTitleProps<E extends keyof HTMLElementTagNameMap = 'h2', B extends Base = Base> extends HtmlAtomProps<E, B>, DrawerTitleExtendProps {
72
+ export interface SlideoverTitleProps<E extends keyof HTMLElementTagNameMap = 'h2', B extends Base = Base> extends HtmlAtomProps<E, B, DrawerChildren> {
82
73
  }
83
- export interface SlideoverDescriptionProps<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> extends HtmlAtomProps<E, B>, DrawerDescriptionExtendProps {
74
+ export interface SlideoverDescriptionProps<E extends keyof HTMLElementTagNameMap = 'p', B extends Base = Base> extends HtmlAtomProps<E, B, DrawerChildren> {
84
75
  }
85
- export interface SlideoverBackdropProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B>, DrawerBackdropExtendProps {
76
+ export interface SlideoverBackdropProps<E extends keyof HTMLElementTagNameMap = 'div', B extends Base = Base> extends HtmlAtomProps<E, B, DrawerChildren> {
86
77
  }
@@ -1,8 +1,4 @@
1
- export { default as Root } from './dropdown-root.svelte';
2
- export { default as Item } from './item/dropdown-item.svelte';
3
- export { default as Trigger } from './dropdown-trigger.svelte';
4
- export { default as Placeholder } from './dropdown-placeholder.svelte';
5
- export { default as Selection } from './dropdown-selection.svelte';
6
- export { default as Selections } from './dropdown-selections.svelte';
7
- export { Arrow, Indicator } from '../popover/atoms';
8
- export { Content, List, Divider, Title, Group } from '../menu/atoms';
1
+ /**
2
+ * @deprecated Import from `select` instead. This module will be removed in a future version.
3
+ */
4
+ export * from '../select/atoms';
@@ -1,9 +1,4 @@
1
- export { default as Root } from './dropdown-root.svelte';
2
- export { default as Item } from './item/dropdown-item.svelte';
3
- export { default as Trigger } from './dropdown-trigger.svelte';
4
- export { default as Placeholder } from './dropdown-placeholder.svelte';
5
- // export { default as Query } from './dropdown-query.svelte';
6
- export { default as Selection } from './dropdown-selection.svelte';
7
- export { default as Selections } from './dropdown-selections.svelte';
8
- export { Arrow, Indicator } from '../popover/atoms';
9
- export { Content, List, Divider, Title, Group } from '../menu/atoms';
1
+ /**
2
+ * @deprecated Import from `select` instead. This module will be removed in a future version.
3
+ */
4
+ export * from '../select/atoms';
@@ -1,53 +1,4 @@
1
- import { MenuBond, MenuBondState, type MenuBondElements, type MenuBondProps } from '../menu/bond.svelte';
2
- import type { DropdownItemController } from './item/controller.svelte';
3
- export type DropdownStateProps = MenuBondProps & {
4
- values?: string[];
5
- value?: string;
6
- labels?: string[];
7
- label?: string;
8
- multiple?: boolean;
9
- keys?: string[];
10
- readonly rest?: Record<string, unknown>;
11
- };
12
- export type DropdownBondElements = MenuBondElements & {
13
- placeholder?: HTMLElement;
14
- };
15
- export declare class DropdownBond<Props extends DropdownStateProps = DropdownStateProps, State extends DropdownBondState<Props> = DropdownBondState<Props>, Elements extends DropdownBondElements = DropdownBondElements> extends MenuBond<Props, State, Elements> {
16
- constructor(state: State);
17
- content(): {
18
- role: string;
19
- 'aria-multiselectable': boolean;
20
- 'aria-activedescendant': string | undefined;
21
- 'aria-orientation': "vertical";
22
- onkeydown: (ev: KeyboardEvent) => void;
23
- id: string;
24
- 'aria-modal': boolean;
25
- 'aria-labelledby': string;
26
- inert: boolean | undefined;
27
- tabindex: number;
28
- 'data-atom': string;
29
- 'data-kind': string;
30
- 'data-active': boolean;
31
- };
32
- item(): {
33
- role: string;
34
- onkeyup: (ev: KeyboardEvent) => void;
35
- };
36
- placeholder(): {
37
- [x: symbol]: (node: HTMLElement) => void;
38
- id: string;
39
- role: string;
40
- 'data-atom': string;
41
- 'data-kind': string;
42
- };
43
- static get<Props extends DropdownStateProps = DropdownStateProps, State extends DropdownBondState<Props> = DropdownBondState<Props>, Elements extends DropdownBondElements = DropdownBondElements>(): DropdownBond<Props, State, Elements> | undefined;
44
- static set<Props extends DropdownStateProps = DropdownStateProps, State extends DropdownBondState<Props> = DropdownBondState<Props>, Elements extends DropdownBondElements = DropdownBondElements>(context: DropdownBond<Props, State, Elements>): DropdownBond<Props, State, Elements>;
45
- }
46
- export declare class DropdownBondState<Props extends DropdownStateProps = DropdownStateProps> extends MenuBondState<Props> {
47
- #private;
48
- constructor(props: () => Props);
49
- get selections(): DropdownItemController<unknown>[];
50
- select(ids: string[]): void;
51
- unselect(ids: string[]): void;
52
- protected updateLabels(): void;
53
- }
1
+ /**
2
+ * @deprecated Import from `select/bond.svelte` instead. This module will be removed in a future version.
3
+ */
4
+ export { SelectBond as DropdownBond, SelectBondState as DropdownBondState, type SelectBondElements as DropdownBondElements, type SelectStateProps as DropdownStateProps } from '../select/bond.svelte';
@@ -1,89 +1,4 @@
1
- import { untrack } from 'svelte';
2
- import { createAttachmentKey } from 'svelte/attachments';
3
- import { MenuBond, MenuBondState } from '../menu/bond.svelte';
4
- const DROPDOWN_ELEMENTS_KIND = {
5
- placeholder: 'dropdown-placeholder',
6
- arrow: 'popover-arrow',
7
- trigger: 'popover-trigger',
8
- content: 'popover-content',
9
- indicator: 'popover-indicator'
10
- };
11
- export class DropdownBond extends MenuBond {
12
- constructor(state) {
13
- super(state);
14
- }
15
- content() {
16
- const isMultiselect = this.state.props.multiple ?? false;
17
- const highlightedId = this.state.highlightedItem?.id;
18
- return {
19
- ...super.content(),
20
- role: 'listbox',
21
- 'aria-multiselectable': isMultiselect,
22
- 'aria-activedescendant': highlightedId ? `item-${highlightedId}` : undefined,
23
- 'aria-orientation': 'vertical'
24
- };
25
- }
26
- item() {
27
- return {
28
- ...super.item(),
29
- role: 'option'
30
- };
31
- }
32
- placeholder() {
33
- const id = [DROPDOWN_ELEMENTS_KIND.placeholder, this.id].join('-');
34
- return {
35
- id,
36
- role: 'group',
37
- 'data-atom': 'dropdown',
38
- 'data-kind': 'placeholder',
39
- [createAttachmentKey()]: (node) => {
40
- this.elements.placeholder = node;
41
- }
42
- };
43
- }
44
- // static get = getDropdownContext;
45
- // static set = setDropdownContext;
46
- static get() {
47
- return MenuBond.get();
48
- }
49
- static set(context) {
50
- return MenuBond.set(context);
51
- }
52
- }
53
- export class DropdownBondState extends MenuBondState {
54
- #selections = $derived(this.props.values
55
- ?.map((value) => this.items.get(value))
56
- .filter(Boolean) ?? []);
57
- constructor(props) {
58
- super(props);
59
- }
60
- get selections() {
61
- return this.#selections;
62
- }
63
- select(ids) {
64
- if (untrack(() => this.props.multiple)) {
65
- // eslint-disable-next-line svelte/prefer-svelte-reactivity
66
- const sequence = new Set(untrack(() => [...ids, ...(this.props.values ?? [])]));
67
- this.props.values = [...sequence];
68
- }
69
- else {
70
- const value = ids[0];
71
- this.props.values = value ? [value] : [];
72
- }
73
- this.updateLabels();
74
- }
75
- unselect(ids) {
76
- // eslint-disable-next-line svelte/prefer-svelte-reactivity
77
- const sequence = new Set(untrack(() => this.props.values ?? []));
78
- for (const v of ids) {
79
- sequence.delete(v);
80
- }
81
- this.props.values = [...sequence];
82
- this.updateLabels();
83
- }
84
- updateLabels() {
85
- const labels = this.#selections.map((s) => s.label);
86
- this.props.labels = labels;
87
- this.props.label = labels[0] ?? '';
88
- }
89
- }
1
+ /**
2
+ * @deprecated Import from `select/bond.svelte` instead. This module will be removed in a future version.
3
+ */
4
+ export { SelectBond as DropdownBond, SelectBondState as DropdownBondState } from '../select/bond.svelte';
@@ -1,43 +1,43 @@
1
- <script lang="ts">
2
- import { DropdownBond } from './bond.svelte';
3
- import { Input } from '../input';
4
- import type { DropdownQueryProps } from './types';
5
-
6
- const bond = DropdownBond.get() as DropdownBond;
7
-
8
- if (!bond) {
9
- throw new Error('Dropdown atom was not found');
10
- }
11
-
12
- let {
13
- value = $bindable(),
14
- class: klass = '',
15
- children = undefined,
16
- onmount = undefined,
17
- ondestroy = undefined,
18
- animate = undefined,
19
- enter = undefined,
20
- exit = undefined,
21
- initial = undefined,
22
- ...restProps
23
- }: DropdownQueryProps = $props();
24
- </script>
25
-
26
- <Input.Control
27
- bind:value={
28
- () => value,
29
- (v) => {
30
- value = v;
31
- }
32
- }
33
- {bond}
34
- preset="dropdown.query"
35
- class={['inline-flex h-auto w-auto flex-1 py-1', '$preset', klass]}
36
- onmount={onmount?.bind(bond.state)}
37
- ondestroy={ondestroy?.bind(bond.state)}
38
- enter={enter?.bind(bond.state)}
39
- exit={exit?.bind(bond.state)}
40
- initial={initial?.bind(bond.state)}
41
- animate={animate?.bind(bond.state)}
42
- {...restProps}
43
- />
1
+ <script lang="ts">
2
+ import { DropdownBond } from './bond.svelte';
3
+ import { Input } from '../input';
4
+ import type { DropdownQueryProps } from './types';
5
+
6
+ const bond = DropdownBond.get() as DropdownBond;
7
+
8
+ if (!bond) {
9
+ throw new Error('Dropdown atom was not found');
10
+ }
11
+
12
+ let {
13
+ value = $bindable(),
14
+ class: klass = '',
15
+ children = undefined,
16
+ onmount = undefined,
17
+ ondestroy = undefined,
18
+ animate = undefined,
19
+ enter = undefined,
20
+ exit = undefined,
21
+ initial = undefined,
22
+ ...restProps
23
+ }: DropdownQueryProps = $props();
24
+ </script>
25
+
26
+ <Input.Control
27
+ bind:value={
28
+ () => value,
29
+ (v) => {
30
+ value = v;
31
+ }
32
+ }
33
+ {bond}
34
+ preset="dropdown.query"
35
+ class={['inline-flex h-auto w-auto flex-1 py-1', '$preset', klass]}
36
+ onmount={onmount?.bind(bond.state)}
37
+ ondestroy={ondestroy?.bind(bond.state)}
38
+ enter={enter?.bind(bond.state)}
39
+ exit={exit?.bind(bond.state)}
40
+ initial={initial?.bind(bond.state)}
41
+ animate={animate?.bind(bond.state)}
42
+ {...restProps}
43
+ />