@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":"tabs/tabs.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/tabs/tabs.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Ellipsis, GripVertical, Plus, X } from 'lucide-react';\nimport {\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { ButtonControl } from '../button/button';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { DropdownControl as Dropdown } from '../dropdown/dropdown';\nimport { classes } from '../shared/classes';\nimport { useMotionEnabled } from '../shared/motion';\nimport type { ControlSize } from '../shared/types';\nimport { useDragAnnouncements } from '../shared/use-drag-announcements';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { useText } from '../shared/use-text';\nimport { useMovingIndicator } from './use-moving-indicator';\n\nexport interface TabItem {\n key: string;\n label: ReactNode;\n children: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n closable?: boolean;\n}\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n items: readonly TabItem[];\n activeKey?: string;\n defaultActiveKey?: string;\n onChange?: (key: string) => void;\n type?: 'line' | 'card';\n placement?: 'top' | 'bottom' | 'left' | 'right';\n size?: ControlSize;\n activationMode?: 'automatic' | 'manual';\n destroyInactive?: boolean;\n extra?: ReactNode;\n onClose?: (key: string, event: MouseEvent<HTMLButtonElement>) => void;\n onAdd?: () => void;\n addLabel?: string;\n overflow?: boolean;\n sortable?: boolean;\n onReorder?: (items: TabItem[]) => void;\n}\nexport function TabsControl({\n items,\n activeKey,\n defaultActiveKey,\n onChange,\n type = 'line',\n placement = 'top',\n size = 'md',\n activationMode = 'automatic',\n destroyInactive = false,\n extra,\n onClose,\n onAdd,\n addLabel,\n overflow = true,\n sortable = false,\n onReorder,\n className,\n 'aria-label': label,\n ...props\n}: TabsProps) {\n const { direction } = useLeafConfig();\n const t = useText();\n const format = useFormattedText();\n const enabled = items.filter((item) => !item.disabled);\n const [internal, setInternal] = useState(defaultActiveKey ?? enabled[0]?.key);\n const requested = activeKey ?? internal;\n const selected = enabled.find((item) => item.key === requested)?.key ?? enabled[0]?.key;\n const [focused, setFocused] = useState<string>();\n const focusKey = enabled.some((item) => item.key === focused) ? focused : selected;\n const [visited, setVisited] = useState<readonly string[]>(selected ? [selected] : []);\n if (selected && !visited.includes(selected)) setVisited([...visited, selected]);\n const id = useId();\n const list = useRef<HTMLDivElement>(null);\n const track = useRef<HTMLDivElement>(null);\n const indicator = useRef<HTMLSpanElement>(null);\n useMovingIndicator(\n track,\n indicator,\n '[data-leaf-indicator-item][data-active=\"true\"]',\n `${selected}-${placement}-${type}-${direction}`,\n items.length > 0,\n );\n const header = useRef<HTMLDivElement>(null);\n const [overflowKeys, setOverflowKeys] = useState<string[]>([]);\n const sorting = sortable && Boolean(onReorder);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Observe the new tab elements after the item list changes.\n useEffect(() => {\n const node = list.current;\n const container = header.current;\n if (!overflow || !node || !container) {\n setOverflowKeys([]);\n return;\n }\n const measure = () => {\n const horizontal = placement === 'top' || placement === 'bottom';\n const entries = Array.from(node.querySelectorAll<HTMLElement>('[data-tab-key]'));\n const more = container.querySelector<HTMLElement>('[data-tabs-more]');\n const fullSize =\n (horizontal ? node.clientWidth : node.clientHeight) +\n (more\n ? (horizontal ? more.offsetWidth : more.offsetHeight) +\n (Number.parseFloat(getComputedStyle(container)[horizontal ? 'columnGap' : 'rowGap']) ||\n 0)\n : 0);\n const total = horizontal ? node.scrollWidth : node.scrollHeight;\n const rect = node.getBoundingClientRect();\n const keys =\n total <= fullSize + 1\n ? []\n : entries\n .filter((entry) => {\n const item = entry.getBoundingClientRect();\n return horizontal\n ? item.left < rect.left - 1 || item.right > rect.right + 1\n : item.top < rect.top - 1 || item.bottom > rect.bottom + 1;\n })\n .map((entry) => entry.dataset.tabKey ?? '');\n setOverflowKeys((previous) =>\n previous.length === keys.length && previous.every((key, index) => key === keys[index])\n ? previous\n : keys,\n );\n };\n measure();\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measure);\n observer?.observe(node);\n observer?.observe(container);\n for (const entry of node.children) observer?.observe(entry);\n node.addEventListener('scroll', measure, { passive: true });\n window.addEventListener('resize', measure);\n return () => {\n observer?.disconnect();\n node.removeEventListener('scroll', measure);\n window.removeEventListener('resize', measure);\n };\n }, [overflow, placement, items]);\n const choose = (key: string) => {\n if (!enabled.some((item) => item.key === key)) return;\n if (activeKey === undefined) setInternal(key);\n if (key !== selected) onChange?.(key);\n };\n if (items.length === 0) return null;\n return (\n <div\n {...props}\n className={classes(\n 'leaf-tabs',\n `leaf-tabs--${type}`,\n `leaf-tabs--${placement}`,\n `leaf-tabs--${size}`,\n className,\n )}\n >\n <TabDragScope enabled={sorting} items={items} onReorder={onReorder}>\n <div className=\"leaf-tabs__header\" ref={header}>\n <div\n ref={list}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setFocused(undefined);\n }}\n role=\"tablist\"\n aria-label={label}\n aria-orientation={\n placement === 'left' || placement === 'right' ? 'vertical' : 'horizontal'\n }\n className=\"leaf-tabs__list\"\n >\n <div ref={track} className=\"leaf-tabs__track\">\n <span ref={indicator} className=\"leaf-tabs__indicator\" aria-hidden=\"true\" />\n <SortableContext\n items={items.map((item) => item.key)}\n strategy={\n placement === 'top' || placement === 'bottom'\n ? horizontalListSortingStrategy\n : verticalListSortingStrategy\n }\n >\n {items.map((item, index) => (\n <TabEntry\n item={item}\n sortable={sorting}\n className=\"leaf-tabs__entry\"\n key={item.key}\n data-active={item.key === selected || undefined}\n data-leaf-indicator-item=\"\"\n >\n <button\n id={`${id}-tab-${index}`}\n type=\"button\"\n role=\"tab\"\n aria-selected={item.key === selected}\n aria-controls={`${id}-panel-${index}`}\n disabled={item.disabled}\n tabIndex={item.key === focusKey ? 0 : -1}\n className=\"leaf-tabs__tab\"\n onFocus={() => setFocused(item.key)}\n onClick={() => choose(item.key)}\n onKeyDown={(event) => {\n let next: string | undefined;\n const position = enabled.findIndex((entry) => entry.key === item.key);\n const forward =\n placement === 'left' || placement === 'right'\n ? 'ArrowDown'\n : direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight';\n const backward =\n placement === 'left' || placement === 'right'\n ? 'ArrowUp'\n : direction === 'rtl'\n ? 'ArrowRight'\n : 'ArrowLeft';\n if (event.key === forward)\n next = enabled[(position + 1) % enabled.length]?.key;\n else if (event.key === backward)\n next = enabled[(position - 1 + enabled.length) % enabled.length]?.key;\n else if (event.key === 'Home') next = enabled[0]?.key;\n else if (event.key === 'End') next = enabled.at(-1)?.key;\n if (next !== undefined) {\n event.preventDefault();\n setFocused(next);\n const nextIndex = items.findIndex((entry) => entry.key === next);\n list.current\n ?.querySelector<HTMLButtonElement>(`[id='${id}-tab-${nextIndex}']`)\n ?.focus();\n if (activationMode === 'automatic') choose(next);\n }\n }}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </button>\n {item.closable && (\n <button\n type=\"button\"\n className=\"leaf-tabs__close\"\n disabled={item.disabled || !onClose}\n aria-label={format('tabs.closeLabel', {\n label: typeof item.label === 'string' ? item.label : item.key,\n })}\n onClick={(event) => {\n onClose?.(item.key, event);\n if (event.defaultPrevented) return;\n const position = enabled.findIndex((entry) => entry.key === item.key);\n const next =\n item.key === selected\n ? (enabled[position + 1] ?? enabled[position - 1])\n : enabled.find((entry) => entry.key === selected);\n if (next) {\n if (item.key === selected) choose(next.key);\n const nextIndex = items.findIndex((entry) => entry.key === next.key);\n list.current\n ?.querySelector<HTMLButtonElement>(`[id='${id}-tab-${nextIndex}']`)\n ?.focus();\n }\n }}\n >\n <X size={13} aria-hidden=\"true\" />\n </button>\n )}\n </TabEntry>\n ))}\n </SortableContext>\n </div>\n </div>\n {overflowKeys.length > 0 && (\n <Dropdown\n items={items\n .filter((item) => overflowKeys.includes(item.key))\n .map((item) => ({\n key: item.key,\n label: item.label,\n disabled: item.disabled,\n onClick: () => {\n choose(item.key);\n requestAnimationFrame(() => {\n const target = document.getElementById(`${id}-tab-${items.indexOf(item)}`);\n target?.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });\n target?.focus();\n });\n },\n }))}\n >\n <ButtonControl\n className=\"leaf-tabs__action\"\n data-tabs-more=\"\"\n variant=\"ghost\"\n size={size}\n startIcon={<Ellipsis size={16} />}\n aria-label={t('tabs.moreTabs')}\n />\n </Dropdown>\n )}\n {onAdd && (\n <ButtonControl\n className=\"leaf-tabs__action\"\n variant=\"ghost\"\n size={size}\n startIcon={<Plus size={16} />}\n aria-label={addLabel ?? t('tabs.addTab')}\n onClick={onAdd}\n />\n )}\n {extra && <div className=\"leaf-tabs__extra\">{extra}</div>}\n </div>\n </TabDragScope>\n <div className=\"leaf-tabs__panels\">\n {items.map((item, index) => (\n <div\n key={item.key}\n id={`${id}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`${id}-tab-${index}`}\n hidden={item.key !== selected}\n // biome-ignore lint/a11y/noNoninteractiveTabindex: Tabpanels are keyboard focus destinations in the ARIA tabs pattern.\n tabIndex={0}\n className=\"leaf-tabs__panel\"\n >\n {(item.key === selected || (!destroyInactive && visited.includes(item.key))) &&\n item.children}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nfunction TabEntry({\n item,\n sortable,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { item: TabItem; sortable: boolean }) {\n return sortable ? (\n <SortableTab item={item} {...props} />\n ) : (\n <div {...props} data-tab-key={item.key} />\n );\n}\nfunction SortableTab({\n item,\n children,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { item: TabItem }) {\n const format = useFormattedText();\n const motion = useMotionEnabled();\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: item.key, disabled: item.disabled });\n return (\n <div\n {...props}\n ref={setNodeRef}\n data-tab-key={item.key}\n data-dragging={isDragging || undefined}\n style={{\n ...props.style,\n transform: CSS.Transform.toString(transform),\n transition:\n motion && transition\n ? 'transform var(--leaf-motion-slow) var(--leaf-motion-easing)'\n : undefined,\n }}\n >\n <button\n type=\"button\"\n {...attributes}\n {...listeners}\n ref={setActivatorNodeRef}\n disabled={item.disabled}\n className=\"leaf-tabs__drag\"\n aria-label={format('tabs.reorder', {\n label: typeof item.label === 'string' ? item.label : item.key,\n })}\n >\n <GripVertical size={13} aria-hidden=\"true\" />\n </button>\n {children}\n </div>\n );\n}\n\nfunction TabDragScope({\n enabled,\n items,\n onReorder,\n children,\n}: {\n enabled: boolean;\n items: readonly TabItem[];\n onReorder?: (items: TabItem[]) => void;\n children: ReactNode;\n}) {\n return enabled ? (\n <TabSortScope items={items} onReorder={onReorder}>\n {children}\n </TabSortScope>\n ) : (\n children\n );\n}\nfunction TabSortScope({\n items,\n onReorder,\n children,\n}: {\n items: readonly TabItem[];\n onReorder?: (items: TabItem[]) => void;\n children: ReactNode;\n}) {\n const id = useId();\n const accessibility = useDragAnnouncements((key) => {\n const item = items.find((entry) => entry.key === key);\n return typeof item?.label === 'string' ? item.label : String(key);\n });\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n );\n return (\n <DndContext\n id={id}\n sensors={sensors}\n collisionDetection={closestCenter}\n accessibility={accessibility}\n onDragEnd={({ active, over }) => {\n if (!over || active.id === over.id) return;\n const from = items.findIndex((item) => item.key === active.id);\n const to = items.findIndex((item) => item.key === over.id);\n if (from >= 0 && to >= 0 && !items[to]?.disabled)\n onReorder?.(arrayMove([...items], from, to));\n }}\n >\n {children}\n </DndContext>\n );\n}\n\nexport function Tabs(rawProps: TabsProps) {\n const props = useComponentProps('Tabs', rawProps);\n return <TabsControl {...props} />;\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","TabsControl","items","activeKey","defaultActiveKey","onChange","type","placement","size","activationMode","destroyInactive","extra","onClose","onAdd","addLabel","overflow","sortable","onReorder","className","label","props","direction","useLeafConfig","t","useText","format","useFormattedText","enabled","item","internal","setInternal","useState","requested","selected","focused","setFocused","focusKey","visited","setVisited","id","useId","list","useRef","track","indicator","useMovingIndicator","header","overflowKeys","setOverflowKeys","sorting","Boolean","useEffect","node","container","measure","horizontal","entries","Array","more","fullSize","Number","getComputedStyle","total","rect","keys","entry","previous","index","observer","ResizeObserver","window","choose","undefined","classes","TabDragScope","event","SortableContext","horizontalListSortingStrategy","verticalListSortingStrategy","TabEntry","next","position","forward","backward","nextIndex","X","Dropdown","requestAnimationFrame","target","document","ButtonControl","Ellipsis","Plus","SortableTab","children","motion","useMotionEnabled","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","useSortable","CSS","GripVertical","TabSortScope","accessibility","useDragAnnouncements","String","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","active","over","from","to","arrayMove","Tabs","rawProps","useComponentProps"],"mappings":"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"}
1
+ {"version":3,"file":"tabs/tabs.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/tabs/tabs.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n closestCenter,\n DndContext,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n horizontalListSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { Ellipsis, GripVertical, Plus, X } from 'lucide-react';\nimport {\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from 'react';\nimport { ButtonControl } from '../button/button';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useLeafConfig } from '../config-provider/context';\nimport { DropdownControl as Dropdown } from '../dropdown/dropdown';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nimport { useMotionEnabled } from '../shared/motion';\nimport type { ControlSize } from '../shared/types';\nimport { useDragAnnouncements } from '../shared/use-drag-announcements';\nimport { useFormattedText } from '../shared/use-formatted-text';\nimport { useText } from '../shared/use-text';\nimport { useMovingIndicator } from './use-moving-indicator';\n\nexport interface TabItem {\n key: string;\n label: ReactNode;\n children?: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n closable?: boolean;\n}\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n items: readonly TabItem[];\n activeKey?: string;\n defaultActiveKey?: string;\n onChange?: (key: string) => void;\n type?: 'line' | 'card';\n placement?: 'top' | 'bottom' | 'left' | 'right';\n size?: ControlSize;\n /** Fill the available width with equally sized tabs. */\n block?: boolean;\n activationMode?: 'automatic' | 'manual';\n destroyInactive?: boolean;\n extra?: ReactNode;\n onClose?: (key: string, event: MouseEvent<HTMLButtonElement>) => void;\n onAdd?: () => void;\n addLabel?: string;\n overflow?: boolean;\n sortable?: boolean;\n onReorder?: (items: TabItem[]) => void;\n}\nexport function TabsControl({\n items,\n activeKey,\n defaultActiveKey,\n onChange,\n type = 'line',\n placement = 'top',\n size = 'md',\n block = false,\n activationMode = 'automatic',\n destroyInactive = false,\n extra,\n onClose,\n onAdd,\n addLabel,\n overflow = true,\n sortable = false,\n onReorder,\n className,\n 'aria-label': label,\n ...props\n}: TabsProps) {\n const { direction } = useLeafConfig();\n const t = useText();\n const format = useFormattedText();\n const enabled = items.filter((item) => !item.disabled);\n const [internal, setInternal] = useState(defaultActiveKey ?? enabled[0]?.key);\n const requested = activeKey ?? internal;\n const selected = enabled.find((item) => item.key === requested)?.key ?? enabled[0]?.key;\n const [focused, setFocused] = useState<string>();\n const focusKey = enabled.some((item) => item.key === focused) ? focused : selected;\n const [visited, setVisited] = useState<readonly string[]>(selected ? [selected] : []);\n if (selected && !visited.includes(selected)) setVisited([...visited, selected]);\n const id = useId();\n const list = useRef<HTMLDivElement>(null);\n const track = useRef<HTMLDivElement>(null);\n const indicator = useRef<HTMLSpanElement>(null);\n useMovingIndicator(\n track,\n indicator,\n '[data-leaf-indicator-item][data-active=\"true\"]',\n `${selected}-${placement}-${type}-${direction}`,\n items.length > 0,\n );\n const header = useRef<HTMLDivElement>(null);\n const [overflowKeys, setOverflowKeys] = useState<string[]>([]);\n const sorting = sortable && Boolean(onReorder);\n // biome-ignore lint/correctness/useExhaustiveDependencies: Observe the new tab elements after the item list changes.\n useEffect(() => {\n const node = list.current;\n const container = header.current;\n if (!overflow || !node || !container) {\n setOverflowKeys([]);\n return;\n }\n const measure = () => {\n const horizontal = placement === 'top' || placement === 'bottom';\n const entries = Array.from(node.querySelectorAll<HTMLElement>('[data-tab-key]'));\n const more = container.querySelector<HTMLElement>('[data-tabs-more]');\n const fullSize =\n (horizontal ? node.clientWidth : node.clientHeight) +\n (more\n ? (horizontal ? more.offsetWidth : more.offsetHeight) +\n (Number.parseFloat(getComputedStyle(container)[horizontal ? 'columnGap' : 'rowGap']) ||\n 0)\n : 0);\n const total = horizontal ? node.scrollWidth : node.scrollHeight;\n const rect = node.getBoundingClientRect();\n const keys =\n total <= fullSize + 1\n ? []\n : entries\n .filter((entry) => {\n const item = entry.getBoundingClientRect();\n return horizontal\n ? item.left < rect.left - 1 || item.right > rect.right + 1\n : item.top < rect.top - 1 || item.bottom > rect.bottom + 1;\n })\n .map((entry) => entry.dataset.tabKey ?? '');\n setOverflowKeys((previous) =>\n previous.length === keys.length && previous.every((key, index) => key === keys[index])\n ? previous\n : keys,\n );\n };\n measure();\n const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(measure);\n observer?.observe(node);\n observer?.observe(container);\n for (const entry of node.children) observer?.observe(entry);\n node.addEventListener('scroll', measure, { passive: true });\n window.addEventListener('resize', measure);\n return () => {\n observer?.disconnect();\n node.removeEventListener('scroll', measure);\n window.removeEventListener('resize', measure);\n };\n }, [overflow, placement, items]);\n const choose = (key: string) => {\n if (!enabled.some((item) => item.key === key)) return;\n if (activeKey === undefined) setInternal(key);\n if (key !== selected) onChange?.(key);\n };\n if (items.length === 0) return null;\n return (\n <div\n {...props}\n className={classes(\n 'leaf-tabs',\n `leaf-tabs--${type}`,\n `leaf-tabs--${placement}`,\n `leaf-tabs--${size}`,\n block && 'leaf-tabs--block',\n className,\n )}\n >\n <TabDragScope enabled={sorting} items={items} onReorder={onReorder}>\n <div className=\"leaf-tabs__header\" ref={header}>\n <ScrollbarControl\n ref={list}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setFocused(undefined);\n }}\n role=\"tablist\"\n aria-label={label}\n viewportProps={{\n 'aria-orientation':\n placement === 'left' || placement === 'right' ? 'vertical' : 'horizontal',\n }}\n className=\"leaf-tabs__scroll\"\n viewportClassName=\"leaf-tabs__list\"\n tabIndex={-1}\n scrollbarTabIndex={-1}\n >\n <div ref={track} className=\"leaf-tabs__track\">\n <span ref={indicator} className=\"leaf-tabs__indicator\" aria-hidden=\"true\" />\n <SortableContext\n items={items.map((item) => item.key)}\n strategy={\n placement === 'top' || placement === 'bottom'\n ? horizontalListSortingStrategy\n : verticalListSortingStrategy\n }\n >\n {items.map((item, index) => (\n <TabEntry\n item={item}\n sortable={sorting}\n className=\"leaf-tabs__entry\"\n key={item.key}\n data-active={item.key === selected || undefined}\n data-leaf-indicator-item=\"\"\n >\n <button\n id={`${id}-tab-${index}`}\n type=\"button\"\n role=\"tab\"\n aria-selected={item.key === selected}\n aria-controls={item.children != null ? `${id}-panel-${index}` : undefined}\n disabled={item.disabled}\n tabIndex={item.key === focusKey ? 0 : -1}\n className=\"leaf-tabs__tab\"\n onFocus={() => setFocused(item.key)}\n onClick={() => choose(item.key)}\n onKeyDown={(event) => {\n let next: string | undefined;\n const position = enabled.findIndex((entry) => entry.key === item.key);\n const forward =\n placement === 'left' || placement === 'right'\n ? 'ArrowDown'\n : direction === 'rtl'\n ? 'ArrowLeft'\n : 'ArrowRight';\n const backward =\n placement === 'left' || placement === 'right'\n ? 'ArrowUp'\n : direction === 'rtl'\n ? 'ArrowRight'\n : 'ArrowLeft';\n if (event.key === forward)\n next = enabled[(position + 1) % enabled.length]?.key;\n else if (event.key === backward)\n next = enabled[(position - 1 + enabled.length) % enabled.length]?.key;\n else if (event.key === 'Home') next = enabled[0]?.key;\n else if (event.key === 'End') next = enabled.at(-1)?.key;\n if (next !== undefined) {\n event.preventDefault();\n setFocused(next);\n const nextIndex = items.findIndex((entry) => entry.key === next);\n list.current\n ?.querySelector<HTMLButtonElement>(`[id='${id}-tab-${nextIndex}']`)\n ?.focus();\n if (activationMode === 'automatic') choose(next);\n }\n }}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {item.label}\n </button>\n {item.closable && (\n <button\n type=\"button\"\n className=\"leaf-tabs__close\"\n disabled={item.disabled || !onClose}\n aria-label={format('tabs.closeLabel', {\n label: typeof item.label === 'string' ? item.label : item.key,\n })}\n onClick={(event) => {\n onClose?.(item.key, event);\n if (event.defaultPrevented) return;\n const position = enabled.findIndex((entry) => entry.key === item.key);\n const next =\n item.key === selected\n ? (enabled[position + 1] ?? enabled[position - 1])\n : enabled.find((entry) => entry.key === selected);\n if (next) {\n if (item.key === selected) choose(next.key);\n const nextIndex = items.findIndex((entry) => entry.key === next.key);\n list.current\n ?.querySelector<HTMLButtonElement>(`[id='${id}-tab-${nextIndex}']`)\n ?.focus();\n }\n }}\n >\n <X size={13} aria-hidden=\"true\" />\n </button>\n )}\n </TabEntry>\n ))}\n </SortableContext>\n </div>\n </ScrollbarControl>\n {overflowKeys.length > 0 && (\n <Dropdown\n items={items\n .filter((item) => overflowKeys.includes(item.key))\n .map((item) => ({\n key: item.key,\n label: item.label,\n disabled: item.disabled,\n onClick: () => {\n choose(item.key);\n requestAnimationFrame(() => {\n const target = document.getElementById(`${id}-tab-${items.indexOf(item)}`);\n target?.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });\n target?.focus();\n });\n },\n }))}\n >\n <ButtonControl\n className=\"leaf-tabs__action\"\n data-tabs-more=\"\"\n variant=\"ghost\"\n size={size}\n startIcon={<Ellipsis size={16} />}\n aria-label={t('tabs.moreTabs')}\n />\n </Dropdown>\n )}\n {onAdd && (\n <ButtonControl\n className=\"leaf-tabs__action\"\n variant=\"ghost\"\n size={size}\n startIcon={<Plus size={16} />}\n aria-label={addLabel ?? t('tabs.addTab')}\n onClick={onAdd}\n />\n )}\n {extra && <div className=\"leaf-tabs__extra\">{extra}</div>}\n </div>\n </TabDragScope>\n {items.some((item) => item.children != null) && (\n <div className=\"leaf-tabs__panels\">\n {items.map(\n (item, index) =>\n item.children != null && (\n <div\n key={item.key}\n id={`${id}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`${id}-tab-${index}`}\n hidden={item.key !== selected}\n // biome-ignore lint/a11y/noNoninteractiveTabindex: Tabpanels are keyboard focus destinations in the ARIA tabs pattern.\n tabIndex={0}\n className=\"leaf-tabs__panel\"\n >\n {(item.key === selected || (!destroyInactive && visited.includes(item.key))) &&\n item.children}\n </div>\n ),\n )}\n </div>\n )}\n </div>\n );\n}\n\nfunction TabEntry({\n item,\n sortable,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { item: TabItem; sortable: boolean }) {\n return sortable ? (\n <SortableTab item={item} {...props} />\n ) : (\n <div {...props} data-tab-key={item.key} />\n );\n}\nfunction SortableTab({\n item,\n children,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { item: TabItem }) {\n const format = useFormattedText();\n const motion = useMotionEnabled();\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id: item.key, disabled: item.disabled });\n return (\n <div\n {...props}\n ref={setNodeRef}\n data-tab-key={item.key}\n data-dragging={isDragging || undefined}\n style={{\n ...props.style,\n transform: CSS.Transform.toString(transform),\n transition:\n motion && transition\n ? 'transform var(--leaf-motion-slow) var(--leaf-motion-easing)'\n : undefined,\n }}\n >\n <button\n type=\"button\"\n {...attributes}\n {...listeners}\n ref={setActivatorNodeRef}\n disabled={item.disabled}\n className=\"leaf-tabs__drag\"\n aria-label={format('tabs.reorder', {\n label: typeof item.label === 'string' ? item.label : item.key,\n })}\n >\n <GripVertical size={13} aria-hidden=\"true\" />\n </button>\n {children}\n </div>\n );\n}\n\nfunction TabDragScope({\n enabled,\n items,\n onReorder,\n children,\n}: {\n enabled: boolean;\n items: readonly TabItem[];\n onReorder?: (items: TabItem[]) => void;\n children: ReactNode;\n}) {\n return enabled ? (\n <TabSortScope items={items} onReorder={onReorder}>\n {children}\n </TabSortScope>\n ) : (\n children\n );\n}\nfunction TabSortScope({\n items,\n onReorder,\n children,\n}: {\n items: readonly TabItem[];\n onReorder?: (items: TabItem[]) => void;\n children: ReactNode;\n}) {\n const id = useId();\n const accessibility = useDragAnnouncements((key) => {\n const item = items.find((entry) => entry.key === key);\n return typeof item?.label === 'string' ? item.label : String(key);\n });\n const sensors = useSensors(\n useSensor(PointerSensor, { activationConstraint: { distance: 6 } }),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }),\n );\n return (\n <DndContext\n id={id}\n sensors={sensors}\n collisionDetection={closestCenter}\n accessibility={accessibility}\n onDragEnd={({ active, over }) => {\n if (!over || active.id === over.id) return;\n const from = items.findIndex((item) => item.key === active.id);\n const to = items.findIndex((item) => item.key === over.id);\n if (from >= 0 && to >= 0 && !items[to]?.disabled)\n onReorder?.(arrayMove([...items], from, to));\n }}\n >\n {children}\n </DndContext>\n );\n}\n\nexport function Tabs(rawProps: TabsProps) {\n const props = useComponentProps('Tabs', rawProps);\n return <TabsControl {...props} />;\n}\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","TabsControl","items","activeKey","defaultActiveKey","onChange","type","placement","size","block","activationMode","destroyInactive","extra","onClose","onAdd","addLabel","overflow","sortable","onReorder","className","label","props","direction","useLeafConfig","t","useText","format","useFormattedText","enabled","item","internal","setInternal","useState","requested","selected","focused","setFocused","focusKey","visited","setVisited","id","useId","list","useRef","track","indicator","useMovingIndicator","header","overflowKeys","setOverflowKeys","sorting","Boolean","useEffect","node","container","measure","horizontal","entries","Array","more","fullSize","Number","getComputedStyle","total","rect","keys","entry","previous","index","observer","ResizeObserver","window","choose","undefined","classes","TabDragScope","ScrollbarControl","event","SortableContext","horizontalListSortingStrategy","verticalListSortingStrategy","TabEntry","next","position","forward","backward","nextIndex","X","Dropdown","requestAnimationFrame","target","document","ButtonControl","Ellipsis","Plus","SortableTab","children","motion","useMotionEnabled","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","isDragging","useSortable","CSS","GripVertical","TabSortScope","accessibility","useDragAnnouncements","String","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","DndContext","closestCenter","active","over","from","to","arrayMove","Tabs","rawProps","useComponentProps"],"mappings":"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"}
@@ -52,7 +52,7 @@ const leafTailwindTokens = {
52
52
  'leaf-border-hover': 'var(--leaf-color-border-hover)',
53
53
  'leaf-divider': 'var(--leaf-color-divider)',
54
54
  'leaf-option-hover': 'var(--leaf-color-option-hover)',
55
- 'leaf-focus': 'var(--leaf-color-focus, var(--leaf-color-primary-alpha-42))'
55
+ 'leaf-focus': 'var(--leaf-color-focus, var(--leaf-color-primary-focus, var(--leaf-color-primary-alpha-42)))'
56
56
  },
