@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
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sources":["../../src/theme.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport { deriveColors } from './colors';\n\n/** Shared CSS variables; configure component themes through ConfigProvider. */\nexport type LeafThemeStyle = CSSProperties & {\n [key: `--leaf-${string}`]: string | number | undefined;\n};\n\n/** Common settings. Other sizes and interaction colors are derived automatically. */\nexport interface LeafTheme {\n primaryColor?: string;\n borderRadius?: number | string;\n controlHeight?: number | string;\n fontSize?: number | string;\n fontFamily?: string;\n appearance?: 'light' | 'dark';\n motion?: boolean;\n tokens?: LeafThemeTokens;\n spacing?: number;\n lineHeight?: number;\n headingWeight?: number;\n elevation?: 'none' | 'soft' | 'medium';\n breakpoints?: Partial<Record<'xs' | 'sm' | 'md' | 'lg' | 'xl', number>>;\n components?: Record<string, LeafComponentTokens>;\n}\nexport interface LeafComponentTokens {\n borderRadius?: string | number;\n controlHeight?: string | number;\n padding?: string | number;\n gap?: string | number;\n fontSize?: string | number;\n color?: string;\n background?: string;\n borderColor?: string;\n headerBackground?: string;\n footerBackground?: string;\n shadow?: string;\n}\n\n/** Optional overrides for applications with more specific design requirements. */\nexport interface LeafThemeTokens {\n onPrimaryColor?: string;\n dangerColor?: string;\n onDangerColor?: string;\n successColor?: string;\n warningColor?: string;\n infoColor?: string;\n textColor?: string;\n mutedTextColor?: string;\n subtleTextColor?: string;\n surfaceColor?: string;\n mutedSurfaceColor?: string;\n raisedSurfaceColor?: string;\n borderColor?: string;\n borderHoverColor?: string;\n dividerColor?: string;\n borderRadiusSm?: number | string;\n borderRadiusMd?: number | string;\n borderRadiusLg?: number | string;\n controlHeightSm?: number | string;\n controlHeightLg?: number | string;\n fontSizeSm?: number | string;\n fontSizeLg?: number | string;\n fontWeight?: number;\n motionDuration?: number | string;\n motionEasing?: string;\n motionSpring?: string;\n popupZIndex?: number;\n modalZIndex?: number;\n messageZIndex?: number;\n buttonBorderRadius?: number | string;\n buttonHeight?: number | string;\n choiceBorderRadius?: number | string;\n focusColor?: string;\n primaryHoverColor?: string;\n primaryActiveColor?: string;\n primarySoftColor?: string;\n primarySoftHoverColor?: string;\n primarySoftActiveColor?: string;\n primaryBorderColor?: string;\n dangerHoverColor?: string;\n dangerActiveColor?: string;\n spacingSm?: number | string;\n spacingLg?: number | string;\n shadowSm?: string;\n shadowXs?: string;\n shadowMd?: string;\n shadowLg?: string;\n lineHeight?: number;\n}\n\nconst defined = <T extends object>(value?: T) =>\n Object.fromEntries(Object.entries(value ?? {}).filter(([, item]) => item !== undefined)) as T;\n\nexport function mergeLeafTheme(parent: LeafTheme, theme?: LeafTheme): LeafTheme {\n return {\n ...parent,\n ...defined(theme),\n breakpoints: { ...parent.breakpoints, ...defined(theme?.breakpoints) },\n components: Object.fromEntries(\n [\n ...new Set([\n ...Object.keys(parent.components ?? {}),\n ...Object.keys(theme?.components ?? {}),\n ]),\n ].map((key) => [key, { ...parent.components?.[key], ...defined(theme?.components?.[key]) }]),\n ),\n ...(parent.tokens || theme?.tokens\n ? { tokens: { ...parent.tokens, ...defined(theme?.tokens) } }\n : {}),\n };\n}\n\nconst tokenVariables = {\n onPrimaryColor: 'color-on-primary',\n dangerColor: 'color-danger',\n onDangerColor: 'color-on-danger',\n successColor: 'color-success',\n warningColor: 'color-warning',\n infoColor: 'color-info',\n textColor: 'color-text',\n mutedTextColor: 'color-text-muted',\n subtleTextColor: 'color-text-subtle',\n surfaceColor: 'color-surface',\n mutedSurfaceColor: 'color-surface-muted',\n raisedSurfaceColor: 'color-surface-raised',\n borderColor: 'color-border',\n borderHoverColor: 'color-border-hover',\n dividerColor: 'color-divider',\n borderRadiusSm: 'radius-sm',\n borderRadiusMd: 'radius-md',\n borderRadiusLg: 'radius-lg',\n controlHeightSm: 'control-height-sm',\n controlHeightLg: 'control-height-lg',\n fontSizeSm: 'font-size-sm',\n fontSizeLg: 'font-size-lg',\n fontWeight: 'font-weight',\n motionDuration: 'motion-duration',\n motionEasing: 'motion-easing',\n motionSpring: 'motion-spring',\n popupZIndex: 'z-index-popup',\n modalZIndex: 'z-index-modal',\n messageZIndex: 'z-index-message',\n buttonBorderRadius: 'button-radius',\n buttonHeight: 'button-height',\n choiceBorderRadius: 'choice-radius',\n focusColor: 'color-focus',\n primaryHoverColor: 'color-primary-hover',\n primaryActiveColor: 'color-primary-active',\n primarySoftColor: 'color-primary-soft',\n primarySoftHoverColor: 'color-primary-soft-hover',\n primarySoftActiveColor: 'color-primary-soft-active',\n primaryBorderColor: 'color-primary-border',\n dangerHoverColor: 'color-danger-hover',\n dangerActiveColor: 'color-danger-active',\n spacingSm: 'spacing-sm',\n spacingLg: 'spacing-lg',\n shadowSm: 'shadow-sm',\n shadowXs: 'shadow-xs',\n shadowMd: 'shadow-md',\n shadowLg: 'shadow-lg',\n lineHeight: 'line-height',\n} satisfies Record<keyof LeafThemeTokens, string>;\n\nconst length = (value: number | string) => (typeof value === 'number' ? `${value}px` : value);\n\n/** Expand CSS padding without splitting whitespace inside calc()/var(). */\nfunction paddingSides(value: string) {\n const parts: string[] = [];\n let depth = 0;\n let start = 0;\n for (let index = 0; index <= value.length; index++) {\n const character = value[index];\n if (character === '(') depth++;\n else if (character === ')') depth--;\n if (index === value.length || (depth === 0 && /\\s/.test(character ?? ''))) {\n const part = value.slice(start, index).trim();\n if (part) parts.push(part);\n start = index + 1;\n }\n }\n if (!parts.length || parts.length > 4) return [];\n const [top, right = top, bottom = top, left = right] = parts;\n return [top, right, bottom, left];\n}\n\n/** Explicit inputs, excluding the generated palette, for browser CSS-variable resolution. */\nexport function leafThemeColors(theme: LeafTheme): Record<string, string> {\n const colors: Record<string, string> = {};\n if (theme.primaryColor) {\n colors.primary = theme.primaryColor;\n colors['on-primary'] = '#ffffff';\n }\n for (const key of Object.keys(tokenVariables) as (keyof LeafThemeTokens)[]) {\n const variable = tokenVariables[key];\n const value = theme.tokens?.[key];\n if (variable.startsWith('color-') && typeof value === 'string')\n colors[variable.slice(6)] = value;\n }\n return colors;\n}\n\n/** Pure, deterministic output can be rendered in the server's initial HTML. */\nexport function leafThemeVariables(theme: LeafTheme): LeafThemeStyle {\n const variables: LeafThemeStyle = {};\n if (theme.spacing !== undefined) {\n variables['--leaf-spacing'] = `${Math.max(0, theme.spacing)}px`;\n for (const [name, scale] of [\n ['xs', 0.5],\n ['sm', 1],\n ['md', 2],\n ['lg', 3],\n ['xl', 4],\n ] as const)\n variables[`--leaf-spacing-${name}`] = `calc(var(--leaf-spacing) * ${scale})`;\n }\n if (theme.lineHeight !== undefined) variables['--leaf-line-height'] = theme.lineHeight;\n if (theme.headingWeight !== undefined) variables['--leaf-heading-weight'] = theme.headingWeight;\n if (theme.elevation)\n for (const [name, blur, y] of [\n ['sm', 8, 2],\n ['md', 20, 6],\n ['lg', 48, 12],\n ] as const)\n variables[`--leaf-shadow-${name}`] =\n theme.elevation === 'none'\n ? 'none'\n : `0 ${y}px ${blur}px rgb(0 0 0 / ${theme.elevation === 'soft' ? '.08' : '.16'})`;\n for (const [name, value] of Object.entries(theme.breakpoints ?? {}))\n if (value !== undefined) variables[`--leaf-breakpoint-${name}`] = `${value}px`;\n const componentKeys = {\n borderRadius: 'radius',\n controlHeight: 'height',\n padding: 'padding',\n gap: 'gap',\n fontSize: 'font-size',\n color: 'color',\n background: 'background',\n borderColor: 'border-color',\n headerBackground: 'header-background',\n footerBackground: 'footer-background',\n shadow: 'shadow',\n } as const;\n for (const [component, tokens] of Object.entries(theme.components ?? {}))\n for (const [key, value] of Object.entries(tokens))\n if (value !== undefined && /^[a-z][a-z\\d-]*$/i.test(component)) {\n const token = componentKeys[key as keyof typeof componentKeys];\n if (token)\n variables[\n `--leaf-component-${component.replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase()}-${token}`\n ] = typeof value === 'number' ? length(value) : value;\n if (key === 'controlHeight') {\n const name = component.replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase();\n variables[`--leaf-component-${name}-height-sm`] =\n `max(1px, calc(var(--leaf-component-${name}-height) - 6px))`;\n variables[`--leaf-component-${name}-height-lg`] =\n `calc(var(--leaf-component-${name}-height) + 6px)`;\n }\n if (key === 'padding') {\n const name = component.replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase();\n const sides = paddingSides(length(value));\n for (const [index, side] of ['top', 'right', 'bottom', 'left'].entries())\n variables[`--leaf-component-${name}-padding-${side}`] = sides[index];\n }\n }\n if (theme.primaryColor !== undefined) {\n variables['--leaf-color-primary'] = theme.primaryColor;\n variables['--leaf-color-on-primary'] = '#ffffff';\n }\n if (theme.borderRadius !== undefined) {\n variables['--leaf-radius'] = length(theme.borderRadius);\n variables['--leaf-radius-sm'] = 'calc(var(--leaf-radius) * 0.6)';\n variables['--leaf-radius-md'] = 'calc(var(--leaf-radius) * 1.2)';\n variables['--leaf-radius-lg'] = 'calc(var(--leaf-radius) * 1.6)';\n variables['--leaf-choice-radius'] = 'calc(var(--leaf-radius) * 0.5)';\n }\n if (theme.controlHeight !== undefined) {\n variables['--leaf-control-height'] = length(theme.controlHeight);\n variables['--leaf-control-height-sm'] = 'max(1px, calc(var(--leaf-control-height) - 6px))';\n variables['--leaf-control-height-lg'] = 'calc(var(--leaf-control-height) + 6px)';\n }\n if (theme.fontSize !== undefined) {\n variables['--leaf-font-size'] = length(theme.fontSize);\n variables['--leaf-font-size-sm'] = 'max(1px, calc(var(--leaf-font-size) - 1px))';\n variables['--leaf-font-size-lg'] = 'calc(var(--leaf-font-size) + 2px)';\n }\n if (theme.fontFamily !== undefined) variables['--leaf-font-family'] = theme.fontFamily;\n for (const key of Object.keys(tokenVariables) as (keyof LeafThemeTokens)[]) {\n const value = theme.tokens?.[key];\n if (value === undefined) continue;\n const variable = tokenVariables[key];\n variables[`--leaf-${variable}`] =\n typeof value !== 'number'\n ? value\n : key === 'motionDuration'\n ? `${value}ms`\n : variable.includes('radius') ||\n variable.includes('height') ||\n variable.includes('font-size') ||\n variable.includes('spacing')\n ? length(value)\n : value;\n }\n if (theme.motion !== undefined) {\n variables['--leaf-motion-play-state'] = theme.motion ? 'running' : 'paused';\n variables['--leaf-motion-animation'] = theme.motion ? 'initial' : 'none';\n if (!theme.motion) variables['--leaf-motion-duration'] = '0ms';\n else if (theme.tokens?.motionDuration === undefined)\n variables['--leaf-motion-duration'] = '200ms';\n }\n if (\n theme.appearance ||\n theme.primaryColor ||\n Object.keys(theme.tokens ?? {}).some((key) => key.endsWith('Color'))\n ) {\n return { ...deriveColors(theme.appearance ?? 'light', leafThemeColors(theme)), ...variables };\n }\n return variables;\n}\n"],"names":["defined","value","Object","item","undefined","mergeLeafTheme","parent","theme","Set","key","tokenVariables","length","paddingSides","parts","depth","start","index","character","part","top","right","bottom","left","leafThemeColors","colors","variable","leafThemeVariables","variables","Math","name","scale","blur","y","componentKeys","component","tokens","token","sides","side","deriveColors"],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sources":["../../src/theme.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport { deriveColors } from './colors';\n\n/** Shared CSS variables; configure component themes through ConfigProvider. */\nexport type LeafThemeStyle = CSSProperties & {\n [key: `--leaf-${string}`]: string | number | undefined;\n};\n\n/** Common settings. Other sizes and interaction colors are derived automatically. */\nexport interface LeafTheme {\n primaryColor?: string;\n borderRadius?: number | string;\n controlHeight?: number | string;\n fontSize?: number | string;\n fontFamily?: string;\n appearance?: 'light' | 'dark';\n motion?: boolean;\n tokens?: LeafThemeTokens;\n spacing?: number;\n lineHeight?: number;\n headingWeight?: number;\n elevation?: 'none' | 'soft' | 'medium';\n breakpoints?: Partial<Record<'xs' | 'sm' | 'md' | 'lg' | 'xl', number>>;\n components?: Record<string, LeafComponentTokens>;\n}\nexport interface LeafComponentTokens {\n borderRadius?: string | number;\n borderWidth?: string | number;\n controlHeight?: string | number;\n padding?: string | number;\n gap?: string | number;\n fontSize?: string | number;\n color?: string;\n background?: string;\n borderColor?: string;\n headerBackground?: string;\n footerBackground?: string;\n shadow?: string;\n hover?: LeafComponentStateTokens;\n active?: LeafComponentStateTokens;\n focus?: LeafComponentStateTokens;\n disabled?: LeafComponentStateTokens;\n}\n\n/** Interaction overrides supported by themed controls; focus keeps the accessible outline. */\nexport interface LeafComponentStateTokens {\n color?: string;\n background?: string;\n borderColor?: string;\n shadow?: string;\n}\n\n/** Optional overrides for applications with more specific design requirements. */\nexport interface LeafThemeTokens {\n onPrimaryColor?: string;\n dangerColor?: string;\n onDangerColor?: string;\n successColor?: string;\n warningColor?: string;\n infoColor?: string;\n textColor?: string;\n mutedTextColor?: string;\n subtleTextColor?: string;\n surfaceColor?: string;\n mutedSurfaceColor?: string;\n raisedSurfaceColor?: string;\n borderColor?: string;\n borderHoverColor?: string;\n dividerColor?: string;\n borderWidth?: number | string;\n controlShadow?: string;\n surfaceShadow?: string;\n borderRadiusSm?: number | string;\n borderRadiusMd?: number | string;\n borderRadiusLg?: number | string;\n controlHeightSm?: number | string;\n controlHeightLg?: number | string;\n fontSizeSm?: number | string;\n fontSizeLg?: number | string;\n fontWeight?: number;\n motionDuration?: number | string;\n motionEasing?: string;\n motionSpring?: string;\n popupZIndex?: number;\n modalZIndex?: number;\n messageZIndex?: number;\n buttonBorderRadius?: number | string;\n buttonHeight?: number | string;\n choiceBorderRadius?: number | string;\n focusColor?: string;\n primaryHoverColor?: string;\n primaryActiveColor?: string;\n primarySoftColor?: string;\n primarySoftHoverColor?: string;\n primarySoftActiveColor?: string;\n primaryBorderColor?: string;\n dangerHoverColor?: string;\n dangerActiveColor?: string;\n spacingSm?: number | string;\n spacingLg?: number | string;\n shadowSm?: string;\n shadowXs?: string;\n shadowMd?: string;\n shadowLg?: string;\n lineHeight?: number;\n}\n\nconst defined = <T extends object>(value?: T) =>\n Object.fromEntries(Object.entries(value ?? {}).filter(([, item]) => item !== undefined)) as T;\n\nconst componentStates = ['hover', 'active', 'focus', 'disabled'] as const;\n\nfunction mergeComponentTokens(\n parent?: LeafComponentTokens,\n tokens?: LeafComponentTokens,\n): LeafComponentTokens {\n const merged = { ...defined(parent), ...defined(tokens) };\n for (const state of componentStates)\n if (parent?.[state] || tokens?.[state])\n merged[state] = { ...defined(parent?.[state]), ...defined(tokens?.[state]) };\n return merged;\n}\n\nexport function mergeLeafTheme(parent: LeafTheme, theme?: LeafTheme): LeafTheme {\n return {\n ...parent,\n ...defined(theme),\n breakpoints: { ...parent.breakpoints, ...defined(theme?.breakpoints) },\n components: Object.fromEntries(\n [\n ...new Set([\n ...Object.keys(parent.components ?? {}),\n ...Object.keys(theme?.components ?? {}),\n ]),\n ].map((key) => [\n key,\n mergeComponentTokens(parent.components?.[key], theme?.components?.[key]),\n ]),\n ),\n ...(parent.tokens || theme?.tokens\n ? { tokens: { ...parent.tokens, ...defined(theme?.tokens) } }\n : {}),\n };\n}\n\nconst tokenVariables = {\n onPrimaryColor: 'color-on-primary',\n dangerColor: 'color-danger',\n onDangerColor: 'color-on-danger',\n successColor: 'color-success',\n warningColor: 'color-warning',\n infoColor: 'color-info',\n textColor: 'color-text',\n mutedTextColor: 'color-text-muted',\n subtleTextColor: 'color-text-subtle',\n surfaceColor: 'color-surface',\n mutedSurfaceColor: 'color-surface-muted',\n raisedSurfaceColor: 'color-surface-raised',\n borderColor: 'color-border',\n borderHoverColor: 'color-border-hover',\n dividerColor: 'color-divider',\n borderWidth: 'border-width',\n controlShadow: 'control-shadow',\n surfaceShadow: 'surface-shadow',\n borderRadiusSm: 'radius-sm',\n borderRadiusMd: 'radius-md',\n borderRadiusLg: 'radius-lg',\n controlHeightSm: 'control-height-sm',\n controlHeightLg: 'control-height-lg',\n fontSizeSm: 'font-size-sm',\n fontSizeLg: 'font-size-lg',\n fontWeight: 'font-weight',\n motionDuration: 'motion-duration',\n motionEasing: 'motion-easing',\n motionSpring: 'motion-spring',\n popupZIndex: 'z-index-popup',\n modalZIndex: 'z-index-modal',\n messageZIndex: 'z-index-message',\n buttonBorderRadius: 'button-radius',\n buttonHeight: 'button-height',\n choiceBorderRadius: 'choice-radius',\n focusColor: 'color-focus',\n primaryHoverColor: 'color-primary-hover',\n primaryActiveColor: 'color-primary-active',\n primarySoftColor: 'color-primary-soft',\n primarySoftHoverColor: 'color-primary-soft-hover',\n primarySoftActiveColor: 'color-primary-soft-active',\n primaryBorderColor: 'color-primary-border',\n dangerHoverColor: 'color-danger-hover',\n dangerActiveColor: 'color-danger-active',\n spacingSm: 'spacing-sm',\n spacingLg: 'spacing-lg',\n shadowSm: 'shadow-sm',\n shadowXs: 'shadow-xs',\n shadowMd: 'shadow-md',\n shadowLg: 'shadow-lg',\n lineHeight: 'line-height',\n} satisfies Record<keyof LeafThemeTokens, string>;\n\nconst length = (value: number | string) => (typeof value === 'number' ? `${value}px` : value);\n\n/** Expand CSS padding without splitting whitespace inside calc()/var(). */\nfunction paddingSides(value: string) {\n const parts: string[] = [];\n let depth = 0;\n let start = 0;\n for (let index = 0; index <= value.length; index++) {\n const character = value[index];\n if (character === '(') depth++;\n else if (character === ')') depth--;\n if (index === value.length || (depth === 0 && /\\s/.test(character ?? ''))) {\n const part = value.slice(start, index).trim();\n if (part) parts.push(part);\n start = index + 1;\n }\n }\n if (!parts.length || parts.length > 4) return [];\n const [top, right = top, bottom = top, left = right] = parts;\n return [top, right, bottom, left];\n}\n\n/** Explicit inputs, excluding the generated palette, for browser CSS-variable resolution. */\nexport function leafThemeColors(theme: LeafTheme): Record<string, string> {\n const colors: Record<string, string> = {};\n if (theme.primaryColor) {\n colors.primary = theme.primaryColor;\n }\n for (const key of Object.keys(tokenVariables) as (keyof LeafThemeTokens)[]) {\n const variable = tokenVariables[key];\n const value = theme.tokens?.[key];\n if (variable.startsWith('color-') && typeof value === 'string')\n colors[variable.slice(6)] = value;\n }\n return colors;\n}\n\n/** Pure, deterministic output can be rendered in the server's initial HTML. */\nexport function leafThemeVariables(theme: LeafTheme): LeafThemeStyle {\n const variables: LeafThemeStyle = {};\n if (theme.spacing !== undefined) {\n variables['--leaf-spacing'] = `${Math.max(0, theme.spacing)}px`;\n for (const [name, scale] of [\n ['xs', 0.5],\n ['sm', 1],\n ['md', 2],\n ['lg', 3],\n ['xl', 4],\n ] as const)\n variables[`--leaf-spacing-${name}`] = `calc(var(--leaf-spacing) * ${scale})`;\n }\n if (theme.lineHeight !== undefined) variables['--leaf-line-height'] = theme.lineHeight;\n if (theme.headingWeight !== undefined) variables['--leaf-heading-weight'] = theme.headingWeight;\n if (theme.elevation)\n for (const [name, blur, y] of [\n ['sm', 8, 2],\n ['md', 20, 6],\n ['lg', 48, 12],\n ] as const)\n variables[`--leaf-shadow-${name}`] =\n theme.elevation === 'none'\n ? 'none'\n : `0 ${y}px ${blur}px rgb(0 0 0 / ${theme.elevation === 'soft' ? '.08' : '.16'})`;\n for (const [name, value] of Object.entries(theme.breakpoints ?? {}))\n if (value !== undefined) variables[`--leaf-breakpoint-${name}`] = `${value}px`;\n const componentKeys = {\n borderRadius: 'radius',\n borderWidth: 'border-width',\n controlHeight: 'height',\n padding: 'padding',\n gap: 'gap',\n fontSize: 'font-size',\n color: 'color',\n background: 'background',\n borderColor: 'border-color',\n headerBackground: 'header-background',\n footerBackground: 'footer-background',\n shadow: 'shadow',\n } as const;\n const stateKeys = {\n color: 'color',\n background: 'background',\n borderColor: 'border-color',\n shadow: 'shadow',\n } as const;\n for (const [component, tokens] of Object.entries(theme.components ?? {})) {\n if (!/^[a-z][a-z\\d-]*$/i.test(component)) continue;\n const name = component.replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase();\n for (const [key, value] of Object.entries(tokens))\n if (value !== undefined && typeof value !== 'object') {\n const token = componentKeys[key as keyof typeof componentKeys];\n if (token)\n variables[`--leaf-component-${name}-${token}`] =\n typeof value === 'number' ? length(value) : value;\n if (key === 'controlHeight') {\n variables[`--leaf-component-${name}-height-sm`] =\n `max(1px, calc(var(--leaf-component-${name}-height) - 6px))`;\n variables[`--leaf-component-${name}-height-lg`] =\n `calc(var(--leaf-component-${name}-height) + 6px)`;\n }\n if (key === 'padding') {\n const sides = paddingSides(length(value));\n for (const [index, side] of ['top', 'right', 'bottom', 'left'].entries())\n variables[`--leaf-component-${name}-padding-${side}`] = sides[index];\n }\n }\n for (const state of componentStates)\n for (const [key, suffix] of Object.entries(stateKeys)) {\n const value = tokens[state]?.[key as keyof LeafComponentStateTokens];\n if (value !== undefined) variables[`--leaf-component-${name}-${state}-${suffix}`] = value;\n }\n }\n if (theme.borderRadius !== undefined) {\n variables['--leaf-radius'] = length(theme.borderRadius);\n variables['--leaf-radius-sm'] = 'calc(var(--leaf-radius) * 0.6)';\n variables['--leaf-radius-md'] = 'calc(var(--leaf-radius) * 1.2)';\n variables['--leaf-radius-lg'] = 'calc(var(--leaf-radius) * 1.6)';\n variables['--leaf-choice-radius'] = 'calc(var(--leaf-radius) * 0.5)';\n }\n if (theme.controlHeight !== undefined) {\n variables['--leaf-control-height'] = length(theme.controlHeight);\n variables['--leaf-control-height-sm'] = 'max(1px, calc(var(--leaf-control-height) - 6px))';\n variables['--leaf-control-height-lg'] = 'calc(var(--leaf-control-height) + 6px)';\n }\n if (theme.fontSize !== undefined) {\n variables['--leaf-font-size'] = length(theme.fontSize);\n variables['--leaf-font-size-sm'] = 'max(1px, calc(var(--leaf-font-size) - 1px))';\n variables['--leaf-font-size-lg'] = 'calc(var(--leaf-font-size) + 2px)';\n }\n if (theme.fontFamily !== undefined) variables['--leaf-font-family'] = theme.fontFamily;\n for (const key of Object.keys(tokenVariables) as (keyof LeafThemeTokens)[]) {\n const value = theme.tokens?.[key];\n if (value === undefined) continue;\n const variable = tokenVariables[key];\n variables[`--leaf-${variable}`] =\n typeof value !== 'number'\n ? value\n : key === 'motionDuration'\n ? `${value}ms`\n : variable.includes('radius') ||\n variable.includes('height') ||\n variable.includes('font-size') ||\n variable === 'border-width' ||\n variable.includes('spacing')\n ? length(value)\n : value;\n }\n // An explicit global border color also styles frames whose normal border is\n // transparent or muted. Component and semantic state overrides still win.\n if (theme.tokens?.borderColor !== undefined)\n variables['--leaf-frame-border-color'] = theme.tokens.borderColor;\n if (theme.motion !== undefined) {\n variables['--leaf-motion-play-state'] = theme.motion ? 'running' : 'paused';\n variables['--leaf-motion-animation'] = theme.motion ? 'initial' : 'none';\n if (!theme.motion) variables['--leaf-motion-duration'] = '0ms';\n else if (theme.tokens?.motionDuration === undefined)\n variables['--leaf-motion-duration'] = '200ms';\n }\n if (\n theme.appearance ||\n theme.primaryColor ||\n Object.keys(theme.tokens ?? {}).some((key) => key.endsWith('Color'))\n ) {\n return { ...deriveColors(theme.appearance ?? 'light', leafThemeColors(theme)), ...variables };\n }\n return variables;\n}\n"],"names":["defined","value","Object","item","undefined","componentStates","mergeComponentTokens","parent","tokens","merged","state","mergeLeafTheme","theme","Set","key","tokenVariables","length","paddingSides","parts","depth","start","index","character","part","top","right","bottom","left","leafThemeColors","colors","variable","leafThemeVariables","variables","Math","name","scale","blur","y","componentKeys","stateKeys","component","token","sides","side","suffix","deriveColors"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/timeline/timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAKpE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;CAC9E;AACD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IACvF,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AACD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,+BA0D/C"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/timeline/timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAKpE,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;CAC9E;AACD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IACvF,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB;AACD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,+BA2D/C"}
@@ -36,7 +36,7 @@ function Timeline(rawProps) {
36
36
  "data-pending": '__leaf-pending' === item.key || void 0,
37
37
  "data-side": 'right' === mode || 'alternate' === mode && index % 2 ? 'right' : 'left',
38
38
  style: {
39
- '--leaf-timeline-color': item.color && item.color in colors ? `var(--leaf-color-${colors[item.color]})` : item.color ?? 'var(--leaf-color-primary)'
39
+ '--leaf-timeline-color': item.color && item.color in colors ? `var(--leaf-color-${colors[item.color]})` : item.color ?? 'var(--leaf-color-primary-indicator, var(--leaf-color-primary))'
40
40
  },
41
41
  children: [
42
42
  /*#__PURE__*/ jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"timeline/timeline.js","sources":["../../../src/timeline/timeline.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode, useRef } from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { classes } from '../shared/classes';\nimport { useListMotion } from '../shared/motion';\nimport type { LeafThemeStyle } from '../theme';\nexport interface TimelineItem {\n key: string;\n label?: ReactNode;\n children: ReactNode;\n dot?: ReactNode;\n color?: 'primary' | 'success' | 'warning' | 'error' | 'info' | (string & {});\n}\nexport interface TimelineProps extends Omit<HTMLAttributes<HTMLOListElement>, 'onChange'> {\n items: readonly TimelineItem[];\n mode?: 'left' | 'right' | 'alternate';\n reverse?: boolean;\n pending?: ReactNode;\n}\nexport function Timeline(rawProps: TimelineProps) {\n const {\n items,\n mode = 'left',\n reverse = false,\n pending,\n className,\n ...props\n } = useComponentProps('Timeline', rawProps);\n const root = useRef<HTMLOListElement>(null);\n const entries = [...items];\n if (reverse) entries.reverse();\n if (pending != null) entries.push({ key: '__leaf-pending', children: pending });\n useListMotion(\n root,\n JSON.stringify([mode, entries.map((item) => item.key)]),\n '.leaf-timeline__item',\n );\n const colors = {\n primary: 'primary',\n success: 'success',\n warning: 'warning',\n error: 'danger',\n info: 'info',\n };\n return (\n <ol\n {...props}\n ref={root}\n className={classes('leaf-timeline', `leaf-timeline--${mode}`, className)}\n >\n {entries.map((item, index) => (\n <li\n key={item.key}\n data-motion-key={item.key}\n className=\"leaf-timeline__item\"\n data-pending={item.key === '__leaf-pending' || undefined}\n data-side={mode === 'right' || (mode === 'alternate' && index % 2) ? 'right' : 'left'}\n style={\n {\n '--leaf-timeline-color':\n item.color && item.color in colors\n ? `var(--leaf-color-${colors[item.color as keyof typeof colors]})`\n : (item.color ?? 'var(--leaf-color-primary)'),\n } as LeafThemeStyle\n }\n >\n <div className=\"leaf-timeline__dot\" aria-hidden=\"true\">\n {item.dot}\n </div>\n <div className=\"leaf-timeline__content\">\n {item.label != null && <div className=\"leaf-timeline__label\">{item.label}</div>}\n {item.children}\n </div>\n </li>\n ))}\n </ol>\n );\n}\n"],"names":["Timeline","rawProps","items","mode","reverse","pending","className","props","useComponentProps","root","useRef","entries","useListMotion","JSON","item","colors","classes","index","undefined"],"mappings":";;;;;;AAkBO,SAASA,SAASC,QAAuB;IAC9C,MAAM,EACJC,KAAK,EACLC,OAAO,MAAM,EACbC,UAAU,KAAK,EACfC,OAAO,EACPC,SAAS,EACT,GAAGC,OACJ,GAAGC,kBAAkB,YAAYP;IAClC,MAAMQ,OAAOC,OAAyB;IACtC,MAAMC,UAAU;WAAIT;KAAM;IAC1B,IAAIE,SAASO,QAAQ,OAAO;IAC5B,IAAIN,AAAW,QAAXA,SAAiBM,QAAQ,IAAI,CAAC;QAAE,KAAK;QAAkB,UAAUN;IAAQ;IAC7EO,cACEH,MACAI,KAAK,SAAS,CAAC;QAACV;QAAMQ,QAAQ,GAAG,CAAC,CAACG,OAASA,KAAK,GAAG;KAAE,GACtD;IAEF,MAAMC,SAAS;QACb,SAAS;QACT,SAAS;QACT,SAAS;QACT,OAAO;QACP,MAAM;IACR;IACA,OAAO,WAAP,GACE,IAAC;QACE,GAAGR,KAAK;QACT,KAAKE;QACL,WAAWO,QAAQ,iBAAiB,CAAC,eAAe,EAAEb,MAAM,EAAEG;kBAE7DK,QAAQ,GAAG,CAAC,CAACG,MAAMG,QAAAA,WAAAA,GAClB,KAAC;gBAEC,mBAAiBH,KAAK,GAAG;gBACzB,WAAU;gBACV,gBAAcA,AAAa,qBAAbA,KAAK,GAAG,IAAyBI;gBAC/C,aAAWf,AAAS,YAATA,QAAqBA,AAAS,gBAATA,QAAwBc,QAAQ,IAAK,UAAU;gBAC/E,OACE;oBACE,yBACEH,KAAK,KAAK,IAAIA,KAAK,KAAK,IAAIC,SACxB,CAAC,iBAAiB,EAAEA,MAAM,CAACD,KAAK,KAAK,CAAwB,CAAC,CAAC,CAAC,GAC/DA,KAAK,KAAK,IAAI;gBACvB;;kCAGF,IAAC;wBAAI,WAAU;wBAAqB,eAAY;kCAC7CA,KAAK,GAAG;;kCAEX,KAAC;wBAAI,WAAU;;4BACE,QAAdA,KAAK,KAAK,IAAY,WAAR,GAAQ,IAAC;gCAAI,WAAU;0CAAwBA,KAAK,KAAK;;4BACvEA,KAAK,QAAQ;;;;eAnBXA,KAAK,GAAG;;AAyBvB"}
1
+ {"version":3,"file":"timeline/timeline.js","sources":["../../../src/timeline/timeline.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode, useRef } from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { classes } from '../shared/classes';\nimport { useListMotion } from '../shared/motion';\nimport type { LeafThemeStyle } from '../theme';\nexport interface TimelineItem {\n key: string;\n label?: ReactNode;\n children: ReactNode;\n dot?: ReactNode;\n color?: 'primary' | 'success' | 'warning' | 'error' | 'info' | (string & {});\n}\nexport interface TimelineProps extends Omit<HTMLAttributes<HTMLOListElement>, 'onChange'> {\n items: readonly TimelineItem[];\n mode?: 'left' | 'right' | 'alternate';\n reverse?: boolean;\n pending?: ReactNode;\n}\nexport function Timeline(rawProps: TimelineProps) {\n const {\n items,\n mode = 'left',\n reverse = false,\n pending,\n className,\n ...props\n } = useComponentProps('Timeline', rawProps);\n const root = useRef<HTMLOListElement>(null);\n const entries = [...items];\n if (reverse) entries.reverse();\n if (pending != null) entries.push({ key: '__leaf-pending', children: pending });\n useListMotion(\n root,\n JSON.stringify([mode, entries.map((item) => item.key)]),\n '.leaf-timeline__item',\n );\n const colors = {\n primary: 'primary',\n success: 'success',\n warning: 'warning',\n error: 'danger',\n info: 'info',\n };\n return (\n <ol\n {...props}\n ref={root}\n className={classes('leaf-timeline', `leaf-timeline--${mode}`, className)}\n >\n {entries.map((item, index) => (\n <li\n key={item.key}\n data-motion-key={item.key}\n className=\"leaf-timeline__item\"\n data-pending={item.key === '__leaf-pending' || undefined}\n data-side={mode === 'right' || (mode === 'alternate' && index % 2) ? 'right' : 'left'}\n style={\n {\n '--leaf-timeline-color':\n item.color && item.color in colors\n ? `var(--leaf-color-${colors[item.color as keyof typeof colors]})`\n : (item.color ??\n 'var(--leaf-color-primary-indicator, var(--leaf-color-primary))'),\n } as LeafThemeStyle\n }\n >\n <div className=\"leaf-timeline__dot\" aria-hidden=\"true\">\n {item.dot}\n </div>\n <div className=\"leaf-timeline__content\">\n {item.label != null && <div className=\"leaf-timeline__label\">{item.label}</div>}\n {item.children}\n </div>\n </li>\n ))}\n </ol>\n );\n}\n"],"names":["Timeline","rawProps","items","mode","reverse","pending","className","props","useComponentProps","root","useRef","entries","useListMotion","JSON","item","colors","classes","index","undefined"],"mappings":";;;;;;AAkBO,SAASA,SAASC,QAAuB;IAC9C,MAAM,EACJC,KAAK,EACLC,OAAO,MAAM,EACbC,UAAU,KAAK,EACfC,OAAO,EACPC,SAAS,EACT,GAAGC,OACJ,GAAGC,kBAAkB,YAAYP;IAClC,MAAMQ,OAAOC,OAAyB;IACtC,MAAMC,UAAU;WAAIT;KAAM;IAC1B,IAAIE,SAASO,QAAQ,OAAO;IAC5B,IAAIN,AAAW,QAAXA,SAAiBM,QAAQ,IAAI,CAAC;QAAE,KAAK;QAAkB,UAAUN;IAAQ;IAC7EO,cACEH,MACAI,KAAK,SAAS,CAAC;QAACV;QAAMQ,QAAQ,GAAG,CAAC,CAACG,OAASA,KAAK,GAAG;KAAE,GACtD;IAEF,MAAMC,SAAS;QACb,SAAS;QACT,SAAS;QACT,SAAS;QACT,OAAO;QACP,MAAM;IACR;IACA,OAAO,WAAP,GACE,IAAC;QACE,GAAGR,KAAK;QACT,KAAKE;QACL,WAAWO,QAAQ,iBAAiB,CAAC,eAAe,EAAEb,MAAM,EAAEG;kBAE7DK,QAAQ,GAAG,CAAC,CAACG,MAAMG,QAAAA,WAAAA,GAClB,KAAC;gBAEC,mBAAiBH,KAAK,GAAG;gBACzB,WAAU;gBACV,gBAAcA,AAAa,qBAAbA,KAAK,GAAG,IAAyBI;gBAC/C,aAAWf,AAAS,YAATA,QAAqBA,AAAS,gBAATA,QAAwBc,QAAQ,IAAK,UAAU;gBAC/E,OACE;oBACE,yBACEH,KAAK,KAAK,IAAIA,KAAK,KAAK,IAAIC,SACxB,CAAC,iBAAiB,EAAEA,MAAM,CAACD,KAAK,KAAK,CAAwB,CAAC,CAAC,CAAC,GAC/DA,KAAK,KAAK,IACX;gBACR;;kCAGF,IAAC;wBAAI,WAAU;wBAAqB,eAAY;kCAC7CA,KAAK,GAAG;;kCAEX,KAAC;wBAAI,WAAU;;4BACE,QAAdA,KAAK,KAAK,IAAY,WAAR,GAAQ,IAAC;gCAAI,WAAU;0CAAwBA,KAAK,KAAK;;4BACvEA,KAAK,QAAQ;;;;eApBXA,KAAK,GAAG;;AA0BvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-panel.d.ts","sourceRoot":"","sources":["../../../src/timepicker/time-panel.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEzD,UAAU,cAAc;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC;CAC9C;AA2GD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAc,EACd,UAAc,EACd,SAAS,EACT,YAAY,GACb,EAAE,cAAc,+BAoFhB"}
1
+ {"version":3,"file":"time-panel.d.ts","sourceRoot":"","sources":["../../../src/timepicker/time-panel.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEzD,UAAU,cAAc;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC;CAC9C;AAqHD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAc,EACd,UAAc,EACd,SAAS,EACT,YAAY,GACb,EAAE,cAAc,+BAoFhB"}
@@ -3,6 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Check } from "lucide-react";
4
4
  import { useEffect, useLayoutEffect, useRef, useState } from "react";
5
5
  import { useLeafConfig } from "../config-provider/context.js";
6
+ import { ScrollbarControl } from "../scrollbar/scrollbar.js";
6
7
  import { padTime } from "../shared/time.js";
7
8
  const useBrowserLayoutEffect = "u" < typeof window ? useEffect : useLayoutEffect;
8
9
  function keepTimeOptionVisible(column, row) {
@@ -64,11 +65,16 @@ function TimeColumn({ label, choices, selected, change, labels, disabled }) {
64
65
  "aria-hidden": "true",
65
66
  children: label
66
67
  }),
67
- /*#__PURE__*/ jsxs("div", {
68
+ /*#__PURE__*/ jsxs(ScrollbarControl, {
68
69
  ref: ref,
69
- className: "leaf-time-picker__column",
70
+ viewportClassName: "leaf-time-picker__column",
71
+ contentClassName: "leaf-time-picker__options",
70
72
  role: "listbox",
71
73
  "aria-label": label,
74
+ maxHeight: 210,
75
+ orientation: "vertical",
76
+ tabIndex: -1,
77
+ scrollbarTabIndex: -1,
72
78
  children: [
73
79
  /*#__PURE__*/ jsx("div", {
74
80
  className: "leaf-time-picker__selection",
@@ -1 +1 @@
1
- {"version":3,"file":"timepicker/time-panel.js","sources":["../../../src/timepicker/time-panel.tsx"],"sourcesContent":["import { Check } from 'lucide-react';\nimport {\n type CSSProperties,\n type KeyboardEvent,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useLeafConfig } from '../config-provider/context';\nimport { padTime, type TimeParts } from '../shared/time';\n\ninterface TimePanelProps {\n value: TimeParts;\n onChange: (value: TimeParts) => void;\n showSeconds?: boolean;\n use12Hours?: boolean;\n minuteStep?: number;\n secondStep?: number;\n autoFocus?: boolean;\n disabledTime?: (parts: TimeParts) => boolean;\n}\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\ninterface TimeColumnProps {\n label: string;\n choices: number[];\n selected: number;\n change: (next: number) => void;\n labels?: string[];\n disabled?: (choice: number) => boolean;\n}\nfunction keepTimeOptionVisible(column: HTMLElement, row: HTMLElement) {\n const top = row.offsetTop;\n const bottom = top + row.offsetHeight;\n if (top < column.scrollTop) column.scrollTop = top;\n else if (bottom > column.scrollTop + column.clientHeight)\n column.scrollTop = bottom - column.clientHeight;\n}\n\nfunction TimeColumn({ label, choices, selected, change, labels, disabled }: TimeColumnProps) {\n const ref = useRef<HTMLDivElement>(null);\n const [selection, setSelection] = useState<CSSProperties>();\n useBrowserLayoutEffect(() => {\n const column = ref.current;\n if (!column) return;\n const row = column.querySelector<HTMLButtonElement>('[aria-selected=\"true\"]:not(:disabled)');\n const update = () => {\n setSelection(\n row\n ? ({\n '--leaf-time-selection-y': `${row.offsetTop}px`,\n '--leaf-time-selection-height': `${row.offsetHeight}px`,\n } as CSSProperties)\n : undefined,\n );\n // Scrolling a row into every ancestor moves the whole range popup and can\n // hide its endpoint labels when both time panels are present.\n if (row) keepTimeOptionVisible(column, row);\n };\n update();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(update);\n observer.observe(column);\n if (row) observer.observe(row);\n return () => observer.disconnect();\n }, [selected, choices, disabled]);\n const key = (event: KeyboardEvent<HTMLButtonElement>, current: number) => {\n const available = choices.filter((choice) => !disabled?.(choice));\n if (!available.length) return;\n const index = available.indexOf(current);\n let next = index;\n if (event.key === 'ArrowDown') next = (index + 1) % available.length;\n else if (event.key === 'ArrowUp') next = (index - 1 + available.length) % available.length;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = available.length - 1;\n else return;\n event.preventDefault();\n change(available[next] ?? current);\n const node =\n event.currentTarget.parentElement?.querySelectorAll<HTMLButtonElement>(\n 'button:not(:disabled)',\n )[next];\n node?.focus({ preventScroll: true });\n if (node && ref.current) keepTimeOptionVisible(ref.current, node);\n };\n return (\n <div className=\"leaf-time-picker__column-wrap\">\n <div className=\"leaf-time-picker__column-label\" aria-hidden=\"true\">\n {label}\n </div>\n <div ref={ref} className=\"leaf-time-picker__column\" role=\"listbox\" aria-label={label}>\n <div\n className=\"leaf-time-picker__selection\"\n data-ready={Boolean(selection)}\n aria-hidden=\"true\"\n style={selection}\n />\n {choices.map((option) => (\n <button\n type=\"button\"\n key={option}\n role=\"option\"\n disabled={disabled?.(option)}\n tabIndex={\n option ===\n (disabled?.(selected) ? choices.find((choice) => !disabled?.(choice)) : selected)\n ? 0\n : -1\n }\n aria-selected={option === selected}\n className=\"leaf-floating__option\"\n onClick={() => change(option)}\n onKeyDown={(event) => key(event, option)}\n >\n <span>{labels?.[option] ?? padTime(option)}</span>\n <Check\n size={14}\n aria-hidden=\"true\"\n className=\"leaf-time-picker__check\"\n style={{ opacity: option === selected ? 1 : 0 }}\n />\n </button>\n ))}\n </div>\n </div>\n );\n}\nexport function TimePanel({\n value,\n onChange,\n showSeconds,\n use12Hours,\n minuteStep = 5,\n secondStep = 1,\n autoFocus,\n disabledTime,\n}: TimePanelProps) {\n const { messages } = useLeafConfig();\n const ref = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (autoFocus)\n ref.current\n ?.querySelector<HTMLButtonElement>('[aria-selected=\"true\"]')\n ?.focus({ preventScroll: true });\n }, [autoFocus]);\n const options = (step: number, selected: number) => {\n const safe = Number.isFinite(step) ? Math.max(1, Math.min(60, Math.floor(step))) : 1;\n return [\n ...new Set([...Array.from({ length: Math.ceil(60 / safe) }, (_, i) => i * safe), selected]),\n ].sort((a, b) => a - b);\n };\n const column = (\n label: string,\n choices: number[],\n selected: number,\n change: (next: number) => void,\n labels?: string[],\n disabled?: (choice: number) => boolean,\n ) => {\n return (\n <TimeColumn\n key={label}\n label={label}\n choices={choices}\n selected={selected}\n change={change}\n labels={labels}\n disabled={disabled}\n />\n );\n };\n const hours = use12Hours\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i);\n return (\n <div ref={ref} className=\"leaf-time-picker__columns\">\n {column(\n messages.timePicker.hours,\n hours,\n use12Hours ? value.hour % 12 || 12 : value.hour,\n (hour) =>\n onChange({\n ...value,\n hour: use12Hours ? (hour % 12) + (value.hour < 12 ? 0 : 12) : hour,\n }),\n undefined,\n (hour) =>\n !!disabledTime?.({\n ...value,\n hour: use12Hours ? (hour % 12) + (value.hour < 12 ? 0 : 12) : hour,\n }),\n )}\n {column(\n messages.timePicker.minutes,\n options(minuteStep, value.minute),\n value.minute,\n (minute) => onChange({ ...value, minute }),\n undefined,\n (minute) => !!disabledTime?.({ ...value, minute }),\n )}\n {showSeconds &&\n column(\n messages.timePicker.seconds,\n options(secondStep, value.second),\n value.second,\n (second) => onChange({ ...value, second }),\n undefined,\n (second) => !!disabledTime?.({ ...value, second }),\n )}\n {use12Hours &&\n column(\n messages.timePicker.period,\n [0, 1],\n value.hour < 12 ? 0 : 1,\n (period) => onChange({ ...value, hour: (value.hour % 12) + period * 12 }),\n [messages.timePicker.am, messages.timePicker.pm],\n (period) => !!disabledTime?.({ ...value, hour: (value.hour % 12) + period * 12 }),\n )}\n </div>\n );\n}\n"],"names":["useBrowserLayoutEffect","window","useEffect","useLayoutEffect","keepTimeOptionVisible","column","row","top","bottom","TimeColumn","label","choices","selected","change","labels","disabled","ref","useRef","selection","setSelection","useState","update","undefined","ResizeObserver","observer","key","event","current","available","choice","index","next","node","Boolean","option","padTime","Check","TimePanel","value","onChange","showSeconds","use12Hours","minuteStep","secondStep","autoFocus","disabledTime","messages","useLeafConfig","options","step","safe","Number","Math","Set","Array","_","i","a","b","hours","hour","minute","second","period"],"mappings":"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"}
1
+ {"version":3,"file":"timepicker/time-panel.js","sources":["../../../src/timepicker/time-panel.tsx"],"sourcesContent":["import { Check } from 'lucide-react';\nimport {\n type CSSProperties,\n type KeyboardEvent,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { useLeafConfig } from '../config-provider/context';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { padTime, type TimeParts } from '../shared/time';\n\ninterface TimePanelProps {\n value: TimeParts;\n onChange: (value: TimeParts) => void;\n showSeconds?: boolean;\n use12Hours?: boolean;\n minuteStep?: number;\n secondStep?: number;\n autoFocus?: boolean;\n disabledTime?: (parts: TimeParts) => boolean;\n}\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\ninterface TimeColumnProps {\n label: string;\n choices: number[];\n selected: number;\n change: (next: number) => void;\n labels?: string[];\n disabled?: (choice: number) => boolean;\n}\nfunction keepTimeOptionVisible(column: HTMLElement, row: HTMLElement) {\n const top = row.offsetTop;\n const bottom = top + row.offsetHeight;\n if (top < column.scrollTop) column.scrollTop = top;\n else if (bottom > column.scrollTop + column.clientHeight)\n column.scrollTop = bottom - column.clientHeight;\n}\n\nfunction TimeColumn({ label, choices, selected, change, labels, disabled }: TimeColumnProps) {\n const ref = useRef<HTMLDivElement>(null);\n const [selection, setSelection] = useState<CSSProperties>();\n useBrowserLayoutEffect(() => {\n const column = ref.current;\n if (!column) return;\n const row = column.querySelector<HTMLButtonElement>('[aria-selected=\"true\"]:not(:disabled)');\n const update = () => {\n setSelection(\n row\n ? ({\n '--leaf-time-selection-y': `${row.offsetTop}px`,\n '--leaf-time-selection-height': `${row.offsetHeight}px`,\n } as CSSProperties)\n : undefined,\n );\n // Scrolling a row into every ancestor moves the whole range popup and can\n // hide its endpoint labels when both time panels are present.\n if (row) keepTimeOptionVisible(column, row);\n };\n update();\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(update);\n observer.observe(column);\n if (row) observer.observe(row);\n return () => observer.disconnect();\n }, [selected, choices, disabled]);\n const key = (event: KeyboardEvent<HTMLButtonElement>, current: number) => {\n const available = choices.filter((choice) => !disabled?.(choice));\n if (!available.length) return;\n const index = available.indexOf(current);\n let next = index;\n if (event.key === 'ArrowDown') next = (index + 1) % available.length;\n else if (event.key === 'ArrowUp') next = (index - 1 + available.length) % available.length;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = available.length - 1;\n else return;\n event.preventDefault();\n change(available[next] ?? current);\n const node =\n event.currentTarget.parentElement?.querySelectorAll<HTMLButtonElement>(\n 'button:not(:disabled)',\n )[next];\n node?.focus({ preventScroll: true });\n if (node && ref.current) keepTimeOptionVisible(ref.current, node);\n };\n return (\n <div className=\"leaf-time-picker__column-wrap\">\n <div className=\"leaf-time-picker__column-label\" aria-hidden=\"true\">\n {label}\n </div>\n <ScrollbarControl\n ref={ref}\n viewportClassName=\"leaf-time-picker__column\"\n contentClassName=\"leaf-time-picker__options\"\n role=\"listbox\"\n aria-label={label}\n maxHeight={210}\n orientation=\"vertical\"\n tabIndex={-1}\n scrollbarTabIndex={-1}\n >\n <div\n className=\"leaf-time-picker__selection\"\n data-ready={Boolean(selection)}\n aria-hidden=\"true\"\n style={selection}\n />\n {choices.map((option) => (\n <button\n type=\"button\"\n key={option}\n role=\"option\"\n disabled={disabled?.(option)}\n tabIndex={\n option ===\n (disabled?.(selected) ? choices.find((choice) => !disabled?.(choice)) : selected)\n ? 0\n : -1\n }\n aria-selected={option === selected}\n className=\"leaf-floating__option\"\n onClick={() => change(option)}\n onKeyDown={(event) => key(event, option)}\n >\n <span>{labels?.[option] ?? padTime(option)}</span>\n <Check\n size={14}\n aria-hidden=\"true\"\n className=\"leaf-time-picker__check\"\n style={{ opacity: option === selected ? 1 : 0 }}\n />\n </button>\n ))}\n </ScrollbarControl>\n </div>\n );\n}\nexport function TimePanel({\n value,\n onChange,\n showSeconds,\n use12Hours,\n minuteStep = 5,\n secondStep = 1,\n autoFocus,\n disabledTime,\n}: TimePanelProps) {\n const { messages } = useLeafConfig();\n const ref = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (autoFocus)\n ref.current\n ?.querySelector<HTMLButtonElement>('[aria-selected=\"true\"]')\n ?.focus({ preventScroll: true });\n }, [autoFocus]);\n const options = (step: number, selected: number) => {\n const safe = Number.isFinite(step) ? Math.max(1, Math.min(60, Math.floor(step))) : 1;\n return [\n ...new Set([...Array.from({ length: Math.ceil(60 / safe) }, (_, i) => i * safe), selected]),\n ].sort((a, b) => a - b);\n };\n const column = (\n label: string,\n choices: number[],\n selected: number,\n change: (next: number) => void,\n labels?: string[],\n disabled?: (choice: number) => boolean,\n ) => {\n return (\n <TimeColumn\n key={label}\n label={label}\n choices={choices}\n selected={selected}\n change={change}\n labels={labels}\n disabled={disabled}\n />\n );\n };\n const hours = use12Hours\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i);\n return (\n <div ref={ref} className=\"leaf-time-picker__columns\">\n {column(\n messages.timePicker.hours,\n hours,\n use12Hours ? value.hour % 12 || 12 : value.hour,\n (hour) =>\n onChange({\n ...value,\n hour: use12Hours ? (hour % 12) + (value.hour < 12 ? 0 : 12) : hour,\n }),\n undefined,\n (hour) =>\n !!disabledTime?.({\n ...value,\n hour: use12Hours ? (hour % 12) + (value.hour < 12 ? 0 : 12) : hour,\n }),\n )}\n {column(\n messages.timePicker.minutes,\n options(minuteStep, value.minute),\n value.minute,\n (minute) => onChange({ ...value, minute }),\n undefined,\n (minute) => !!disabledTime?.({ ...value, minute }),\n )}\n {showSeconds &&\n column(\n messages.timePicker.seconds,\n options(secondStep, value.second),\n value.second,\n (second) => onChange({ ...value, second }),\n undefined,\n (second) => !!disabledTime?.({ ...value, second }),\n )}\n {use12Hours &&\n column(\n messages.timePicker.period,\n [0, 1],\n value.hour < 12 ? 0 : 1,\n (period) => onChange({ ...value, hour: (value.hour % 12) + period * 12 }),\n [messages.timePicker.am, messages.timePicker.pm],\n (period) => !!disabledTime?.({ ...value, hour: (value.hour % 12) + period * 12 }),\n )}\n </div>\n );\n}\n"],"names":["useBrowserLayoutEffect","window","useEffect","useLayoutEffect","keepTimeOptionVisible","column","row","top","bottom","TimeColumn","label","choices","selected","change","labels","disabled","ref","useRef","selection","setSelection","useState","update","undefined","ResizeObserver","observer","key","event","current","available","choice","index","next","node","ScrollbarControl","Boolean","option","padTime","Check","TimePanel","value","onChange","showSeconds","use12Hours","minuteStep","secondStep","autoFocus","disabledTime","messages","useLeafConfig","options","step","safe","Number","Math","Set","Array","_","i","a","b","hours","hour","minute","second","period"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../src/transfer/transfer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAA2B,MAAM,OAAO,CAAC;AAcrF,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AACD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACrF,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9D,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC;IAC9D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,+BAsN/C"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../src/transfer/transfer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAA2B,MAAM,OAAO,CAAC;AAerF,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AACD,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACrF,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9D,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC;IAC9D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,+BA0N/C"}
@@ -10,6 +10,7 @@ import { estimateControlHeight } from "../density.js";
10
10
  import { FieldScope, useFormField } from "../form/form.js";
11
11
  import { InputControl } from "../input/input.js";
12
12
  import { ResultControl } from "../result/result.js";
13
+ import { ScrollbarControl } from "../scrollbar/scrollbar.js";
13
14
  import { classes } from "../shared/classes.js";
14
15
  import { FormValue, useFieldValue } from "../shared/field.js";
15
16
  import { useListMotion } from "../shared/motion.js";
@@ -139,11 +140,10 @@ function Transfer(rawProps) {
139
140
  icon: null,
140
141
  title: t('transfer.noItems')
141
142
  })
142
- }) : /*#__PURE__*/ jsx("div", {
143
- className: "leaf-transfer__list",
144
- style: {
145
- height
146
- },
143
+ }) : /*#__PURE__*/ jsx(ScrollbarControl, {
144
+ viewportClassName: "leaf-transfer__list",
145
+ height: height,
146
+ role: "presentation",
147
147
  children: list.length ? list.map((item)=>/*#__PURE__*/ jsx("div", {
148
148
  children: row(item)
149
149
  }, item.key)) : /*#__PURE__*/ jsx(ResultControl, {
@@ -1 +1 @@
1
- {"version":3,"file":"transfer/transfer.js","sources":["../../../src/transfer/transfer.tsx"],"sourcesContent":["import { ArrowLeft, ArrowRight, Search } from 'lucide-react';\nimport { type HTMLAttributes, type ReactNode, useId, useRef, useState } from 'react';\nimport { ButtonControl } from '../button/button';\nimport { CheckboxControl as Checkbox } from '../checkbox/checkbox';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { estimateControlHeight } from '../density';\nimport { FieldScope, useFormField } from '../form/form';\nimport { InputControl } from '../input/input';\nimport { ResultControl as Result } from '../result/result';\nimport { classes } from '../shared/classes';\nimport { FormValue, useFieldValue } from '../shared/field';\nimport { useListMotion } from '../shared/motion';\nimport { useText } from '../shared/use-text';\nimport { VirtualListControl as VirtualList } from '../virtuallist/virtuallist';\nexport interface TransferItem {\n key: string;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n searchLabel?: string;\n}\nexport interface TransferChangeInfo {\n direction: 'left' | 'right';\n movedKeys: string[];\n}\nexport interface TransferProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n items: readonly TransferItem[];\n value?: readonly string[];\n defaultValue?: readonly string[];\n onChange?: (keys: string[], info: TransferChangeInfo) => void;\n selectedKeys?: readonly string[];\n onSelectionChange?: (keys: string[]) => void;\n titles?: readonly [ReactNode, ReactNode];\n searchable?: boolean;\n filterOption?: (query: string, item: TransferItem) => boolean;\n renderItem?: (item: TransferItem) => ReactNode;\n disabled?: boolean;\n height?: number;\n virtual?: boolean;\n name?: string;\n form?: string;\n required?: boolean;\n oneWay?: boolean;\n}\nexport function Transfer(rawProps: TransferProps) {\n const {\n items,\n value,\n defaultValue = [],\n onChange,\n selectedKeys,\n onSelectionChange,\n titles,\n searchable = true,\n filterOption,\n renderItem,\n disabled: disabledProp,\n height = 180,\n virtual = false,\n name,\n form,\n required,\n oneWay = false,\n className,\n ...props\n } = useComponentProps('Transfer', rawProps);\n const { theme, density } = useLeafConfig();\n const field = useFormField();\n const disabled = disabledProp || field?.disabled;\n const t = useText();\n const id = useId();\n const trigger = useRef<HTMLButtonElement>(null);\n const root = useRef<HTMLDivElement>(null);\n const [current, setCurrent] = useFieldValue(value, defaultValue, trigger, form);\n const [internal, setInternal] = useState<readonly string[]>([]);\n const selected = selectedKeys ?? internal;\n const [queries, setQueries] = useState(['', '']);\n useListMotion(\n root,\n JSON.stringify([current, queries, items.map((item) => item.key)]),\n virtual ? '[data-no-transfer-motion]' : '.leaf-transfer__item[data-motion-key]',\n );\n const select = (keys: string[]) => {\n if (selectedKeys === undefined) setInternal(keys);\n onSelectionChange?.(keys);\n };\n const move = (direction: 'left' | 'right') => {\n const moved = items\n .filter(\n (item) =>\n !item.disabled &&\n selected.includes(item.key) &&\n current.includes(item.key) === (direction === 'left'),\n )\n .map((item) => item.key);\n if (!moved.length || disabled) return;\n const next =\n direction === 'right'\n ? [...current, ...moved]\n : current.filter((key) => !moved.includes(key));\n setCurrent(next);\n select(selected.filter((key) => !moved.includes(key)));\n onChange?.([...next], { direction, movedKeys: moved });\n };\n const panel = (side: 0 | 1) => {\n const query = queries[side] ?? '';\n const list = items.filter(\n (item) =>\n current.includes(item.key) === (side === 1) &&\n (filterOption\n ? filterOption(query, item)\n : `${item.searchLabel ?? (typeof item.label === 'string' ? item.label : item.key)} ${item.description ?? ''}`\n .toLocaleLowerCase()\n .includes(query.toLocaleLowerCase())),\n );\n const enabled = list.filter((item) => !item.disabled);\n const checked = enabled.filter((item) => selected.includes(item.key));\n const row = (item: TransferItem) => (\n <div\n className=\"leaf-transfer__item\"\n data-motion-key={item.key}\n data-selected={selected.includes(item.key) ? '' : undefined}\n >\n <Checkbox\n disabled={disabled || item.disabled}\n checked={selected.includes(item.key)}\n onChange={(event) =>\n select(\n event.target.checked\n ? [...new Set([...selected, item.key])]\n : selected.filter((key) => key !== item.key),\n )\n }\n >\n <span>\n {renderItem?.(item) ?? item.label}\n {item.description && <small>{item.description}</small>}\n </span>\n </Checkbox>\n </div>\n );\n return (\n <section className=\"leaf-transfer__panel\" aria-labelledby={`${id}-${side}`}>\n <header className=\"leaf-transfer__header\">\n <Checkbox\n aria-label={t('transfer.selectAllVisibleItems')}\n disabled={disabled || !enabled.length}\n checked={enabled.length > 0 && checked.length === enabled.length}\n indeterminate={checked.length > 0 && checked.length < enabled.length}\n onChange={(event) =>\n select(\n event.target.checked\n ? [...new Set([...selected, ...enabled.map((item) => item.key)])]\n : selected.filter((key) => !enabled.some((item) => item.key === key)),\n )\n }\n />\n <span id={`${id}-${side}`}>\n {titles?.[side] ?? (side === 0 ? t('transfer.available') : t('transfer.selected'))}\n </span>\n <small>\n {checked.length ? `${checked.length} / ` : ''}\n {list.length}\n </small>\n </header>\n {searchable && (\n <div className=\"leaf-transfer__search\">\n <InputControl\n size=\"sm\"\n allowClear\n prefix={<Search size={14} />}\n aria-label={\n side === 0 ? t('transfer.searchAvailableItems') : t('transfer.searchSelectedItems')\n }\n value={query}\n onChange={(event) =>\n setQueries((previous) =>\n previous.map((text, index) => (index === side ? event.target.value : text)),\n )\n }\n />\n </div>\n )}\n {virtual ? (\n <VirtualList\n items={list}\n itemKey={(item) => item.key}\n renderItem={row}\n height={height}\n estimateSize={(item) =>\n Math.max(estimateControlHeight(theme, density), item.description ? 42 : 0) + 6\n }\n emptyContent={<Result size=\"sm\" icon={null} title={t('transfer.noItems')} />}\n />\n ) : (\n <div className=\"leaf-transfer__list\" style={{ height }}>\n {list.length ? (\n list.map((item) => <div key={item.key}>{row(item)}</div>)\n ) : (\n <Result size=\"sm\" icon={null} title={t('transfer.noItems')} />\n )}\n </div>\n )}\n </section>\n );\n };\n return (\n <div\n {...props}\n ref={root}\n className={classes('leaf-transfer', className)}\n data-disabled={disabled ? '' : undefined}\n >\n <FieldScope>{panel(0)}</FieldScope>\n <div className=\"leaf-transfer__actions\">\n <ButtonControl\n ref={trigger}\n id={props.id ?? field?.id}\n size=\"sm\"\n startIcon={<ArrowRight size={16} />}\n aria-label={t('transfer.moveToSelected')}\n disabled={\n disabled ||\n !items.some(\n (item) =>\n !item.disabled && selected.includes(item.key) && !current.includes(item.key),\n )\n }\n onClick={() => move('right')}\n />\n {!oneWay && (\n <ButtonControl\n size=\"sm\"\n variant=\"outline\"\n startIcon={<ArrowLeft size={16} />}\n aria-label={t('transfer.moveToAvailable')}\n disabled={\n disabled ||\n !items.some(\n (item) =>\n !item.disabled && selected.includes(item.key) && current.includes(item.key),\n )\n }\n onClick={() => move('left')}\n />\n )}\n </div>\n <FieldScope>{panel(1)}</FieldScope>\n <FormValue\n name={name}\n form={form}\n value={current.length ? JSON.stringify(current) : ''}\n required={required ?? field?.required}\n disabled={disabled}\n triggerRef={trigger}\n />\n </div>\n );\n}\n"],"names":["Transfer","rawProps","items","value","defaultValue","onChange","selectedKeys","onSelectionChange","titles","searchable","filterOption","renderItem","disabledProp","height","virtual","name","form","required","oneWay","className","props","useComponentProps","theme","density","useLeafConfig","field","useFormField","disabled","t","useText","id","useId","trigger","useRef","root","current","setCurrent","useFieldValue","internal","setInternal","useState","selected","queries","setQueries","useListMotion","JSON","item","select","keys","undefined","move","direction","moved","next","key","panel","side","query","list","enabled","checked","row","Checkbox","event","Set","InputControl","Search","previous","text","index","VirtualList","Math","estimateControlHeight","Result","classes","FieldScope","ButtonControl","ArrowRight","ArrowLeft","FormValue"],"mappings":"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"}
1
+ {"version":3,"file":"transfer/transfer.js","sources":["../../../src/transfer/transfer.tsx"],"sourcesContent":["import { ArrowLeft, ArrowRight, Search } from 'lucide-react';\nimport { type HTMLAttributes, type ReactNode, useId, useRef, useState } from 'react';\nimport { ButtonControl } from '../button/button';\nimport { CheckboxControl as Checkbox } from '../checkbox/checkbox';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { estimateControlHeight } from '../density';\nimport { FieldScope, useFormField } from '../form/form';\nimport { InputControl } from '../input/input';\nimport { ResultControl as Result } from '../result/result';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nimport { FormValue, useFieldValue } from '../shared/field';\nimport { useListMotion } from '../shared/motion';\nimport { useText } from '../shared/use-text';\nimport { VirtualListControl as VirtualList } from '../virtuallist/virtuallist';\nexport interface TransferItem {\n key: string;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n searchLabel?: string;\n}\nexport interface TransferChangeInfo {\n direction: 'left' | 'right';\n movedKeys: string[];\n}\nexport interface TransferProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n items: readonly TransferItem[];\n value?: readonly string[];\n defaultValue?: readonly string[];\n onChange?: (keys: string[], info: TransferChangeInfo) => void;\n selectedKeys?: readonly string[];\n onSelectionChange?: (keys: string[]) => void;\n titles?: readonly [ReactNode, ReactNode];\n searchable?: boolean;\n filterOption?: (query: string, item: TransferItem) => boolean;\n renderItem?: (item: TransferItem) => ReactNode;\n disabled?: boolean;\n height?: number;\n virtual?: boolean;\n name?: string;\n form?: string;\n required?: boolean;\n oneWay?: boolean;\n}\nexport function Transfer(rawProps: TransferProps) {\n const {\n items,\n value,\n defaultValue = [],\n onChange,\n selectedKeys,\n onSelectionChange,\n titles,\n searchable = true,\n filterOption,\n renderItem,\n disabled: disabledProp,\n height = 180,\n virtual = false,\n name,\n form,\n required,\n oneWay = false,\n className,\n ...props\n } = useComponentProps('Transfer', rawProps);\n const { theme, density } = useLeafConfig();\n const field = useFormField();\n const disabled = disabledProp || field?.disabled;\n const t = useText();\n const id = useId();\n const trigger = useRef<HTMLButtonElement>(null);\n const root = useRef<HTMLDivElement>(null);\n const [current, setCurrent] = useFieldValue(value, defaultValue, trigger, form);\n const [internal, setInternal] = useState<readonly string[]>([]);\n const selected = selectedKeys ?? internal;\n const [queries, setQueries] = useState(['', '']);\n useListMotion(\n root,\n JSON.stringify([current, queries, items.map((item) => item.key)]),\n virtual ? '[data-no-transfer-motion]' : '.leaf-transfer__item[data-motion-key]',\n );\n const select = (keys: string[]) => {\n if (selectedKeys === undefined) setInternal(keys);\n onSelectionChange?.(keys);\n };\n const move = (direction: 'left' | 'right') => {\n const moved = items\n .filter(\n (item) =>\n !item.disabled &&\n selected.includes(item.key) &&\n current.includes(item.key) === (direction === 'left'),\n )\n .map((item) => item.key);\n if (!moved.length || disabled) return;\n const next =\n direction === 'right'\n ? [...current, ...moved]\n : current.filter((key) => !moved.includes(key));\n setCurrent(next);\n select(selected.filter((key) => !moved.includes(key)));\n onChange?.([...next], { direction, movedKeys: moved });\n };\n const panel = (side: 0 | 1) => {\n const query = queries[side] ?? '';\n const list = items.filter(\n (item) =>\n current.includes(item.key) === (side === 1) &&\n (filterOption\n ? filterOption(query, item)\n : `${item.searchLabel ?? (typeof item.label === 'string' ? item.label : item.key)} ${item.description ?? ''}`\n .toLocaleLowerCase()\n .includes(query.toLocaleLowerCase())),\n );\n const enabled = list.filter((item) => !item.disabled);\n const checked = enabled.filter((item) => selected.includes(item.key));\n const row = (item: TransferItem) => (\n <div\n className=\"leaf-transfer__item\"\n data-motion-key={item.key}\n data-selected={selected.includes(item.key) ? '' : undefined}\n >\n <Checkbox\n disabled={disabled || item.disabled}\n checked={selected.includes(item.key)}\n onChange={(event) =>\n select(\n event.target.checked\n ? [...new Set([...selected, item.key])]\n : selected.filter((key) => key !== item.key),\n )\n }\n >\n <span>\n {renderItem?.(item) ?? item.label}\n {item.description && <small>{item.description}</small>}\n </span>\n </Checkbox>\n </div>\n );\n return (\n <section className=\"leaf-transfer__panel\" aria-labelledby={`${id}-${side}`}>\n <header className=\"leaf-transfer__header\">\n <Checkbox\n aria-label={t('transfer.selectAllVisibleItems')}\n disabled={disabled || !enabled.length}\n checked={enabled.length > 0 && checked.length === enabled.length}\n indeterminate={checked.length > 0 && checked.length < enabled.length}\n onChange={(event) =>\n select(\n event.target.checked\n ? [...new Set([...selected, ...enabled.map((item) => item.key)])]\n : selected.filter((key) => !enabled.some((item) => item.key === key)),\n )\n }\n />\n <span id={`${id}-${side}`}>\n {titles?.[side] ?? (side === 0 ? t('transfer.available') : t('transfer.selected'))}\n </span>\n <small>\n {checked.length ? `${checked.length} / ` : ''}\n {list.length}\n </small>\n </header>\n {searchable && (\n <div className=\"leaf-transfer__search\">\n <InputControl\n size=\"sm\"\n allowClear\n prefix={<Search size={14} />}\n aria-label={\n side === 0 ? t('transfer.searchAvailableItems') : t('transfer.searchSelectedItems')\n }\n value={query}\n onChange={(event) =>\n setQueries((previous) =>\n previous.map((text, index) => (index === side ? event.target.value : text)),\n )\n }\n />\n </div>\n )}\n {virtual ? (\n <VirtualList\n items={list}\n itemKey={(item) => item.key}\n renderItem={row}\n height={height}\n estimateSize={(item) =>\n Math.max(estimateControlHeight(theme, density), item.description ? 42 : 0) + 6\n }\n emptyContent={<Result size=\"sm\" icon={null} title={t('transfer.noItems')} />}\n />\n ) : (\n <ScrollbarControl\n viewportClassName=\"leaf-transfer__list\"\n height={height}\n role=\"presentation\"\n >\n {list.length ? (\n list.map((item) => <div key={item.key}>{row(item)}</div>)\n ) : (\n <Result size=\"sm\" icon={null} title={t('transfer.noItems')} />\n )}\n </ScrollbarControl>\n )}\n </section>\n );\n };\n return (\n <div\n {...props}\n ref={root}\n className={classes('leaf-transfer', className)}\n data-disabled={disabled ? '' : undefined}\n >\n <FieldScope>{panel(0)}</FieldScope>\n <div className=\"leaf-transfer__actions\">\n <ButtonControl\n ref={trigger}\n id={props.id ?? field?.id}\n size=\"sm\"\n startIcon={<ArrowRight size={16} />}\n aria-label={t('transfer.moveToSelected')}\n disabled={\n disabled ||\n !items.some(\n (item) =>\n !item.disabled && selected.includes(item.key) && !current.includes(item.key),\n )\n }\n onClick={() => move('right')}\n />\n {!oneWay && (\n <ButtonControl\n size=\"sm\"\n variant=\"outline\"\n startIcon={<ArrowLeft size={16} />}\n aria-label={t('transfer.moveToAvailable')}\n disabled={\n disabled ||\n !items.some(\n (item) =>\n !item.disabled && selected.includes(item.key) && current.includes(item.key),\n )\n }\n onClick={() => move('left')}\n />\n )}\n </div>\n <FieldScope>{panel(1)}</FieldScope>\n <FormValue\n name={name}\n form={form}\n value={current.length ? JSON.stringify(current) : ''}\n required={required ?? field?.required}\n disabled={disabled}\n triggerRef={trigger}\n />\n </div>\n );\n}\n"],"names":["Transfer","rawProps","items","value","defaultValue","onChange","selectedKeys","onSelectionChange","titles","searchable","filterOption","renderItem","disabledProp","height","virtual","name","form","required","oneWay","className","props","useComponentProps","theme","density","useLeafConfig","field","useFormField","disabled","t","useText","id","useId","trigger","useRef","root","current","setCurrent","useFieldValue","internal","setInternal","useState","selected","queries","setQueries","useListMotion","JSON","item","select","keys","undefined","move","direction","moved","next","key","panel","side","query","list","enabled","checked","row","Checkbox","event","Set","InputControl","Search","previous","text","index","VirtualList","Math","estimateControlHeight","Result","ScrollbarControl","classes","FieldScope","ButtonControl","ArrowRight","ArrowLeft","FormValue"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/tree/tree.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAYf,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,SAAS,QAAQ,EAAE,CAAC;CACpC;AACD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,SAAS,QAAQ,EAAE,CAAC;IAClC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AACD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxC,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB;AACD,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC5F,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxD,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5D,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IACjF,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,SAAS,CAAC;IAC3C,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,QAAQ,EAAE,KAAK,IAAI,CAAC;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC;IACpD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;IAC1D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CACvC;AACD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EAAE,YAAY,EAClB,YAAY,EACZ,mBAAwB,EACxB,QAAQ,EACR,QAAgB,EAChB,UAAiB,EACjB,SAAiB,EACjB,YAAoB,EACpB,aAAqB,EACrB,aAAqB,EACrB,WAAW,EACX,kBAAuB,EACvB,OAAO,EACP,YAAY,EACZ,mBAAwB,EACxB,gBAAwB,EACxB,QAAQ,EACR,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,WAAgB,EAChB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,MAAM,EACN,WAAW,EACX,OAAe,EACf,MAAY,EACZ,UAAU,EAAE,cAAc,EAC1B,SAAiB,EACjB,SAAS,EACT,MAAM,EACN,SAAS,EACT,YAAY,EAAE,KAAK,EACnB,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,+BAibjE;AAgDD,wBAAgB,IAAI,CAAC,QAAQ,EAAE,SAAS,+BAGvC"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../src/tree/tree.tsx"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { useComponentProps } from "../config-provider/component-defaults.js";
8
8
  import { useLeafConfig } from "../config-provider/context.js";
9
9
  import { estimateControlHeight } from "../density.js";
10
10
  import { ResultControl } from "../result/result.js";
11
+ import { ScrollbarControl } from "../scrollbar/scrollbar.js";
11
12
  import { classes } from "../shared/classes.js";
12
13
  import { inertProps } from "../shared/inert.js";
13
14
  import { useFormattedText } from "../shared/use-formatted-text.js";
@@ -363,20 +364,26 @@ function TreeControl({ data: suppliedData, selectedKeys, defaultSelectedKeys = [
363
364
  const siblings = nodes.filter((node)=>!matches || matches.visible.has(node.key));
364
365
  return siblings.map((node, index)=>renderNode(node, level, index, siblings.length));
365
366
  };
366
- const content = /*#__PURE__*/ jsx("div", {
367
- ...props,
367
+ const content = /*#__PURE__*/ jsx(ScrollbarControl, {
368
368
  ref: root,
369
+ viewportProps: {
370
+ ...props,
371
+ 'aria-multiselectable': multiple || checkable || void 0,
372
+ 'aria-disabled': disabled || void 0
373
+ },
369
374
  style: {
370
375
  ...virtual ? {
371
- height,
372
- overflow: 'auto'
376
+ height
373
377
  } : {},
374
378
  ...props.style
375
379
  },
380
+ viewportStyle: {
381
+ position: 'relative'
382
+ },
376
383
  role: "tree",
377
384
  "aria-label": label ?? messages.tree.label,
378
- "aria-multiselectable": multiple || checkable || void 0,
379
- "aria-disabled": disabled || void 0,
385
+ tabIndex: -1,
386
+ scrollbarTabIndex: -1,
380
387
  className: classes('leaf-tree', showLine && 'leaf-tree--lines', className),
381
388
  children: visible.length ? virtual ? /*#__PURE__*/ jsx("div", {
382
389
  style: {