@ifhover/leaf-ui 0.6.0 → 0.7.0

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 (659) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/autocomplete/autocomplete.cjs +7 -3
  3. package/dist/cjs/autocomplete/autocomplete.cjs.map +1 -1
  4. package/dist/cjs/autocomplete/autocomplete.d.cts +2 -0
  5. package/dist/cjs/autocomplete/autocomplete.d.cts.map +1 -1
  6. package/dist/cjs/browser/modules/autocomplete/autocomplete.cjs +7 -3
  7. package/dist/cjs/browser/modules/autocomplete/autocomplete.cjs.map +1 -1
  8. package/dist/cjs/browser/modules/button/button.cjs.map +1 -1
  9. package/dist/cjs/browser/modules/cascader/cascader.cjs +9 -2
  10. package/dist/cjs/browser/modules/cascader/cascader.cjs.map +1 -1
  11. package/dist/cjs/browser/modules/colors.cjs +73 -7
  12. package/dist/cjs/browser/modules/colors.cjs.map +1 -1
  13. package/dist/cjs/browser/modules/commandpalette/commandpalette.cjs +10 -3
  14. package/dist/cjs/browser/modules/commandpalette/commandpalette.cjs.map +1 -1
  15. package/dist/cjs/browser/modules/config-provider/component-defaults.cjs.map +1 -1
  16. package/dist/cjs/browser/modules/config-provider/use-color-variables.cjs +18 -2
  17. package/dist/cjs/browser/modules/config-provider/use-color-variables.cjs.map +1 -1
  18. package/dist/cjs/browser/modules/drawer/drawer.cjs +7 -1
  19. package/dist/cjs/browser/modules/drawer/drawer.cjs.map +1 -1
  20. package/dist/cjs/browser/modules/dropdown/dropdown.cjs +25 -4
  21. package/dist/cjs/browser/modules/dropdown/dropdown.cjs.map +1 -1
  22. package/dist/cjs/browser/modules/form/form.cjs +38 -21
  23. package/dist/cjs/browser/modules/form/form.cjs.map +1 -1
  24. package/dist/cjs/browser/modules/image/viewer.cjs +8 -2
  25. package/dist/cjs/browser/modules/image/viewer.cjs.map +1 -1
  26. package/dist/cjs/browser/modules/index.cjs +3 -4
  27. package/dist/cjs/browser/modules/layout/layout.cjs +4 -1
  28. package/dist/cjs/browser/modules/layout/layout.cjs.map +1 -1
  29. package/dist/cjs/browser/modules/mentions/mentions.cjs +4 -2
  30. package/dist/cjs/browser/modules/mentions/mentions.cjs.map +1 -1
  31. package/dist/cjs/browser/modules/menu/index.cjs +5 -2
  32. package/dist/cjs/browser/modules/menu/menu.cjs +60 -18
  33. package/dist/cjs/browser/modules/menu/menu.cjs.map +1 -1
  34. package/dist/cjs/browser/modules/scrollbar/scrollbar.cjs +69 -19
  35. package/dist/cjs/browser/modules/scrollbar/scrollbar.cjs.map +1 -1
  36. package/dist/cjs/browser/modules/select/select.cjs +3 -3
  37. package/dist/cjs/browser/modules/select/select.cjs.map +1 -1
  38. package/dist/cjs/browser/modules/shared/floating.cjs +49 -20
  39. package/dist/cjs/browser/modules/shared/floating.cjs.map +1 -1
  40. package/dist/cjs/browser/modules/shared/scoped-portal.cjs +2 -23
  41. package/dist/cjs/browser/modules/shared/scoped-portal.cjs.map +1 -1
  42. package/dist/cjs/browser/modules/{segmented/index.cjs → shared/theme-variables.cjs} +27 -5
  43. package/dist/cjs/browser/modules/shared/theme-variables.cjs.map +1 -0
  44. package/dist/cjs/browser/modules/splitter/splitter.cjs +4 -1
  45. package/dist/cjs/browser/modules/splitter/splitter.cjs.map +1 -1
  46. package/dist/cjs/browser/modules/tabs/tabs.cjs +14 -8
  47. package/dist/cjs/browser/modules/tabs/tabs.cjs.map +1 -1
  48. package/dist/cjs/browser/modules/tailwind-tokens.cjs +1 -1
  49. package/dist/cjs/browser/modules/tailwind-tokens.cjs.map +1 -1
  50. package/dist/cjs/browser/modules/textarea/textarea.cjs +49 -21
  51. package/dist/cjs/browser/modules/textarea/textarea.cjs.map +1 -1
  52. package/dist/cjs/browser/modules/theme.cjs +53 -29
  53. package/dist/cjs/browser/modules/theme.cjs.map +1 -1
  54. package/dist/cjs/browser/modules/timeline/timeline.cjs +1 -1
  55. package/dist/cjs/browser/modules/timeline/timeline.cjs.map +1 -1
  56. package/dist/cjs/browser/modules/timepicker/time-panel.cjs +8 -2
  57. package/dist/cjs/browser/modules/timepicker/time-panel.cjs.map +1 -1
  58. package/dist/cjs/browser/modules/transfer/transfer.cjs +5 -5
  59. package/dist/cjs/browser/modules/transfer/transfer.cjs.map +1 -1
  60. package/dist/cjs/browser/modules/tree/tree.cjs +13 -6
  61. package/dist/cjs/browser/modules/tree/tree.cjs.map +1 -1
  62. package/dist/cjs/browser/modules/treeselect/treeselect.cjs +5 -4
  63. package/dist/cjs/browser/modules/treeselect/treeselect.cjs.map +1 -1
  64. package/dist/cjs/browser/modules/virtuallist/virtuallist.cjs +9 -3
  65. package/dist/cjs/browser/modules/virtuallist/virtuallist.cjs.map +1 -1
  66. package/dist/cjs/button/button.cjs.map +1 -1
  67. package/dist/cjs/button/button.d.cts +7 -2
  68. package/dist/cjs/button/button.d.cts.map +1 -1
  69. package/dist/cjs/cascader/cascader.cjs +9 -2
  70. package/dist/cjs/cascader/cascader.cjs.map +1 -1
  71. package/dist/cjs/cascader/cascader.d.cts +2 -0
  72. package/dist/cjs/cascader/cascader.d.cts.map +1 -1
  73. package/dist/cjs/colors.cjs +73 -7
  74. package/dist/cjs/colors.cjs.map +1 -1
  75. package/dist/cjs/colors.d.cts +3 -1
  76. package/dist/cjs/colors.d.cts.map +1 -1
  77. package/dist/cjs/commandpalette/commandpalette.cjs +10 -3
  78. package/dist/cjs/commandpalette/commandpalette.cjs.map +1 -1
  79. package/dist/cjs/commandpalette/commandpalette.d.cts.map +1 -1
  80. package/dist/cjs/config-provider/component-defaults.cjs.map +1 -1
  81. package/dist/cjs/config-provider/component-defaults.d.cts +3 -4
  82. package/dist/cjs/config-provider/component-defaults.d.cts.map +1 -1
  83. package/dist/cjs/config-provider/index.d.cts +1 -1
  84. package/dist/cjs/config-provider/index.d.cts.map +1 -1
  85. package/dist/cjs/config-provider/use-color-variables.cjs +18 -2
  86. package/dist/cjs/config-provider/use-color-variables.cjs.map +1 -1
  87. package/dist/cjs/config-provider/use-color-variables.d.cts.map +1 -1
  88. package/dist/cjs/drawer/drawer.cjs +7 -1
  89. package/dist/cjs/drawer/drawer.cjs.map +1 -1
  90. package/dist/cjs/drawer/drawer.d.cts.map +1 -1
  91. package/dist/cjs/dropdown/dropdown.cjs +25 -4
  92. package/dist/cjs/dropdown/dropdown.cjs.map +1 -1
  93. package/dist/cjs/dropdown/dropdown.d.cts +9 -1
  94. package/dist/cjs/dropdown/dropdown.d.cts.map +1 -1
  95. package/dist/cjs/form/form.cjs +38 -21
  96. package/dist/cjs/form/form.cjs.map +1 -1
  97. package/dist/cjs/form/form.d.cts +3 -1
  98. package/dist/cjs/form/form.d.cts.map +1 -1
  99. package/dist/cjs/image/viewer.cjs +8 -2
  100. package/dist/cjs/image/viewer.cjs.map +1 -1
  101. package/dist/cjs/image/viewer.d.cts.map +1 -1
  102. package/dist/cjs/index.cjs +3 -4
  103. package/dist/cjs/index.d.cts +3 -5
  104. package/dist/cjs/index.d.cts.map +1 -1
  105. package/dist/cjs/layout/layout.cjs +4 -1
  106. package/dist/cjs/layout/layout.cjs.map +1 -1
  107. package/dist/cjs/layout/layout.d.cts.map +1 -1
  108. package/dist/cjs/mentions/mentions.cjs +4 -2
  109. package/dist/cjs/mentions/mentions.cjs.map +1 -1
  110. package/dist/cjs/mentions/mentions.d.cts +2 -0
  111. package/dist/cjs/mentions/mentions.d.cts.map +1 -1
  112. package/dist/cjs/menu/index.cjs +5 -2
  113. package/dist/cjs/menu/index.d.cts +2 -2
  114. package/dist/cjs/menu/index.d.cts.map +1 -1
  115. package/dist/cjs/menu/menu.cjs +60 -18
  116. package/dist/cjs/menu/menu.cjs.map +1 -1
  117. package/dist/cjs/menu/menu.d.cts +4 -0
  118. package/dist/cjs/menu/menu.d.cts.map +1 -1
  119. package/dist/cjs/scrollbar/scrollbar.cjs +69 -19
  120. package/dist/cjs/scrollbar/scrollbar.cjs.map +1 -1
  121. package/dist/cjs/scrollbar/scrollbar.d.cts +12 -2
  122. package/dist/cjs/scrollbar/scrollbar.d.cts.map +1 -1
  123. package/dist/cjs/select/select.cjs +3 -3
  124. package/dist/cjs/select/select.cjs.map +1 -1
  125. package/dist/cjs/shared/floating.cjs +49 -20
  126. package/dist/cjs/shared/floating.cjs.map +1 -1
  127. package/dist/cjs/shared/floating.d.cts +3 -1
  128. package/dist/cjs/shared/floating.d.cts.map +1 -1
  129. package/dist/cjs/shared/scoped-portal.cjs +2 -23
  130. package/dist/cjs/shared/scoped-portal.cjs.map +1 -1
  131. package/dist/cjs/shared/scoped-portal.d.cts.map +1 -1
  132. package/dist/cjs/{segmented/index.cjs → shared/theme-variables.cjs} +27 -5
  133. package/dist/cjs/shared/theme-variables.cjs.map +1 -0
  134. package/dist/cjs/shared/theme-variables.d.cts +4 -0
  135. package/dist/cjs/shared/theme-variables.d.cts.map +1 -0
  136. package/dist/cjs/splitter/splitter.cjs +4 -1
  137. package/dist/cjs/splitter/splitter.cjs.map +1 -1
  138. package/dist/cjs/splitter/splitter.d.cts.map +1 -1
  139. package/dist/cjs/styles/alert.css +1 -1
  140. package/dist/cjs/styles/anchor.css +1 -1
  141. package/dist/cjs/styles/appbar.css +1 -1
  142. package/dist/cjs/styles/autocomplete.css +1 -1
  143. package/dist/cjs/styles/avatar.css +1 -1
  144. package/dist/cjs/styles/backtop.css +1 -1
  145. package/dist/cjs/styles/badge.css +1 -1
  146. package/dist/cjs/styles/breadcrumb.css +1 -1
  147. package/dist/cjs/styles/button.css +1 -1
  148. package/dist/cjs/styles/calendar.css +1 -1
  149. package/dist/cjs/styles/card.css +1 -1
  150. package/dist/cjs/styles/carousel.css +1 -1
  151. package/dist/cjs/styles/cascader.css +1 -1
  152. package/dist/cjs/styles/checkbox.css +1 -1
  153. package/dist/cjs/styles/collapse.css +1 -1
  154. package/dist/cjs/styles/colorpicker.css +1 -1
  155. package/dist/cjs/styles/commandpalette.css +1 -1
  156. package/dist/cjs/styles/components/alert.css +1 -1
  157. package/dist/cjs/styles/components/anchor.css +1 -1
  158. package/dist/cjs/styles/components/appbar.css +1 -1
  159. package/dist/cjs/styles/components/autocomplete.css +1 -1
  160. package/dist/cjs/styles/components/avatar.css +1 -1
  161. package/dist/cjs/styles/components/breadcrumb.css +1 -1
  162. package/dist/cjs/styles/components/button.css +1 -1
  163. package/dist/cjs/styles/components/calendar.css +1 -1
  164. package/dist/cjs/styles/components/card.css +1 -1
  165. package/dist/cjs/styles/components/carousel.css +1 -1
  166. package/dist/cjs/styles/components/cascader.css +1 -1
  167. package/dist/cjs/styles/components/checkbox.css +1 -1
  168. package/dist/cjs/styles/components/collapse.css +1 -1
  169. package/dist/cjs/styles/components/colorpicker.css +1 -1
  170. package/dist/cjs/styles/components/commandpalette.css +1 -1
  171. package/dist/cjs/styles/components/datepicker.css +1 -1
  172. package/dist/cjs/styles/components/descriptions.css +1 -1
  173. package/dist/cjs/styles/components/drawer.css +1 -1
  174. package/dist/cjs/styles/components/dropdown.css +1 -1
  175. package/dist/cjs/styles/components/errorboundary.css +1 -1
  176. package/dist/cjs/styles/components/filelist.css +1 -1
  177. package/dist/cjs/styles/components/form.css +1 -1
  178. package/dist/cjs/styles/components/image.css +1 -1
  179. package/dist/cjs/styles/components/input.css +1 -1
  180. package/dist/cjs/styles/components/inputnumber.css +1 -1
  181. package/dist/cjs/styles/components/inputotp.css +1 -1
  182. package/dist/cjs/styles/components/layout.css +1 -1
  183. package/dist/cjs/styles/components/loading.css +1 -1
  184. package/dist/cjs/styles/components/loadingbar.css +1 -1
  185. package/dist/cjs/styles/components/mentions.css +1 -1
  186. package/dist/cjs/styles/components/menu.css +1 -1
  187. package/dist/cjs/styles/components/message.css +1 -1
  188. package/dist/cjs/styles/components/modal.css +1 -1
  189. package/dist/cjs/styles/components/notification.css +1 -1
  190. package/dist/cjs/styles/components/pagination.css +1 -1
  191. package/dist/cjs/styles/components/popover.css +1 -1
  192. package/dist/cjs/styles/components/progress.css +1 -1
  193. package/dist/cjs/styles/components/radio.css +1 -1
  194. package/dist/cjs/styles/components/rate.css +1 -1
  195. package/dist/cjs/styles/components/scrollarea.css +1 -1
  196. package/dist/cjs/styles/components/scrollbar.css +1 -1
  197. package/dist/cjs/styles/components/select.css +1 -1
  198. package/dist/cjs/styles/components/shared-calendar.css +1 -1
  199. package/dist/cjs/styles/components/slider.css +1 -1
  200. package/dist/cjs/styles/components/splitter.css +1 -1
  201. package/dist/cjs/styles/components/steps.css +1 -1
  202. package/dist/cjs/styles/components/switch.css +1 -1
  203. package/dist/cjs/styles/components/table.css +1 -1
  204. package/dist/cjs/styles/components/tabletanstack.css +1 -1
  205. package/dist/cjs/styles/components/tabs.css +1 -1
  206. package/dist/cjs/styles/components/tag.css +1 -1
  207. package/dist/cjs/styles/components/textarea.css +1 -1
  208. package/dist/cjs/styles/components/timepicker.css +1 -1
  209. package/dist/cjs/styles/components/tooltip.css +1 -1
  210. package/dist/cjs/styles/components/tour.css +1 -1
  211. package/dist/cjs/styles/components/transfer.css +1 -1
  212. package/dist/cjs/styles/components/tree.css +1 -1
  213. package/dist/cjs/styles/components/treeselect.css +1 -1
  214. package/dist/cjs/styles/components/typography.css +1 -1
  215. package/dist/cjs/styles/components/upload.css +1 -1
  216. package/dist/cjs/styles/components/virtuallist.css +1 -1
  217. package/dist/cjs/styles/config-provider.css +1 -1
  218. package/dist/cjs/styles/confirm.css +1 -1
  219. package/dist/cjs/styles/datepicker.css +1 -1
  220. package/dist/cjs/styles/daterangepicker.css +1 -1
  221. package/dist/cjs/styles/datetimepicker.css +1 -1
  222. package/dist/cjs/styles/descriptions.css +1 -1
  223. package/dist/cjs/styles/divider.css +1 -1
  224. package/dist/cjs/styles/drawer.css +1 -1
  225. package/dist/cjs/styles/dropdown.css +1 -1
  226. package/dist/cjs/styles/empty.css +1 -1
  227. package/dist/cjs/styles/errorboundary.css +1 -1
  228. package/dist/cjs/styles/filelist.css +1 -1
  229. package/dist/cjs/styles/flex.css +1 -1
  230. package/dist/cjs/styles/floatbutton.css +1 -1
  231. package/dist/cjs/styles/form.css +1 -1
  232. package/dist/cjs/styles/foundation.css +1 -1
  233. package/dist/cjs/styles/grid.css +1 -1
  234. package/dist/cjs/styles/image.css +1 -1
  235. package/dist/cjs/styles/index.css +1380 -716
  236. package/dist/cjs/styles/index.css.map +1 -1
  237. package/dist/cjs/styles/infinitescroll.css +1 -1
  238. package/dist/cjs/styles/input.css +1 -1
  239. package/dist/cjs/styles/inputmask.css +1 -1
  240. package/dist/cjs/styles/inputnumber.css +1 -1
  241. package/dist/cjs/styles/inputotp.css +1 -1
  242. package/dist/cjs/styles/layout.css +1 -1
  243. package/dist/cjs/styles/loading.css +1 -1
  244. package/dist/cjs/styles/loadingbar.css +1 -1
  245. package/dist/cjs/styles/masonry.css +1 -1
  246. package/dist/cjs/styles/mentions.css +1 -1
  247. package/dist/cjs/styles/menu.css +1 -1
  248. package/dist/cjs/styles/message.css +1 -1
  249. package/dist/cjs/styles/modal.css +1 -1
  250. package/dist/cjs/styles/notification.css +1 -1
  251. package/dist/cjs/styles/pagination.css +1 -1
  252. package/dist/cjs/styles/popconfirm.css +1 -1
  253. package/dist/cjs/styles/popover.css +1 -1
  254. package/dist/cjs/styles/progress.css +1 -1
  255. package/dist/cjs/styles/qrcode.css +1 -1
  256. package/dist/cjs/styles/radio.css +1 -1
  257. package/dist/cjs/styles/rate.css +1 -1
  258. package/dist/cjs/styles/result.css +1 -1
  259. package/dist/cjs/styles/scrollarea.css +1 -1
  260. package/dist/cjs/styles/scrollbar.css +1 -1
  261. package/dist/cjs/styles/select.css +1 -1
  262. package/dist/cjs/styles/skeleton.css +1 -1
  263. package/dist/cjs/styles/slider.css +1 -1
  264. package/dist/cjs/styles/space.css +1 -1
  265. package/dist/cjs/styles/splitter.css +1 -1
  266. package/dist/cjs/styles/statistic.css +1 -1
  267. package/dist/cjs/styles/steps.css +1 -1
  268. package/dist/cjs/styles/switch.css +1 -1
  269. package/dist/cjs/styles/table.css +1 -1
  270. package/dist/cjs/styles/tabletanstack.css +1 -1
  271. package/dist/cjs/styles/tabs.css +1 -1
  272. package/dist/cjs/styles/tag.css +1 -1
  273. package/dist/cjs/styles/textarea.css +1 -1
  274. package/dist/cjs/styles/timeline.css +1 -1
  275. package/dist/cjs/styles/timepicker.css +1 -1
  276. package/dist/cjs/styles/timerangepicker.css +1 -1
  277. package/dist/cjs/styles/tooltip.css +1 -1
  278. package/dist/cjs/styles/tour.css +1 -1
  279. package/dist/cjs/styles/transfer.css +1 -1
  280. package/dist/cjs/styles/tree.css +1 -1
  281. package/dist/cjs/styles/treeselect.css +1 -1
  282. package/dist/cjs/styles/typography.css +1 -1
  283. package/dist/cjs/styles/upload.css +1 -1
  284. package/dist/cjs/styles/virtuallist.css +1 -1
  285. package/dist/cjs/tabs/tabs.cjs +14 -8
  286. package/dist/cjs/tabs/tabs.cjs.map +1 -1
  287. package/dist/cjs/tabs/tabs.d.cts +4 -2
  288. package/dist/cjs/tabs/tabs.d.cts.map +1 -1
  289. package/dist/cjs/tailwind-tokens.cjs +1 -1
  290. package/dist/cjs/tailwind-tokens.cjs.map +1 -1
  291. package/dist/cjs/tailwind-tokens.d.cts.map +1 -1
  292. package/dist/cjs/textarea/textarea.cjs +49 -21
  293. package/dist/cjs/textarea/textarea.cjs.map +1 -1
  294. package/dist/cjs/textarea/textarea.d.cts.map +1 -1
  295. package/dist/cjs/theme.cjs +53 -29
  296. package/dist/cjs/theme.cjs.map +1 -1
  297. package/dist/cjs/theme.d.cts +15 -0
  298. package/dist/cjs/theme.d.cts.map +1 -1
  299. package/dist/cjs/timeline/timeline.cjs +1 -1
  300. package/dist/cjs/timeline/timeline.cjs.map +1 -1
  301. package/dist/cjs/timeline/timeline.d.cts.map +1 -1
  302. package/dist/cjs/timepicker/time-panel.cjs +8 -2
  303. package/dist/cjs/timepicker/time-panel.cjs.map +1 -1
  304. package/dist/cjs/timepicker/time-panel.d.cts.map +1 -1
  305. package/dist/cjs/transfer/transfer.cjs +5 -5
  306. package/dist/cjs/transfer/transfer.cjs.map +1 -1
  307. package/dist/cjs/transfer/transfer.d.cts.map +1 -1
  308. package/dist/cjs/tree/tree.cjs +13 -6
  309. package/dist/cjs/tree/tree.cjs.map +1 -1
  310. package/dist/cjs/tree/tree.d.cts.map +1 -1
  311. package/dist/cjs/treeselect/treeselect.cjs +5 -4
  312. package/dist/cjs/treeselect/treeselect.cjs.map +1 -1
  313. package/dist/cjs/treeselect/treeselect.d.cts.map +1 -1
  314. package/dist/cjs/virtuallist/virtuallist.cjs +9 -3
  315. package/dist/cjs/virtuallist/virtuallist.cjs.map +1 -1
  316. package/dist/cjs/virtuallist/virtuallist.d.cts.map +1 -1
  317. package/dist/esm/autocomplete/autocomplete.d.ts +2 -0
  318. package/dist/esm/autocomplete/autocomplete.d.ts.map +1 -1
  319. package/dist/esm/autocomplete/autocomplete.js +7 -3
  320. package/dist/esm/autocomplete/autocomplete.js.map +1 -1
  321. package/dist/esm/browser/modules/autocomplete/autocomplete.js +7 -3
  322. package/dist/esm/browser/modules/autocomplete/autocomplete.js.map +1 -1
  323. package/dist/esm/browser/modules/button/button.js.map +1 -1
  324. package/dist/esm/browser/modules/cascader/cascader.js +9 -2
  325. package/dist/esm/browser/modules/cascader/cascader.js.map +1 -1
  326. package/dist/esm/browser/modules/colors.js +69 -6
  327. package/dist/esm/browser/modules/colors.js.map +1 -1
  328. package/dist/esm/browser/modules/commandpalette/commandpalette.js +10 -3
  329. package/dist/esm/browser/modules/commandpalette/commandpalette.js.map +1 -1
  330. package/dist/esm/browser/modules/config-provider/component-defaults.js.map +1 -1
  331. package/dist/esm/browser/modules/config-provider/use-color-variables.js +18 -2
  332. package/dist/esm/browser/modules/config-provider/use-color-variables.js.map +1 -1
  333. package/dist/esm/browser/modules/drawer/drawer.js +7 -1
  334. package/dist/esm/browser/modules/drawer/drawer.js.map +1 -1
  335. package/dist/esm/browser/modules/dropdown/dropdown.js +25 -4
  336. package/dist/esm/browser/modules/dropdown/dropdown.js.map +1 -1
  337. package/dist/esm/browser/modules/form/form.js +38 -21
  338. package/dist/esm/browser/modules/form/form.js.map +1 -1
  339. package/dist/esm/browser/modules/image/viewer.js +8 -2
  340. package/dist/esm/browser/modules/image/viewer.js.map +1 -1
  341. package/dist/esm/browser/modules/index.js +1 -2
  342. package/dist/esm/browser/modules/layout/layout.js +4 -1
  343. package/dist/esm/browser/modules/layout/layout.js.map +1 -1
  344. package/dist/esm/browser/modules/mentions/mentions.js +4 -2
  345. package/dist/esm/browser/modules/mentions/mentions.js.map +1 -1
  346. package/dist/esm/browser/modules/menu/index.js +1 -1
  347. package/dist/esm/browser/modules/menu/menu.js +57 -18
  348. package/dist/esm/browser/modules/menu/menu.js.map +1 -1
  349. package/dist/esm/browser/modules/scrollbar/scrollbar.js +69 -19
  350. package/dist/esm/browser/modules/scrollbar/scrollbar.js.map +1 -1
  351. package/dist/esm/browser/modules/select/select.js +3 -3
  352. package/dist/esm/browser/modules/select/select.js.map +1 -1
  353. package/dist/esm/browser/modules/shared/floating.js +49 -20
  354. package/dist/esm/browser/modules/shared/floating.js.map +1 -1
  355. package/dist/esm/browser/modules/shared/scoped-portal.js +2 -23
  356. package/dist/esm/browser/modules/shared/scoped-portal.js.map +1 -1
  357. package/dist/esm/browser/modules/shared/theme-variables.js +27 -0
  358. package/dist/esm/browser/modules/shared/theme-variables.js.map +1 -0
  359. package/dist/esm/browser/modules/splitter/splitter.js +4 -1
  360. package/dist/esm/browser/modules/splitter/splitter.js.map +1 -1
  361. package/dist/esm/browser/modules/tabs/tabs.js +14 -8
  362. package/dist/esm/browser/modules/tabs/tabs.js.map +1 -1
  363. package/dist/esm/browser/modules/tailwind-tokens.js +1 -1
  364. package/dist/esm/browser/modules/tailwind-tokens.js.map +1 -1
  365. package/dist/esm/browser/modules/textarea/textarea.js +50 -22
  366. package/dist/esm/browser/modules/textarea/textarea.js.map +1 -1
  367. package/dist/esm/browser/modules/theme.js +53 -29
  368. package/dist/esm/browser/modules/theme.js.map +1 -1
  369. package/dist/esm/browser/modules/timeline/timeline.js +1 -1
  370. package/dist/esm/browser/modules/timeline/timeline.js.map +1 -1
  371. package/dist/esm/browser/modules/timepicker/time-panel.js +8 -2
  372. package/dist/esm/browser/modules/timepicker/time-panel.js.map +1 -1
  373. package/dist/esm/browser/modules/transfer/transfer.js +5 -5
  374. package/dist/esm/browser/modules/transfer/transfer.js.map +1 -1
  375. package/dist/esm/browser/modules/tree/tree.js +13 -6
  376. package/dist/esm/browser/modules/tree/tree.js.map +1 -1
  377. package/dist/esm/browser/modules/treeselect/treeselect.js +5 -4
  378. package/dist/esm/browser/modules/treeselect/treeselect.js.map +1 -1
  379. package/dist/esm/browser/modules/virtuallist/virtuallist.js +9 -3
  380. package/dist/esm/browser/modules/virtuallist/virtuallist.js.map +1 -1
  381. package/dist/esm/button/button.d.ts +7 -2
  382. package/dist/esm/button/button.d.ts.map +1 -1
  383. package/dist/esm/button/button.js.map +1 -1
  384. package/dist/esm/cascader/cascader.d.ts +2 -0
  385. package/dist/esm/cascader/cascader.d.ts.map +1 -1
  386. package/dist/esm/cascader/cascader.js +9 -2
  387. package/dist/esm/cascader/cascader.js.map +1 -1
  388. package/dist/esm/colors.d.ts +3 -1
  389. package/dist/esm/colors.d.ts.map +1 -1
  390. package/dist/esm/colors.js +69 -6
  391. package/dist/esm/colors.js.map +1 -1
  392. package/dist/esm/commandpalette/commandpalette.d.ts.map +1 -1
  393. package/dist/esm/commandpalette/commandpalette.js +10 -3
  394. package/dist/esm/commandpalette/commandpalette.js.map +1 -1
  395. package/dist/esm/config-provider/component-defaults.d.ts +3 -4
  396. package/dist/esm/config-provider/component-defaults.d.ts.map +1 -1
  397. package/dist/esm/config-provider/component-defaults.js.map +1 -1
  398. package/dist/esm/config-provider/index.d.ts +1 -1
  399. package/dist/esm/config-provider/index.d.ts.map +1 -1
  400. package/dist/esm/config-provider/use-color-variables.d.ts.map +1 -1
  401. package/dist/esm/config-provider/use-color-variables.js +18 -2
  402. package/dist/esm/config-provider/use-color-variables.js.map +1 -1
  403. package/dist/esm/drawer/drawer.d.ts.map +1 -1
  404. package/dist/esm/drawer/drawer.js +7 -1
  405. package/dist/esm/drawer/drawer.js.map +1 -1
  406. package/dist/esm/dropdown/dropdown.d.ts +9 -1
  407. package/dist/esm/dropdown/dropdown.d.ts.map +1 -1
  408. package/dist/esm/dropdown/dropdown.js +25 -4
  409. package/dist/esm/dropdown/dropdown.js.map +1 -1
  410. package/dist/esm/form/form.d.ts +3 -1
  411. package/dist/esm/form/form.d.ts.map +1 -1
  412. package/dist/esm/form/form.js +38 -21
  413. package/dist/esm/form/form.js.map +1 -1
  414. package/dist/esm/image/viewer.d.ts.map +1 -1
  415. package/dist/esm/image/viewer.js +8 -2
  416. package/dist/esm/image/viewer.js.map +1 -1
  417. package/dist/esm/index.d.ts +3 -5
  418. package/dist/esm/index.d.ts.map +1 -1
  419. package/dist/esm/index.js +1 -2
  420. package/dist/esm/layout/layout.d.ts.map +1 -1
  421. package/dist/esm/layout/layout.js +4 -1
  422. package/dist/esm/layout/layout.js.map +1 -1
  423. package/dist/esm/mentions/mentions.d.ts +2 -0
  424. package/dist/esm/mentions/mentions.d.ts.map +1 -1
  425. package/dist/esm/mentions/mentions.js +4 -2
  426. package/dist/esm/mentions/mentions.js.map +1 -1
  427. package/dist/esm/menu/index.d.ts +2 -2
  428. package/dist/esm/menu/index.d.ts.map +1 -1
  429. package/dist/esm/menu/index.js +1 -1
  430. package/dist/esm/menu/menu.d.ts +4 -0
  431. package/dist/esm/menu/menu.d.ts.map +1 -1
  432. package/dist/esm/menu/menu.js +57 -18
  433. package/dist/esm/menu/menu.js.map +1 -1
  434. package/dist/esm/scrollbar/scrollbar.d.ts +12 -2
  435. package/dist/esm/scrollbar/scrollbar.d.ts.map +1 -1
  436. package/dist/esm/scrollbar/scrollbar.js +69 -19
  437. package/dist/esm/scrollbar/scrollbar.js.map +1 -1
  438. package/dist/esm/select/select.js +3 -3
  439. package/dist/esm/select/select.js.map +1 -1
  440. package/dist/esm/shared/floating.d.ts +3 -1
  441. package/dist/esm/shared/floating.d.ts.map +1 -1
  442. package/dist/esm/shared/floating.js +49 -20
  443. package/dist/esm/shared/floating.js.map +1 -1
  444. package/dist/esm/shared/scoped-portal.d.ts.map +1 -1
  445. package/dist/esm/shared/scoped-portal.js +2 -23
  446. package/dist/esm/shared/scoped-portal.js.map +1 -1
  447. package/dist/esm/shared/theme-variables.d.ts +4 -0
  448. package/dist/esm/shared/theme-variables.d.ts.map +1 -0
  449. package/dist/esm/shared/theme-variables.js +27 -0
  450. package/dist/esm/shared/theme-variables.js.map +1 -0
  451. package/dist/esm/splitter/splitter.d.ts.map +1 -1
  452. package/dist/esm/splitter/splitter.js +4 -1
  453. package/dist/esm/splitter/splitter.js.map +1 -1
  454. package/dist/esm/styles/alert.css +1 -1
  455. package/dist/esm/styles/anchor.css +1 -1
  456. package/dist/esm/styles/appbar.css +1 -1
  457. package/dist/esm/styles/autocomplete.css +1 -1
  458. package/dist/esm/styles/avatar.css +1 -1
  459. package/dist/esm/styles/backtop.css +1 -1
  460. package/dist/esm/styles/badge.css +1 -1
  461. package/dist/esm/styles/breadcrumb.css +1 -1
  462. package/dist/esm/styles/button.css +1 -1
  463. package/dist/esm/styles/calendar.css +1 -1
  464. package/dist/esm/styles/card.css +1 -1
  465. package/dist/esm/styles/carousel.css +1 -1
  466. package/dist/esm/styles/cascader.css +1 -1
  467. package/dist/esm/styles/checkbox.css +1 -1
  468. package/dist/esm/styles/collapse.css +1 -1
  469. package/dist/esm/styles/colorpicker.css +1 -1
  470. package/dist/esm/styles/commandpalette.css +1 -1
  471. package/dist/esm/styles/components/alert.css +1 -1
  472. package/dist/esm/styles/components/anchor.css +1 -1
  473. package/dist/esm/styles/components/appbar.css +1 -1
  474. package/dist/esm/styles/components/autocomplete.css +1 -1
  475. package/dist/esm/styles/components/avatar.css +1 -1
  476. package/dist/esm/styles/components/breadcrumb.css +1 -1
  477. package/dist/esm/styles/components/button.css +1 -1
  478. package/dist/esm/styles/components/calendar.css +1 -1
  479. package/dist/esm/styles/components/card.css +1 -1
  480. package/dist/esm/styles/components/carousel.css +1 -1
  481. package/dist/esm/styles/components/cascader.css +1 -1
  482. package/dist/esm/styles/components/checkbox.css +1 -1
  483. package/dist/esm/styles/components/collapse.css +1 -1
  484. package/dist/esm/styles/components/colorpicker.css +1 -1
  485. package/dist/esm/styles/components/commandpalette.css +1 -1
  486. package/dist/esm/styles/components/datepicker.css +1 -1
  487. package/dist/esm/styles/components/descriptions.css +1 -1
  488. package/dist/esm/styles/components/drawer.css +1 -1
  489. package/dist/esm/styles/components/dropdown.css +1 -1
  490. package/dist/esm/styles/components/errorboundary.css +1 -1
  491. package/dist/esm/styles/components/filelist.css +1 -1
  492. package/dist/esm/styles/components/form.css +1 -1
  493. package/dist/esm/styles/components/image.css +1 -1
  494. package/dist/esm/styles/components/input.css +1 -1
  495. package/dist/esm/styles/components/inputnumber.css +1 -1
  496. package/dist/esm/styles/components/inputotp.css +1 -1
  497. package/dist/esm/styles/components/layout.css +1 -1
  498. package/dist/esm/styles/components/loading.css +1 -1
  499. package/dist/esm/styles/components/loadingbar.css +1 -1
  500. package/dist/esm/styles/components/mentions.css +1 -1
  501. package/dist/esm/styles/components/menu.css +1 -1
  502. package/dist/esm/styles/components/message.css +1 -1
  503. package/dist/esm/styles/components/modal.css +1 -1
  504. package/dist/esm/styles/components/notification.css +1 -1
  505. package/dist/esm/styles/components/pagination.css +1 -1
  506. package/dist/esm/styles/components/popover.css +1 -1
  507. package/dist/esm/styles/components/progress.css +1 -1
  508. package/dist/esm/styles/components/radio.css +1 -1
  509. package/dist/esm/styles/components/rate.css +1 -1
  510. package/dist/esm/styles/components/scrollarea.css +1 -1
  511. package/dist/esm/styles/components/scrollbar.css +1 -1
  512. package/dist/esm/styles/components/select.css +1 -1
  513. package/dist/esm/styles/components/shared-calendar.css +1 -1
  514. package/dist/esm/styles/components/slider.css +1 -1
  515. package/dist/esm/styles/components/splitter.css +1 -1
  516. package/dist/esm/styles/components/steps.css +1 -1
  517. package/dist/esm/styles/components/switch.css +1 -1
  518. package/dist/esm/styles/components/table.css +1 -1
  519. package/dist/esm/styles/components/tabletanstack.css +1 -1
  520. package/dist/esm/styles/components/tabs.css +1 -1
  521. package/dist/esm/styles/components/tag.css +1 -1
  522. package/dist/esm/styles/components/textarea.css +1 -1
  523. package/dist/esm/styles/components/timepicker.css +1 -1
  524. package/dist/esm/styles/components/tooltip.css +1 -1
  525. package/dist/esm/styles/components/tour.css +1 -1
  526. package/dist/esm/styles/components/transfer.css +1 -1
  527. package/dist/esm/styles/components/tree.css +1 -1
  528. package/dist/esm/styles/components/treeselect.css +1 -1
  529. package/dist/esm/styles/components/typography.css +1 -1
  530. package/dist/esm/styles/components/upload.css +1 -1
  531. package/dist/esm/styles/components/virtuallist.css +1 -1
  532. package/dist/esm/styles/config-provider.css +1 -1
  533. package/dist/esm/styles/confirm.css +1 -1
  534. package/dist/esm/styles/datepicker.css +1 -1
  535. package/dist/esm/styles/daterangepicker.css +1 -1
  536. package/dist/esm/styles/datetimepicker.css +1 -1
  537. package/dist/esm/styles/descriptions.css +1 -1
  538. package/dist/esm/styles/divider.css +1 -1
  539. package/dist/esm/styles/drawer.css +1 -1
  540. package/dist/esm/styles/dropdown.css +1 -1
  541. package/dist/esm/styles/empty.css +1 -1
  542. package/dist/esm/styles/errorboundary.css +1 -1
  543. package/dist/esm/styles/filelist.css +1 -1
  544. package/dist/esm/styles/flex.css +1 -1
  545. package/dist/esm/styles/floatbutton.css +1 -1
  546. package/dist/esm/styles/form.css +1 -1
  547. package/dist/esm/styles/foundation.css +1 -1
  548. package/dist/esm/styles/grid.css +1 -1
  549. package/dist/esm/styles/image.css +1 -1
  550. package/dist/esm/styles/index.css +1380 -716
  551. package/dist/esm/styles/index.css.map +1 -1
  552. package/dist/esm/styles/infinitescroll.css +1 -1
  553. package/dist/esm/styles/input.css +1 -1
  554. package/dist/esm/styles/inputmask.css +1 -1
  555. package/dist/esm/styles/inputnumber.css +1 -1
  556. package/dist/esm/styles/inputotp.css +1 -1
  557. package/dist/esm/styles/layout.css +1 -1
  558. package/dist/esm/styles/loading.css +1 -1
  559. package/dist/esm/styles/loadingbar.css +1 -1
  560. package/dist/esm/styles/masonry.css +1 -1
  561. package/dist/esm/styles/mentions.css +1 -1
  562. package/dist/esm/styles/menu.css +1 -1
  563. package/dist/esm/styles/message.css +1 -1
  564. package/dist/esm/styles/modal.css +1 -1
  565. package/dist/esm/styles/notification.css +1 -1
  566. package/dist/esm/styles/pagination.css +1 -1
  567. package/dist/esm/styles/popconfirm.css +1 -1
  568. package/dist/esm/styles/popover.css +1 -1
  569. package/dist/esm/styles/progress.css +1 -1
  570. package/dist/esm/styles/qrcode.css +1 -1
  571. package/dist/esm/styles/radio.css +1 -1
  572. package/dist/esm/styles/rate.css +1 -1
  573. package/dist/esm/styles/result.css +1 -1
  574. package/dist/esm/styles/scrollarea.css +1 -1
  575. package/dist/esm/styles/scrollbar.css +1 -1
  576. package/dist/esm/styles/select.css +1 -1
  577. package/dist/esm/styles/skeleton.css +1 -1
  578. package/dist/esm/styles/slider.css +1 -1
  579. package/dist/esm/styles/space.css +1 -1
  580. package/dist/esm/styles/splitter.css +1 -1
  581. package/dist/esm/styles/statistic.css +1 -1
  582. package/dist/esm/styles/steps.css +1 -1
  583. package/dist/esm/styles/switch.css +1 -1
  584. package/dist/esm/styles/table.css +1 -1
  585. package/dist/esm/styles/tabletanstack.css +1 -1
  586. package/dist/esm/styles/tabs.css +1 -1
  587. package/dist/esm/styles/tag.css +1 -1
  588. package/dist/esm/styles/textarea.css +1 -1
  589. package/dist/esm/styles/timeline.css +1 -1
  590. package/dist/esm/styles/timepicker.css +1 -1
  591. package/dist/esm/styles/timerangepicker.css +1 -1
  592. package/dist/esm/styles/tooltip.css +1 -1
  593. package/dist/esm/styles/tour.css +1 -1
  594. package/dist/esm/styles/transfer.css +1 -1
  595. package/dist/esm/styles/tree.css +1 -1
  596. package/dist/esm/styles/treeselect.css +1 -1
  597. package/dist/esm/styles/typography.css +1 -1
  598. package/dist/esm/styles/upload.css +1 -1
  599. package/dist/esm/styles/virtuallist.css +1 -1
  600. package/dist/esm/tabs/tabs.d.ts +4 -2
  601. package/dist/esm/tabs/tabs.d.ts.map +1 -1
  602. package/dist/esm/tabs/tabs.js +14 -8
  603. package/dist/esm/tabs/tabs.js.map +1 -1
  604. package/dist/esm/tailwind-tokens.d.ts.map +1 -1
  605. package/dist/esm/tailwind-tokens.js +1 -1
  606. package/dist/esm/tailwind-tokens.js.map +1 -1
  607. package/dist/esm/textarea/textarea.d.ts.map +1 -1
  608. package/dist/esm/textarea/textarea.js +50 -22
  609. package/dist/esm/textarea/textarea.js.map +1 -1
  610. package/dist/esm/theme.d.ts +15 -0
  611. package/dist/esm/theme.d.ts.map +1 -1
  612. package/dist/esm/theme.js +53 -29
  613. package/dist/esm/theme.js.map +1 -1
  614. package/dist/esm/timeline/timeline.d.ts.map +1 -1
  615. package/dist/esm/timeline/timeline.js +1 -1
  616. package/dist/esm/timeline/timeline.js.map +1 -1
  617. package/dist/esm/timepicker/time-panel.d.ts.map +1 -1
  618. package/dist/esm/timepicker/time-panel.js +8 -2
  619. package/dist/esm/timepicker/time-panel.js.map +1 -1
  620. package/dist/esm/transfer/transfer.d.ts.map +1 -1
  621. package/dist/esm/transfer/transfer.js +5 -5
  622. package/dist/esm/transfer/transfer.js.map +1 -1
  623. package/dist/esm/tree/tree.d.ts.map +1 -1
  624. package/dist/esm/tree/tree.js +13 -6
  625. package/dist/esm/tree/tree.js.map +1 -1
  626. package/dist/esm/treeselect/treeselect.d.ts.map +1 -1
  627. package/dist/esm/treeselect/treeselect.js +5 -4
  628. package/dist/esm/treeselect/treeselect.js.map +1 -1
  629. package/dist/esm/virtuallist/virtuallist.d.ts.map +1 -1
  630. package/dist/esm/virtuallist/virtuallist.js +9 -3
  631. package/dist/esm/virtuallist/virtuallist.js.map +1 -1
  632. package/dist/tailwind.css +1 -1
  633. package/package.json +1 -22
  634. package/dist/cjs/browser/modules/segmented/index.cjs.map +0 -1
  635. package/dist/cjs/browser/modules/segmented/segmented.cjs +0 -127
  636. package/dist/cjs/browser/modules/segmented/segmented.cjs.map +0 -1
  637. package/dist/cjs/browser/segmented.cjs +0 -2
  638. package/dist/cjs/segmented/index.cjs.map +0 -1
  639. package/dist/cjs/segmented/index.d.cts +0 -3
  640. package/dist/cjs/segmented/index.d.cts.map +0 -1
  641. package/dist/cjs/segmented/segmented.cjs +0 -125
  642. package/dist/cjs/segmented/segmented.cjs.map +0 -1
  643. package/dist/cjs/segmented/segmented.d.cts +0 -21
  644. package/dist/cjs/segmented/segmented.d.cts.map +0 -1
  645. package/dist/cjs/styles/components/segmented.css +0 -1
  646. package/dist/cjs/styles/segmented.css +0 -1
  647. package/dist/esm/browser/modules/segmented/index.js +0 -2
  648. package/dist/esm/browser/modules/segmented/segmented.js +0 -89
  649. package/dist/esm/browser/modules/segmented/segmented.js.map +0 -1
  650. package/dist/esm/browser/segmented.js +0 -2
  651. package/dist/esm/segmented/index.d.ts +0 -3
  652. package/dist/esm/segmented/index.d.ts.map +0 -1
  653. package/dist/esm/segmented/index.js +0 -2
  654. package/dist/esm/segmented/segmented.d.ts +0 -21
  655. package/dist/esm/segmented/segmented.d.ts.map +0 -1
  656. package/dist/esm/segmented/segmented.js +0 -87
  657. package/dist/esm/segmented/segmented.js.map +0 -1
  658. package/dist/esm/styles/components/segmented.css +0 -1
  659. package/dist/esm/styles/segmented.css +0 -1