57
57
  borderRadius: {
58
58
  leaf: 'var(--leaf-radius)',
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind-tokens.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../src/tailwind-tokens.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/** Shared by the Tailwind 3 preset and the generated Tailwind 4 CSS theme. */\nexport const leafTailwindTokens = {\n colors: {\n 'leaf-primary': 'var(--leaf-color-primary)',\n 'leaf-primary-hover': 'var(--leaf-color-primary-hover)',\n 'leaf-primary-active': 'var(--leaf-color-primary-active)',\n 'leaf-on-primary': 'var(--leaf-color-on-primary)',\n 'leaf-success': 'var(--leaf-color-success)',\n 'leaf-warning': 'var(--leaf-color-warning)',\n 'leaf-on-warning': 'var(--leaf-color-on-warning)',\n 'leaf-danger': 'var(--leaf-color-danger)',\n 'leaf-danger-hover': 'var(--leaf-color-danger-hover)',\n 'leaf-danger-active': 'var(--leaf-color-danger-active)',\n 'leaf-on-danger': 'var(--leaf-color-on-danger)',\n 'leaf-info': 'var(--leaf-color-info)',\n 'leaf-text': 'var(--leaf-color-text)',\n 'leaf-muted': 'var(--leaf-color-text-muted)',\n 'leaf-subtle': 'var(--leaf-color-text-subtle)',\n 'leaf-surface': 'var(--leaf-color-surface)',\n 'leaf-surface-muted': 'var(--leaf-color-surface-muted)',\n 'leaf-surface-raised': 'var(--leaf-color-surface-raised)',\n 'leaf-border': 'var(--leaf-color-border)',\n 'leaf-border-hover': 'var(--leaf-color-border-hover)',\n 'leaf-divider': 'var(--leaf-color-divider)',\n 'leaf-option-hover': 'var(--leaf-color-option-hover)',\n 'leaf-focus': 'var(--leaf-color-focus, var(--leaf-color-primary-alpha-42))',\n },\n borderRadius: {\n leaf: 'var(--leaf-radius)',\n 'leaf-sm': 'var(--leaf-radius-sm)',\n 'leaf-md': 'var(--leaf-radius-md)',\n 'leaf-lg': 'var(--leaf-radius-lg)',\n 'leaf-choice': 'var(--leaf-choice-radius)',\n },\n spacing: {\n leaf: 'var(--leaf-spacing)',\n 'leaf-xs': 'var(--leaf-spacing-xs)',\n 'leaf-sm': 'var(--leaf-spacing-sm)',\n 'leaf-md': 'var(--leaf-spacing-md)',\n 'leaf-lg': 'var(--leaf-spacing-lg)',\n 'leaf-xl': 'var(--leaf-spacing-xl)',\n 'leaf-control': 'var(--leaf-control-height)',\n 'leaf-control-sm': 'var(--leaf-control-height-sm)',\n 'leaf-control-lg': 'var(--leaf-control-height-lg)',\n 'leaf-form-gap': 'var(--leaf-density-form-gap)',\n 'leaf-label-gap': 'var(--leaf-density-label-gap)',\n 'leaf-row-padding': 'var(--leaf-density-row-padding)',\n 'leaf-option-height': 'var(--leaf-density-option-height)',\n 'leaf-option-padding': 'var(--leaf-density-option-padding)',\n 'leaf-field-padding': 'var(--leaf-density-field-padding)',\n 'leaf-dialog-block': 'var(--leaf-density-dialog-block)',\n 'leaf-dialog-inline': 'var(--leaf-density-dialog-inline)',\n 'leaf-dialog-gap': 'var(--leaf-density-dialog-gap)',\n },\n fontFamily: { leaf: 'var(--leaf-font-family)' },\n fontSize: {\n leaf: 'var(--leaf-font-size)',\n 'leaf-sm': 'var(--leaf-font-size-sm)',\n 'leaf-lg': 'var(--leaf-font-size-lg)',\n },\n lineHeight: { leaf: 'var(--leaf-line-height)' },\n fontWeight: {\n 'leaf-medium': 'var(--leaf-font-weight)',\n 'leaf-heading': 'var(--leaf-heading-weight)',\n },\n boxShadow: {\n 'leaf-xs': 'var(--leaf-shadow-xs)',\n 'leaf-sm': 'var(--leaf-shadow-sm)',\n 'leaf-md': 'var(--leaf-shadow-md)',\n 'leaf-lg': 'var(--leaf-shadow-lg)',\n },\n transitionDuration: {\n leaf: 'var(--leaf-motion-duration)',\n 'leaf-fast': 'var(--leaf-motion-fast)',\n 'leaf-slow': 'var(--leaf-motion-slow)',\n },\n transitionTimingFunction: {\n leaf: 'var(--leaf-motion-easing)',\n 'leaf-spring': 'var(--leaf-motion-spring)',\n },\n zIndex: {\n 'leaf-popup': 'var(--leaf-z-index-popup)',\n 'leaf-modal': 'var(--leaf-z-index-modal)',\n 'leaf-message': 'var(--leaf-z-index-message)',\n },\n};\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","leafTailwindTokens"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;ACLO,MAAMI,qBAAqB;IAChC,QAAQ;QACN,gBAAgB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,qBAAqB;QACrB,sBAAsB;QACtB,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,eAAe;QACf,qBAAqB;QACrB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;IAChB;IACA,cAAc;QACZ,MAAM;QACN,WAAW;QACX,WAAW;QACX,WAAW;QACX,eAAe;IACjB;IACA,SAAS;QACP,MAAM;QACN,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,iBAAiB;QACjB,kBAAkB;QAClB,oBAAoB;QACpB,sBAAsB;QACtB,uBAAuB;QACvB,sBAAsB;QACtB,qBAAqB;QACrB,sBAAsB;QACtB,mBAAmB;IACrB;IACA,YAAY;QAAE,MAAM;IAA0B;IAC9C,UAAU;QACR,MAAM;QACN,WAAW;QACX,WAAW;IACb;IACA,YAAY;QAAE,MAAM;IAA0B;IAC9C,YAAY;QACV,eAAe;QACf,gBAAgB;IAClB;IACA,WAAW;QACT,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;IACb;IACA,oBAAoB;QAClB,MAAM;QACN,aAAa;QACb,aAAa;IACf;IACA,0BAA0B;QACxB,MAAM;QACN,eAAe;IACjB;IACA,QAAQ;QACN,cAAc;QACd,cAAc;QACd,gBAAgB;IAClB;AACF"}
1
+ {"version":3,"file":"tailwind-tokens.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../src/tailwind-tokens.ts"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/** Shared by the Tailwind 3 preset and the generated Tailwind 4 CSS theme. */\nexport const leafTailwindTokens = {\n colors: {\n 'leaf-primary': 'var(--leaf-color-primary)',\n 'leaf-primary-hover': 'var(--leaf-color-primary-hover)',\n 'leaf-primary-active': 'var(--leaf-color-primary-active)',\n 'leaf-on-primary': 'var(--leaf-color-on-primary)',\n 'leaf-success': 'var(--leaf-color-success)',\n 'leaf-warning': 'var(--leaf-color-warning)',\n 'leaf-on-warning': 'var(--leaf-color-on-warning)',\n 'leaf-danger': 'var(--leaf-color-danger)',\n 'leaf-danger-hover': 'var(--leaf-color-danger-hover)',\n 'leaf-danger-active': 'var(--leaf-color-danger-active)',\n 'leaf-on-danger': 'var(--leaf-color-on-danger)',\n 'leaf-info': 'var(--leaf-color-info)',\n 'leaf-text': 'var(--leaf-color-text)',\n 'leaf-muted': 'var(--leaf-color-text-muted)',\n 'leaf-subtle': 'var(--leaf-color-text-subtle)',\n 'leaf-surface': 'var(--leaf-color-surface)',\n 'leaf-surface-muted': 'var(--leaf-color-surface-muted)',\n 'leaf-surface-raised': 'var(--leaf-color-surface-raised)',\n 'leaf-border': 'var(--leaf-color-border)',\n 'leaf-border-hover': 'var(--leaf-color-border-hover)',\n 'leaf-divider': 'var(--leaf-color-divider)',\n 'leaf-option-hover': 'var(--leaf-color-option-hover)',\n 'leaf-focus':\n 'var(--leaf-color-focus, var(--leaf-color-primary-focus, var(--leaf-color-primary-alpha-42)))',\n },\n borderRadius: {\n leaf: 'var(--leaf-radius)',\n 'leaf-sm': 'var(--leaf-radius-sm)',\n 'leaf-md': 'var(--leaf-radius-md)',\n 'leaf-lg': 'var(--leaf-radius-lg)',\n 'leaf-choice': 'var(--leaf-choice-radius)',\n },\n spacing: {\n leaf: 'var(--leaf-spacing)',\n 'leaf-xs': 'var(--leaf-spacing-xs)',\n 'leaf-sm': 'var(--leaf-spacing-sm)',\n 'leaf-md': 'var(--leaf-spacing-md)',\n 'leaf-lg': 'var(--leaf-spacing-lg)',\n 'leaf-xl': 'var(--leaf-spacing-xl)',\n 'leaf-control': 'var(--leaf-control-height)',\n 'leaf-control-sm': 'var(--leaf-control-height-sm)',\n 'leaf-control-lg': 'var(--leaf-control-height-lg)',\n 'leaf-form-gap': 'var(--leaf-density-form-gap)',\n 'leaf-label-gap': 'var(--leaf-density-label-gap)',\n 'leaf-row-padding': 'var(--leaf-density-row-padding)',\n 'leaf-option-height': 'var(--leaf-density-option-height)',\n 'leaf-option-padding': 'var(--leaf-density-option-padding)',\n 'leaf-field-padding': 'var(--leaf-density-field-padding)',\n 'leaf-dialog-block': 'var(--leaf-density-dialog-block)',\n 'leaf-dialog-inline': 'var(--leaf-density-dialog-inline)',\n 'leaf-dialog-gap': 'var(--leaf-density-dialog-gap)',\n },\n fontFamily: { leaf: 'var(--leaf-font-family)' },\n fontSize: {\n leaf: 'var(--leaf-font-size)',\n 'leaf-sm': 'var(--leaf-font-size-sm)',\n 'leaf-lg': 'var(--leaf-font-size-lg)',\n },\n lineHeight: { leaf: 'var(--leaf-line-height)' },\n fontWeight: {\n 'leaf-medium': 'var(--leaf-font-weight)',\n 'leaf-heading': 'var(--leaf-heading-weight)',\n },\n boxShadow: {\n 'leaf-xs': 'var(--leaf-shadow-xs)',\n 'leaf-sm': 'var(--leaf-shadow-sm)',\n 'leaf-md': 'var(--leaf-shadow-md)',\n 'leaf-lg': 'var(--leaf-shadow-lg)',\n },\n transitionDuration: {\n leaf: 'var(--leaf-motion-duration)',\n 'leaf-fast': 'var(--leaf-motion-fast)',\n 'leaf-slow': 'var(--leaf-motion-slow)',\n },\n transitionTimingFunction: {\n leaf: 'var(--leaf-motion-easing)',\n 'leaf-spring': 'var(--leaf-motion-spring)',\n },\n zIndex: {\n 'leaf-popup': 'var(--leaf-z-index-popup)',\n 'leaf-modal': 'var(--leaf-z-index-modal)',\n 'leaf-message': 'var(--leaf-z-index-message)',\n },\n};\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","leafTailwindTokens"],"mappings":";;;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC,SAASC;QAC1C,IAAIC,SAAS,CAACC,MAAMC;YACnB,IAAI,IAAIC,OAAOF,KACd,IAAGJ,oBAAoB,CAAC,CAACI,MAAME,QAAQ,CAACN,oBAAoB,CAAC,CAAC,UAASM,MACtEC,OAAO,cAAc,CAAC,UAASD,KAAK;gBAAE,YAAY;gBAAM,CAACD,KAAK,EAAED,IAAI,CAACE,IAAI;YAAC;QAG7E;QACAH,OAAOF,SAAS;QAChBE,OAAOD,QAAQ;IAChB;;;ICVAF,oBAAoB,CAAC,GAAG,CAACQ,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFT,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,MAAlB,OAAOU,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;ACLO,MAAMI,qBAAqB;IAChC,QAAQ;QACN,gBAAgB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,mBAAmB;QACnB,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,qBAAqB;QACrB,sBAAsB;QACtB,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,eAAe;QACf,qBAAqB;QACrB,gBAAgB;QAChB,qBAAqB;QACrB,cACE;IACJ;IACA,cAAc;QACZ,MAAM;QACN,WAAW;QACX,WAAW;QACX,WAAW;QACX,eAAe;IACjB;IACA,SAAS;QACP,MAAM;QACN,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,iBAAiB;QACjB,kBAAkB;QAClB,oBAAoB;QACpB,sBAAsB;QACtB,uBAAuB;QACvB,sBAAsB;QACtB,qBAAqB;QACrB,sBAAsB;QACtB,mBAAmB;IACrB;IACA,YAAY;QAAE,MAAM;IAA0B;IAC9C,UAAU;QACR,MAAM;QACN,WAAW;QACX,WAAW;IACb;IACA,YAAY;QAAE,MAAM;IAA0B;IAC9C,YAAY;QACV,eAAe;QACf,gBAAgB;IAClB;IACA,WAAW;QACT,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;IACb;IACA,oBAAoB;QAClB,MAAM;QACN,aAAa;QACb,aAAa;IACf;IACA,0BAA0B;QACxB,MAAM;QACN,eAAe;IACjB;IACA,QAAQ;QACN,cAAc;QACd,cAAc;QACd,gBAAgB;IAClB;AACF"}
@@ -38,12 +38,14 @@ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
38
38
  const external_react_namespaceObject = require("react");
39
39
  const component_defaults_cjs_namespaceObject = require("../config-provider/component-defaults.cjs");
40
40
  const form_cjs_namespaceObject = require("../form/form.cjs");
41
+ const scrollbar_cjs_namespaceObject = require("../scrollbar/scrollbar.cjs");
41
42
  const classes_cjs_namespaceObject = require("../shared/classes.cjs");
42
43
  const field_cjs_namespaceObject = require("../shared/field.cjs");
43
44
  const motion_cjs_namespaceObject = require("../shared/motion.cjs");
44
45
  const useBrowserLayoutEffect = "u" < typeof window ? external_react_namespaceObject.useEffect : external_react_namespaceObject.useLayoutEffect;
45
46
  const textarea_TextareaControl = /*#__PURE__*/ (0, external_react_namespaceObject.forwardRef)(function({ size = 'md', status: statusProp, resize = 'vertical', rows = 3, autoSize = false, showCount = false, value, defaultValue, onChange, className, style, disabled: disabledProp, 'aria-invalid': ariaInvalid, ...props }, ref) {
46
47
  const field = (0, form_cjs_namespaceObject.useFormField)();
48
+ const id = (0, external_react_namespaceObject.useId)();
47
49
  const textarea = (0, external_react_namespaceObject.useRef)(null);
48
50
  const heightAnimation = (0, external_react_namespaceObject.useRef)(void 0);
49
51
  const measuredHeight = (0, external_react_namespaceObject.useRef)(false);
@@ -105,29 +107,55 @@ const textarea_TextareaControl = /*#__PURE__*/ (0, external_react_namespaceObjec
105
107
  motionEnabled
106
108
  ]);
107
109
  (0, external_react_namespaceObject.useEffect)(()=>()=>heightAnimation.current?.cancel(), []);
108
- const control = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("textarea", {
109
- ...props,
110
- id: props.id ?? field?.id,
111
- required: props.required ?? field?.required,
112
- "aria-describedby": [
113
- props['aria-describedby'],
114
- field?.descriptionId
115
- ].filter(Boolean).join(' ') || void 0,
116
- ref: merged,
117
- disabled: disabled,
118
- rows: rows,
119
- value: current,
120
- onChange: (event)=>{
121
- setCurrent(event.target.value);
122
- onChange?.(event);
123
- },
124
- className: (0, classes_cjs_namespaceObject.classes)('leaf-textarea', `leaf-textarea--${size}`, className),
110
+ const control = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(scrollbar_cjs_namespaceObject.ScrollbarControl, {
111
+ externalViewport: textarea,
112
+ viewportRevision: current,
113
+ resizeHandle: !autoSize && 'none' !== resize,
114
+ scrollbarTabIndex: -1,
115
+ className: "leaf-textarea-scrollbar",
125
116
  style: {
126
- resize: autoSize ? 'none' : resize,
127
- ...style
117
+ width: style?.width,
118
+ minWidth: style?.minWidth,
119
+ maxWidth: style?.maxWidth,
120
+ flex: style?.flex,
121
+ flexBasis: style?.flexBasis,
122
+ flexGrow: style?.flexGrow,
123
+ flexShrink: style?.flexShrink,
124
+ alignSelf: style?.alignSelf,
125
+ order: style?.order,
126
+ gridArea: style?.gridArea,
127
+ gridColumn: style?.gridColumn,
128
+ gridRow: style?.gridRow
128
129
  },
129
- "data-status": status,
130
- "aria-invalid": 'error' === status ? true : ariaInvalid
130
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("textarea", {
131
+ ...props,
132
+ id: props.id ?? field?.id ?? id,
133
+ required: props.required ?? field?.required,
134
+ "aria-describedby": [
135
+ props['aria-describedby'],
136
+ field?.descriptionId
137
+ ].filter(Boolean).join(' ') || void 0,
138
+ ref: merged,
139
+ disabled: disabled,
140
+ rows: rows,
141
+ value: current,
142
+ onChange: (event)=>{
143
+ setCurrent(event.target.value);
144
+ onChange?.(event);
145
+ },
146
+ className: (0, classes_cjs_namespaceObject.classes)('leaf-textarea', `leaf-textarea--${size}`, className),
147
+ style: {
148
+ resize: autoSize ? 'none' : resize,
149
+ ...style,
150
+ minWidth: void 0,
151
+ maxWidth: void 0,
152
+ ...style?.width === void 0 ? {} : {
153
+ width: '100%'
154
+ }
155
+ },
156
+ "data-status": status,
157
+ "aria-invalid": 'error' === status ? true : ariaInvalid
158
+ })
131
159
  });
132
160
  return showCount ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
133
161
  className: "leaf-textarea-wrap",
@@ -1 +1 @@
1
- {"version":3,"file":"textarea/textarea.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/textarea/textarea.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n forwardRef,\n type ReactNode,\n type TextareaHTMLAttributes,\n useEffect,\n useLayoutEffect,\n useRef,\n} from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useFormField } from '../form/form';\nimport { classes } from '../shared/classes';\nimport { useFieldValue, useMergedRef } from '../shared/field';\nimport { animateMotion, useMotionEnabled } from '../shared/motion';\nimport type { ControlSize, ControlStatus } from '../shared/types';\n\nexport interface TextareaAutoSize {\n minRows?: number;\n maxRows?: number;\n}\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n size?: ControlSize;\n status?: ControlStatus;\n resize?: 'none' | 'vertical' | 'both';\n autoSize?: boolean | TextareaAutoSize;\n showCount?: boolean | ((value: string, maxLength?: number) => ReactNode);\n}\n\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nexport const TextareaControl = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function TextareaControl(\n {\n size = 'md',\n status: statusProp,\n resize = 'vertical',\n rows = 3,\n autoSize = false,\n showCount = false,\n value,\n defaultValue,\n onChange,\n className,\n style,\n disabled: disabledProp,\n 'aria-invalid': ariaInvalid,\n ...props\n }: TextareaProps,\n ref,\n ) {\n const field = useFormField();\n const textarea = useRef<HTMLTextAreaElement>(null);\n const heightAnimation = useRef<Animation | undefined>(undefined);\n const measuredHeight = useRef(false);\n const motionEnabled = useMotionEnabled();\n const merged = useMergedRef(textarea, ref);\n const [current, setCurrent] = useFieldValue(\n value === undefined ? undefined : String(value),\n String(defaultValue ?? ''),\n textarea,\n props.form,\n );\n const disabled = disabledProp || field?.disabled;\n const status = statusProp ?? (field?.error ? 'error' : undefined);\n const minRows = typeof autoSize === 'object' ? Math.max(1, autoSize.minRows ?? rows) : rows;\n const maxRows =\n typeof autoSize === 'object' ? Math.max(minRows, autoSize.maxRows ?? Infinity) : Infinity;\n useBrowserLayoutEffect(() => {\n if (!autoSize || !textarea.current) {\n heightAnimation.current?.cancel();\n measuredHeight.current = false;\n return;\n }\n const node = textarea.current;\n const measure = () => {\n const previousHeight =\n Number.parseFloat(getComputedStyle(node).height) || node.offsetHeight;\n heightAnimation.current?.cancel();\n const computed = getComputedStyle(node);\n const lineHeight =\n Number.parseFloat(computed.lineHeight) ||\n (Number.parseFloat(computed.fontSize) || 14) * 1.5;\n const padding =\n (Number.parseFloat(computed.paddingTop) || 0) +\n (Number.parseFloat(computed.paddingBottom) || 0);\n const border =\n (Number.parseFloat(computed.borderTopWidth) || 0) +\n (Number.parseFloat(computed.borderBottomWidth) || 0);\n const addition = computed.boxSizing === 'border-box' ? padding + border : 0;\n node.style.height = 'auto';\n const measured =\n node.scrollHeight + (computed.boxSizing === 'border-box' ? border : -padding);\n const maximum = lineHeight * maxRows + addition;\n const height = Math.min(maximum, Math.max(lineHeight * minRows + addition, measured));\n node.style.height = `${height}px`;\n node.style.overflowY = measured > maximum ? 'auto' : 'hidden';\n if (measuredHeight.current && motionEnabled && Math.abs(previousHeight - height) > 0.5)\n heightAnimation.current = animateMotion(\n node,\n [{ height: `${previousHeight}px` }, { height: `${height}px` }],\n { durationMultiplier: 0.8 },\n );\n measuredHeight.current = true;\n };\n measure();\n let width = node.clientWidth;\n const observer =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(() => {\n if (width !== node.clientWidth) {\n width = node.clientWidth;\n measure();\n }\n });\n observer?.observe(node);\n return () => observer?.disconnect();\n }, [autoSize, minRows, maxRows, current, motionEnabled]);\n useEffect(() => () => heightAnimation.current?.cancel(), []);\n const control = (\n <textarea\n {...props}\n id={props.id ?? field?.id}\n required={props.required ?? field?.required}\n aria-describedby={\n [props['aria-describedby'], field?.descriptionId].filter(Boolean).join(' ') || undefined\n }\n ref={merged}\n disabled={disabled}\n rows={rows}\n value={current}\n onChange={(event) => {\n setCurrent(event.target.value);\n onChange?.(event);\n }}\n className={classes('leaf-textarea', `leaf-textarea--${size}`, className)}\n style={{ resize: autoSize ? 'none' : resize, ...style }}\n data-status={status}\n aria-invalid={status === 'error' ? true : ariaInvalid}\n />\n );\n return showCount ? (\n <div className=\"leaf-textarea-wrap\">\n {control}\n <span className=\"leaf-textarea__count\">\n {typeof showCount === 'function'\n ? showCount(current, props.maxLength)\n : `${current.length}${props.maxLength === undefined ? '' : ` / ${props.maxLength}`}`}\n </span>\n </div>\n ) : (\n control\n );\n },\n);\nTextareaControl.displayName = 'TextareaControl';\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n rawProps: TextareaProps,\n ref,\n) {\n const props = useComponentProps('Textarea', rawProps);\n return <TextareaControl {...props} ref={ref} />;\n});\nTextarea.displayName = 'Textarea';\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","useBrowserLayoutEffect","window","useEffect","useLayoutEffect","TextareaControl","forwardRef","size","statusProp","resize","rows","autoSize","showCount","value","defaultValue","onChange","className","style","disabledProp","ariaInvalid","props","ref","field","useFormField","textarea","useRef","heightAnimation","undefined","measuredHeight","motionEnabled","useMotionEnabled","merged","useMergedRef","current","setCurrent","useFieldValue","String","disabled","status","minRows","Math","maxRows","Infinity","node","measure","previousHeight","Number","getComputedStyle","computed","lineHeight","padding","border","addition","measured","maximum","height","animateMotion","width","observer","ResizeObserver","control","Boolean","event","classes","Textarea","rawProps","useComponentProps"],"mappings":"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"}
1
+ {"version":3,"file":"textarea/textarea.cjs","sources":["webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../../../../src/textarea/textarea.tsx"],"sourcesContent":["__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n forwardRef,\n type ReactNode,\n type TextareaHTMLAttributes,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n} from 'react';\nimport { useComponentProps } from '../config-provider/component-defaults';\nimport { useFormField } from '../form/form';\nimport { ScrollbarControl } from '../scrollbar/scrollbar';\nimport { classes } from '../shared/classes';\nimport { useFieldValue, useMergedRef } from '../shared/field';\nimport { animateMotion, useMotionEnabled } from '../shared/motion';\nimport type { ControlSize, ControlStatus } from '../shared/types';\n\nexport interface TextareaAutoSize {\n minRows?: number;\n maxRows?: number;\n}\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n size?: ControlSize;\n status?: ControlStatus;\n resize?: 'none' | 'vertical' | 'both';\n autoSize?: boolean | TextareaAutoSize;\n showCount?: boolean | ((value: string, maxLength?: number) => ReactNode);\n}\n\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nexport const TextareaControl = forwardRef<HTMLTextAreaElement, TextareaProps>(\n function TextareaControl(\n {\n size = 'md',\n status: statusProp,\n resize = 'vertical',\n rows = 3,\n autoSize = false,\n showCount = false,\n value,\n defaultValue,\n onChange,\n className,\n style,\n disabled: disabledProp,\n 'aria-invalid': ariaInvalid,\n ...props\n }: TextareaProps,\n ref,\n ) {\n const field = useFormField();\n const id = useId();\n const textarea = useRef<HTMLTextAreaElement>(null);\n const heightAnimation = useRef<Animation | undefined>(undefined);\n const measuredHeight = useRef(false);\n const motionEnabled = useMotionEnabled();\n const merged = useMergedRef(textarea, ref);\n const [current, setCurrent] = useFieldValue(\n value === undefined ? undefined : String(value),\n String(defaultValue ?? ''),\n textarea,\n props.form,\n );\n const disabled = disabledProp || field?.disabled;\n const status = statusProp ?? (field?.error ? 'error' : undefined);\n const minRows = typeof autoSize === 'object' ? Math.max(1, autoSize.minRows ?? rows) : rows;\n const maxRows =\n typeof autoSize === 'object' ? Math.max(minRows, autoSize.maxRows ?? Infinity) : Infinity;\n useBrowserLayoutEffect(() => {\n if (!autoSize || !textarea.current) {\n heightAnimation.current?.cancel();\n measuredHeight.current = false;\n return;\n }\n const node = textarea.current;\n const measure = () => {\n const previousHeight =\n Number.parseFloat(getComputedStyle(node).height) || node.offsetHeight;\n heightAnimation.current?.cancel();\n const computed = getComputedStyle(node);\n const lineHeight =\n Number.parseFloat(computed.lineHeight) ||\n (Number.parseFloat(computed.fontSize) || 14) * 1.5;\n const padding =\n (Number.parseFloat(computed.paddingTop) || 0) +\n (Number.parseFloat(computed.paddingBottom) || 0);\n const border =\n (Number.parseFloat(computed.borderTopWidth) || 0) +\n (Number.parseFloat(computed.borderBottomWidth) || 0);\n const addition = computed.boxSizing === 'border-box' ? padding + border : 0;\n node.style.height = 'auto';\n const measured =\n node.scrollHeight + (computed.boxSizing === 'border-box' ? border : -padding);\n const maximum = lineHeight * maxRows + addition;\n const height = Math.min(maximum, Math.max(lineHeight * minRows + addition, measured));\n node.style.height = `${height}px`;\n node.style.overflowY = measured > maximum ? 'auto' : 'hidden';\n if (measuredHeight.current && motionEnabled && Math.abs(previousHeight - height) > 0.5)\n heightAnimation.current = animateMotion(\n node,\n [{ height: `${previousHeight}px` }, { height: `${height}px` }],\n { durationMultiplier: 0.8 },\n );\n measuredHeight.current = true;\n };\n measure();\n let width = node.clientWidth;\n const observer =\n typeof ResizeObserver === 'undefined'\n ? null\n : new ResizeObserver(() => {\n if (width !== node.clientWidth) {\n width = node.clientWidth;\n measure();\n }\n });\n observer?.observe(node);\n return () => observer?.disconnect();\n }, [autoSize, minRows, maxRows, current, motionEnabled]);\n useEffect(() => () => heightAnimation.current?.cancel(), []);\n const control = (\n <ScrollbarControl\n externalViewport={textarea}\n viewportRevision={current}\n resizeHandle={!autoSize && resize !== 'none'}\n scrollbarTabIndex={-1}\n className=\"leaf-textarea-scrollbar\"\n style={{\n width: style?.width,\n minWidth: style?.minWidth,\n maxWidth: style?.maxWidth,\n flex: style?.flex,\n flexBasis: style?.flexBasis,\n flexGrow: style?.flexGrow,\n flexShrink: style?.flexShrink,\n alignSelf: style?.alignSelf,\n order: style?.order,\n gridArea: style?.gridArea,\n gridColumn: style?.gridColumn,\n gridRow: style?.gridRow,\n }}\n >\n <textarea\n {...props}\n id={props.id ?? field?.id ?? id}\n required={props.required ?? field?.required}\n aria-describedby={\n [props['aria-describedby'], field?.descriptionId].filter(Boolean).join(' ') || undefined\n }\n ref={merged}\n disabled={disabled}\n rows={rows}\n value={current}\n onChange={(event) => {\n setCurrent(event.target.value);\n onChange?.(event);\n }}\n className={classes('leaf-textarea', `leaf-textarea--${size}`, className)}\n style={{\n resize: autoSize ? 'none' : resize,\n ...style,\n minWidth: undefined,\n maxWidth: undefined,\n ...(style?.width === undefined ? {} : { width: '100%' }),\n }}\n data-status={status}\n aria-invalid={status === 'error' ? true : ariaInvalid}\n />\n </ScrollbarControl>\n );\n return showCount ? (\n <div className=\"leaf-textarea-wrap\">\n {control}\n <span className=\"leaf-textarea__count\">\n {typeof showCount === 'function'\n ? showCount(current, props.maxLength)\n : `${current.length}${props.maxLength === undefined ? '' : ` / ${props.maxLength}`}`}\n </span>\n </div>\n ) : (\n control\n );\n },\n);\nTextareaControl.displayName = 'TextareaControl';\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n rawProps: TextareaProps,\n ref,\n) {\n const props = useComponentProps('Textarea', rawProps);\n return <TextareaControl {...props} ref={ref} />;\n});\nTextarea.displayName = 'Textarea';\n"],"names":["__webpack_require__","getters","values","define","defs","kind","key","Object","obj","prop","Symbol","useBrowserLayoutEffect","window","useEffect","useLayoutEffect","TextareaControl","forwardRef","size","statusProp","resize","rows","autoSize","showCount","value","defaultValue","onChange","className","style","disabledProp","ariaInvalid","props","ref","field","useFormField","id","useId","textarea","useRef","heightAnimation","undefined","measuredHeight","motionEnabled","useMotionEnabled","merged","useMergedRef","current","setCurrent","useFieldValue","String","disabled","status","minRows","Math","maxRows","Infinity","node","measure","previousHeight","Number","getComputedStyle","computed","lineHeight","padding","border","addition","measured","maximum","height","animateMotion","width","observer","ResizeObserver","control","ScrollbarControl","Boolean","event","classes","Textarea","rawProps","useComponentProps"],"mappings":"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"}
@@ -35,6 +35,23 @@ __webpack_require__.d(__webpack_exports__, {
35
35
  });
36
36
  const external_colors_cjs_namespaceObject = require("./colors.cjs");
37
37
  const defined = (value)=>Object.fromEntries(Object.entries(value ?? {}).filter(([, item])=>void 0 !== item));
38
+ const componentStates = [
39
+ 'hover',
40
+ 'active',
41
+ 'focus',
42
+ 'disabled'
43
+ ];
44
+ function mergeComponentTokens(parent, tokens) {
45
+ const merged = {
46
+ ...defined(parent),
47
+ ...defined(tokens)
48
+ };
49
+ for (const state of componentStates)if (parent?.[state] || tokens?.[state]) merged[state] = {
50
+ ...defined(parent?.[state]),
51
+ ...defined(tokens?.[state])
52
+ };
53
+ return merged;
54
+ }
38
55
  function mergeLeafTheme(parent, theme) {
39
56
  return {
40
57
  ...parent,
@@ -50,10 +67,7 @@ function mergeLeafTheme(parent, theme) {
50
67
  ])
51
68
  ].map((key)=>[
52
69
  key,
53
- {
54
- ...parent.components?.[key],
55
- ...defined(theme?.components?.[key])
56
- }
70
+ mergeComponentTokens(parent.components?.[key], theme?.components?.[key])
57
71
  ])),
58
72
  ...parent.tokens || theme?.tokens ? {
59
73
  tokens: {
@@ -79,6 +93,9 @@ const tokenVariables = {
79
93
  borderColor: 'color-border',
80
94
  borderHoverColor: 'color-border-hover',
81
95
  dividerColor: 'color-divider',
96
+ borderWidth: 'border-width',
97
+ controlShadow: 'control-shadow',
98
+ surfaceShadow: 'surface-shadow',
82
99
  borderRadiusSm: 'radius-sm',
83
100
  borderRadiusMd: 'radius-md',
84
101
  borderRadiusLg: 'radius-lg',
@@ -139,10 +156,7 @@ function paddingSides(value) {
139
156
  }
140
157
  function leafThemeColors(theme) {
141
158
  const colors = {};
142
- if (theme.primaryColor) {
143
- colors.primary = theme.primaryColor;
144
- colors['on-primary'] = '#ffffff';
145
- }
159
+ if (theme.primaryColor) colors.primary = theme.primaryColor;
146
160
  for (const key of Object.keys(tokenVariables)){
147
161
  const variable = tokenVariables[key];
148
162
  const value = theme.tokens?.[key];
@@ -199,6 +213,7 @@ function leafThemeVariables(theme) {
199
213
  for (const [name, value] of Object.entries(theme.breakpoints ?? {}))if (void 0 !== value) variables[`--leaf-breakpoint-${name}`] = `${value}px`;
200
214
  const componentKeys = {
201
215
  borderRadius: 'radius',
216
+ borderWidth: 'border-width',
202
217
  controlHeight: 'height',
203
218
  padding: 'padding',
204
219
  gap: 'gap',
@@ -210,29 +225,37 @@ function leafThemeVariables(theme) {
210
225
  footerBackground: 'footer-background',
211
226
  shadow: 'shadow'
212
227
  };
213
- for (const [component, tokens] of Object.entries(theme.components ?? {}))for (const [key, value] of Object.entries(tokens))if (void 0 !== value && /^[a-z][a-z\d-]*$/i.test(component)) {
214
- const token = componentKeys[key];
215
- if (token) variables[`--leaf-component-${component.replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase()}-${token}`] = 'number' == typeof value ? theme_length(value) : value;
216
- if ('controlHeight' === key) {
217
- const name = component.replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase();
218
- variables[`--leaf-component-${name}-height-sm`] = `max(1px, calc(var(--leaf-component-${name}-height) - 6px))`;
219
- variables[`--leaf-component-${name}-height-lg`] = `calc(var(--leaf-component-${name}-height) + 6px)`;
228
+ const stateKeys = {
229
+ color: 'color',
230
+ background: 'background',
231
+ borderColor: 'border-color',
232
+ shadow: 'shadow'
233
+ };
234
+ for (const [component, tokens] of Object.entries(theme.components ?? {})){
235
+ if (!/^[a-z][a-z\d-]*$/i.test(component)) continue;
236
+ const name = component.replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase();
237
+ for (const [key, value] of Object.entries(tokens))if (void 0 !== value && 'object' != typeof value) {
238
+ const token = componentKeys[key];
239
+ if (token) variables[`--leaf-component-${name}-${token}`] = 'number' == typeof value ? theme_length(value) : value;
240
+ if ('controlHeight' === key) {
241
+ variables[`--leaf-component-${name}-height-sm`] = `max(1px, calc(var(--leaf-component-${name}-height) - 6px))`;
242
+ variables[`--leaf-component-${name}-height-lg`] = `calc(var(--leaf-component-${name}-height) + 6px)`;
243
+ }
244
+ if ('padding' === key) {
245
+ const sides = paddingSides(theme_length(value));
246
+ for (const [index, side] of [
247
+ 'top',
248
+ 'right',
249
+ 'bottom',
250
+ 'left'
251
+ ].entries())variables[`--leaf-component-${name}-padding-${side}`] = sides[index];
252
+ }
220
253
  }
221
- if ('padding' === key) {
222
- const name = component.replace(/([a-z\d])([A-Z])/g, '$1-$2').toLowerCase();
223
- const sides = paddingSides(theme_length(value));
224
- for (const [index, side] of [
225
- 'top',
226
- 'right',
227
- 'bottom',
228
- 'left'
229
- ].entries())variables[`--leaf-component-${name}-padding-${side}`] = sides[index];
254
+ for (const state of componentStates)for (const [key, suffix] of Object.entries(stateKeys)){
255
+ const value = tokens[state]?.[key];
256
+ if (void 0 !== value) variables[`--leaf-component-${name}-${state}-${suffix}`] = value;
230
257
  }
231
258
  }
232
- if (void 0 !== theme.primaryColor) {
233
- variables['--leaf-color-primary'] = theme.primaryColor;
234
- variables['--leaf-color-on-primary'] = '#ffffff';
235
- }
236
259
  if (void 0 !== theme.borderRadius) {
237
260
  variables['--leaf-radius'] = theme_length(theme.borderRadius);
238
261
  variables['--leaf-radius-sm'] = 'calc(var(--leaf-radius) * 0.6)';
@@ -255,8 +278,9 @@ function leafThemeVariables(theme) {
255
278
  const value = theme.tokens?.[key];
256
279
  if (void 0 === value) continue;
257
280
  const variable = tokenVariables[key];
258
- variables[`--leaf-${variable}`] = 'number' != typeof value ? value : 'motionDuration' === key ? `${value}ms` : variable.includes('radius') || variable.includes('height') || variable.includes('font-size') || variable.includes('spacing') ? theme_length(value) : value;
281
+ variables[`--leaf-${variable}`] = 'number' != typeof value ? value : 'motionDuration' === key ? `${value}ms` : variable.includes('radius') || variable.includes('height') || variable.includes('font-size') || 'border-width' === variable || variable.includes('spacing') ? theme_length(value) : value;
259
282
  }
283
+ if (theme.tokens?.borderColor !== void 0) variables['--leaf-frame-border-color'] = theme.tokens.borderColor;
260
284
  if (void 0 !== theme.motion) {
261
285
  variables['--leaf-motion-play-state'] = theme.motion ? 'running' : 'paused';
262
286
  variables['--leaf-motion-animation'] = theme.motion ? 'initial' : 'none';