@burtson-labs/ui 0.13.1 → 0.14.1

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 (460) hide show
  1. package/LICENSES/DEPENDENCIES.txt +2745 -0
  2. package/LICENSES/Radix-MIT.txt +21 -0
  3. package/LICENSES/cmdk-MIT.txt +21 -0
  4. package/LICENSES/overrides/react-remove-scroll-bar.txt +26 -0
  5. package/LICENSES/shadcn-MIT.txt +21 -0
  6. package/README.md +20 -12
  7. package/THIRD_PARTY_NOTICES.md +15 -3
  8. package/dist/components/accordion.d.ts +4 -4
  9. package/dist/components/accordion.js +22 -18
  10. package/dist/components/accordion.js.map +1 -1
  11. package/dist/components/alert-dialog.d.ts +13 -11
  12. package/dist/components/alert-dialog.js +41 -31
  13. package/dist/components/alert-dialog.js.map +1 -1
  14. package/dist/components/alert.d.ts +5 -3
  15. package/dist/components/alert.js +12 -7
  16. package/dist/components/alert.js.map +1 -1
  17. package/dist/components/app-shell.d.ts +7 -6
  18. package/dist/components/app-shell.js +22 -14
  19. package/dist/components/app-shell.js.map +1 -1
  20. package/dist/components/attachment.d.ts +3 -3
  21. package/dist/components/attachment.js +11 -7
  22. package/dist/components/attachment.js.map +1 -1
  23. package/dist/components/audio-player.d.ts +2 -2
  24. package/dist/components/audio-player.js +9 -6
  25. package/dist/components/audio-player.js.map +1 -1
  26. package/dist/components/avatar.d.ts +4 -4
  27. package/dist/components/avatar.js +16 -12
  28. package/dist/components/avatar.js.map +1 -1
  29. package/dist/components/badge.d.ts +1 -1
  30. package/dist/components/badge.js +15 -13
  31. package/dist/components/badge.js.map +1 -1
  32. package/dist/components/breadcrumb.d.ts +8 -8
  33. package/dist/components/breadcrumb.js +27 -20
  34. package/dist/components/breadcrumb.js.map +1 -1
  35. package/dist/components/button.d.ts +9 -2
  36. package/dist/components/button.js +15 -6
  37. package/dist/components/button.js.map +1 -1
  38. package/dist/components/card.d.ts +9 -9
  39. package/dist/components/card.js +33 -23
  40. package/dist/components/card.js.map +1 -1
  41. package/dist/components/chat-history.d.ts +1 -1
  42. package/dist/components/chat-history.js +11 -9
  43. package/dist/components/chat-history.js.map +1 -1
  44. package/dist/components/chat-layout.d.ts +1 -1
  45. package/dist/components/chat-layout.js +8 -3
  46. package/dist/components/chat-layout.js.map +1 -1
  47. package/dist/components/checkbox-card.d.ts +3 -3
  48. package/dist/components/checkbox-card.js +12 -10
  49. package/dist/components/checkbox-card.js.map +1 -1
  50. package/dist/components/checkbox.d.ts +24 -3
  51. package/dist/components/checkbox.js +52 -9
  52. package/dist/components/checkbox.js.map +1 -1
  53. package/dist/components/collapsible.d.ts +3 -3
  54. package/dist/components/collapsible.js +14 -11
  55. package/dist/components/collapsible.js.map +1 -1
  56. package/dist/components/combobox.d.ts +14 -4
  57. package/dist/components/combobox.js +19 -8
  58. package/dist/components/combobox.js.map +1 -1
  59. package/dist/components/command.d.ts +68 -12
  60. package/dist/components/command.js +48 -34
  61. package/dist/components/command.js.map +1 -1
  62. package/dist/components/composer.d.ts +2 -2
  63. package/dist/components/composer.js +10 -7
  64. package/dist/components/composer.js.map +1 -1
  65. package/dist/components/connection-status.d.ts +3 -3
  66. package/dist/components/connection-status.js +19 -14
  67. package/dist/components/connection-status.js.map +1 -1
  68. package/dist/components/context-menu.d.ts +15 -14
  69. package/dist/components/context-menu.js +52 -41
  70. package/dist/components/context-menu.js.map +1 -1
  71. package/dist/components/conversation.d.ts +1 -1
  72. package/dist/components/conversation.js +7 -5
  73. package/dist/components/conversation.js.map +1 -1
  74. package/dist/components/copy-button.d.ts +1 -1
  75. package/dist/components/copy-button.js +4 -2
  76. package/dist/components/copy-button.js.map +1 -1
  77. package/dist/components/data-table.d.ts +7 -2
  78. package/dist/components/data-table.js +17 -42
  79. package/dist/components/data-table.js.map +1 -1
  80. package/dist/components/dialog.d.ts +19 -10
  81. package/dist/components/dialog.js +50 -33
  82. package/dist/components/dialog.js.map +1 -1
  83. package/dist/components/dropdown-menu.d.ts +15 -14
  84. package/dist/components/dropdown-menu.js +52 -41
  85. package/dist/components/dropdown-menu.js.map +1 -1
  86. package/dist/components/editor-tabs.d.ts +1 -1
  87. package/dist/components/editor-tabs.js +7 -5
  88. package/dist/components/editor-tabs.js.map +1 -1
  89. package/dist/components/empty-state.d.ts +5 -5
  90. package/dist/components/empty-state.js +17 -11
  91. package/dist/components/empty-state.js.map +1 -1
  92. package/dist/components/error-summary.d.ts +21 -0
  93. package/dist/components/error-summary.js +62 -0
  94. package/dist/components/error-summary.js.map +1 -0
  95. package/dist/components/field.d.ts +66 -7
  96. package/dist/components/field.js +152 -20
  97. package/dist/components/field.js.map +1 -1
  98. package/dist/components/form-actions.d.ts +18 -0
  99. package/dist/components/form-actions.js +30 -0
  100. package/dist/components/form-actions.js.map +1 -0
  101. package/dist/components/icon-button.d.ts +3 -1
  102. package/dist/components/icon-button.js +6 -3
  103. package/dist/components/icon-button.js.map +1 -1
  104. package/dist/components/input.d.ts +42 -7
  105. package/dist/components/input.js +54 -10
  106. package/dist/components/input.js.map +1 -1
  107. package/dist/components/kbd.d.ts +2 -2
  108. package/dist/components/kbd.js +8 -5
  109. package/dist/components/kbd.js.map +1 -1
  110. package/dist/components/label.d.ts +7 -2
  111. package/dist/components/label.js +14 -7
  112. package/dist/components/label.js.map +1 -1
  113. package/dist/components/markdown.d.ts +4 -3
  114. package/dist/components/markdown.js +8 -6
  115. package/dist/components/markdown.js.map +1 -1
  116. package/dist/components/menubar.d.ts +17 -15
  117. package/dist/components/menubar.js +58 -45
  118. package/dist/components/menubar.js.map +1 -1
  119. package/dist/components/message-actions.d.ts +3 -3
  120. package/dist/components/message-actions.js +16 -12
  121. package/dist/components/message-actions.js.map +1 -1
  122. package/dist/components/message.d.ts +1 -1
  123. package/dist/components/message.js +6 -3
  124. package/dist/components/message.js.map +1 -1
  125. package/dist/components/mobile-nav.d.ts +1 -1
  126. package/dist/components/mobile-nav.js +7 -5
  127. package/dist/components/mobile-nav.js.map +1 -1
  128. package/dist/components/native-select.d.ts +16 -0
  129. package/dist/components/native-select.js +33 -0
  130. package/dist/components/native-select.js.map +1 -0
  131. package/dist/components/navigation-menu.d.ts +13 -12
  132. package/dist/components/navigation-menu.js +43 -33
  133. package/dist/components/navigation-menu.js.map +1 -1
  134. package/dist/components/number-input.d.ts +23 -0
  135. package/dist/components/number-input.js +45 -0
  136. package/dist/components/number-input.js.map +1 -0
  137. package/dist/components/onboarding-checklist.d.ts +1 -1
  138. package/dist/components/onboarding-checklist.js +5 -3
  139. package/dist/components/onboarding-checklist.js.map +1 -1
  140. package/dist/components/page-header.d.ts +7 -6
  141. package/dist/components/page-header.js +23 -15
  142. package/dist/components/page-header.js.map +1 -1
  143. package/dist/components/pagination.d.ts +1 -1
  144. package/dist/components/pagination.js +4 -2
  145. package/dist/components/pagination.js.map +1 -1
  146. package/dist/components/popover.d.ts +14 -11
  147. package/dist/components/popover.js +30 -23
  148. package/dist/components/popover.js.map +1 -1
  149. package/dist/components/progress.d.ts +2 -2
  150. package/dist/components/progress.js +11 -9
  151. package/dist/components/progress.js.map +1 -1
  152. package/dist/components/radio-group.d.ts +23 -4
  153. package/dist/components/radio-group.js +56 -14
  154. package/dist/components/radio-group.js.map +1 -1
  155. package/dist/components/reasoning.d.ts +3 -3
  156. package/dist/components/reasoning.js +14 -11
  157. package/dist/components/reasoning.js.map +1 -1
  158. package/dist/components/resizable.js +1 -0
  159. package/dist/components/resizable.js.map +1 -1
  160. package/dist/components/scroll-area.d.ts +4 -3
  161. package/dist/components/scroll-area.js +18 -14
  162. package/dist/components/scroll-area.js.map +1 -1
  163. package/dist/components/secret-input.d.ts +3 -2
  164. package/dist/components/secret-input.js +7 -4
  165. package/dist/components/secret-input.js.map +1 -1
  166. package/dist/components/select.d.ts +12 -7
  167. package/dist/components/select.js +42 -35
  168. package/dist/components/select.js.map +1 -1
  169. package/dist/components/separator.d.ts +2 -2
  170. package/dist/components/separator.js +8 -6
  171. package/dist/components/separator.js.map +1 -1
  172. package/dist/components/sheet.d.ts +11 -9
  173. package/dist/components/sheet.js +41 -29
  174. package/dist/components/sheet.js.map +1 -1
  175. package/dist/components/skeleton.d.ts +2 -1
  176. package/dist/components/skeleton.js +7 -4
  177. package/dist/components/skeleton.js.map +1 -1
  178. package/dist/components/slider.d.ts +10 -6
  179. package/dist/components/slider.js +16 -7
  180. package/dist/components/slider.js.map +1 -1
  181. package/dist/components/source.d.ts +2 -2
  182. package/dist/components/source.js +10 -7
  183. package/dist/components/source.js.map +1 -1
  184. package/dist/components/spinner.d.ts +4 -2
  185. package/dist/components/spinner.js +5 -3
  186. package/dist/components/spinner.js.map +1 -1
  187. package/dist/components/stat-card.d.ts +27 -2
  188. package/dist/components/stat-card.js +70 -9
  189. package/dist/components/stat-card.js.map +1 -1
  190. package/dist/components/status.d.ts +7 -6
  191. package/dist/components/status.js +12 -5
  192. package/dist/components/status.js.map +1 -1
  193. package/dist/components/steps.d.ts +1 -1
  194. package/dist/components/steps.js +5 -3
  195. package/dist/components/steps.js.map +1 -1
  196. package/dist/components/switch.d.ts +47 -3
  197. package/dist/components/switch.js +89 -11
  198. package/dist/components/switch.js.map +1 -1
  199. package/dist/components/table.d.ts +29 -12
  200. package/dist/components/table.js +80 -34
  201. package/dist/components/table.js.map +1 -1
  202. package/dist/components/tabs.d.ts +10 -5
  203. package/dist/components/tabs.js +29 -19
  204. package/dist/components/tabs.js.map +1 -1
  205. package/dist/components/textarea.d.ts +6 -1
  206. package/dist/components/textarea.js +4 -3
  207. package/dist/components/textarea.js.map +1 -1
  208. package/dist/components/toast.d.ts +11 -7
  209. package/dist/components/toast.js +37 -27
  210. package/dist/components/toast.js.map +1 -1
  211. package/dist/components/toaster.d.ts +4 -2
  212. package/dist/components/toaster.js +7 -2
  213. package/dist/components/toaster.js.map +1 -1
  214. package/dist/components/tool-call.d.ts +2 -2
  215. package/dist/components/tool-call.js +15 -12
  216. package/dist/components/tool-call.js.map +1 -1
  217. package/dist/components/toolbar.d.ts +9 -4
  218. package/dist/components/toolbar.js +15 -9
  219. package/dist/components/toolbar.js.map +1 -1
  220. package/dist/components/tooltip.d.ts +4 -3
  221. package/dist/components/tooltip.js +17 -13
  222. package/dist/components/tooltip.js.map +1 -1
  223. package/dist/components/tour.js +10 -8
  224. package/dist/components/tour.js.map +1 -1
  225. package/dist/components/tree-view.d.ts +1 -1
  226. package/dist/components/tree-view.js +10 -5
  227. package/dist/components/tree-view.js.map +1 -1
  228. package/dist/components/voice-recorder.d.ts +1 -1
  229. package/dist/components/voice-recorder.js +5 -2
  230. package/dist/components/voice-recorder.js.map +1 -1
  231. package/dist/index.d.ts +6 -1
  232. package/dist/index.js +17 -12
  233. package/dist/lib/media.d.ts +18 -0
  234. package/dist/lib/media.js +34 -0
  235. package/dist/lib/media.js.map +1 -0
  236. package/dist/lib/utils.d.ts +32 -0
  237. package/dist/lib/utils.js +33 -1
  238. package/dist/lib/utils.js.map +1 -1
  239. package/dist/mui/index.js +20 -8
  240. package/dist/mui/index.js.map +1 -1
  241. package/dist/primitives/vendor/cmdk/command-score.d.ts +1 -0
  242. package/dist/primitives/vendor/cmdk/command-score.js +64 -0
  243. package/dist/primitives/vendor/cmdk/command-score.js.map +1 -0
  244. package/dist/primitives/vendor/cmdk/index.d.ts +384 -0
  245. package/dist/primitives/vendor/cmdk/index.js +687 -0
  246. package/dist/primitives/vendor/cmdk/index.js.map +1 -0
  247. package/dist/primitives/vendor/radix/number/index.d.ts +1 -0
  248. package/dist/primitives/vendor/radix/number/number.d.ts +2 -0
  249. package/dist/primitives/vendor/radix/number/number.js +9 -0
  250. package/dist/primitives/vendor/radix/number/number.js.map +1 -0
  251. package/dist/primitives/vendor/radix/primitive/index.d.ts +2 -0
  252. package/dist/primitives/vendor/radix/primitive/is-development.d.ts +1 -0
  253. package/dist/primitives/vendor/radix/primitive/is-development.js +7 -0
  254. package/dist/primitives/vendor/radix/primitive/is-development.js.map +1 -0
  255. package/dist/primitives/vendor/radix/primitive/primitive.d.ts +14 -0
  256. package/dist/primitives/vendor/radix/primitive/primitive.js +12 -0
  257. package/dist/primitives/vendor/radix/primitive/primitive.js.map +1 -0
  258. package/dist/primitives/vendor/radix/primitive/types.d.ts +5 -0
  259. package/dist/primitives/vendor/radix/react-accordion/accordion.d.ts +112 -0
  260. package/dist/primitives/vendor/radix/react-accordion/accordion.js +266 -0
  261. package/dist/primitives/vendor/radix/react-accordion/accordion.js.map +1 -0
  262. package/dist/primitives/vendor/radix/react-accordion/index.d.ts +2 -0
  263. package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.d.ts +49 -0
  264. package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.js +122 -0
  265. package/dist/primitives/vendor/radix/react-alert-dialog/alert-dialog.js.map +1 -0
  266. package/dist/primitives/vendor/radix/react-alert-dialog/index.d.ts +2 -0
  267. package/dist/primitives/vendor/radix/react-arrow/arrow.d.ts +9 -0
  268. package/dist/primitives/vendor/radix/react-arrow/arrow.js +22 -0
  269. package/dist/primitives/vendor/radix/react-arrow/arrow.js.map +1 -0
  270. package/dist/primitives/vendor/radix/react-arrow/index.d.ts +2 -0
  271. package/dist/primitives/vendor/radix/react-avatar/avatar.d.ts +19 -0
  272. package/dist/primitives/vendor/radix/react-avatar/avatar.js +132 -0
  273. package/dist/primitives/vendor/radix/react-avatar/avatar.js.map +1 -0
  274. package/dist/primitives/vendor/radix/react-avatar/index.d.ts +2 -0
  275. package/dist/primitives/vendor/radix/react-checkbox/checkbox.d.ts +47 -0
  276. package/dist/primitives/vendor/radix/react-checkbox/checkbox.js +197 -0
  277. package/dist/primitives/vendor/radix/react-checkbox/checkbox.js.map +1 -0
  278. package/dist/primitives/vendor/radix/react-checkbox/index.d.ts +2 -0
  279. package/dist/primitives/vendor/radix/react-collapsible/collapsible.d.ts +31 -0
  280. package/dist/primitives/vendor/radix/react-collapsible/collapsible.js +133 -0
  281. package/dist/primitives/vendor/radix/react-collapsible/collapsible.js.map +1 -0
  282. package/dist/primitives/vendor/radix/react-collapsible/index.d.ts +2 -0
  283. package/dist/primitives/vendor/radix/react-collection/collection-legacy.d.ts +21 -0
  284. package/dist/primitives/vendor/radix/react-collection/collection-legacy.js +84 -0
  285. package/dist/primitives/vendor/radix/react-collection/collection-legacy.js.map +1 -0
  286. package/dist/primitives/vendor/radix/react-collection/collection.d.ts +32 -0
  287. package/dist/primitives/vendor/radix/react-collection/index.d.ts +4 -0
  288. package/dist/primitives/vendor/radix/react-collection/ordered-dictionary.d.ts +51 -0
  289. package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.d.ts +13 -0
  290. package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.js +43 -0
  291. package/dist/primitives/vendor/radix/react-compose-refs/compose-refs.js.map +1 -0
  292. package/dist/primitives/vendor/radix/react-compose-refs/index.d.ts +1 -0
  293. package/dist/primitives/vendor/radix/react-context/create-context.d.ts +45 -0
  294. package/dist/primitives/vendor/radix/react-context/create-context.js +74 -0
  295. package/dist/primitives/vendor/radix/react-context/create-context.js.map +1 -0
  296. package/dist/primitives/vendor/radix/react-context/index.d.ts +2 -0
  297. package/dist/primitives/vendor/radix/react-context-menu/context-menu.d.ts +95 -0
  298. package/dist/primitives/vendor/radix/react-context-menu/context-menu.js +279 -0
  299. package/dist/primitives/vendor/radix/react-context-menu/context-menu.js.map +1 -0
  300. package/dist/primitives/vendor/radix/react-context-menu/index.d.ts +2 -0
  301. package/dist/primitives/vendor/radix/react-dialog/dialog.d.ts +97 -0
  302. package/dist/primitives/vendor/radix/react-dialog/dialog.js +262 -0
  303. package/dist/primitives/vendor/radix/react-dialog/dialog.js.map +1 -0
  304. package/dist/primitives/vendor/radix/react-dialog/index.d.ts +4 -0
  305. package/dist/primitives/vendor/radix/react-direction/direction.d.ts +10 -0
  306. package/dist/primitives/vendor/radix/react-direction/direction.js +13 -0
  307. package/dist/primitives/vendor/radix/react-direction/direction.js.map +1 -0
  308. package/dist/primitives/vendor/radix/react-direction/index.d.ts +1 -0
  309. package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.d.ts +61 -0
  310. package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.js +336 -0
  311. package/dist/primitives/vendor/radix/react-dismissable-layer/dismissable-layer.js.map +1 -0
  312. package/dist/primitives/vendor/radix/react-dismissable-layer/index.d.ts +4 -0
  313. package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.d.ts +95 -0
  314. package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.js +257 -0
  315. package/dist/primitives/vendor/radix/react-dropdown-menu/dropdown-menu.js.map +1 -0
  316. package/dist/primitives/vendor/radix/react-dropdown-menu/index.d.ts +2 -0
  317. package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.d.ts +11 -0
  318. package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.js +49 -0
  319. package/dist/primitives/vendor/radix/react-focus-guards/focus-guards.js.map +1 -0
  320. package/dist/primitives/vendor/radix/react-focus-guards/index.d.ts +1 -0
  321. package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.d.ts +31 -0
  322. package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.js +221 -0
  323. package/dist/primitives/vendor/radix/react-focus-scope/focus-scope.js.map +1 -0
  324. package/dist/primitives/vendor/radix/react-focus-scope/index.d.ts +1 -0
  325. package/dist/primitives/vendor/radix/react-id/id.d.ts +2 -0
  326. package/dist/primitives/vendor/radix/react-id/id.js +17 -0
  327. package/dist/primitives/vendor/radix/react-id/id.js.map +1 -0
  328. package/dist/primitives/vendor/radix/react-id/index.d.ts +1 -0
  329. package/dist/primitives/vendor/radix/react-label/index.d.ts +2 -0
  330. package/dist/primitives/vendor/radix/react-label/label.d.ts +9 -0
  331. package/dist/primitives/vendor/radix/react-label/label.js +21 -0
  332. package/dist/primitives/vendor/radix/react-label/label.js.map +1 -0
  333. package/dist/primitives/vendor/radix/react-menu/index.d.ts +2 -0
  334. package/dist/primitives/vendor/radix/react-menu/menu.d.ts +173 -0
  335. package/dist/primitives/vendor/radix/react-menu/menu.js +806 -0
  336. package/dist/primitives/vendor/radix/react-menu/menu.js.map +1 -0
  337. package/dist/primitives/vendor/radix/react-menubar/index.d.ts +2 -0
  338. package/dist/primitives/vendor/radix/react-menubar/menubar.d.ts +106 -0
  339. package/dist/primitives/vendor/radix/react-menubar/menubar.js +377 -0
  340. package/dist/primitives/vendor/radix/react-menubar/menubar.js.map +1 -0
  341. package/dist/primitives/vendor/radix/react-navigation-menu/index.d.ts +2 -0
  342. package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.d.ts +124 -0
  343. package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.js +743 -0
  344. package/dist/primitives/vendor/radix/react-navigation-menu/navigation-menu.js.map +1 -0
  345. package/dist/primitives/vendor/radix/react-popover/index.d.ts +1 -0
  346. package/dist/primitives/vendor/radix/react-popover/popover.d.ts +83 -0
  347. package/dist/primitives/vendor/radix/react-popover/popover.js +236 -0
  348. package/dist/primitives/vendor/radix/react-popover/popover.js.map +1 -0
  349. package/dist/primitives/vendor/radix/react-popper/index.d.ts +2 -0
  350. package/dist/primitives/vendor/radix/react-popper/popper.d.ts +44 -0
  351. package/dist/primitives/vendor/radix/react-popper/popper.js +276 -0
  352. package/dist/primitives/vendor/radix/react-popper/popper.js.map +1 -0
  353. package/dist/primitives/vendor/radix/react-portal/index.d.ts +2 -0
  354. package/dist/primitives/vendor/radix/react-portal/portal.d.ts +13 -0
  355. package/dist/primitives/vendor/radix/react-portal/portal.js +21 -0
  356. package/dist/primitives/vendor/radix/react-portal/portal.js.map +1 -0
  357. package/dist/primitives/vendor/radix/react-presence/index.d.ts +2 -0
  358. package/dist/primitives/vendor/radix/react-presence/presence.d.ts +11 -0
  359. package/dist/primitives/vendor/radix/react-presence/presence.js +152 -0
  360. package/dist/primitives/vendor/radix/react-presence/presence.js.map +1 -0
  361. package/dist/primitives/vendor/radix/react-presence/use-state-machine.d.ts +10 -0
  362. package/dist/primitives/vendor/radix/react-presence/use-state-machine.js +12 -0
  363. package/dist/primitives/vendor/radix/react-presence/use-state-machine.js.map +1 -0
  364. package/dist/primitives/vendor/radix/react-primitive/index.d.ts +2 -0
  365. package/dist/primitives/vendor/radix/react-primitive/primitive.d.ts +56 -0
  366. package/dist/primitives/vendor/radix/react-primitive/primitive.js +84 -0
  367. package/dist/primitives/vendor/radix/react-primitive/primitive.js.map +1 -0
  368. package/dist/primitives/vendor/radix/react-progress/index.d.ts +2 -0
  369. package/dist/primitives/vendor/radix/react-progress/progress.d.ts +17 -0
  370. package/dist/primitives/vendor/radix/react-progress/progress.js +79 -0
  371. package/dist/primitives/vendor/radix/react-progress/progress.js.map +1 -0
  372. package/dist/primitives/vendor/radix/react-radio-group/index.d.ts +2 -0
  373. package/dist/primitives/vendor/radix/react-radio-group/radio-group.d.ts +55 -0
  374. package/dist/primitives/vendor/radix/react-radio-group/radio-group.js +173 -0
  375. package/dist/primitives/vendor/radix/react-radio-group/radio-group.js.map +1 -0
  376. package/dist/primitives/vendor/radix/react-radio-group/radio.d.ts +62 -0
  377. package/dist/primitives/vendor/radix/react-radio-group/radio.js +150 -0
  378. package/dist/primitives/vendor/radix/react-radio-group/radio.js.map +1 -0
  379. package/dist/primitives/vendor/radix/react-roving-focus/index.d.ts +2 -0
  380. package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.d.ts +47 -0
  381. package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.js +218 -0
  382. package/dist/primitives/vendor/radix/react-roving-focus/roving-focus-group.js.map +1 -0
  383. package/dist/primitives/vendor/radix/react-scroll-area/index.d.ts +2 -0
  384. package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.d.ts +121 -0
  385. package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.js +713 -0
  386. package/dist/primitives/vendor/radix/react-scroll-area/scroll-area.js.map +1 -0
  387. package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.d.ts +10 -0
  388. package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.js +12 -0
  389. package/dist/primitives/vendor/radix/react-scroll-area/use-state-machine.js.map +1 -0
  390. package/dist/primitives/vendor/radix/react-select/index.d.ts +2 -0
  391. package/dist/primitives/vendor/radix/react-select/select.d.ts +163 -0
  392. package/dist/primitives/vendor/radix/react-select/select.js +1040 -0
  393. package/dist/primitives/vendor/radix/react-select/select.js.map +1 -0
  394. package/dist/primitives/vendor/radix/react-separator/index.d.ts +2 -0
  395. package/dist/primitives/vendor/radix/react-separator/separator.d.ts +20 -0
  396. package/dist/primitives/vendor/radix/react-separator/separator.js +29 -0
  397. package/dist/primitives/vendor/radix/react-separator/separator.js.map +1 -0
  398. package/dist/primitives/vendor/radix/react-slot/index.d.ts +1 -0
  399. package/dist/primitives/vendor/radix/react-slot/slot.d.ts +29 -0
  400. package/dist/primitives/vendor/radix/react-slot/slot.js +107 -0
  401. package/dist/primitives/vendor/radix/react-slot/slot.js.map +1 -0
  402. package/dist/primitives/vendor/radix/react-switch/index.d.ts +2 -0
  403. package/dist/primitives/vendor/radix/react-switch/switch.d.ts +41 -0
  404. package/dist/primitives/vendor/radix/react-switch/switch.js +185 -0
  405. package/dist/primitives/vendor/radix/react-switch/switch.js.map +1 -0
  406. package/dist/primitives/vendor/radix/react-tabs/index.d.ts +2 -0
  407. package/dist/primitives/vendor/radix/react-tabs/tabs.d.ts +54 -0
  408. package/dist/primitives/vendor/radix/react-tabs/tabs.js +145 -0
  409. package/dist/primitives/vendor/radix/react-tabs/tabs.js.map +1 -0
  410. package/dist/primitives/vendor/radix/react-toast/index.d.ts +2 -0
  411. package/dist/primitives/vendor/radix/react-toast/toast.d.ts +125 -0
  412. package/dist/primitives/vendor/radix/react-toast/toast.js +557 -0
  413. package/dist/primitives/vendor/radix/react-toast/toast.js.map +1 -0
  414. package/dist/primitives/vendor/radix/react-tooltip/index.d.ts +2 -0
  415. package/dist/primitives/vendor/radix/react-tooltip/tooltip.d.ts +99 -0
  416. package/dist/primitives/vendor/radix/react-tooltip/tooltip.js +503 -0
  417. package/dist/primitives/vendor/radix/react-tooltip/tooltip.js.map +1 -0
  418. package/dist/primitives/vendor/radix/react-use-callback-ref/index.d.ts +1 -0
  419. package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.d.ts +6 -0
  420. package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.js +18 -0
  421. package/dist/primitives/vendor/radix/react-use-callback-ref/use-callback-ref.js.map +1 -0
  422. package/dist/primitives/vendor/radix/react-use-controllable-state/index.d.ts +2 -0
  423. package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state-reducer.d.ts +28 -0
  424. package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.d.ts +11 -0
  425. package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.js +59 -0
  426. package/dist/primitives/vendor/radix/react-use-controllable-state/use-controllable-state.js.map +1 -0
  427. package/dist/primitives/vendor/radix/react-use-effect-event/index.d.ts +1 -0
  428. package/dist/primitives/vendor/radix/react-use-effect-event/use-effect-event.d.ts +7 -0
  429. package/dist/primitives/vendor/radix/react-use-is-hydrated/index.d.ts +1 -0
  430. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.d.ts +1 -0
  431. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.js +18 -0
  432. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated-legacy.js.map +1 -0
  433. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.d.ts +6 -0
  434. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.js +19 -0
  435. package/dist/primitives/vendor/radix/react-use-is-hydrated/use-is-hydrated.js.map +1 -0
  436. package/dist/primitives/vendor/radix/react-use-layout-effect/index.d.ts +1 -0
  437. package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.d.ts +10 -0
  438. package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.js +15 -0
  439. package/dist/primitives/vendor/radix/react-use-layout-effect/use-layout-effect.js.map +1 -0
  440. package/dist/primitives/vendor/radix/react-use-previous/index.d.ts +1 -0
  441. package/dist/primitives/vendor/radix/react-use-previous/use-previous.d.ts +2 -0
  442. package/dist/primitives/vendor/radix/react-use-previous/use-previous.js +20 -0
  443. package/dist/primitives/vendor/radix/react-use-previous/use-previous.js.map +1 -0
  444. package/dist/primitives/vendor/radix/react-use-size/index.d.ts +1 -0
  445. package/dist/primitives/vendor/radix/react-use-size/use-size.d.ts +5 -0
  446. package/dist/primitives/vendor/radix/react-use-size/use-size.js +42 -0
  447. package/dist/primitives/vendor/radix/react-use-size/use-size.js.map +1 -0
  448. package/dist/primitives/vendor/radix/react-visually-hidden/index.d.ts +2 -0
  449. package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.d.ts +21 -0
  450. package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.js +32 -0
  451. package/dist/primitives/vendor/radix/react-visually-hidden/visually-hidden.js.map +1 -0
  452. package/dist/primitives/vendor/radix/rect/index.d.ts +2 -0
  453. package/dist/primitives/vendor/radix/rect/observe-element-rect.d.ts +16 -0
  454. package/dist/styles.css +1 -1
  455. package/dist/theme.css +36 -17
  456. package/dist/tokens.d.ts +78 -36
  457. package/dist/tokens.js +63 -32
  458. package/dist/tokens.js.map +1 -1
  459. package/package.json +25 -13
  460. package/vendor-manifest.json +1101 -0