@@ -40,18 +40,21 @@ const external_react_namespaceObject = require("react");
40
40
  const external_react_dom_namespaceObject = require("react-dom");
41
41
  const external_tabbable_namespaceObject = require("tabbable");
42
42
  const context_cjs_namespaceObject = require("../config-provider/context.cjs");
43
+ const scrollbar_cjs_namespaceObject = require("../scrollbar/scrollbar.cjs");
43
44
  const external_dom_cjs_namespaceObject = require("./dom.cjs");
44
45
  const external_field_cjs_namespaceObject = require("./field.cjs");
45
46
  const external_inert_cjs_namespaceObject = require("./inert.cjs");
46
47
  const external_overlay_owner_cjs_namespaceObject = require("./overlay-owner.cjs");
47
48
  const external_presence_cjs_namespaceObject = require("./presence.cjs");
49
+ const external_theme_variables_cjs_namespaceObject = require("./theme-variables.cjs");
48
50
  const useBrowserLayoutEffect = "u" < typeof window ? external_react_namespaceObject.useEffect : external_react_namespaceObject.useLayoutEffect;
49
51
  const PopupParent = /*#__PURE__*/ (0, external_react_namespaceObject.createContext)(void 0);
50
52
  const popupNodes = new Map();
51
53
  const dismissStack = [];
52
54
  function insidePopup(target, panel) {
53
55
  if (!panel) return false;
54
- if (panel.contains(target)) return true;
56
+ const boundary = panel.closest('[data-leaf-popup]') ?? panel;
57
+ if (boundary.contains(target)) return true;
55
58
  let popup = target instanceof Element ? target.closest('[data-leaf-popup]') : null;
56
59
  const visited = new Set();
57
60
  while(popup?.dataset.leafPopupParent){
@@ -59,7 +62,7 @@ function insidePopup(target, panel) {
59
62
  if (visited.has(parent)) break;
60
63
  visited.add(parent);
61
64
  popup = popupNodes.get(parent) ?? null;
62
- if (popup === panel) return true;
65
+ if (popup === boundary) return true;
63
66
  }
64
67
  return false;
65
68
  }
@@ -91,12 +94,13 @@ function usePopupState(disabled, onOpenChange, controlledOpen, defaultOpen = fal
91
94
  setOpen
92
95
  ];
93
96
  }
94
- function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth, maxWidth, maxHeight, placement = 'bottom-start', container, render, position, style, children, ...props }) {
97
+ function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth, maxWidth, maxHeight, placement = 'bottom-start', sideFallback = false, resetSurfaceGeometry = false, container, render, position, style, children, ...props }) {
95
98
  const popupId = (0, external_react_namespaceObject.useId)();
96
99
  const parentPopup = (0, external_react_namespaceObject.useContext)(PopupParent);
97
100
  const config = (0, context_cjs_namespaceObject.useLeafConfig)();
98
101
  const owner = (0, external_react_namespaceObject.useContext)(external_overlay_owner_cjs_namespaceObject.OverlayOwner);
99
- const present = (0, external_presence_cjs_namespaceObject.usePresence)(open, panelRef);
102
+ const floatingRef = (0, external_react_namespaceObject.useRef)(null);
103
+ const present = (0, external_presence_cjs_namespaceObject.usePresence)(open, floatingRef);
100
104
  const [theme, setTheme] = (0, external_react_namespaceObject.useState)({});
101
105
  const [inheritedMotion, setInheritedMotion] = (0, external_react_namespaceObject.useState)();
102
106
  const openRef = (0, external_react_namespaceObject.useRef)(open);
@@ -116,7 +120,8 @@ function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth
116
120
  middleware: [
117
121
  (0, react_dom_namespaceObject.offset)(6),
118
122
  (0, react_dom_namespaceObject.flip)({
119
- padding: 12
123
+ padding: 12,
124
+ fallbackAxisSideDirection: sideFallback ? 'end' : 'none'
120
125
  }),
121
126
  (0, react_dom_namespaceObject.shift)({
122
127
  padding: 12
@@ -138,20 +143,32 @@ function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth
138
143
  minWidth: 'trigger' === minWidth ? `min(${rects.reference.width}px, ${widthLimit})` : length(minWidth ?? style?.minWidth ?? '')
139
144
  });
140
145
  }
141
- })
146
+ }, [
147
+ matchWidth,
148
+ width,
149
+ minWidth,
150
+ maxWidth,
151
+ maxHeight,
152
+ style?.width,
153
+ style?.minWidth,
154
+ style?.maxWidth,
155
+ style?.maxHeight
156
+ ])
142
157
  ]