@@ -0,0 +1,713 @@
1
+ "use client";
2
+ import { createContextScope } from "../react-context/create-context.js";
3
+ import { useComposedRefs } from "../react-compose-refs/compose-refs.js";
4
+ import { composeEventHandlers } from "../primitive/primitive.js";
5
+ import { useLayoutEffect } from "../react-use-layout-effect/use-layout-effect.js";
6
+ import { Primitive } from "../react-primitive/primitive.js";
7
+ import { Presence } from "../react-presence/presence.js";
8
+ import { useDirection } from "../react-direction/direction.js";
9
+ import { useCallbackRef } from "../react-use-callback-ref/use-callback-ref.js";
10
+ import { clamp } from "../number/number.js";
11
+ import { useStateMachine } from "./use-state-machine.js";
12
+ import * as React from "react";
13
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
+ //#region src/primitives/vendor/radix/react-scroll-area/scroll-area.tsx
15
+ var SCROLL_AREA_NAME = "ScrollArea";
16
+ var [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);
17
+ var [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);
18
+ var ScrollArea = /* @__PURE__ */ React.forwardRef(function ScrollArea(props, forwardedRef) {
19
+ const { __scopeScrollArea, type = "hover", dir, scrollHideDelay = 600, ...scrollAreaProps } = props;
20
+ const [scrollArea, setScrollArea] = React.useState(null);
21
+ const [viewport, setViewport] = React.useState(null);
22
+ const [content, setContent] = React.useState(null);
23
+ const [scrollbarX, setScrollbarX] = React.useState(null);
24
+ const [scrollbarY, setScrollbarY] = React.useState(null);
25
+ const [cornerWidth, setCornerWidth] = React.useState(0);
26
+ const [cornerHeight, setCornerHeight] = React.useState(0);
27
+ const [scrollbarXEnabled, setScrollbarXEnabled] = React.useState(false);
28
+ const [scrollbarYEnabled, setScrollbarYEnabled] = React.useState(false);
29
+ const composedRefs = useComposedRefs(forwardedRef, setScrollArea);
30
+ const direction = useDirection(dir);
31
+ return /* @__PURE__ */ jsx(ScrollAreaProvider, {
32
+ scope: __scopeScrollArea,
33
+ type,
34
+ dir: direction,
35
+ scrollHideDelay,
36
+ scrollArea,
37
+ viewport,
38
+ onViewportChange: setViewport,
39
+ content,
40
+ onContentChange: setContent,
41
+ scrollbarX,
42
+ onScrollbarXChange: setScrollbarX,
43
+ scrollbarXEnabled,
44
+ onScrollbarXEnabledChange: setScrollbarXEnabled,
45
+ scrollbarY,
46
+ onScrollbarYChange: setScrollbarY,
47
+ scrollbarYEnabled,
48
+ onScrollbarYEnabledChange: setScrollbarYEnabled,
49
+ onCornerWidthChange: setCornerWidth,
50
+ onCornerHeightChange: setCornerHeight,
51
+ children: /* @__PURE__ */ jsx(Primitive.div, {
52
+ dir: direction,
53
+ ...scrollAreaProps,
54
+ ref: composedRefs,
55
+ style: {
56
+ position: "relative",
57
+ "--radix-scroll-area-corner-width": cornerWidth + "px",
58
+ "--radix-scroll-area-corner-height": cornerHeight + "px",
59
+ ...props.style
60
+ }
61
+ })
62
+ });
63
+ });
64
+ var VIEWPORT_NAME = "ScrollAreaViewport";
65
+ var ScrollAreaViewport = /* @__PURE__ */ React.forwardRef(function ScrollAreaViewport(props, forwardedRef) {
66
+ const { __scopeScrollArea, children, nonce, ...viewportProps } = props;
67
+ const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);
68
+ const ref = React.useRef(null);
69
+ const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);
70
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(ScrollAreaViewportStyle, { nonce }), /* @__PURE__ */ jsx(Primitive.div, {
71
+ "data-radix-scroll-area-viewport": "",
72
+ ...viewportProps,
73
+ ref: composedRefs,
74
+ style: {
75
+ /**
76
+ * We don't support `visible` because the intention is to have at least one scrollbar
77
+ * if this component is used and `visible` will behave like `auto` in that case
78
+ * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description
79
+ *
80
+ * We don't handle `auto` because the intention is for the native implementation
81
+ * to be hidden if using this component. We just want to ensure the node is scrollable
82
+ * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent
83
+ * the browser from having to work out whether to render native scrollbars or not,
84
+ * we tell it to with the intention of hiding them in CSS.
85
+ */
86
+ overflowX: context.scrollbarXEnabled ? "scroll" : "hidden",
87
+ overflowY: context.scrollbarYEnabled ? "scroll" : "hidden",
88
+ ...props.style
89
+ },
90
+ children: /* @__PURE__ */ jsx("div", {
91
+ ref: context.onContentChange,
92
+ style: {
93
+ minWidth: "100%",
94
+ display: "table"
95
+ },
96
+ children
97
+ })
98
+ })] });
99
+ });
100
+ var ScrollAreaViewportStyle = /* @__PURE__ */ React.memo(function ScrollAreaViewportStyle({ nonce }) {
101
+ return /* @__PURE__ */ jsx("style", {
102
+ dangerouslySetInnerHTML: { __html: `[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}` },
103
+ nonce
104
+ });
105
+ }, (prevProps, nextProps) => prevProps.nonce === nextProps.nonce);
106
+ var SCROLLBAR_NAME = "ScrollAreaScrollbar";
107
+ var ScrollAreaScrollbar = /* @__PURE__ */ React.forwardRef(function ScrollAreaScrollbar(props, forwardedRef) {
108
+ const { forceMount, ...scrollbarProps } = props;
109
+ const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
110
+ const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;
111
+ const isHorizontal = props.orientation === "horizontal";
112
+ React.useEffect(() => {
113
+ isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);
114
+ return () => {
115
+ isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);
116
+ };
117
+ }, [
118
+ isHorizontal,
119
+ onScrollbarXEnabledChange,
120
+ onScrollbarYEnabledChange
121
+ ]);
122
+ return context.type === "hover" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, {
123
+ ...scrollbarProps,
124
+ ref: forwardedRef,
125
+ forceMount
126
+ }) : context.type === "scroll" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, {
127
+ ...scrollbarProps,
128
+ ref: forwardedRef,
129
+ forceMount
130
+ }) : context.type === "auto" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
131
+ ...scrollbarProps,
132
+ ref: forwardedRef,
133
+ forceMount
134
+ }) : context.type === "always" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
135
+ ...scrollbarProps,
136
+ ref: forwardedRef,
137
+ "data-state": "visible"
138
+ }) : null;
139
+ });
140
+ var ScrollAreaScrollbarHover = /* @__PURE__ */ React.forwardRef(function ScrollAreaScrollbarHover(props, forwardedRef) {
141
+ const { forceMount, ...scrollbarProps } = props;
142
+ const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
143
+ const [visible, setVisible] = React.useState(false);
144
+ React.useEffect(() => {
145
+ const scrollArea = context.scrollArea;
146
+ let hideTimer = 0;
147
+ if (scrollArea) {
148
+ const handlePointerEnter = () => {
149
+ window.clearTimeout(hideTimer);
150
+ setVisible(true);
151
+ };
152
+ const handlePointerLeave = () => {
153
+ hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);
154
+ };
155
+ scrollArea.addEventListener("pointerenter", handlePointerEnter);
156
+ scrollArea.addEventListener("pointerleave", handlePointerLeave);
157
+ return () => {
158
+ window.clearTimeout(hideTimer);
159
+ scrollArea.removeEventListener("pointerenter", handlePointerEnter);
160
+ scrollArea.removeEventListener("pointerleave", handlePointerLeave);
161
+ };
162
+ }
163
+ }, [context.scrollArea, context.scrollHideDelay]);
164
+ return /* @__PURE__ */ jsx(Presence, {
165
+ present: forceMount || visible,
166
+ children: /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, {
167
+ "data-state": visible ? "visible" : "hidden",
168
+ ...scrollbarProps,
169
+ ref: forwardedRef
170
+ })
171
+ });
172
+ });
173
+ var ScrollAreaScrollbarScroll = /* @__PURE__ */ React.forwardRef(function ScrollAreaScrollbarScroll(props, forwardedRef) {
174
+ const { forceMount, ...scrollbarProps } = props;
175
+ const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
176
+ const isHorizontal = props.orientation === "horizontal";
177
+ const debounceScrollEnd = useDebounceCallback(() => send("SCROLL_END"), 100);
178
+ const [state, send] = useStateMachine("hidden", {
179
+ hidden: { SCROLL: "scrolling" },
180
+ scrolling: {
181
+ SCROLL_END: "idle",
182
+ POINTER_ENTER: "interacting"
183
+ },
184
+ interacting: {
185
+ SCROLL: "interacting",
186
+ POINTER_LEAVE: "idle"
187
+ },
188
+ idle: {
189
+ HIDE: "hidden",
190
+ SCROLL: "scrolling",
191
+ POINTER_ENTER: "interacting"
192
+ }
193
+ });
194
+ React.useEffect(() => {
195
+ if (state === "idle") {
196
+ const hideTimer = window.setTimeout(() => send("HIDE"), context.scrollHideDelay);
197
+ return () => window.clearTimeout(hideTimer);
198
+ }
199
+ }, [
200
+ state,
201
+ context.scrollHideDelay,
202
+ send
203
+ ]);
204
+ React.useEffect(() => {
205
+ const viewport = context.viewport;
206
+ const scrollDirection = isHorizontal ? "scrollLeft" : "scrollTop";
207
+ if (viewport) {
208
+ let prevScrollPos = viewport[scrollDirection];
209
+ const handleScroll = () => {
210
+ const scrollPos = viewport[scrollDirection];
211
+ if (prevScrollPos !== scrollPos) {
212
+ send("SCROLL");
213
+ debounceScrollEnd();
214
+ }
215
+ prevScrollPos = scrollPos;
216
+ };
217
+ viewport.addEventListener("scroll", handleScroll);
218
+ return () => viewport.removeEventListener("scroll", handleScroll);
219
+ }
220
+ }, [
221
+ context.viewport,
222
+ isHorizontal,
223
+ send,
224
+ debounceScrollEnd
225
+ ]);
226
+ return /* @__PURE__ */ jsx(Presence, {
227
+ present: forceMount || state !== "hidden",
228
+ children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
229
+ "data-state": state === "hidden" ? "hidden" : "visible",
230
+ ...scrollbarProps,
231
+ ref: forwardedRef,
232
+ onPointerEnter: composeEventHandlers(props.onPointerEnter, () => send("POINTER_ENTER")),
233
+ onPointerLeave: composeEventHandlers(props.onPointerLeave, () => send("POINTER_LEAVE"))
234
+ })
235
+ });
236
+ });
237
+ var ScrollAreaScrollbarAuto = /* @__PURE__ */ React.forwardRef(function ScrollAreaScrollbarAuto(props, forwardedRef) {
238
+ const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
239
+ const { forceMount, ...scrollbarProps } = props;
240
+ const [visible, setVisible] = React.useState(false);
241
+ const isHorizontal = props.orientation === "horizontal";
242
+ const handleResize = useDebounceCallback(() => {
243
+ if (context.viewport) {
244
+ const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;
245
+ const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;
246
+ setVisible(isHorizontal ? isOverflowX : isOverflowY);
247
+ }
248
+ }, 10);
249
+ useResizeObserver(context.viewport, handleResize);
250
+ useResizeObserver(context.content, handleResize);
251
+ return /* @__PURE__ */ jsx(Presence, {
252
+ present: forceMount || visible,
253
+ children: /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, {
254
+ "data-state": visible ? "visible" : "hidden",
255
+ ...scrollbarProps,
256
+ ref: forwardedRef
257
+ })
258
+ });
259
+ });
260
+ var ScrollAreaScrollbarVisible = /* @__PURE__ */ React.forwardRef(function ScrollAreaScrollbarVisible(props, forwardedRef) {
261
+ const { orientation = "vertical", ...scrollbarProps } = props;
262
+ const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
263
+ const thumbRef = React.useRef(null);
264
+ const pointerOffsetRef = React.useRef(0);
265
+ const [sizes, setSizes] = React.useState({
266
+ content: 0,
267
+ viewport: 0,
268
+ scrollbar: {
269
+ size: 0,
270
+ paddingStart: 0,
271
+ paddingEnd: 0
272
+ }
273
+ });
274
+ const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);
275
+ const commonProps = {
276
+ ...scrollbarProps,
277
+ sizes,
278
+ onSizesChange: setSizes,
279
+ hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),
280
+ onThumbChange: (thumb) => thumbRef.current = thumb,
281
+ onThumbPointerUp: () => pointerOffsetRef.current = 0,
282
+ onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos
283
+ };
284
+ function getScrollPosition(pointerPos, dir) {
285
+ return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);
286
+ }
287
+ if (orientation === "horizontal") return /* @__PURE__ */ jsx(ScrollAreaScrollbarX, {
288
+ ...commonProps,
289
+ ref: forwardedRef,
290
+ onThumbPositionChange: () => {
291
+ if (context.viewport && thumbRef.current) {
292
+ const scrollPos = context.viewport.scrollLeft;
293
+ const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);
294
+ thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;
295
+ }
296
+ },
297
+ onWheelScroll: (scrollPos) => {
298
+ if (context.viewport) context.viewport.scrollLeft = scrollPos;
299
+ },
300
+ onDragScroll: (pointerPos) => {
301
+ if (context.viewport) context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);
302
+ }
303
+ });
304
+ if (orientation === "vertical") return /* @__PURE__ */ jsx(ScrollAreaScrollbarY, {
305
+ ...commonProps,
306
+ ref: forwardedRef,
307
+ onThumbPositionChange: () => {
308
+ if (context.viewport && thumbRef.current) {
309
+ const scrollPos = context.viewport.scrollTop;
310
+ const offset = getThumbOffsetFromScroll(scrollPos, sizes);
311
+ thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;
312
+ }
313
+ },
314
+ onWheelScroll: (scrollPos) => {
315
+ if (context.viewport) context.viewport.scrollTop = scrollPos;
316
+ },
317
+ onDragScroll: (pointerPos) => {
318
+ if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);
319
+ }
320
+ });
321
+ return null;
322
+ });
323
+ var ScrollAreaScrollbarX = /* @__PURE__ */ React.forwardRef(function ScrollAreaScrollbarX(props, forwardedRef) {
324
+ const { sizes, onSizesChange, ...scrollbarProps } = props;
325
+ const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
326
+ const [computedStyle, setComputedStyle] = React.useState();
327
+ const ref = React.useRef(null);
328
+ const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarXChange);
329
+ React.useEffect(() => {
330
+ if (ref.current) setComputedStyle(getComputedStyle(ref.current));
331
+ }, [ref]);
332
+ return /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
333
+ "data-orientation": "horizontal",
334
+ ...scrollbarProps,
335
+ ref: composeRefs,
336
+ sizes,
337
+ style: {
338
+ bottom: 0,
339
+ left: context.dir === "rtl" ? "var(--radix-scroll-area-corner-width)" : 0,
340
+ right: context.dir === "ltr" ? "var(--radix-scroll-area-corner-width)" : 0,
341
+ "--radix-scroll-area-thumb-width": getThumbSize(sizes) + "px",
342
+ ...props.style
343
+ },
344
+ onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.x),
345
+ onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.x),
346
+ onWheelScroll: (event, maxScrollPos) => {
347
+ if (context.viewport) {
348
+ const scrollPos = context.viewport.scrollLeft + event.deltaX;
349
+ props.onWheelScroll(scrollPos);
350
+ if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) event.preventDefault();
351
+ }
352
+ },
353
+ onResize: () => {
354
+ if (ref.current && context.viewport && computedStyle) onSizesChange({
355
+ content: context.viewport.scrollWidth,
356
+ viewport: context.viewport.offsetWidth,
357
+ scrollbar: {
358
+ size: ref.current.clientWidth,
359
+ paddingStart: toInt(computedStyle.paddingLeft),
360
+ paddingEnd: toInt(computedStyle.paddingRight)
361
+ }
362
+ });
363
+ }
364
+ });
365
+ });
366
+ var ScrollAreaScrollbarY = /* @__PURE__ */ React.forwardRef(function ScrollAreaScrollbarY(props, forwardedRef) {
367
+ const { sizes, onSizesChange, ...scrollbarProps } = props;
368
+ const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
369
+ const [computedStyle, setComputedStyle] = React.useState();
370
+ const ref = React.useRef(null);
371
+ const composeRefs = useComposedRefs(forwardedRef, ref, context.onScrollbarYChange);
372
+ React.useEffect(() => {
373
+ if (ref.current) setComputedStyle(getComputedStyle(ref.current));
374
+ }, [ref]);
375
+ return /* @__PURE__ */ jsx(ScrollAreaScrollbarImpl, {
376
+ "data-orientation": "vertical",
377
+ ...scrollbarProps,
378
+ ref: composeRefs,
379
+ sizes,
380
+ style: {
381
+ top: 0,
382
+ right: context.dir === "ltr" ? 0 : void 0,
383
+ left: context.dir === "rtl" ? 0 : void 0,
384
+ bottom: "var(--radix-scroll-area-corner-height)",
385
+ "--radix-scroll-area-thumb-height": getThumbSize(sizes) + "px",
386
+ ...props.style
387
+ },
388
+ onThumbPointerDown: (pointerPos) => props.onThumbPointerDown(pointerPos.y),
389
+ onDragScroll: (pointerPos) => props.onDragScroll(pointerPos.y),
390
+ onWheelScroll: (event, maxScrollPos) => {
391
+ if (context.viewport) {
392
+ const scrollPos = context.viewport.scrollTop + event.deltaY;
393
+ props.onWheelScroll(scrollPos);
394
+ if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) event.preventDefault();
395
+ }
396
+ },
397
+ onResize: () => {
398
+ if (ref.current && context.viewport && computedStyle) onSizesChange({
399
+ content: context.viewport.scrollHeight,
400
+ viewport: context.viewport.offsetHeight,
401
+ scrollbar: {
402
+ size: ref.current.clientHeight,
403
+ paddingStart: toInt(computedStyle.paddingTop),
404
+ paddingEnd: toInt(computedStyle.paddingBottom)
405
+ }
406
+ });
407
+ }
408
+ });
409
+ });
410
+ var [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);
411
+ var ScrollAreaScrollbarImpl = /* @__PURE__ */ React.forwardRef(function ScrollAreaScrollbarImpl(props, forwardedRef) {
412
+ const { __scopeScrollArea, sizes, hasThumb, onThumbChange, onThumbPointerUp, onThumbPointerDown, onThumbPositionChange, onDragScroll, onWheelScroll, onResize, ...scrollbarProps } = props;
413
+ const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);
414
+ const [scrollbar, setScrollbar] = React.useState(null);
415
+ const composeRefs = useComposedRefs(forwardedRef, setScrollbar);
416
+ const rectRef = React.useRef(null);
417
+ const prevWebkitUserSelectRef = React.useRef("");
418
+ const viewport = context.viewport;
419
+ const maxScrollPos = sizes.content - sizes.viewport;
420
+ const handleWheelScroll = useCallbackRef(onWheelScroll);
421
+ const handleThumbPositionChange = useCallbackRef(onThumbPositionChange);
422
+ const handleResize = useDebounceCallback(onResize, 10);
423
+ function handleDragScroll(event) {
424
+ if (rectRef.current) {
425
+ const x = event.clientX - rectRef.current.left;
426
+ const y = event.clientY - rectRef.current.top;
427
+ onDragScroll({
428
+ x,
429
+ y
430
+ });
431
+ }
432
+ }
433
+ /**
434
+ * We bind wheel event imperatively so we can switch off passive
435
+ * mode for document wheel event to allow it to be prevented
436
+ */
437
+ React.useEffect(() => {
438
+ const handleWheel = (event) => {
439
+ const element = event.target;
440
+ if (scrollbar?.contains(element)) handleWheelScroll(event, maxScrollPos);
441
+ };
442
+ document.addEventListener("wheel", handleWheel, { passive: false });
443
+ return () => document.removeEventListener("wheel", handleWheel, { passive: false });
444
+ }, [
445
+ viewport,
446
+ scrollbar,
447
+ maxScrollPos,
448
+ handleWheelScroll
449
+ ]);
450
+ /**
451
+ * Update thumb position on sizes change
452
+ */
453
+ React.useEffect(handleThumbPositionChange, [sizes, handleThumbPositionChange]);
454
+ useResizeObserver(scrollbar, handleResize);
455
+ useResizeObserver(context.content, handleResize);
456
+ return /* @__PURE__ */ jsx(ScrollbarProvider, {
457
+ scope: __scopeScrollArea,
458
+ scrollbar,
459
+ hasThumb,
460
+ onThumbChange: useCallbackRef(onThumbChange),
461
+ onThumbPointerUp: useCallbackRef(onThumbPointerUp),
462
+ onThumbPositionChange: handleThumbPositionChange,
463
+ onThumbPointerDown: useCallbackRef(onThumbPointerDown),
464
+ children: /* @__PURE__ */ jsx(Primitive.div, {
465
+ ...scrollbarProps,
466
+ ref: composeRefs,
467
+ style: {
468
+ position: "absolute",
469
+ ...scrollbarProps.style
470
+ },
471
+ onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {
472
+ if (event.button === 0) {
473
+ event.target.setPointerCapture(event.pointerId);
474
+ rectRef.current = scrollbar.getBoundingClientRect();
475
+ prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;
476
+ document.body.style.webkitUserSelect = "none";
477
+ if (context.viewport) context.viewport.style.scrollBehavior = "auto";
478
+ handleDragScroll(event);
479
+ }
480
+ }),
481
+ onPointerMove: composeEventHandlers(props.onPointerMove, handleDragScroll),
482
+ onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {
483
+ const element = event.target;
484
+ if (element.hasPointerCapture(event.pointerId)) element.releasePointerCapture(event.pointerId);
485
+ document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;
486
+ if (context.viewport) context.viewport.style.scrollBehavior = "";
487
+ rectRef.current = null;
488
+ })
489
+ })
490
+ });
491
+ });
492
+ var THUMB_NAME = "ScrollAreaThumb";
493
+ var ScrollAreaThumb = /* @__PURE__ */ React.forwardRef(function ScrollAreaThumb(props, forwardedRef) {
494
+ const { forceMount, ...thumbProps } = props;
495
+ const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);
496
+ return /* @__PURE__ */ jsx(Presence, {
497
+ present: forceMount || scrollbarContext.hasThumb,
498
+ children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, {
499
+ ref: forwardedRef,
500
+ ...thumbProps
501
+ })
502
+ });
503
+ });
504
+ var ScrollAreaThumbImpl = /* @__PURE__ */ React.forwardRef(function ScrollAreaThumbImpl(props, forwardedRef) {
505
+ const { __scopeScrollArea, style, ...thumbProps } = props;
506
+ const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);
507
+ const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);
508
+ const { onThumbPositionChange } = scrollbarContext;
509
+ const composedRef = useComposedRefs(forwardedRef, scrollbarContext.onThumbChange);
510
+ const removeUnlinkedScrollListenerRef = React.useRef(void 0);
511
+ const debounceScrollEnd = useDebounceCallback(() => {
512
+ if (removeUnlinkedScrollListenerRef.current) {
513
+ removeUnlinkedScrollListenerRef.current();
514
+ removeUnlinkedScrollListenerRef.current = void 0;
515
+ }
516
+ }, 100);
517
+ React.useEffect(() => {
518
+ const viewport = scrollAreaContext.viewport;
519
+ if (viewport) {
520
+ /**
521
+ * We only bind to native scroll event so we know when scroll starts and ends.
522
+ * When scroll starts we start a requestAnimationFrame loop that checks for
523
+ * changes to scroll position. That rAF loop triggers our thumb position change
524
+ * when relevant to avoid scroll-linked effects. We cancel the loop when scroll ends.
525
+ * https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_effects
526
+ */
527
+ const handleScroll = () => {
528
+ debounceScrollEnd();
529
+ if (!removeUnlinkedScrollListenerRef.current) {
530
+ const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);
531
+ removeUnlinkedScrollListenerRef.current = listener;
532
+ onThumbPositionChange();
533
+ }
534
+ };
535
+ onThumbPositionChange();
536
+ viewport.addEventListener("scroll", handleScroll);
537
+ return () => viewport.removeEventListener("scroll", handleScroll);
538
+ }
539
+ }, [
540
+ scrollAreaContext.viewport,
541
+ debounceScrollEnd,
542
+ onThumbPositionChange
543
+ ]);
544
+ return /* @__PURE__ */ jsx(Primitive.div, {
545
+ "data-state": scrollbarContext.hasThumb ? "visible" : "hidden",
546
+ ...thumbProps,
547
+ ref: composedRef,
548
+ style: {
549
+ width: "var(--radix-scroll-area-thumb-width)",
550
+ height: "var(--radix-scroll-area-thumb-height)",
551
+ ...style
552
+ },
553
+ onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, (event) => {
554
+ const thumbRect = event.target.getBoundingClientRect();
555
+ const x = event.clientX - thumbRect.left;
556
+ const y = event.clientY - thumbRect.top;
557
+ scrollbarContext.onThumbPointerDown({
558
+ x,
559
+ y
560
+ });
561
+ }),
562
+ onPointerUp: composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)
563
+ });
564
+ });
565
+ var CORNER_NAME = "ScrollAreaCorner";
566
+ var ScrollAreaCorner = /* @__PURE__ */ React.forwardRef(function ScrollAreaCorner(props, forwardedRef) {
567
+ const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);
568
+ const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);
569
+ return context.type !== "scroll" && hasBothScrollbarsVisible ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, {
570
+ ...props,
571
+ ref: forwardedRef
572
+ }) : null;
573
+ });
574
+ var ScrollAreaCornerImpl = /* @__PURE__ */ React.forwardRef(function ScrollAreaCornerImpl(props, forwardedRef) {
575
+ const { __scopeScrollArea, ...cornerProps } = props;
576
+ const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);
577
+ const [width, setWidth] = React.useState(0);
578
+ const [height, setHeight] = React.useState(0);
579
+ const hasSize = Boolean(width && height);
580
+ const { onCornerWidthChange, onCornerHeightChange } = context;
581
+ useResizeObserver(context.scrollbarX, () => {
582
+ const height = context.scrollbarX?.offsetHeight || 0;
583
+ context.onCornerHeightChange(height);
584
+ setHeight(height);
585
+ });
586
+ useResizeObserver(context.scrollbarY, () => {
587
+ const width = context.scrollbarY?.offsetWidth || 0;
588
+ context.onCornerWidthChange(width);
589
+ setWidth(width);
590
+ });
591
+ React.useEffect(() => {
592
+ return () => {
593
+ onCornerWidthChange(0);
594
+ onCornerHeightChange(0);
595
+ };
596
+ }, [onCornerWidthChange, onCornerHeightChange]);
597
+ return hasSize ? /* @__PURE__ */ jsx(Primitive.div, {
598
+ ...cornerProps,
599
+ ref: forwardedRef,
600
+ style: {
601
+ width,
602
+ height,
603
+ position: "absolute",
604
+ right: context.dir === "ltr" ? 0 : void 0,
605
+ left: context.dir === "rtl" ? 0 : void 0,
606
+ bottom: 0,
607
+ ...props.style
608
+ }
609
+ }) : null;
610
+ });
611
+ function toInt(value) {
612
+ return value ? parseInt(value, 10) : 0;
613
+ }
614
+ function getThumbRatio(viewportSize, contentSize) {
615
+ const ratio = viewportSize / contentSize;
616
+ return isNaN(ratio) ? 0 : ratio;
617
+ }
618
+ function getThumbSize(sizes) {
619
+ const ratio = getThumbRatio(sizes.viewport, sizes.content);
620
+ const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
621
+ const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;
622
+ return Math.max(thumbSize, 18);
623
+ }
624
+ function getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = "ltr") {
625
+ const thumbSizePx = getThumbSize(sizes);
626
+ const thumbCenter = thumbSizePx / 2;
627
+ const offset = pointerOffset || thumbCenter;
628
+ const thumbOffsetFromEnd = thumbSizePx - offset;
629
+ const minPointerPos = sizes.scrollbar.paddingStart + offset;
630
+ const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;
631
+ const maxScrollPos = sizes.content - sizes.viewport;
632
+ const scrollRange = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
633
+ return linearScale([minPointerPos, maxPointerPos], scrollRange)(pointerPos);
634
+ }
635
+ function getThumbOffsetFromScroll(scrollPos, sizes, dir = "ltr") {
636
+ const thumbSizePx = getThumbSize(sizes);
637
+ const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
638
+ const scrollbar = sizes.scrollbar.size - scrollbarPadding;
639
+ const maxScrollPos = sizes.content - sizes.viewport;
640
+ const maxThumbPos = scrollbar - thumbSizePx;
641
+ const scrollClampRange = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
642
+ const scrollWithoutMomentum = clamp(scrollPos, scrollClampRange);
643
+ return linearScale([0, maxScrollPos], [0, maxThumbPos])(scrollWithoutMomentum);
644
+ }
645
+ function linearScale(input, output) {
646
+ return (value) => {
647
+ if (input[0] === input[1] || output[0] === output[1]) return output[0];
648
+ const ratio = (output[1] - output[0]) / (input[1] - input[0]);
649
+ return output[0] + ratio * (value - input[0]);
650
+ };
651
+ }
652
+ function isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {
653
+ return scrollPos > 0 && scrollPos < maxScrollPos;
654
+ }
655
+ var addUnlinkedScrollListener = (node, handler = () => {}) => {
656
+ let prevPosition = {
657
+ left: node.scrollLeft,
658
+ top: node.scrollTop
659
+ };
660
+ let rAF = 0;
661
+ (function loop() {
662
+ const position = {
663
+ left: node.scrollLeft,
664
+ top: node.scrollTop
665
+ };
666
+ const isHorizontalScroll = prevPosition.left !== position.left;
667
+ const isVerticalScroll = prevPosition.top !== position.top;
668
+ if (isHorizontalScroll || isVerticalScroll) handler();
669
+ prevPosition = position;
670
+ rAF = window.requestAnimationFrame(loop);
671
+ })();
672
+ return () => window.cancelAnimationFrame(rAF);
673
+ };
674
+ function useDebounceCallback(callback, delay) {
675
+ const handleCallback = useCallbackRef(callback);
676
+ const debounceTimerRef = React.useRef(0);
677
+ React.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);
678
+ return React.useCallback(() => {
679
+ window.clearTimeout(debounceTimerRef.current);
680
+ debounceTimerRef.current = window.setTimeout(handleCallback, delay);
681
+ }, [handleCallback, delay]);
682
+ }
683
+ function useResizeObserver(element, onResize) {
684
+ const handleResize = useCallbackRef(onResize);
685
+ useLayoutEffect(() => {
686
+ let rAF = 0;
687
+ if (element) {
688
+ /**
689
+ * Resize Observer will throw an often benign error that says `ResizeObserver loop
690
+ * completed with undelivered notifications`. This means that ResizeObserver was not
691
+ * able to deliver all observations within a single animation frame, so we use
692
+ * `requestAnimationFrame` to ensure we don't deliver unnecessary observations.
693
+ * Further reading: https://github.com/WICG/resize-observer/issues/38
694
+ */
695
+ const resizeObserver = new ResizeObserver(() => {
696
+ cancelAnimationFrame(rAF);
697
+ rAF = window.requestAnimationFrame(handleResize);
698
+ });
699
+ resizeObserver.observe(element);
700
+ return () => {
701
+ window.cancelAnimationFrame(rAF);
702
+ resizeObserver.unobserve(element);
703
+ };
704
+ }
705
+ }, [element, handleResize]);
706
+ }
707
+ var Root = ScrollArea;
708
+ var Viewport = ScrollAreaViewport;
709
+ var Corner = ScrollAreaCorner;
710
+ //#endregion
711
+ export { Corner, Root, ScrollArea, ScrollAreaCorner, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, Viewport };
712
+
713
+ //# sourceMappingURL=scroll-area.js.map