143
158
  });
144
159
  if (open) previousPosition.current = floatingStyles;
145
160
  const setPanelRef = (0, external_react_namespaceObject.useCallback)((node)=>{
146
161
  if (node) popupNodes.set(popupId, node);
147
162
  else popupNodes.delete(popupId);
148
- (0, external_field_cjs_namespaceObject.assignRef)(panelRef, node);
163
+ (0, external_field_cjs_namespaceObject.assignRef)(floatingRef, node);
149
164
  refs.setFloating(node);
150
165
  }, [
151
- panelRef,
152
166
  refs.setFloating,
153
167
  popupId
154
168
  ]);
169
+ const setViewportRef = (0, external_react_namespaceObject.useCallback)((node)=>(0, external_field_cjs_namespaceObject.assignRef)(panelRef, node), [
170
+ panelRef
171
+ ]);
155
172
  useBrowserLayoutEffect(()=>{
156
173
  const trigger = referenceElement ?? triggerRef.current;
157
174
  if (!trigger || !present) return;
@@ -168,17 +185,12 @@ function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth
168
185
  })
169
186
  } : trigger);
170
187
  const syncTheme = ()=>{
171
- const computed = getComputedStyle(trigger);
172
188
  let motionAncestor = trigger;
173
189
  while(motionAncestor && !motionAncestor.hasAttribute('data-leaf-motion'))motionAncestor = (0, external_dom_cjs_namespaceObject.composedParent)(motionAncestor);
174
190
  setInheritedMotion(motionAncestor?.getAttribute('data-leaf-motion') ?? void 0);
175
- const variables = {
176
- colorScheme: computed.colorScheme,
177
- direction: computed.direction
178
- };
179
- for(let i = 0; i < computed.length; i += 1){
180
- const key = computed.item(i);
181
- if (key.startsWith('--leaf-')) variables[key] = computed.getPropertyValue(key);
191
+ const variables = (0, external_theme_variables_cjs_namespaceObject.readThemeVariables)(trigger);
192
+ if (resetSurfaceGeometry) {
193
+ for (const key of Object.keys(variables))if (/^--leaf-surface-(?:radius$|border$|padding(?:-|$)|inner-)/.test(key) || '--leaf-floating-option-radius' === key) delete variables[key];
182
194
  }
183
195
  setTheme(variables);
184
196
  };
@@ -204,7 +216,8 @@ function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth
204
216
  referenceElement,
205
217
  refs.setReference,
206
218
  present,
207
- position
219
+ position,
220
+ resetSurfaceGeometry
208
221
  ]);
209
222
  useBrowserLayoutEffect(()=>{
210
223
  if (open && present) update();
@@ -214,11 +227,27 @@ function FloatingPanel({ open, triggerRef, panelRef, matchWidth, width, minWidth
214
227
  update
215
228
  ]);
216
229
  if (!present || "u" < typeof document) return null;
230
+ const viewportProps = {};
231
+ const rootProps = {
232
+ ...props
233
+ };
234
+ for (const key of Object.keys(rootProps))if ('id' === key || 'role' === key || 'tabIndex' === key || key.startsWith('aria-')) {
235
+ Object.assign(viewportProps, {
236
+ [key]: rootProps[key]
237
+ });
238
+ delete rootProps[key];
239
+ }
217
240
  return /*#__PURE__*/ (0, external_react_dom_namespaceObject.createPortal)(/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PopupParent.Provider, {
218
241
  value: popupId,
219
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
220
- ...props,
221
- ref: setPanelRef,
242
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(scrollbar_cjs_namespaceObject.ScrollbarControl, {
243
+ ...rootProps,
244
+ ref: setViewportRef,
245
+ rootRef: setPanelRef,
246
+ viewportProps: viewportProps,
247
+ viewportClassName: "leaf-floating__viewport",
248
+ role: props.role ?? 'presentation',
249
+ tabIndex: props.tabIndex ?? -1,
250
+ scrollbarTabIndex: -1,
222
251
  "data-leaf-owner": owner,
223
252
  "data-leaf-popup": popupId,
224
253
  "data-leaf-popup-parent": parentPopup,
@@ -1 +1 @@
1
- {"version":3,"file":"shared/floating.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/shared/floating.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n autoUpdate,\n flip,\n offset,\n type Placement,\n shift,\n size,\n useFloating,\n} from '@floating-ui/react-dom';\nimport {\n type CSSProperties,\n createContext,\n type HTMLAttributes,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { tabbable } from 'tabbable';\nimport { useLeafConfig } from '../config-provider/context';\nimport type { LeafThemeStyle } from '../theme';\nimport { composedEventTarget, composedParent, deepActiveElement } from './dom';\nimport { assignRef } from './field';\nimport { inertProps } from './inert';\nimport { OverlayOwner } from './overlay-owner';\nimport { usePresence } from './presence';\n\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\nconst PopupParent = createContext<string | undefined>(undefined);\nconst popupNodes = new Map<string, HTMLElement>();\nconst dismissStack: RefObject<HTMLElement | null>[] = [];\nfunction insidePopup(target: Node, panel: HTMLElement | null) {\n if (!panel) return false;\n if (panel.contains(target)) return true;\n let popup = target instanceof Element ? target.closest<HTMLElement>('[data-leaf-popup]') : null;\n const visited = new Set<string>();\n while (popup?.dataset.leafPopupParent) {\n const parent = popup.dataset.leafPopupParent;\n if (visited.has(parent)) break;\n visited.add(parent);\n popup = popupNodes.get(parent) ?? null;\n if (popup === panel) return true;\n }\n return false;\n}\n\n/** Close disabled fields immediately and report each open-state change once. */\nexport function usePopupState(\n disabled?: boolean,\n onOpenChange?: (open: boolean) => void,\n controlledOpen?: boolean,\n defaultOpen = false,\n) {\n const [internalOpen, setRequestedOpen] = useState(defaultOpen);\n const requestedOpen = controlledOpen ?? internalOpen;\n const requestedRef = useRef(requestedOpen);\n requestedRef.current = requestedOpen;\n const open = requestedOpen && !disabled;\n const setOpen = useCallback(\n (next: boolean) => {\n if (next === requestedRef.current || (next && disabled)) return;\n requestedRef.current = next;\n if (controlledOpen === undefined) setRequestedOpen(next);\n onOpenChange?.(next);\n },\n [disabled, onOpenChange, controlledOpen],\n );\n useEffect(() => {\n if (disabled && requestedOpen) setOpen(false);\n }, [disabled, requestedOpen, setOpen]);\n return [open, setOpen] as const;\n}\n\nexport interface PopupOptions {\n popupPlacement?: Placement;\n popupClassName?: string;\n popupStyle?: CSSProperties;\n popupRender?: (content: React.ReactNode) => React.ReactNode;\n getPopupContainer?: () => Element | DocumentFragment;\n}\ninterface FloatingPanelProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n triggerRef: RefObject<HTMLElement | null>;\n panelRef: RefObject<HTMLDivElement | null>;\n matchWidth?: boolean;\n width?: CSSProperties['width'];\n minWidth?: CSSProperties['minWidth'] | 'trigger';\n maxWidth?: CSSProperties['maxWidth'];\n maxHeight?: CSSProperties['maxHeight'];\n placement?: Placement;\n container?: Element | DocumentFragment | (() => Element | DocumentFragment);\n render?: (content: React.ReactNode) => React.ReactNode;\n position?: { x: number; y: number };\n}\n\n/** Position a lazily mounted portal, preserving the trigger's scoped theme. */\nexport function FloatingPanel({\n open,\n triggerRef,\n panelRef,\n matchWidth,\n width,\n minWidth,\n maxWidth,\n maxHeight,\n placement = 'bottom-start',\n container,\n render,\n position,\n style,\n children,\n ...props\n}: FloatingPanelProps) {\n const popupId = useId();\n const parentPopup = useContext(PopupParent);\n const config = useLeafConfig();\n const owner = useContext(OverlayOwner);\n const present = usePresence(open, panelRef);\n const [theme, setTheme] = useState<LeafThemeStyle>({});\n const [inheritedMotion, setInheritedMotion] = useState<string>();\n const openRef = useRef(open);\n openRef.current = open;\n const previousPosition = useRef<CSSProperties>({});\n const closingContent = useRef(children);\n const referenceElement = triggerRef.current;\n if (open) closingContent.current = children;\n const {\n refs,\n floatingStyles,\n isPositioned,\n update,\n placement: resolvedPlacement,\n } = useFloating({\n open,\n placement,\n strategy: 'fixed',\n // Keep viewport positioning outside the popup's local scale/translate motion.\n transform: false,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, () => {\n if (openRef.current) update();\n }),\n middleware: [\n offset(6),\n flip({ padding: 12 }),\n shift({ padding: 12 }),\n size({\n padding: 12,\n apply({ availableHeight, availableWidth, rects, elements }) {\n if (!openRef.current) return;\n const length = (value: string | number) =>\n typeof value === 'number' ? `${value}px` : value;\n const widthMaximum = maxWidth ?? style?.maxWidth;\n const heightMaximum = maxHeight ?? style?.maxHeight;\n const viewportWidth = `${Math.max(0, availableWidth)}px`;\n const viewportHeight = `${Math.max(0, availableHeight)}px`;\n const widthLimit =\n widthMaximum === undefined\n ? viewportWidth\n : `min(${length(widthMaximum)}, ${viewportWidth})`;\n Object.assign(elements.floating.style, {\n maxHeight:\n heightMaximum === undefined\n ? viewportHeight\n : `min(${length(heightMaximum)}, ${viewportHeight})`,\n maxWidth: widthLimit,\n width: matchWidth\n ? `${Math.min(rects.reference.width, availableWidth)}px`\n : length(width ?? style?.width ?? ''),\n minWidth:\n minWidth === 'trigger'\n ? `min(${rects.reference.width}px, ${widthLimit})`\n : length(minWidth ?? style?.minWidth ?? ''),\n });\n },\n }),\n ],\n });\n if (open) previousPosition.current = floatingStyles;\n const setPanelRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) popupNodes.set(popupId, node);\n else popupNodes.delete(popupId);\n assignRef(panelRef, node);\n refs.setFloating(node);\n },\n [panelRef, refs.setFloating, popupId],\n );\n\n useBrowserLayoutEffect(() => {\n const trigger = referenceElement ?? triggerRef.current;\n if (!trigger || !present) return;\n refs.setReference(\n position\n ? {\n getBoundingClientRect: () => ({\n x: position.x,\n y: position.y,\n top: position.y,\n bottom: position.y,\n left: position.x,\n right: position.x,\n width: 0,\n height: 0,\n }),\n }\n : trigger,\n );\n const syncTheme = () => {\n const computed = getComputedStyle(trigger);\n let motionAncestor: HTMLElement | null = trigger;\n while (motionAncestor && !motionAncestor.hasAttribute('data-leaf-motion'))\n motionAncestor = composedParent(motionAncestor);\n setInheritedMotion(motionAncestor?.getAttribute('data-leaf-motion') ?? undefined);\n const variables: LeafThemeStyle = {\n colorScheme: computed.colorScheme,\n direction: computed.direction as CSSProperties['direction'],\n };\n for (let i = 0; i < computed.length; i += 1) {\n const key = computed.item(i);\n if (key.startsWith('--leaf-'))\n variables[key as `--leaf-${string}`] = computed.getPropertyValue(key);\n }\n setTheme(variables);\n };\n syncTheme();\n const observer = new MutationObserver(syncTheme);\n let ancestor: HTMLElement | null = trigger;\n while (ancestor) {\n observer.observe(ancestor, {\n attributes: true,\n attributeFilter: ['class', 'style', 'data-leaf-theme', 'data-leaf-motion', 'dir'],\n });\n ancestor = composedParent(ancestor);\n }\n return () => observer.disconnect();\n }, [triggerRef, referenceElement, refs.setReference, present, position]);\n\n useBrowserLayoutEffect(() => {\n // A quick reopen can reuse the exit-presence node without remounting autoUpdate.\n if (open && present) void update();\n }, [open, present, update]);\n\n if (!present || typeof document === 'undefined') return null;\n return createPortal(\n <PopupParent.Provider value={popupId}>\n <div\n {...props}\n ref={setPanelRef}\n data-leaf-owner={owner}\n data-leaf-popup={popupId}\n data-leaf-popup-parent={parentPopup}\n data-leaf-motion={config.theme.motion === false ? 'off' : inheritedMotion}\n data-side={resolvedPlacement.split('-')[0]}\n data-align={resolvedPlacement.split('-')[1] ?? 'center'}\n dir={props.dir ?? theme.direction ?? config.direction}\n lang={props.lang ?? config.locale}\n data-state={open ? 'open' : 'closing'}\n data-positioned={isPositioned || !open}\n aria-hidden={!open || undefined}\n {...inertProps(!open)}\n style={{ ...theme, ...style, ...(open ? floatingStyles : previousPosition.current) }}\n >\n {render\n ? render(open ? children : closingContent.current)\n : open\n ? children\n : closingContent.current}\n </div>\n </PopupParent.Provider>,\n (typeof container === 'function' ? container() : container) ??\n config.getPopupContainer?.() ??\n document.body,\n );\n}\n\n/** Close a custom floating panel when focus leaves it or Escape is pressed. */\nexport function useFloatingDismiss(\n open: boolean,\n onClose: (reason?: 'escape' | 'outside' | 'focus' | 'tab') => void,\n triggerRef: RefObject<HTMLElement | null>,\n panelRef: RefObject<HTMLElement | null>,\n boundaryRef: RefObject<HTMLElement | null> = triggerRef,\n) {\n const closeRef = useRef(onClose);\n closeRef.current = onClose;\n useEffect(() => {\n if (!open) {\n return;\n }\n dismissStack.push(panelRef);\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.composedPath()[0] ?? event.target;\n if (!(target instanceof Node)) {\n return;\n }\n const label = target instanceof Element ? target.closest('label') : null;\n const labelledControl = label?.control;\n if (\n boundaryRef.current?.contains(target) ||\n insidePopup(target, panelRef.current) ||\n (labelledControl && boundaryRef.current?.contains(labelledControl))\n ) {\n return;\n }\n closeRef.current('outside');\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.defaultPrevented || dismissStack.at(-1) !== panelRef) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n closeRef.current('escape');\n triggerRef.current?.focus();\n } else if (event.key === 'Tab') {\n const panel = panelRef.current;\n const trigger = triggerRef.current;\n const active = deepActiveElement();\n if (!panel || !trigger || !panel.contains(active)) return;\n const items = tabbable(panel, {\n getShadowRoot: (element) => element.shadowRoot ?? undefined,\n });\n const index = active instanceof HTMLElement ? items.indexOf(active) : -1;\n const leaving = event.shiftKey ? index <= 0 : index === items.length - 1;\n if (!leaving) return;\n event.preventDefault();\n closeRef.current('tab');\n if (event.shiftKey) trigger.focus();\n else {\n const pageItems = tabbable(document.body, {\n getShadowRoot: (element) => element.shadowRoot ?? undefined,\n }).filter((item) => !panel.contains(item));\n const triggerIndex = pageItems.indexOf(trigger);\n (pageItems[triggerIndex + 1] ?? trigger).focus();\n }\n }\n };\n\n const handleFocus = (event: FocusEvent) => {\n const target = composedEventTarget(event);\n if (\n target instanceof Node &&\n !boundaryRef.current?.contains(target) &&\n !insidePopup(target, panelRef.current)\n )\n closeRef.current('focus');\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown, true);\n document.addEventListener('focusin', handleFocus);\n return () => {\n const index = dismissStack.indexOf(panelRef);\n if (index >= 0) dismissStack.splice(index, 1);\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown, true);\n document.removeEventListener('focusin', handleFocus);\n };\n }, [open, panelRef, triggerRef, boundaryRef]);\n}\n\n/** Keep keyboard-highlighted options visible without animated scrolling. */\nexport function useActiveOption(\n open: boolean,\n optionId: string | undefined,\n panelRef?: RefObject<HTMLElement | null>,\n) {\n useEffect(() => {\n if (!open || !optionId) return;\n const root = panelRef?.current?.getRootNode();\n const scope = root instanceof ShadowRoot ? root : document;\n scope.getElementById(optionId)?.scrollIntoView?.({ block: 'nearest' });\n }, [open, optionId, panelRef]);\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","useBrowserLayoutEffect","window","useEffect","useLayoutEffect","PopupParent","createContext","undefined","popupNodes","Map","dismissStack","insidePopup","target","panel","popup","Element","visited","Set","parent","usePopupState","disabled","onOpenChange","controlledOpen","defaultOpen","internalOpen","setRequestedOpen","useState","requestedOpen","requestedRef","useRef","open","setOpen","useCallback","next","FloatingPanel","triggerRef","panelRef","matchWidth","width","minWidth","maxWidth","maxHeight","placement","container","render","position","style","children","props","popupId","useId","parentPopup","useContext","config","useLeafConfig","owner","OverlayOwner","present","usePresence","theme","setTheme","inheritedMotion","setInheritedMotion","openRef","previousPosition","closingContent","referenceElement","refs","floatingStyles","isPositioned","update","resolvedPlacement","useFloating","reference","floating","autoUpdate","offset","flip","shift","size","availableHeight","availableWidth","rects","elements","length","value","widthMaximum","heightMaximum","viewportWidth","Math","viewportHeight","widthLimit","setPanelRef","node","assignRef","trigger","syncTheme","computed","getComputedStyle","motionAncestor","composedParent","variables","i","observer","MutationObserver","ancestor","document","createPortal","inertProps","useFloatingDismiss","onClose","boundaryRef","closeRef","handlePointerDown","event","Node","label","labelledControl","handleKeyDown","active","deepActiveElement","items","tabbable","element","index","HTMLElement","leaving","pageItems","item","triggerIndex","handleFocus","composedEventTarget","useActiveOption","optionId","root","scope","ShadowRoot"],"mappings":"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"}
1
+ {"version":3,"file":"shared/floating.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/shared/floating.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n autoUpdate,\n flip,\n offset,\n type Placement,\n shift,\n size,\n useFloating,\n} from '@floating-ui/react-dom';\nimport {\n type CSSProperties,\n createContext,\n type HTMLAttributes,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { tabbable } from 'tabbable';\nimport { useLeafConfig } from '../config-provider/context';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport type { LeafThemeStyle } from '../theme';\nimport { composedEventTarget, composedParent, deepActiveElement } from './dom';\nimport { assignRef } from './field';\nimport { inertProps } from './inert';\nimport { OverlayOwner } from './overlay-owner';\nimport { usePresence } from './presence';\nimport { readThemeVariables } from './theme-variables';\n\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\nconst PopupParent = createContext<string | undefined>(undefined);\nconst popupNodes = new Map<string, HTMLElement>();\nconst dismissStack: RefObject<HTMLElement | null>[] = [];\nfunction insidePopup(target: Node, panel: HTMLElement | null) {\n if (!panel) return false;\n const boundary = panel.closest<HTMLElement>('[data-leaf-popup]') ?? panel;\n if (boundary.contains(target)) return true;\n let popup = target instanceof Element ? target.closest<HTMLElement>('[data-leaf-popup]') : null;\n const visited = new Set<string>();\n while (popup?.dataset.leafPopupParent) {\n const parent = popup.dataset.leafPopupParent;\n if (visited.has(parent)) break;\n visited.add(parent);\n popup = popupNodes.get(parent) ?? null;\n if (popup === boundary) return true;\n }\n return false;\n}\n\n/** Close disabled fields immediately and report each open-state change once. */\nexport function usePopupState(\n disabled?: boolean,\n onOpenChange?: (open: boolean) => void,\n controlledOpen?: boolean,\n defaultOpen = false,\n) {\n const [internalOpen, setRequestedOpen] = useState(defaultOpen);\n const requestedOpen = controlledOpen ?? internalOpen;\n const requestedRef = useRef(requestedOpen);\n requestedRef.current = requestedOpen;\n const open = requestedOpen && !disabled;\n const setOpen = useCallback(\n (next: boolean) => {\n if (next === requestedRef.current || (next && disabled)) return;\n requestedRef.current = next;\n if (controlledOpen === undefined) setRequestedOpen(next);\n onOpenChange?.(next);\n },\n [disabled, onOpenChange, controlledOpen],\n );\n useEffect(() => {\n if (disabled && requestedOpen) setOpen(false);\n }, [disabled, requestedOpen, setOpen]);\n return [open, setOpen] as const;\n}\n\nexport interface PopupOptions {\n popupPlacement?: Placement;\n popupClassName?: string;\n popupStyle?: CSSProperties;\n popupRender?: (content: React.ReactNode) => React.ReactNode;\n getPopupContainer?: () => Element | DocumentFragment;\n}\ninterface FloatingPanelProps extends HTMLAttributes<HTMLDivElement> {\n open: boolean;\n triggerRef: RefObject<HTMLElement | null>;\n panelRef: RefObject<HTMLDivElement | null>;\n matchWidth?: boolean;\n width?: CSSProperties['width'];\n minWidth?: CSSProperties['minWidth'] | 'trigger';\n maxWidth?: CSSProperties['maxWidth'];\n maxHeight?: CSSProperties['maxHeight'];\n placement?: Placement;\n sideFallback?: boolean;\n resetSurfaceGeometry?: boolean;\n container?: Element | DocumentFragment | (() => Element | DocumentFragment);\n render?: (content: React.ReactNode) => React.ReactNode;\n position?: { x: number; y: number };\n}\n\n/** Position a lazily mounted portal, preserving the trigger's scoped theme. */\nexport function FloatingPanel({\n open,\n triggerRef,\n panelRef,\n matchWidth,\n width,\n minWidth,\n maxWidth,\n maxHeight,\n placement = 'bottom-start',\n sideFallback = false,\n resetSurfaceGeometry = false,\n container,\n render,\n position,\n style,\n children,\n ...props\n}: FloatingPanelProps) {\n const popupId = useId();\n const parentPopup = useContext(PopupParent);\n const config = useLeafConfig();\n const owner = useContext(OverlayOwner);\n const floatingRef = useRef<HTMLDivElement>(null);\n const present = usePresence(open, floatingRef);\n const [theme, setTheme] = useState<LeafThemeStyle>({});\n const [inheritedMotion, setInheritedMotion] = useState<string>();\n const openRef = useRef(open);\n openRef.current = open;\n const previousPosition = useRef<CSSProperties>({});\n const closingContent = useRef(children);\n const referenceElement = triggerRef.current;\n if (open) closingContent.current = children;\n const {\n refs,\n floatingStyles,\n isPositioned,\n update,\n placement: resolvedPlacement,\n } = useFloating({\n open,\n placement,\n strategy: 'fixed',\n // Keep viewport positioning outside the popup's local scale/translate motion.\n transform: false,\n whileElementsMounted: (reference, floating, update) =>\n autoUpdate(reference, floating, () => {\n if (openRef.current) update();\n }),\n middleware: [\n offset(6),\n flip({ padding: 12, fallbackAxisSideDirection: sideFallback ? 'end' : 'none' }),\n shift({ padding: 12 }),\n size(\n {\n padding: 12,\n apply({ availableHeight, availableWidth, rects, elements }) {\n if (!openRef.current) return;\n const length = (value: string | number) =>\n typeof value === 'number' ? `${value}px` : value;\n const widthMaximum = maxWidth ?? style?.maxWidth;\n const heightMaximum = maxHeight ?? style?.maxHeight;\n const viewportWidth = `${Math.max(0, availableWidth)}px`;\n const viewportHeight = `${Math.max(0, availableHeight)}px`;\n const widthLimit =\n widthMaximum === undefined\n ? viewportWidth\n : `min(${length(widthMaximum)}, ${viewportWidth})`;\n Object.assign(elements.floating.style, {\n maxHeight:\n heightMaximum === undefined\n ? viewportHeight\n : `min(${length(heightMaximum)}, ${viewportHeight})`,\n maxWidth: widthLimit,\n width: matchWidth\n ? `${Math.min(rects.reference.width, availableWidth)}px`\n : length(width ?? style?.width ?? ''),\n minWidth:\n minWidth === 'trigger'\n ? `min(${rects.reference.width}px, ${widthLimit})`\n : length(minWidth ?? style?.minWidth ?? ''),\n });\n },\n },\n [\n matchWidth,\n width,\n minWidth,\n maxWidth,\n maxHeight,\n style?.width,\n style?.minWidth,\n style?.maxWidth,\n style?.maxHeight,\n ],\n ),\n ],\n });\n if (open) previousPosition.current = floatingStyles;\n const setPanelRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node) popupNodes.set(popupId, node);\n else popupNodes.delete(popupId);\n assignRef(floatingRef, node);\n refs.setFloating(node);\n },\n [refs.setFloating, popupId],\n );\n const setViewportRef = useCallback(\n (node: HTMLDivElement | null) => assignRef(panelRef, node),\n [panelRef],\n );\n\n useBrowserLayoutEffect(() => {\n const trigger = referenceElement ?? triggerRef.current;\n if (!trigger || !present) return;\n refs.setReference(\n position\n ? {\n getBoundingClientRect: () => ({\n x: position.x,\n y: position.y,\n top: position.y,\n bottom: position.y,\n left: position.x,\n right: position.x,\n width: 0,\n height: 0,\n }),\n }\n : trigger,\n );\n const syncTheme = () => {\n let motionAncestor: HTMLElement | null = trigger;\n while (motionAncestor && !motionAncestor.hasAttribute('data-leaf-motion'))\n motionAncestor = composedParent(motionAncestor);\n setInheritedMotion(motionAncestor?.getAttribute('data-leaf-motion') ?? undefined);\n const variables = readThemeVariables(trigger);\n if (resetSurfaceGeometry) {\n // Navigation triggers define their own inset surface. The popup solves\n // its geometry independently while keeping scoped theme paint/shadows.\n for (const key of Object.keys(variables)) {\n if (\n /^--leaf-surface-(?:radius$|border$|padding(?:-|$)|inner-)/.test(key) ||\n key === '--leaf-floating-option-radius'\n ) {\n delete variables[key as `--leaf-${string}`];\n }\n }\n }\n setTheme(variables);\n };\n syncTheme();\n const observer = new MutationObserver(syncTheme);\n let ancestor: HTMLElement | null = trigger;\n while (ancestor) {\n observer.observe(ancestor, {\n attributes: true,\n attributeFilter: ['class', 'style', 'data-leaf-theme', 'data-leaf-motion', 'dir'],\n });\n ancestor = composedParent(ancestor);\n }\n return () => observer.disconnect();\n }, [triggerRef, referenceElement, refs.setReference, present, position, resetSurfaceGeometry]);\n\n useBrowserLayoutEffect(() => {\n // A quick reopen can reuse the exit-presence node without remounting autoUpdate.\n if (open && present) void update();\n }, [open, present, update]);\n\n if (!present || typeof document === 'undefined') return null;\n const viewportProps: HTMLAttributes<HTMLDivElement> = {};\n const rootProps = { ...props };\n for (const key of Object.keys(rootProps)) {\n if (key === 'id' || key === 'role' || key === 'tabIndex' || key.startsWith('aria-')) {\n Object.assign(viewportProps, { [key]: rootProps[key as keyof typeof rootProps] });\n delete rootProps[key as keyof typeof rootProps];\n }\n }\n return createPortal(\n <PopupParent.Provider value={popupId}>\n <ScrollbarControl\n {...rootProps}\n ref={setViewportRef}\n rootRef={setPanelRef}\n viewportProps={viewportProps}\n viewportClassName=\"leaf-floating__viewport\"\n role={props.role ?? 'presentation'}\n tabIndex={props.tabIndex ?? -1}\n scrollbarTabIndex={-1}\n data-leaf-owner={owner}\n data-leaf-popup={popupId}\n data-leaf-popup-parent={parentPopup}\n data-leaf-motion={config.theme.motion === false ? 'off' : inheritedMotion}\n data-side={resolvedPlacement.split('-')[0]}\n data-align={resolvedPlacement.split('-')[1] ?? 'center'}\n dir={props.dir ?? theme.direction ?? config.direction}\n lang={props.lang ?? config.locale}\n data-state={open ? 'open' : 'closing'}\n data-positioned={isPositioned || !open}\n aria-hidden={!open || undefined}\n {...inertProps(!open)}\n style={{ ...theme, ...style, ...(open ? floatingStyles : previousPosition.current) }}\n >\n {render\n ? render(open ? children : closingContent.current)\n : open\n ? children\n : closingContent.current}\n </ScrollbarControl>\n </PopupParent.Provider>,\n (typeof container === 'function' ? container() : container) ??\n config.getPopupContainer?.() ??\n document.body,\n );\n}\n\n/** Close a custom floating panel when focus leaves it or Escape is pressed. */\nexport function useFloatingDismiss(\n open: boolean,\n onClose: (reason?: 'escape' | 'outside' | 'focus' | 'tab') => void,\n triggerRef: RefObject<HTMLElement | null>,\n panelRef: RefObject<HTMLElement | null>,\n boundaryRef: RefObject<HTMLElement | null> = triggerRef,\n) {\n const closeRef = useRef(onClose);\n closeRef.current = onClose;\n useEffect(() => {\n if (!open) {\n return;\n }\n dismissStack.push(panelRef);\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.composedPath()[0] ?? event.target;\n if (!(target instanceof Node)) {\n return;\n }\n const label = target instanceof Element ? target.closest('label') : null;\n const labelledControl = label?.control;\n if (\n boundaryRef.current?.contains(target) ||\n insidePopup(target, panelRef.current) ||\n (labelledControl && boundaryRef.current?.contains(labelledControl))\n ) {\n return;\n }\n closeRef.current('outside');\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.defaultPrevented || dismissStack.at(-1) !== panelRef) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n closeRef.current('escape');\n triggerRef.current?.focus();\n } else if (event.key === 'Tab') {\n const panel = panelRef.current;\n const trigger = triggerRef.current;\n const active = deepActiveElement();\n if (!panel || !trigger || !panel.contains(active)) return;\n const items = tabbable(panel, {\n getShadowRoot: (element) => element.shadowRoot ?? undefined,\n });\n const index = active instanceof HTMLElement ? items.indexOf(active) : -1;\n const leaving = event.shiftKey ? index <= 0 : index === items.length - 1;\n if (!leaving) return;\n event.preventDefault();\n closeRef.current('tab');\n if (event.shiftKey) trigger.focus();\n else {\n const pageItems = tabbable(document.body, {\n getShadowRoot: (element) => element.shadowRoot ?? undefined,\n }).filter((item) => !panel.contains(item));\n const triggerIndex = pageItems.indexOf(trigger);\n (pageItems[triggerIndex + 1] ?? trigger).focus();\n }\n }\n };\n\n const handleFocus = (event: FocusEvent) => {\n const target = composedEventTarget(event);\n if (\n target instanceof Node &&\n !boundaryRef.current?.contains(target) &&\n !insidePopup(target, panelRef.current)\n )\n closeRef.current('focus');\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown, true);\n document.addEventListener('focusin', handleFocus);\n return () => {\n const index = dismissStack.indexOf(panelRef);\n if (index >= 0) dismissStack.splice(index, 1);\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown, true);\n document.removeEventListener('focusin', handleFocus);\n };\n }, [open, panelRef, triggerRef, boundaryRef]);\n}\n\n/** Keep keyboard-highlighted options visible without animated scrolling. */\nexport function useActiveOption(\n open: boolean,\n optionId: string | undefined,\n panelRef?: RefObject<HTMLElement | null>,\n) {\n useEffect(() => {\n if (!open || !optionId) return;\n const root = panelRef?.current?.getRootNode();\n const scope = root instanceof ShadowRoot ? root : document;\n scope.getElementById(optionId)?.scrollIntoView?.({ block: 'nearest' });\n }, [open, optionId, panelRef]);\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","useBrowserLayoutEffect","window","useEffect","useLayoutEffect","PopupParent","createContext","undefined","popupNodes","Map","dismissStack","insidePopup","target","panel","boundary","popup","Element","visited","Set","parent","usePopupState","disabled","onOpenChange","controlledOpen","defaultOpen","internalOpen","setRequestedOpen","useState","requestedOpen","requestedRef","useRef","open","setOpen","useCallback","next","FloatingPanel","triggerRef","panelRef","matchWidth","width","minWidth","maxWidth","maxHeight","placement","sideFallback","resetSurfaceGeometry","container","render","position","style","children","props","popupId","useId","parentPopup","useContext","config","useLeafConfig","owner","OverlayOwner","floatingRef","present","usePresence","theme","setTheme","inheritedMotion","setInheritedMotion","openRef","previousPosition","closingContent","referenceElement","refs","floatingStyles","isPositioned","update","resolvedPlacement","useFloating","reference","floating","autoUpdate","offset","flip","shift","size","availableHeight","availableWidth","rects","elements","length","value","widthMaximum","heightMaximum","viewportWidth","Math","viewportHeight","widthLimit","setPanelRef","node","assignRef","setViewportRef","trigger","syncTheme","motionAncestor","composedParent","variables","readThemeVariables","observer","MutationObserver","ancestor","document","viewportProps","rootProps","createPortal","ScrollbarControl","inertProps","useFloatingDismiss","onClose","boundaryRef","closeRef","handlePointerDown","event","Node","label","labelledControl","handleKeyDown","active","deepActiveElement","items","tabbable","element","index","HTMLElement","leaving","pageItems","item","triggerIndex","handleFocus","composedEventTarget","useActiveOption","optionId","root","scope","ShadowRoot"],"mappings":"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"}
@@ -36,6 +36,7 @@ const external_react_namespaceObject = require("react");
36
36
  const external_react_dom_namespaceObject = require("react-dom");
37
37
  const context_cjs_namespaceObject = require("../config-provider/context.cjs");
38
38
  const external_dom_cjs_namespaceObject = require("./dom.cjs");
39
+ const external_theme_variables_cjs_namespaceObject = require("./theme-variables.cjs");
39
40
  function ScopedPortal({ children, container }) {
40
41
  const config = (0, context_cjs_namespaceObject.useLeafConfig)();
41
42
  const anchor = (0, external_react_namespaceObject.useRef)(null);
@@ -44,29 +45,7 @@ function ScopedPortal({ children, container }) {
44
45
  const node = anchor.current;
45
46
  if (!node) return;
46
47
  const sync = ()=>{
47
- const computed = getComputedStyle((0, external_dom_cjs_namespaceObject.composedParent)(node) ?? node);
48
- const next = {
49
- colorScheme: computed.colorScheme,
50
- direction: computed.direction
51
- };
52
- const keys = new Set();
53
- for(let i = 0; i < computed.length; i++){
54
- const key = computed.item(i);
55
- if (key.startsWith('--leaf-')) keys.add(key);
56
- }
57
- let owner = (0, external_dom_cjs_namespaceObject.composedParent)(node);
58
- while(owner){
59
- for(let i = 0; i < owner.style.length; i++){
60
- const key = owner.style.item(i);
61
- if (key.startsWith('--leaf-')) keys.add(key);
62
- }
63
- owner = (0, external_dom_cjs_namespaceObject.composedParent)(owner);
64
- }
65
- for (const key of keys){
66
- const value = computed.getPropertyValue(key);
67
- if (value.trim()) next[key] = value;
68
- }
69
- setStyle(next);
48
+ setStyle((0, external_theme_variables_cjs_namespaceObject.readThemeVariables)((0, external_dom_cjs_namespaceObject.composedParent)(node) ?? node));
70
49
  };
71
50
  sync();
72
51
  const observer = new MutationObserver(sync);
@@ -1 +1 @@
1
- {"version":3,"file":"shared/scoped-portal.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/shared/scoped-portal.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type ReactNode, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useLeafConfig } from '../config-provider/context';\nimport type { LeafThemeStyle } from '../theme';\nimport { composedParent } from './dom';\n\n/** Transfer inherited variables into a portal without moving the React context. */\nexport function ScopedPortal({\n children,\n container,\n}: {\n children: ReactNode;\n container?: Element | DocumentFragment | (() => Element | DocumentFragment);\n}) {\n const config = useLeafConfig();\n const anchor = useRef<HTMLSpanElement>(null);\n const [style, setStyle] = useState<LeafThemeStyle>();\n useEffect(() => {\n const node = anchor.current;\n if (!node) return;\n const sync = () => {\n // Read the owning element; hidden markers can omit inherited custom\n // properties from computed-style enumeration in Firefox.\n const computed = getComputedStyle(composedParent(node) ?? node);\n const next: LeafThemeStyle = {\n colorScheme: computed.colorScheme,\n direction: computed.direction as LeafThemeStyle['direction'],\n };\n const keys = new Set<string>();\n for (let i = 0; i < computed.length; i++) {\n const key = computed.item(i);\n if (key.startsWith('--leaf-')) keys.add(key);\n }\n // Some engines do not enumerate every inherited custom property. Include\n // inline scope keys, then read their effective values at the source.\n let owner = composedParent(node);\n while (owner) {\n for (let i = 0; i < owner.style.length; i++) {\n const key = owner.style.item(i);\n if (key.startsWith('--leaf-')) keys.add(key);\n }\n owner = composedParent(owner);\n }\n for (const key of keys) {\n const value = computed.getPropertyValue(key);\n if (value.trim()) next[key as `--leaf-${string}`] = value;\n }\n setStyle(next);\n };\n sync();\n const observer = new MutationObserver(sync);\n let parent: HTMLElement | null = node;\n while (parent) {\n observer.observe(parent, {\n attributes: true,\n attributeFilter: [\n 'style',\n 'class',\n 'data-leaf-theme',\n 'data-leaf-density',\n 'data-leaf-motion',\n 'dir',\n ],\n });\n parent = composedParent(parent);\n }\n return () => observer.disconnect();\n }, []);\n return (\n <>\n <span ref={anchor} hidden />\n {style &&\n typeof document !== 'undefined' &&\n createPortal(\n <div\n className=\"leaf-portal-scope\"\n lang={config.locale}\n dir={config.direction}\n data-leaf-density={config.density}\n data-leaf-motion={\n config.theme.motion === undefined ? undefined : config.theme.motion ? 'on' : 'off'\n }\n style={style}\n >\n {children}\n </div>,\n (typeof container === 'function' ? container() : container) ??\n config.getPopupContainer?.() ??\n document.body,\n )}\n </>\n );\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","ScopedPortal","children","container","config","useLeafConfig","anchor","useRef","style","setStyle","useState","useEffect","node","sync","computed","getComputedStyle","composedParent","next","keys","Set","i","owner","value","observer","MutationObserver","parent","document","createPortal","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"shared/scoped-portal.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/shared/scoped-portal.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type ReactNode, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useLeafConfig } from '../config-provider/context';\nimport type { LeafThemeStyle } from '../theme';\nimport { composedParent } from './dom';\nimport { readThemeVariables } from './theme-variables';\n\n/** Transfer inherited variables into a portal without moving the React context. */\nexport function ScopedPortal({\n children,\n container,\n}: {\n children: ReactNode;\n container?: Element | DocumentFragment | (() => Element | DocumentFragment);\n}) {\n const config = useLeafConfig();\n const anchor = useRef<HTMLSpanElement>(null);\n const [style, setStyle] = useState<LeafThemeStyle>();\n useEffect(() => {\n const node = anchor.current;\n if (!node) return;\n const sync = () => {\n // Read the owning element; hidden markers can omit inherited custom\n // properties from computed-style enumeration in Firefox.\n setStyle(readThemeVariables(composedParent(node) ?? node));\n };\n sync();\n const observer = new MutationObserver(sync);\n let parent: HTMLElement | null = node;\n while (parent) {\n observer.observe(parent, {\n attributes: true,\n attributeFilter: [\n 'style',\n 'class',\n 'data-leaf-theme',\n 'data-leaf-density',\n 'data-leaf-motion',\n 'dir',\n ],\n });\n parent = composedParent(parent);\n }\n return () => observer.disconnect();\n }, []);\n return (\n <>\n <span ref={anchor} hidden />\n {style &&\n typeof document !== 'undefined' &&\n createPortal(\n <div\n className=\"leaf-portal-scope\"\n lang={config.locale}\n dir={config.direction}\n data-leaf-density={config.density}\n data-leaf-motion={\n config.theme.motion === undefined ? undefined : config.theme.motion ? 'on' : 'off'\n }\n style={style}\n >\n {children}\n </div>,\n (typeof container === 'function' ? container() : container) ??\n config.getPopupContainer?.() ??\n document.body,\n )}\n </>\n );\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","ScopedPortal","children","container","config","useLeafConfig","anchor","useRef","style","setStyle","useState","useEffect","node","sync","readThemeVariables","composedParent","observer","MutationObserver","parent","document","createPortal","undefined"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;ACEO,SAASI,aAAa,EAC3BC,QAAQ,EACRC,SAAS,EAIV;IACC,MAAMC,SAASC,AAAAA,IAAAA,4BAAAA,aAAAA,AAAAA;IACf,MAAMC,SAASC,AAAAA,IAAAA,+BAAAA,MAAAA,AAAAA,EAAwB;IACvC,MAAM,CAACC,OAAOC,SAAS,GAAGC,AAAAA,IAAAA,+BAAAA,QAAAA,AAAAA;IAC1BC,IAAAA,+BAAAA,SAAAA,AAAAA,EAAU;QACR,MAAMC,OAAON,OAAO,OAAO;QAC3B,IAAI,CAACM,MAAM;QACX,MAAMC,OAAO;YAGXJ,SAASK,AAAAA,IAAAA,6CAAAA,kBAAAA,AAAAA,EAAmBC,AAAAA,IAAAA,iCAAAA,cAAAA,AAAAA,EAAeH,SAASA;QACtD;QACAC;QACA,MAAMG,WAAW,IAAIC,iBAAiBJ;QACtC,IAAIK,SAA6BN;QACjC,MAAOM,OAAQ;YACbF,SAAS,OAAO,CAACE,QAAQ;gBACvB,YAAY;gBACZ,iBAAiB;oBACf;oBACA;oBACA;oBACA;oBACA;oBACA;iBACD;YACH;YACAA,SAASH,AAAAA,IAAAA,iCAAAA,cAAAA,AAAAA,EAAeG;QAC1B;QACA,OAAO,IAAMF,SAAS,UAAU;IAClC,GAAG,EAAE;IACL,OACE,AADK,WAAP,GACE;;0BACE,qCAAC;gBAAK,KAAKV;gBAAQ,QAAM;;YACxBE,SACC,AAAoB,MAApB,OAAOW,YACPC,AADoB,cACpBA,IAAAA,mCAAAA,YAAAA,AAAAA,EACE,AADW,WAADA,GACV,qCAAC;gBACC,WAAU;gBACV,MAAMhB,OAAO,MAAM;gBACnB,KAAKA,OAAO,SAAS;gBACrB,qBAAmBA,OAAO,OAAO;gBACjC,oBACEA,AAAwBiB,WAAxBjB,OAAO,KAAK,CAAC,MAAM,GAAiBiB,SAAYjB,OAAO,KAAK,CAAC,MAAM,GAAG,OAAO;gBAE/E,OAAOI;0BAENN;gBAEF,CAAqB,cAArB,OAAOC,YAA2BA,cAAcA,SAAQ,KACvDC,OAAO,iBAAiB,QACxBe,SAAS,IAAI;;;AAIzB"}
@@ -29,15 +29,37 @@ var __webpack_require__ = {};
29
29
  var __webpack_exports__ = {};
30
30
  __webpack_require__.r(__webpack_exports__);
31
31
  __webpack_require__.d(__webpack_exports__, {
32
- Segmented: ()=>external_segmented_cjs_namespaceObject.Segmented
32
+ readThemeVariables: ()=>readThemeVariables
33
33
  });
34
- const external_segmented_cjs_namespaceObject = require("./segmented.cjs");
35
- exports.Segmented = __webpack_exports__.Segmented;
34
+ const external_dom_cjs_namespaceObject = require("./dom.cjs");
35
+ function readThemeVariables(source) {
36
+ const computed = getComputedStyle(source);
37
+ const variables = {
38
+ colorScheme: computed.colorScheme,
39
+ direction: computed.direction
40
+ };
41
+ const keys = new Set();
42
+ for(let index = 0; index < computed.length; index++){
43
+ const key = computed.item(index);
44
+ if (key.startsWith('--leaf-')) keys.add(key);
45
+ }
46
+ let owner = source;
47
+ while(owner){
48
+ for(let index = 0; index < owner.style.length; index++){
49
+ const key = owner.style.item(index);
50
+ if (key.startsWith('--leaf-')) keys.add(key);
51
+ }
52
+ owner = (0, external_dom_cjs_namespaceObject.composedParent)(owner);
53
+ }
54
+ for (const key of keys)variables[key] = computed.getPropertyValue(key) || 'initial';
55
+ return variables;
56
+ }
57
+ exports.readThemeVariables = __webpack_exports__.readThemeVariables;
36
58
  for(var __rspack_i in __webpack_exports__)if (-1 === [
37
- "Segmented"
59
+ "readThemeVariables"
38
60
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
39
61
  Object.defineProperty(exports, '__esModule', {
40
62
  value: true
41
63
  });
42
64
 
43
- //# sourceMappingURL=index.cjs.map
65
+ //# sourceMappingURL=theme-variables.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared/theme-variables.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/shared/theme-variables.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { LeafThemeStyle } from '../theme';\nimport { composedParent } from './dom';\n\n/** Snapshot effective theme values, including explicit resets, across a portal boundary. */\nexport function readThemeVariables(source: HTMLElement): LeafThemeStyle {\n const computed = getComputedStyle(source);\n const variables: LeafThemeStyle = {\n colorScheme: computed.colorScheme,\n direction: computed.direction as LeafThemeStyle['direction'],\n };\n const keys = new Set<string>();\n for (let index = 0; index < computed.length; index++) {\n const key = computed.item(index);\n if (key.startsWith('--leaf-')) keys.add(key);\n }\n // Engines can omit inherited or guaranteed-invalid custom properties from\n // enumeration. Provider resets are inline, so include the composed ancestry.\n let owner: HTMLElement | null = source;\n while (owner) {\n for (let index = 0; index < owner.style.length; index++) {\n const key = owner.style.item(index);\n if (key.startsWith('--leaf-')) keys.add(key);\n }\n owner = composedParent(owner);\n }\n for (const key of keys) {\n // Empty computed values include the guaranteed-invalid value produced by\n // `initial`. Writing '' would remove the inline declaration in React and\n // inherit the destination container's theme instead of retaining the reset.\n variables[key as `--leaf-${string}`] = computed.getPropertyValue(key) || 'initial';\n }\n return variables;\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","readThemeVariables","source","computed","getComputedStyle","variables","keys","Set","index","owner","composedParent"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;ACFO,SAASI,mBAAmBC,MAAmB;IACpD,MAAMC,WAAWC,iBAAiBF;IAClC,MAAMG,YAA4B;QAChC,aAAaF,SAAS,WAAW;QACjC,WAAWA,SAAS,SAAS;IAC/B;IACA,MAAMG,OAAO,IAAIC;IACjB,IAAK,IAAIC,QAAQ,GAAGA,QAAQL,SAAS,MAAM,EAAEK,QAAS;QACpD,MAAMZ,MAAMO,SAAS,IAAI,CAACK;QAC1B,IAAIZ,IAAI,UAAU,CAAC,YAAYU,KAAK,GAAG,CAACV;IAC1C;IAGA,IAAIa,QAA4BP;IAChC,MAAOO,MAAO;QACZ,IAAK,IAAID,QAAQ,GAAGA,QAAQC,MAAM,KAAK,CAAC,MAAM,EAAED,QAAS;YACvD,MAAMZ,MAAMa,MAAM,KAAK,CAAC,IAAI,CAACD;YAC7B,IAAIZ,IAAI,UAAU,CAAC,YAAYU,KAAK,GAAG,CAACV;QAC1C;QACAa,QAAQC,AAAAA,IAAAA,iCAAAA,cAAAA,AAAAA,EAAeD;IACzB;IACA,KAAK,MAAMb,OAAOU,KAIhBD,SAAS,CAACT,IAA0B,GAAGO,SAAS,gBAAgB,CAACP,QAAQ;IAE3E,OAAOS;AACT"}
@@ -38,6 +38,7 @@ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
38
38
  const external_react_namespaceObject = require("react");
39
39
  const component_defaults_cjs_namespaceObject = require("../config-provider/component-defaults.cjs");
40
40
  const context_cjs_namespaceObject = require("../config-provider/context.cjs");
41
+ const scrollbar_cjs_namespaceObject = require("../scrollbar/scrollbar.cjs");
41
42
  const classes_cjs_namespaceObject = require("../shared/classes.cjs");
42
43
  const inert_cjs_namespaceObject = require("../shared/inert.cjs");
43
44
  const use_controllable_cjs_namespaceObject = require("../shared/use-controllable.cjs");
@@ -103,8 +104,10 @@ function Splitter(rawProps) {
103
104
  display: 'contents'
104
105
  },
105
106
  children: [
106
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
107
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(scrollbar_cjs_namespaceObject.ScrollbarControl, {
107
108
  className: "leaf-splitter__panel",
109
+ role: "presentation",
110
+ tabIndex: -1,
108
111
  "data-collapsed": 0 === normalized[index] || void 0,
109
112
  ...(0, inert_cjs_namespaceObject.inertProps)(0 === normalized[index]),
110
113
  style: {
@@ -1 +1 @@
1
- {"version":3,"file":"splitter/splitter.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/splitter/splitter.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type HTMLAttributes, type ReactNode, useEffect, useRef } from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { classes } from '../shared/classes';\nimport { inertProps } from '../shared/inert';\nimport { useControllable } from '../shared/use-controllable';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { useText } from '../shared/use-text';\nexport interface SplitterPanel {\n key: string;\n children: ReactNode;\n min?: number;\n max?: number;\n collapsible?: boolean;\n resizable?: boolean;\n}\nexport interface SplitterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onResize'> {\n panels: readonly SplitterPanel[];\n sizes?: readonly number[];\n defaultSizes?: readonly number[];\n onResize?: (sizes: number[]) => void;\n onResizeEnd?: (sizes: number[]) => void;\n direction?: 'horizontal' | 'vertical';\n}\nexport function Splitter(rawProps: SplitterProps) {\n const {\n panels,\n sizes,\n defaultSizes,\n onResize,\n onResizeEnd,\n direction = 'horizontal',\n className,\n style,\n ...props\n } = useComponentProps('Splitter', rawProps);\n const t = useText();\n const format = useFormattedText();\n const config = useLeafConfig();\n const root = useRef<HTMLDivElement>(null);\n const [current, setCurrent] = useControllable<readonly number[]>(\n sizes,\n defaultSizes ?? panels.map(() => 100 / Math.max(1, panels.length)),\n (next) => onResize?.([...next]),\n );\n const sum = current.reduce(\n (total, value) => total + (Number.isFinite(value) ? Math.max(0, value) : 0),\n 0,\n );\n const normalized =\n panels.length === current.length && sum > 0\n ? current.map((value) => (Math.max(0, value) * 100) / sum)\n : panels.map(() => 100 / Math.max(1, panels.length));\n const latest = useRef<readonly number[]>(normalized);\n latest.current = normalized;\n const stopDragging = useRef<(() => void) | undefined>(undefined);\n useEffect(() => () => stopDragging.current?.(), []);\n const collapsed = useRef(new Map<number, number>());\n const horizontal = direction === 'horizontal';\n const pair = (index: number, amount: number, source: readonly number[] = latest.current) => {\n const next = [...source];\n const total = (source[index] ?? 0) + (source[index + 1] ?? 0);\n const first = panels[index],\n second = panels[index + 1];\n if (!first || !second) return;\n const low = Math.max(first.min ?? 5, total - (second.max ?? 100));\n const high = Math.min(first.max ?? 100, total - (second.min ?? 5));\n if (low > high) return;\n next[index] = Math.min(high, Math.max(low, (source[index] ?? 0) + amount));\n next[index + 1] = total - (next[index] ?? 0);\n latest.current = next;\n setCurrent(next);\n };\n const toggle = (index: number) => {\n const next = [...latest.current],\n size = next[index] ?? 0;\n if (size) {\n collapsed.current.set(index, size);\n next[index + 1] = (next[index + 1] ?? 0) + size;\n next[index] = 0;\n } else {\n const restore = Math.min(\n collapsed.current.get(index) ?? 25,\n Math.max(0, (next[index + 1] ?? 0) - (panels[index + 1]?.min ?? 5)),\n );\n next[index] = restore;\n next[index + 1] = (next[index + 1] ?? 0) - restore;\n }\n latest.current = next;\n setCurrent(next);\n onResizeEnd?.(next);\n };\n return (\n <div\n {...props}\n ref={root}\n className={classes('leaf-splitter', `leaf-splitter--${direction}`, className)}\n style={style}\n >\n {panels.map((panel, index) => (\n <div key={panel.key} className=\"leaf-splitter__unit\" style={{ display: 'contents' }}>\n <div\n className=\"leaf-splitter__panel\"\n data-collapsed={normalized[index] === 0 || undefined}\n {...inertProps(normalized[index] === 0)}\n style={{ flexBasis: `${normalized[index] ?? 0}%`, flexGrow: 0, flexShrink: 1 }}\n >\n {panel.children}\n </div>\n {index < panels.length - 1 && (\n // biome-ignore lint/a11y/useSemanticElements: An adjustable, focusable splitter follows the ARIA window-splitter pattern; a static hr cannot contain its collapse button.\n <div\n role=\"separator\"\n tabIndex={panel.resizable === false ? -1 : 0}\n aria-label={format('splitter.resizePanel', { index: index + 1 })}\n aria-orientation={horizontal ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(current[index] ?? 0)}\n aria-valuemin={panel.min ?? 0}\n aria-valuemax={panel.max ?? 100}\n className=\"leaf-splitter__handle\"\n onPointerDown={(event) => {\n if (panel.resizable === false || !root.current) return;\n stopDragging.current?.();\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n const start = horizontal ? event.clientX : event.clientY;\n const source = [...latest.current];\n const rect = root.current.getBoundingClientRect();\n const length = horizontal ? rect.width : rect.height;\n const move = (event: PointerEvent) =>\n pair(\n index,\n (((horizontal ? event.clientX : event.clientY) - start) / Math.max(1, length)) *\n 100 *\n (horizontal && config.direction === 'rtl' ? -1 : 1),\n source,\n );\n const cleanup = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', end);\n window.removeEventListener('pointercancel', end);\n };\n const end = () => {\n cleanup();\n onResizeEnd?.([...latest.current]);\n };\n stopDragging.current = cleanup;\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', end, { once: true });\n window.addEventListener('pointercancel', end, { once: true });\n }}\n onDoubleClick={() => {\n if (panel.collapsible) toggle(index);\n }}\n onKeyDown={(event) => {\n const plus = horizontal\n ? config.direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight'\n : 'ArrowDown';\n const minus = horizontal\n ? config.direction === 'rtl'\n ? 'ArrowRight'\n : 'ArrowLeft'\n : 'ArrowUp';\n if (event.key === plus || event.key === minus) {\n event.preventDefault();\n pair(index, (event.key === plus ? 1 : -1) * (event.shiftKey ? 10 : 2));\n onResizeEnd?.([...latest.current]);\n }\n if (event.key === 'Enter' && panel.collapsible) {\n event.preventDefault();\n toggle(index);\n }\n }}\n >\n {panel.collapsible && (\n <button\n type=\"button\"\n aria-label={t('splitter.togglePanel')}\n onPointerDown={(event) => event.stopPropagation()}\n onClick={() => toggle(index)}\n >\n {current[index] === 0 ? '+' : '−'}\n </button>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n );\n}\nexport const ResizablePanels = Splitter;\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","Splitter","rawProps","panels","sizes","defaultSizes","onResize","onResizeEnd","direction","className","style","props","useComponentProps","t","useText","format","useFormattedText","config","useLeafConfig","root","useRef","current","setCurrent","useControllable","Math","next","sum","total","value","Number","normalized","latest","stopDragging","undefined","useEffect","collapsed","Map","horizontal","pair","index","amount","source","first","second","low","high","toggle","size","restore","classes","panel","inertProps","event","start","rect","length","move","cleanup","window","end","plus","minus","ResizablePanels"],"mappings":"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"}
1
+ {"version":3,"file":"splitter/splitter.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/splitter/splitter.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { type HTMLAttributes, type ReactNode, useEffect, useRef } from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nimport { inertProps } from '../shared/inert';\nimport { useControllable } from '../shared/use-controllable';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { useText } from '../shared/use-text';\nexport interface SplitterPanel {\n key: string;\n children: ReactNode;\n min?: number;\n max?: number;\n collapsible?: boolean;\n resizable?: boolean;\n}\nexport interface SplitterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onResize'> {\n panels: readonly SplitterPanel[];\n sizes?: readonly number[];\n defaultSizes?: readonly number[];\n onResize?: (sizes: number[]) => void;\n onResizeEnd?: (sizes: number[]) => void;\n direction?: 'horizontal' | 'vertical';\n}\nexport function Splitter(rawProps: SplitterProps) {\n const {\n panels,\n sizes,\n defaultSizes,\n onResize,\n onResizeEnd,\n direction = 'horizontal',\n className,\n style,\n ...props\n } = useComponentProps('Splitter', rawProps);\n const t = useText();\n const format = useFormattedText();\n const config = useLeafConfig();\n const root = useRef<HTMLDivElement>(null);\n const [current, setCurrent] = useControllable<readonly number[]>(\n sizes,\n defaultSizes ?? panels.map(() => 100 / Math.max(1, panels.length)),\n (next) => onResize?.([...next]),\n );\n const sum = current.reduce(\n (total, value) => total + (Number.isFinite(value) ? Math.max(0, value) : 0),\n 0,\n );\n const normalized =\n panels.length === current.length && sum > 0\n ? current.map((value) => (Math.max(0, value) * 100) / sum)\n : panels.map(() => 100 / Math.max(1, panels.length));\n const latest = useRef<readonly number[]>(normalized);\n latest.current = normalized;\n const stopDragging = useRef<(() => void) | undefined>(undefined);\n useEffect(() => () => stopDragging.current?.(), []);\n const collapsed = useRef(new Map<number, number>());\n const horizontal = direction === 'horizontal';\n const pair = (index: number, amount: number, source: readonly number[] = latest.current) => {\n const next = [...source];\n const total = (source[index] ?? 0) + (source[index + 1] ?? 0);\n const first = panels[index],\n second = panels[index + 1];\n if (!first || !second) return;\n const low = Math.max(first.min ?? 5, total - (second.max ?? 100));\n const high = Math.min(first.max ?? 100, total - (second.min ?? 5));\n if (low > high) return;\n next[index] = Math.min(high, Math.max(low, (source[index] ?? 0) + amount));\n next[index + 1] = total - (next[index] ?? 0);\n latest.current = next;\n setCurrent(next);\n };\n const toggle = (index: number) => {\n const next = [...latest.current],\n size = next[index] ?? 0;\n if (size) {\n collapsed.current.set(index, size);\n next[index + 1] = (next[index + 1] ?? 0) + size;\n next[index] = 0;\n } else {\n const restore = Math.min(\n collapsed.current.get(index) ?? 25,\n Math.max(0, (next[index + 1] ?? 0) - (panels[index + 1]?.min ?? 5)),\n );\n next[index] = restore;\n next[index + 1] = (next[index + 1] ?? 0) - restore;\n }\n latest.current = next;\n setCurrent(next);\n onResizeEnd?.(next);\n };\n return (\n <div\n {...props}\n ref={root}\n className={classes('leaf-splitter', `leaf-splitter--${direction}`, className)}\n style={style}\n >\n {panels.map((panel, index) => (\n <div key={panel.key} className=\"leaf-splitter__unit\" style={{ display: 'contents' }}>\n <ScrollbarControl\n className=\"leaf-splitter__panel\"\n role=\"presentation\"\n tabIndex={-1}\n data-collapsed={normalized[index] === 0 || undefined}\n {...inertProps(normalized[index] === 0)}\n style={{ flexBasis: `${normalized[index] ?? 0}%`, flexGrow: 0, flexShrink: 1 }}\n >\n {panel.children}\n </ScrollbarControl>\n {index < panels.length - 1 && (\n // biome-ignore lint/a11y/useSemanticElements: An adjustable, focusable splitter follows the ARIA window-splitter pattern; a static hr cannot contain its collapse button.\n <div\n role=\"separator\"\n tabIndex={panel.resizable === false ? -1 : 0}\n aria-label={format('splitter.resizePanel', { index: index + 1 })}\n aria-orientation={horizontal ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(current[index] ?? 0)}\n aria-valuemin={panel.min ?? 0}\n aria-valuemax={panel.max ?? 100}\n className=\"leaf-splitter__handle\"\n onPointerDown={(event) => {\n if (panel.resizable === false || !root.current) return;\n stopDragging.current?.();\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n const start = horizontal ? event.clientX : event.clientY;\n const source = [...latest.current];\n const rect = root.current.getBoundingClientRect();\n const length = horizontal ? rect.width : rect.height;\n const move = (event: PointerEvent) =>\n pair(\n index,\n (((horizontal ? event.clientX : event.clientY) - start) / Math.max(1, length)) *\n 100 *\n (horizontal && config.direction === 'rtl' ? -1 : 1),\n source,\n );\n const cleanup = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', end);\n window.removeEventListener('pointercancel', end);\n };\n const end = () => {\n cleanup();\n onResizeEnd?.([...latest.current]);\n };\n stopDragging.current = cleanup;\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', end, { once: true });\n window.addEventListener('pointercancel', end, { once: true });\n }}\n onDoubleClick={() => {\n if (panel.collapsible) toggle(index);\n }}\n onKeyDown={(event) => {\n const plus = horizontal\n ? config.direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight'\n : 'ArrowDown';\n const minus = horizontal\n ? config.direction === 'rtl'\n ? 'ArrowRight'\n : 'ArrowLeft'\n : 'ArrowUp';\n if (event.key === plus || event.key === minus) {\n event.preventDefault();\n pair(index, (event.key === plus ? 1 : -1) * (event.shiftKey ? 10 : 2));\n onResizeEnd?.([...latest.current]);\n }\n if (event.key === 'Enter' && panel.collapsible) {\n event.preventDefault();\n toggle(index);\n }\n }}\n >\n {panel.collapsible && (\n <button\n type=\"button\"\n aria-label={t('splitter.togglePanel')}\n onPointerDown={(event) => event.stopPropagation()}\n onClick={() => toggle(index)}\n >\n {current[index] === 0 ? '+' : '−'}\n </button>\n )}\n </div>\n )}\n </div>\n ))}\n </div>\n );\n}\nexport const ResizablePanels = Splitter;\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","Splitter","rawProps","panels","sizes","defaultSizes","onResize","onResizeEnd","direction","className","style","props","useComponentProps","t","useText","format","useFormattedText","config","useLeafConfig","root","useRef","current","setCurrent","useControllable","Math","next","sum","total","value","Number","normalized","latest","stopDragging","undefined","useEffect","collapsed","Map","horizontal","pair","index","amount","source","first","second","low","high","toggle","size","restore","classes","panel","ScrollbarControl","inertProps","event","start","rect","length","move","cleanup","window","end","plus","minus","ResizablePanels"],"mappings":"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"}
@@ -44,13 +44,14 @@ const button_cjs_namespaceObject = require("../button/button.cjs");
44
44
  const component_defaults_cjs_namespaceObject = require("../config-provider/component-defaults.cjs");
45
45
  const context_cjs_namespaceObject = require("../config-provider/context.cjs");
46
46
  const dropdown_cjs_namespaceObject = require("../dropdown/dropdown.cjs");
47
+ const scrollbar_cjs_namespaceObject = require("../scrollbar/scrollbar.cjs");
47
48
  const classes_cjs_namespaceObject = require("../shared/classes.cjs");
48
49
  const motion_cjs_namespaceObject = require("../shared/motion.cjs");
49
50
  const use_drag_announcements_cjs_namespaceObject = require("../shared/use-drag-announcements.cjs");
50
51
  const use_formatted_text_cjs_namespaceObject = require("../shared/use-formatted-text.cjs");
51
52
  const use_text_cjs_namespaceObject = require("../shared/use-text.cjs");
52
53
  const external_use_moving_indicator_cjs_namespaceObject = require("./use-moving-indicator.cjs");
53
- function TabsControl({ items, activeKey, defaultActiveKey, onChange, type = 'line', placement = 'top', size = 'md', activationMode = 'automatic', destroyInactive = false, extra, onClose, onAdd, addLabel, overflow = true, sortable = false, onReorder, className, 'aria-label': label, ...props }) {
54
+ function TabsControl({ items, activeKey, defaultActiveKey, onChange, type = 'line', placement = 'top', size = 'md', block = false, activationMode = 'automatic', destroyInactive = false, extra, onClose, onAdd, addLabel, overflow = true, sortable = false, onReorder, className, 'aria-label': label, ...props }) {
54
55
  const { direction } = (0, context_cjs_namespaceObject.useLeafConfig)();
55
56
  const t = (0, use_text_cjs_namespaceObject.useText)();
56
57
  const format = (0, use_formatted_text_cjs_namespaceObject.useFormattedText)();
@@ -119,7 +120,7 @@ function TabsControl({ items, activeKey, defaultActiveKey, onChange, type = 'lin
119
120
  if (0 === items.length) return null;
120
121
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
121
122
  ...props,
122
- className: (0, classes_cjs_namespaceObject.classes)('leaf-tabs', `leaf-tabs--${type}`, `leaf-tabs--${placement}`, `leaf-tabs--${size}`, className),
123
+ className: (0, classes_cjs_namespaceObject.classes)('leaf-tabs', `leaf-tabs--${type}`, `leaf-tabs--${placement}`, `leaf-tabs--${size}`, block && 'leaf-tabs--block', className),
123
124
  children: [
124
125
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(TabDragScope, {
125
126
  enabled: sorting,
@@ -129,15 +130,20 @@ function TabsControl({ items, activeKey, defaultActiveKey, onChange, type = 'lin
129
130
  className: "leaf-tabs__header",
130
131
  ref: header,
131
132
  children: [
132
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
133
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(scrollbar_cjs_namespaceObject.ScrollbarControl, {
133
134
  ref: list,
134
135
  onBlur: (event)=>{
135
136
  if (!event.currentTarget.contains(event.relatedTarget)) setFocused(void 0);
136
137
  },
137
138
  role: "tablist",
138
139
  "aria-label": label,
139
- "aria-orientation": 'left' === placement || 'right' === placement ? 'vertical' : 'horizontal',
140
- className: "leaf-tabs__list",
140
+ viewportProps: {
141
+ 'aria-orientation': 'left' === placement || 'right' === placement ? 'vertical' : 'horizontal'
142
+ },
143
+ className: "leaf-tabs__scroll",
144
+ viewportClassName: "leaf-tabs__list",
145
+ tabIndex: -1,
146
+ scrollbarTabIndex: -1,
141
147
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
142
148
  ref: track,
143
149
  className: "leaf-tabs__track",
@@ -162,7 +168,7 @@ function TabsControl({ items, activeKey, defaultActiveKey, onChange, type = 'lin
162
168
  type: "button",
163
169
  role: "tab",
164
170
  "aria-selected": item.key === selected,
165
- "aria-controls": `${id}-panel-${index}`,
171
+ "aria-controls": null != item.children ? `${id}-panel-${index}` : void 0,
166
172
  disabled: item.disabled,
167
173
  tabIndex: item.key === focusKey ? 0 : -1,
168
174
  className: "leaf-tabs__tab",
@@ -267,9 +273,9 @@ function TabsControl({ items, activeKey, defaultActiveKey, onChange, type = 'lin
267
273
  ]
268
274
  })
269
275
  }),
270
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
276
+ items.some((item)=>null != item.children) && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
271
277
  className: "leaf-tabs__panels",
272
- children: items.map((item, index)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
278
+ children: items.map((item, index)=>null != item.children && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
273
279
  id: `${id}-panel-${index}`,
274
280
  role: "tabpanel",
275
281
  "aria-labelledby": `${id}-tab-${index}`,