@choice-ui/react 1.4.3 → 1.4.5

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/dist/components/alert-dialog/dist/index.d.ts +20 -41
  2. package/dist/components/alert-dialog/dist/index.js +497 -0
  3. package/dist/components/alert-dialog/src/alert-dialog.js +1 -1
  4. package/dist/components/alert-dialog/src/hooks/use-alert-dialog.d.ts +1 -1
  5. package/dist/components/alert-dialog/src/index.d.ts +4 -5
  6. package/dist/components/alert-dialog/src/types.d.ts +11 -11
  7. package/dist/components/avatar/dist/index.js +4 -4
  8. package/dist/components/avatar/src/avatar.js +4 -4
  9. package/dist/components/badge/src/badge.js +2 -2
  10. package/dist/components/badge/src/index.d.ts +2 -1
  11. package/dist/components/button/dist/index.js +4 -4
  12. package/dist/components/button/src/button.js +4 -4
  13. package/dist/components/calendar/dist/index.d.ts +296 -296
  14. package/dist/components/calendar/dist/index.js +57 -56
  15. package/dist/components/calendar/src/date-range-input/date-range-input.d.ts +5 -5
  16. package/dist/components/calendar/src/time-calendar/time-calendar.d.ts +3 -3
  17. package/dist/components/calendar/src/time-calendar/time-calendar.js +2 -2
  18. package/dist/components/calendar/src/time-input/time-input.d.ts +9 -9
  19. package/dist/components/calendar/src/time-input/time-input.js +4 -4
  20. package/dist/components/calendar/src/types.d.ts +165 -165
  21. package/dist/components/calendar/src/utils/constants.js +32 -31
  22. package/dist/components/calendar/src/utils/date-comparisons.d.ts +34 -34
  23. package/dist/components/calendar/src/utils/locale.d.ts +12 -12
  24. package/dist/components/calendar/src/utils/month.d.ts +3 -3
  25. package/dist/components/calendar/src/utils/month.js +1 -1
  26. package/dist/components/calendar/src/utils/parsers/month-names.js +3 -3
  27. package/dist/components/calendar/src/utils/parsers/numeric-utils.d.ts +20 -20
  28. package/dist/components/calendar/src/utils/parsers/numeric-utils.js +8 -8
  29. package/dist/components/calendar/src/utils/parsers/parsers.d.ts +17 -17
  30. package/dist/components/calendar/src/utils/parsers/parsers.js +2 -2
  31. package/dist/components/calendar/src/utils/parsers/prediction.d.ts +7 -7
  32. package/dist/components/calendar/src/utils/parsers/relative-dates.js +6 -6
  33. package/dist/components/calendar/src/utils/quarter.d.ts +13 -13
  34. package/dist/components/calendar/src/utils/quarter.js +6 -6
  35. package/dist/components/calendar/src/utils/time.d.ts +8 -8
  36. package/dist/components/calendar/src/utils/year.d.ts +3 -3
  37. package/dist/components/calendar/src/utils/year.js +3 -3
  38. package/dist/components/checkbox/dist/index.d.ts +1 -12
  39. package/dist/components/checkbox/dist/index.js +9 -9
  40. package/dist/components/checkbox/src/checkbox-label.js +2 -2
  41. package/dist/components/checkbox/src/checkbox.js +6 -5
  42. package/dist/components/checkbox/src/context.js +1 -1
  43. package/dist/components/checkbox/src/index.d.ts +0 -3
  44. package/dist/components/chip/dist/index.js +6 -6
  45. package/dist/components/chip/src/chip.js +6 -6
  46. package/dist/components/chip/src/index.d.ts +2 -1
  47. package/dist/components/chips-input/dist/index.js +270 -0
  48. package/dist/components/chips-input/src/index.d.ts +2 -1
  49. package/dist/components/code-block/dist/index.d.ts +14 -32
  50. package/dist/components/code-block/dist/index.js +211 -147
  51. package/dist/components/code-block/src/code-block.d.ts +8 -1
  52. package/dist/components/code-block/src/code-block.js +14 -3
  53. package/dist/components/code-block/src/components/code-block-code.js +31 -5
  54. package/dist/components/code-block/src/components/code-block-header.js +45 -10
  55. package/dist/components/code-block/src/index.d.ts +3 -9
  56. package/dist/components/combobox/dist/index.d.ts +21 -2
  57. package/dist/components/combobox/dist/index.js +16 -13
  58. package/dist/components/combobox/src/combobox-trigger.d.ts +1 -1
  59. package/dist/components/combobox/src/combobox-trigger.js +7 -4
  60. package/dist/components/combobox/src/combobox.d.ts +20 -1
  61. package/dist/components/combobox/src/combobox.js +10 -10
  62. package/dist/components/command/dist/index.d.ts +65 -4
  63. package/dist/components/command/src/command.js +6 -5
  64. package/dist/components/command/src/components/command-divider.d.ts +4 -1
  65. package/dist/components/command/src/components/command-group.d.ts +16 -1
  66. package/dist/components/command/src/components/command-group.js +56 -54
  67. package/dist/components/command/src/components/command-input.js +3 -3
  68. package/dist/components/command/src/components/command-item.d.ts +1 -1
  69. package/dist/components/command/src/components/command-item.js +117 -115
  70. package/dist/components/command/src/components/command-loading.d.ts +8 -0
  71. package/dist/components/command/src/components/command-loading.js +1 -1
  72. package/dist/components/command/src/context/create-command-context.js +1 -1
  73. package/dist/components/command/src/hooks/use-schedule-layout-effect.d.ts +1 -1
  74. package/dist/components/command/src/hooks/use-value.js +2 -2
  75. package/dist/components/command/src/index.d.ts +16 -8
  76. package/dist/components/command/src/tv.d.ts +30 -0
  77. package/dist/components/command/src/tv.js +10 -0
  78. package/dist/components/command/src/types.d.ts +8 -0
  79. package/dist/components/command/src/utils/constants.d.ts +1 -1
  80. package/dist/components/command/src/utils/constants.js +1 -1
  81. package/dist/components/command/src/utils/helpers.d.ts +0 -1
  82. package/dist/components/command/src/utils/helpers.js +1 -3
  83. package/dist/components/command/src/utils/index.d.ts +1 -0
  84. package/dist/components/comments/src/comment-input/components/comment-input-mention-popover.js +4 -2
  85. package/dist/components/comments/src/comments.js +1 -1
  86. package/dist/components/context-input/dist/index.d.ts +15 -340
  87. package/dist/components/context-input/src/components/mention-menu.d.ts +5 -4
  88. package/dist/components/context-input/src/components/mention-menu.js +19 -4
  89. package/dist/components/context-input/src/components/mention.d.ts +2 -2
  90. package/dist/components/context-input/src/components/slate-editor.js +4 -2
  91. package/dist/components/context-input/src/context-input.js +31 -16
  92. package/dist/components/context-input/src/extensions/with-mentions.d.ts +1 -1
  93. package/dist/components/context-input/src/extensions/with-mentions.js +10 -9
  94. package/dist/components/context-input/src/hooks/use-context-input.js +87 -46
  95. package/dist/components/context-input/src/hooks/use-mentions.d.ts +11 -10
  96. package/dist/components/context-input/src/hooks/use-mentions.js +147 -128
  97. package/dist/components/context-input/src/index.d.ts +2 -5
  98. package/dist/components/context-input/src/types.d.ts +12 -12
  99. package/dist/components/context-input/src/utils/mention-spacing.d.ts +16 -16
  100. package/dist/components/context-input/src/utils/mention-spacing.js +1 -27
  101. package/dist/components/context-input/src/utils/slate-converters.d.ts +6 -6
  102. package/dist/components/context-input/src/utils/slate-converters.js +3 -69
  103. package/dist/components/context-input/src/utils/text-extraction.js +7 -1
  104. package/dist/components/context-menu/src/context-menu.js +10 -4
  105. package/dist/components/dialog/dist/index.js +1 -2
  106. package/dist/components/dialog/src/dialog.js +0 -1
  107. package/dist/components/dialog/src/hooks/use-floating-dialog.js +1 -1
  108. package/dist/components/dialog/src/index.d.ts +3 -2
  109. package/dist/components/dropdown/dist/index.d.ts +1 -2
  110. package/dist/components/dropdown/dist/index.js +23 -8
  111. package/dist/components/dropdown/src/dropdown.d.ts +1 -2
  112. package/dist/components/dropdown/src/dropdown.js +23 -8
  113. package/dist/components/emoji-picker/dist/index.d.ts +33 -1
  114. package/dist/components/emoji-picker/dist/index.js +3 -1
  115. package/dist/components/emoji-picker/src/emoji-picker.d.ts +1 -1
  116. package/dist/components/emoji-picker/src/emoji-picker.js +3 -1
  117. package/dist/components/emoji-picker/src/index.d.ts +3 -1
  118. package/dist/components/form/dist/index.d.ts +93 -98
  119. package/dist/components/form/src/adapters/base-adapter.d.ts +3 -3
  120. package/dist/components/form/src/adapters/checkbox-adapter.d.ts +1 -1
  121. package/dist/components/form/src/adapters/chips-input-adapter.d.ts +9 -0
  122. package/dist/components/form/src/adapters/chips-input-adapter.js +38 -0
  123. package/dist/components/form/src/adapters/index.d.ts +8 -7
  124. package/dist/components/form/src/adapters/input-adapter.d.ts +1 -1
  125. package/dist/components/form/src/adapters/multi-select-adapter.d.ts +1 -1
  126. package/dist/components/form/src/adapters/numeric-input-adapter.d.ts +1 -1
  127. package/dist/components/form/src/adapters/raido-group-adapter.d.ts +1 -7
  128. package/dist/components/form/src/adapters/range-adapter.d.ts +1 -7
  129. package/dist/components/form/src/adapters/segmented-adapter.d.ts +1 -7
  130. package/dist/components/form/src/adapters/select-adapter.d.ts +1 -1
  131. package/dist/components/form/src/adapters/switch-adapter.d.ts +1 -1
  132. package/dist/components/form/src/adapters/textarea-adapter.d.ts +1 -1
  133. package/dist/components/form/src/index.d.ts +18 -16
  134. package/dist/components/form/src/index.js +16 -13
  135. package/dist/components/form/src/types.d.ts +58 -51
  136. package/dist/components/hint/dist/index.d.ts +10 -54
  137. package/dist/components/hint/src/components/info-content.d.ts +3 -5
  138. package/dist/components/hint/src/components/info-content.js +14 -6
  139. package/dist/components/hint/src/components/info-trigger.d.ts +2 -3
  140. package/dist/components/hint/src/components/info-trigger.js +4 -2
  141. package/dist/components/hint/src/context/hint-context.d.ts +2 -0
  142. package/dist/components/hint/src/context/hint-context.js +1 -1
  143. package/dist/components/hint/src/hint.d.ts +7 -7
  144. package/dist/components/hint/src/hint.js +24 -29
  145. package/dist/components/hint/src/hooks/use-hint.d.ts +4 -2
  146. package/dist/components/hint/src/hooks/use-hint.js +12 -4
  147. package/dist/components/hint/src/index.d.ts +3 -3
  148. package/dist/components/hint/src/tv.d.ts +33 -0
  149. package/dist/components/hint/src/tv.js +11 -0
  150. package/dist/components/icon-button/dist/index.js +2 -2
  151. package/dist/components/icon-button/src/icon-button.js +2 -2
  152. package/dist/components/index.d.ts +3 -0
  153. package/dist/components/input/dist/index.js +4 -4
  154. package/dist/components/input/src/input.js +3 -3
  155. package/dist/components/input/src/tv.js +1 -1
  156. package/dist/components/kbd/dist/index.js +4 -4
  157. package/dist/components/kbd/src/kbd.js +4 -4
  158. package/dist/components/label/dist/index.js +3 -3
  159. package/dist/components/label/src/tv.js +3 -3
  160. package/dist/components/link-button/dist/index.js +3 -3
  161. package/dist/components/link-button/src/link-button.js +3 -3
  162. package/dist/components/list/src/components/list-content.js +2 -2
  163. package/dist/components/list/src/components/list-divider.js +3 -3
  164. package/dist/components/list/src/components/list-item.js +5 -5
  165. package/dist/components/list/src/components/list-label.js +2 -2
  166. package/dist/components/list/src/components/list-sub-trigger.js +4 -4
  167. package/dist/components/list/src/list.js +2 -2
  168. package/dist/components/md-input/dist/index.d.ts +8 -104
  169. package/dist/components/md-input/src/components/extensions/md-input-mention.d.ts +6 -4
  170. package/dist/components/md-input/src/components/extensions/md-input-mention.js +23 -6
  171. package/dist/components/md-input/src/components/md-input-container.js +1 -0
  172. package/dist/components/md-input/src/components/md-input-editor.js +4 -1
  173. package/dist/components/md-input/src/components/md-input-footer.js +5 -1
  174. package/dist/components/md-input/src/components/toolbar/default-actions.d.ts +2 -2
  175. package/dist/components/md-input/src/components/toolbar/toolbar-button.d.ts +1 -0
  176. package/dist/components/md-input/src/components/toolbar/toolbar-button.js +1 -7
  177. package/dist/components/md-input/src/components/toolbar/toolbar.d.ts +2 -2
  178. package/dist/components/md-input/src/hooks/use-markdown-mentions.d.ts +5 -4
  179. package/dist/components/md-input/src/hooks/use-markdown-mentions.js +31 -4
  180. package/dist/components/md-input/src/index.d.ts +1 -4
  181. package/dist/components/md-input/src/md-input.js +18 -14
  182. package/dist/components/md-input/src/tv.d.ts +3 -0
  183. package/dist/components/md-input/src/tv.js +2 -1
  184. package/dist/components/md-input/src/types.d.ts +18 -16
  185. package/dist/components/md-render/dist/index.d.ts +1 -4
  186. package/dist/components/md-render/dist/index.js +8 -9
  187. package/dist/components/md-render/src/components/markdown-components.js +3 -3
  188. package/dist/components/md-render/src/index.d.ts +0 -1
  189. package/dist/components/md-render/src/md-render.js +5 -4
  190. package/dist/components/md-render/src/tv.js +1 -1
  191. package/dist/components/menubar/dist/index.d.ts +50 -0
  192. package/dist/components/menubar/src/components/index.d.ts +3 -0
  193. package/dist/components/menubar/src/components/menubar-divider.d.ts +8 -0
  194. package/dist/components/menubar/src/components/menubar-divider.js +24 -0
  195. package/dist/components/menubar/src/components/menubar-item.d.ts +8 -0
  196. package/dist/components/menubar/src/components/menubar-item.js +195 -0
  197. package/dist/components/menubar/src/components/menubar-trigger.d.ts +8 -0
  198. package/dist/components/menubar/src/components/menubar-trigger.js +45 -0
  199. package/dist/components/menubar/src/context/index.d.ts +1 -0
  200. package/dist/components/menubar/src/context/menubar-context.d.ts +34 -0
  201. package/dist/components/menubar/src/context/menubar-context.js +13 -0
  202. package/dist/components/menubar/src/index.d.ts +3 -0
  203. package/dist/components/menubar/src/menubar.d.ts +22 -0
  204. package/dist/components/menubar/src/menubar.js +177 -0
  205. package/dist/components/menubar/src/tv.d.ts +108 -0
  206. package/dist/components/menubar/src/tv.js +72 -0
  207. package/dist/components/menubar/tsup.config.d.ts +2 -0
  208. package/dist/components/menus/dist/index.d.ts +144 -143
  209. package/dist/components/menus/dist/index.js +50 -49
  210. package/dist/components/menus/src/components/menu-button.js +2 -2
  211. package/dist/components/menus/src/components/menu-checkbox.d.ts +1 -2
  212. package/dist/components/menus/src/components/menu-checkbox.js +2 -2
  213. package/dist/components/menus/src/components/menu-divider.js +3 -3
  214. package/dist/components/menus/src/components/menu-item.js +5 -5
  215. package/dist/components/menus/src/components/menu-label.js +2 -2
  216. package/dist/components/menus/src/components/menu-scroll-arrow.d.ts +2 -2
  217. package/dist/components/menus/src/components/menu-scroll-arrow.js +13 -3
  218. package/dist/components/menus/src/components/menu-search.js +3 -3
  219. package/dist/components/menus/src/components/menu-trigger.js +4 -4
  220. package/dist/components/menus/src/context/menu-context-item.d.ts +6 -6
  221. package/dist/components/menus/src/context/menu-context-item.js +2 -2
  222. package/dist/components/menus/src/context/menu-context-sub-trigger.js +4 -19
  223. package/dist/components/menus/src/context/menu-context.d.ts +2 -2
  224. package/dist/components/menus/src/hooks/use-menu-base-refs.d.ts +12 -12
  225. package/dist/components/menus/src/hooks/use-menu-children.d.ts +16 -16
  226. package/dist/components/menus/src/hooks/use-menu-floating.d.ts +22 -22
  227. package/dist/components/menus/src/hooks/use-menu-refs.d.ts +8 -8
  228. package/dist/components/menus/src/hooks/use-menu-refs.js +2 -2
  229. package/dist/components/menus/src/hooks/use-menu-scroll-height.d.ts +11 -11
  230. package/dist/components/menus/src/hooks/use-menu-scroll.d.ts +18 -18
  231. package/dist/components/menus/src/hooks/use-menu-selection.d.ts +21 -21
  232. package/dist/components/menus/src/hooks/use-menu-state.d.ts +11 -11
  233. package/dist/components/menus/src/hooks/use-menu-state.js +4 -4
  234. package/dist/components/menus/src/hooks/use-menu-touch.d.ts +11 -11
  235. package/dist/components/menus/src/hooks/use-menu-tree.d.ts +15 -15
  236. package/dist/components/menus/src/index.d.ts +5 -0
  237. package/dist/components/menus/src/menus.js +2 -2
  238. package/dist/components/menus/src/tv.d.ts +15 -0
  239. package/dist/components/menus/src/tv.js +8 -2
  240. package/dist/components/modal/dist/index.d.ts +3 -1
  241. package/dist/components/modal/dist/index.js +18 -11
  242. package/dist/components/modal/src/components/modal-content.js +2 -2
  243. package/dist/components/modal/src/components/modal-footer.js +2 -2
  244. package/dist/components/modal/src/components/modal-header.d.ts +3 -1
  245. package/dist/components/modal/src/components/modal-header.js +12 -5
  246. package/dist/components/modal/src/modal.js +2 -2
  247. package/dist/components/multi-select/dist/index.js +13 -11
  248. package/dist/components/multi-select/src/components/multi-select-trigger.js +8 -8
  249. package/dist/components/multi-select/src/multi-select.js +5 -3
  250. package/dist/components/numeric-input/dist/index.d.ts +10 -117
  251. package/dist/components/numeric-input/dist/index.js +18 -24
  252. package/dist/components/numeric-input/src/components/numeric-input-element.js +2 -2
  253. package/dist/components/numeric-input/src/components/numeric-input-menu-trigger.d.ts +1 -1
  254. package/dist/components/numeric-input/src/components/numeric-input-menu-trigger.js +2 -2
  255. package/dist/components/numeric-input/src/components/numeric-input-variable.d.ts +1 -2
  256. package/dist/components/numeric-input/src/components/numeric-input-variable.js +3 -3
  257. package/dist/components/numeric-input/src/hooks/use-input-interactions.d.ts +3 -3
  258. package/dist/components/numeric-input/src/hooks/use-numeric-input.d.ts +3 -3
  259. package/dist/components/numeric-input/src/hooks/use-numeric-value-processing.d.ts +3 -3
  260. package/dist/components/numeric-input/src/hooks/use-step-calculation.d.ts +6 -6
  261. package/dist/components/numeric-input/src/index.d.ts +5 -4
  262. package/dist/components/numeric-input/src/numeric-input.js +9 -9
  263. package/dist/components/numeric-input/src/utils/error-handler.d.ts +8 -8
  264. package/dist/components/numeric-input/src/utils/expression-evaluator.d.ts +11 -11
  265. package/dist/components/numeric-input/src/utils/input-parser.d.ts +8 -8
  266. package/dist/components/numeric-input/src/utils/numeric-value-processor.d.ts +6 -6
  267. package/dist/components/numeric-input/src/utils/pattern-parser.d.ts +7 -7
  268. package/dist/components/numeric-input/src/utils/value-comparator.d.ts +16 -16
  269. package/dist/components/numeric-input/src/utils/value-processor.d.ts +14 -14
  270. package/dist/components/pagination/src/components/pagination-items-per-page.js +1 -1
  271. package/dist/components/pagination/src/components/pagination-navigation.js +5 -5
  272. package/dist/components/pagination/src/components/pagination-root.js +3 -3
  273. package/dist/components/pagination/src/components/pagination-spinner.js +20 -19
  274. package/dist/components/pagination/src/context/index.d.ts +1 -0
  275. package/dist/components/popover/dist/index.d.ts +2 -4
  276. package/dist/components/popover/dist/index.js +25 -33
  277. package/dist/components/popover/src/components/popover-header.js +1 -1
  278. package/dist/components/popover/src/hooks/use-drag.d.ts +3 -3
  279. package/dist/components/popover/src/hooks/use-floating-popover.d.ts +0 -2
  280. package/dist/components/popover/src/hooks/use-floating-popover.js +16 -13
  281. package/dist/components/popover/src/index.d.ts +2 -1
  282. package/dist/components/popover/src/popover.d.ts +1 -2
  283. package/dist/components/popover/src/popover.js +11 -21
  284. package/dist/components/progress/src/index.d.ts +4 -2
  285. package/dist/components/radio/dist/index.d.ts +1 -17
  286. package/dist/components/radio/dist/index.js +7 -10
  287. package/dist/components/radio/src/context.js +1 -1
  288. package/dist/components/radio/src/index.d.ts +0 -4
  289. package/dist/components/radio/src/radio-label.js +2 -2
  290. package/dist/components/radio/src/radio.js +4 -4
  291. package/dist/components/range/dist/index.js +16 -16
  292. package/dist/components/range/src/index.d.ts +4 -2
  293. package/dist/components/range/src/range-tuple.js +10 -10
  294. package/dist/components/range/src/range.js +6 -6
  295. package/dist/components/rich-input/dist/index.d.ts +12 -366
  296. package/dist/components/rich-input/src/components/rich-input-editable-component.d.ts +2 -2
  297. package/dist/components/rich-input/src/components/rich-input-viewport.d.ts +2 -2
  298. package/dist/components/rich-input/src/hooks/use-editor-config.d.ts +1 -1
  299. package/dist/components/rich-input/src/hooks/use-editor-effects.js +3 -0
  300. package/dist/components/rich-input/src/hooks/use-floating-ui.js +1 -1
  301. package/dist/components/rich-input/src/hooks/use-keyboard-shortcuts.d.ts +9 -9
  302. package/dist/components/rich-input/src/hooks/use-rich-input.d.ts +2 -2
  303. package/dist/components/rich-input/src/hooks/use-rich-input.js +40 -17
  304. package/dist/components/rich-input/src/hooks/use-selection-events.js +1 -2
  305. package/dist/components/rich-input/src/index.d.ts +3 -5
  306. package/dist/components/rich-input/src/rich-input-base.js +1 -1
  307. package/dist/components/rich-input/src/utils/custom-options.js +1 -1
  308. package/dist/components/rich-input/src/utils/editor-utils.js +1 -1
  309. package/dist/components/rich-input/src/utils/markdown-to-slate.d.ts +2 -2
  310. package/dist/components/rich-input/src/utils/slate-to-markdown.d.ts +1 -1
  311. package/dist/components/rich-input/src/utils/slate-to-markdown.js +9 -0
  312. package/dist/components/scroll-area/dist/index.d.ts +19 -19
  313. package/dist/components/scroll-area/dist/index.js +24 -24
  314. package/dist/components/scroll-area/src/components/scroll-area-corner.js +2 -2
  315. package/dist/components/scroll-area/src/components/scroll-area-root.js +3 -3
  316. package/dist/components/scroll-area/src/components/scroll-area-scrollbar.js +2 -2
  317. package/dist/components/scroll-area/src/components/scroll-area-thumb.js +2 -2
  318. package/dist/components/scroll-area/src/hooks/use-scroll-performance-monitor.d.ts +6 -6
  319. package/dist/components/scroll-area/src/hooks/use-scroll-performance-monitor.js +3 -3
  320. package/dist/components/scroll-area/src/hooks/use-scroll-state-and-visibility.d.ts +1 -1
  321. package/dist/components/scroll-area/src/hooks/use-scroll-state-and-visibility.js +3 -3
  322. package/dist/components/scroll-area/src/hooks/use-scrollbar.d.ts +2 -2
  323. package/dist/components/scroll-area/src/hooks/use-thumb.d.ts +2 -2
  324. package/dist/components/scroll-area/src/tv.d.ts +18 -18
  325. package/dist/components/scroll-area/src/tv.js +12 -12
  326. package/dist/components/scroll-area/src/types.d.ts +8 -8
  327. package/dist/components/scroll-area/src/utils/index.d.ts +3 -3
  328. package/dist/components/search-input/dist/index.js +3 -3
  329. package/dist/components/search-input/src/index.d.ts +2 -1
  330. package/dist/components/search-input/src/search-input.js +3 -3
  331. package/dist/components/segmented/dist/index.js +5 -5
  332. package/dist/components/segmented/src/segmented-item.js +3 -3
  333. package/dist/components/segmented/src/segmented.js +2 -2
  334. package/dist/components/select/dist/index.js +4 -4
  335. package/dist/components/select/src/select.js +4 -4
  336. package/dist/components/separator/dist/index.d.ts +26 -0
  337. package/dist/components/separator/src/index.d.ts +2 -0
  338. package/dist/components/separator/src/separator.d.ts +22 -0
  339. package/dist/components/separator/src/separator.js +33 -0
  340. package/dist/components/separator/src/tv.d.ts +76 -0
  341. package/dist/components/separator/src/tv.js +25 -0
  342. package/dist/components/separator/tsup.config.d.ts +2 -0
  343. package/dist/components/skeleton/dist/index.d.ts +1 -28
  344. package/dist/components/skeleton/src/context/skeleton-context.js +1 -1
  345. package/dist/components/skeleton/src/hooks/use-skeleton.d.ts +1 -2
  346. package/dist/components/skeleton/src/hooks/use-skeleton.js +1 -1
  347. package/dist/components/skeleton/src/index.d.ts +1 -3
  348. package/dist/components/skeleton/src/skeleton.d.ts +0 -13
  349. package/dist/components/skeleton/src/skeleton.js +4 -6
  350. package/dist/components/skeleton/src/tv.d.ts +18 -12
  351. package/dist/components/skeleton/src/tv.js +10 -6
  352. package/dist/components/slot/dist/index.d.ts +10 -10
  353. package/dist/components/slot/dist/index.js +4 -2
  354. package/dist/components/slot/src/slot.d.ts +12 -12
  355. package/dist/components/slot/src/slot.js +6 -3
  356. package/dist/components/stackflow/src/context.js +1 -1
  357. package/dist/components/stackflow/src/index.d.ts +2 -1
  358. package/dist/components/switch/dist/index.d.ts +2 -2
  359. package/dist/components/switch/dist/index.js +6 -7
  360. package/dist/components/switch/src/index.d.ts +2 -1
  361. package/dist/components/switch/src/switch.js +6 -6
  362. package/dist/components/table/dist/index.d.ts +679 -0
  363. package/dist/components/table/index.d.ts +1 -0
  364. package/dist/components/table/src/components/column-resizer.d.ts +8 -0
  365. package/dist/components/table/src/components/column-resizer.js +58 -0
  366. package/dist/components/table/src/components/drag-guide.d.ts +6 -0
  367. package/dist/components/table/src/components/drag-guide.js +64 -0
  368. package/dist/components/table/src/components/index.d.ts +12 -0
  369. package/dist/components/table/src/components/resize-guide.d.ts +5 -0
  370. package/dist/components/table/src/components/resize-guide.js +25 -0
  371. package/dist/components/table/src/components/table-body.d.ts +6 -0
  372. package/dist/components/table/src/components/table-body.js +335 -0
  373. package/dist/components/table/src/components/table-cell.d.ts +6 -0
  374. package/dist/components/table/src/components/table-cell.js +89 -0
  375. package/dist/components/table/src/components/table-column.d.ts +5 -0
  376. package/dist/components/table/src/components/table-column.js +269 -0
  377. package/dist/components/table/src/components/table-empty.d.ts +8 -0
  378. package/dist/components/table/src/components/table-empty.js +10 -0
  379. package/dist/components/table/src/components/table-footer.d.ts +7 -0
  380. package/dist/components/table/src/components/table-footer.js +15 -0
  381. package/dist/components/table/src/components/table-header.d.ts +3 -0
  382. package/dist/components/table/src/components/table-header.js +88 -0
  383. package/dist/components/table/src/components/table-root.d.ts +3 -0
  384. package/dist/components/table/src/components/table-root.js +317 -0
  385. package/dist/components/table/src/components/table-row.d.ts +23 -0
  386. package/dist/components/table/src/components/table-row.js +166 -0
  387. package/dist/components/table/src/components/table-value.d.ts +6 -0
  388. package/dist/components/table/src/components/table-value.js +8 -0
  389. package/dist/components/table/src/context.d.ts +121 -0
  390. package/dist/components/table/src/context.js +63 -0
  391. package/dist/components/table/src/hooks/index.d.ts +4 -0
  392. package/dist/components/table/src/hooks/use-column-order.d.ts +26 -0
  393. package/dist/components/table/src/hooks/use-column-order.js +95 -0
  394. package/dist/components/table/src/hooks/use-column-resize.d.ts +17 -0
  395. package/dist/components/table/src/hooks/use-column-resize.js +75 -0
  396. package/dist/components/table/src/hooks/use-consecutive-selection-style.d.ts +12 -0
  397. package/dist/components/table/src/hooks/use-consecutive-selection-style.js +28 -0
  398. package/dist/components/table/src/hooks/use-table.d.ts +35 -0
  399. package/dist/components/table/src/hooks/use-table.js +245 -0
  400. package/dist/components/table/src/index.d.ts +4 -0
  401. package/dist/components/table/src/table.d.ts +88 -0
  402. package/dist/components/table/src/table.js +24 -0
  403. package/dist/components/table/src/tv.d.ts +176 -0
  404. package/dist/components/table/src/tv.js +97 -0
  405. package/dist/components/table/src/types.d.ts +292 -0
  406. package/dist/components/table/tsup.config.d.ts +2 -0
  407. package/dist/components/tabs/dist/index.js +4 -3
  408. package/dist/components/tabs/src/tabs.d.ts +2 -2
  409. package/dist/components/tabs/src/tabs.js +5 -4
  410. package/dist/components/text-field/dist/index.d.ts +1 -1
  411. package/dist/components/text-field/dist/index.js +10 -10
  412. package/dist/components/text-field/src/components/field-addon.d.ts +1 -2
  413. package/dist/components/text-field/src/index.d.ts +3 -1
  414. package/dist/components/text-field/src/text-field.js +10 -10
  415. package/dist/components/textarea/dist/index.d.ts +33 -5
  416. package/dist/components/textarea/dist/index.js +32 -7
  417. package/dist/components/textarea/src/components/autosize/index.d.ts +6 -1
  418. package/dist/components/textarea/src/components/autosize/index.js +31 -6
  419. package/dist/components/textarea/src/textarea.js +1 -1
  420. package/dist/components/textarea/src/types.d.ts +33 -5
  421. package/dist/components/toggle-button/dist/index.d.ts +26 -2
  422. package/dist/components/toggle-button/src/context.d.ts +11 -0
  423. package/dist/components/toggle-button/src/context.js +13 -0
  424. package/dist/components/toggle-button/src/index.d.ts +2 -0
  425. package/dist/components/toggle-button/src/toggle-button.js +4 -4
  426. package/dist/components/toggle-button/src/toggle-group.d.ts +26 -0
  427. package/dist/components/toggle-button/src/toggle-group.js +156 -0
  428. package/dist/components/toggle-button/src/tv.d.ts +67 -3
  429. package/dist/components/toggle-button/src/tv.js +45 -14
  430. package/dist/components/tooltip/dist/index.d.ts +10 -43
  431. package/dist/components/tooltip/dist/index.js +35 -33
  432. package/dist/components/tooltip/src/components/tooltip-arrow.js +1 -1
  433. package/dist/components/tooltip/src/components/tooltip-content.js +5 -4
  434. package/dist/components/tooltip/src/context/index.d.ts +1 -0
  435. package/dist/components/tooltip/src/hooks/use-tooltip.js +3 -3
  436. package/dist/components/tooltip/src/index.d.ts +2 -4
  437. package/dist/components/tooltip/src/tooltip.d.ts +7 -1
  438. package/dist/components/tooltip/src/tooltip.js +6 -1
  439. package/dist/components/tooltip/src/tv.js +1 -1
  440. package/dist/components/virtualized-grid/dist/index.d.ts +2 -2
  441. package/dist/components/virtualized-grid/src/use-item-pool.js +14 -26
  442. package/dist/components/virtualized-grid/src/use-virtualized-grid.d.ts +1 -1
  443. package/dist/components/virtualized-grid/src/use-virtualized-grid.js +14 -8
  444. package/dist/components/virtualized-grid/src/utility.d.ts +1 -1
  445. package/dist/components/virtualized-grid/src/utility.js +37 -31
  446. package/dist/components/virtualized-grid/src/virtualized-grid.js +27 -17
  447. package/dist/context/choice-ui-provider.d.ts +35 -0
  448. package/dist/context/choice-ui-provider.js +14 -0
  449. package/dist/context/index.d.ts +2 -0
  450. package/dist/index.d.ts +1 -0
  451. package/dist/index.js +50 -195
  452. package/package.json +1 -1
  453. package/dist/components/code-block/src/index.js +0 -15
  454. package/dist/components/rich-input/src/hooks/use-mouse-events.js +0 -113
  455. package/dist/components/rich-input/src/hooks/use-validation.js +0 -80
  456. package/dist/components/rich-input/src/utils/markdown-to-slate.js +0 -219
  457. /package/dist/components/command/src/{command-score.d.ts → utils/command-score.d.ts} +0 -0
  458. /package/dist/components/command/src/{command-score.js → utils/command-score.js} +0 -0
  459. /package/dist/components/pagination/src/{components → context}/pagination-context.d.ts +0 -0
  460. /package/dist/components/pagination/src/{components → context}/pagination-context.js +0 -0
@@ -0,0 +1,4 @@
1
+ export * from './use-column-order';
2
+ export * from './use-column-resize';
3
+ export * from './use-consecutive-selection-style';
4
+ export * from './use-table';
@@ -0,0 +1,26 @@
1
+ import { ColumnOrderState } from '../types';
2
+ interface UseColumnOrderOptions {
3
+ columnOrder?: ColumnOrderState;
4
+ defaultColumnOrder?: ColumnOrderState;
5
+ onColumnOrderChange?: (order: ColumnOrderState) => void;
6
+ }
7
+ export interface DragState {
8
+ columnId: string;
9
+ targetIndex: number;
10
+ /** Mouse X position relative to table */
11
+ mouseX: number;
12
+ /** Source column left offset */
13
+ sourceLeft: number;
14
+ /** Source column width */
15
+ sourceWidth: number;
16
+ }
17
+ export declare function useColumnOrder(options: UseColumnOrderOptions): {
18
+ columnOrder: ColumnOrderState;
19
+ dragState: DragState | null;
20
+ startDrag: (columnId: string, mouseX: number, sourceLeft: number, sourceWidth: number) => void;
21
+ updateDragTarget: (targetIndex: number) => void;
22
+ updateDragPosition: (mouseX: number) => void;
23
+ endDrag: () => void;
24
+ cancelDrag: () => void;
25
+ };
26
+ export {};
@@ -0,0 +1,95 @@
1
+ import { useState, useRef, useCallback } from "react";
2
+ function useColumnOrder(options) {
3
+ const { columnOrder: controlledOrder, defaultColumnOrder = [], onColumnOrderChange } = options;
4
+ const isControlled = controlledOrder !== void 0;
5
+ const [internalOrder, setInternalOrder] = useState(defaultColumnOrder);
6
+ const columnOrder = isControlled ? controlledOrder : internalOrder;
7
+ const [dragState, setDragState] = useState(null);
8
+ const dragStateRef = useRef(null);
9
+ const columnOrderRef = useRef(columnOrder);
10
+ columnOrderRef.current = columnOrder;
11
+ const updateOrder = useCallback(
12
+ (newOrder) => {
13
+ if (!isControlled) {
14
+ setInternalOrder(newOrder);
15
+ }
16
+ onColumnOrderChange == null ? void 0 : onColumnOrderChange(newOrder);
17
+ },
18
+ [isControlled, onColumnOrderChange]
19
+ );
20
+ const startDrag = useCallback(
21
+ (columnId, mouseX, sourceLeft, sourceWidth) => {
22
+ const state = { columnId, targetIndex: -1, mouseX, sourceLeft, sourceWidth };
23
+ dragStateRef.current = state;
24
+ setDragState(state);
25
+ },
26
+ []
27
+ );
28
+ const updateDragTarget = useCallback((targetIndex) => {
29
+ if (dragStateRef.current) {
30
+ dragStateRef.current = { ...dragStateRef.current, targetIndex };
31
+ }
32
+ setDragState((prev) => prev ? { ...prev, targetIndex } : null);
33
+ }, []);
34
+ const updateDragPosition = useCallback((mouseX) => {
35
+ if (dragStateRef.current) {
36
+ dragStateRef.current = { ...dragStateRef.current, mouseX };
37
+ }
38
+ setDragState((prev) => prev ? { ...prev, mouseX } : null);
39
+ }, []);
40
+ const endDrag = useCallback(() => {
41
+ const currentDragState = dragStateRef.current;
42
+ if (!currentDragState || currentDragState.targetIndex < 0) {
43
+ dragStateRef.current = null;
44
+ setDragState(null);
45
+ return;
46
+ }
47
+ const { columnId, targetIndex } = currentDragState;
48
+ if (!columnId) {
49
+ dragStateRef.current = null;
50
+ setDragState(null);
51
+ return;
52
+ }
53
+ const currentOrder = columnOrderRef.current;
54
+ const workingOrder = currentOrder.length > 0 ? [...currentOrder] : [];
55
+ const currentIndex = workingOrder.indexOf(columnId);
56
+ if (currentIndex === -1) {
57
+ dragStateRef.current = null;
58
+ setDragState(null);
59
+ return;
60
+ }
61
+ if (targetIndex < 0 || targetIndex > workingOrder.length) {
62
+ dragStateRef.current = null;
63
+ setDragState(null);
64
+ return;
65
+ }
66
+ if (currentIndex === targetIndex || currentIndex + 1 === targetIndex) {
67
+ dragStateRef.current = null;
68
+ setDragState(null);
69
+ return;
70
+ }
71
+ workingOrder.splice(currentIndex, 1);
72
+ const adjustedTarget = targetIndex > currentIndex ? targetIndex - 1 : targetIndex;
73
+ const safeTarget = Math.max(0, Math.min(adjustedTarget, workingOrder.length));
74
+ workingOrder.splice(safeTarget, 0, columnId);
75
+ dragStateRef.current = null;
76
+ setDragState(null);
77
+ updateOrder(workingOrder);
78
+ }, [updateOrder]);
79
+ const cancelDrag = useCallback(() => {
80
+ dragStateRef.current = null;
81
+ setDragState(null);
82
+ }, []);
83
+ return {
84
+ columnOrder,
85
+ dragState,
86
+ startDrag,
87
+ updateDragTarget,
88
+ updateDragPosition,
89
+ endDrag,
90
+ cancelDrag
91
+ };
92
+ }
93
+ export {
94
+ useColumnOrder
95
+ };
@@ -0,0 +1,17 @@
1
+ import { ColumnWidthState, ResizeState } from '../types';
2
+ interface UseColumnResizeOptions {
3
+ columnWidths?: ColumnWidthState;
4
+ defaultColumnWidths?: ColumnWidthState;
5
+ onColumnWidthsChange?: (widths: ColumnWidthState) => void;
6
+ minWidth?: number;
7
+ maxWidth?: number;
8
+ }
9
+ export declare function useColumnResize(options: UseColumnResizeOptions): {
10
+ columnWidths: ColumnWidthState;
11
+ resizeState: ResizeState | null;
12
+ getColumnWidth: (columnId: string) => number | undefined;
13
+ startResize: (columnId: string, startX: number, startWidth: number) => void;
14
+ updateResize: (currentX: number) => void;
15
+ endResize: () => void;
16
+ };
17
+ export {};
@@ -0,0 +1,75 @@
1
+ import { useState, useRef, useCallback } from "react";
2
+ function useColumnResize(options) {
3
+ const {
4
+ columnWidths: controlledWidths,
5
+ defaultColumnWidths = {},
6
+ onColumnWidthsChange,
7
+ minWidth = 50,
8
+ maxWidth = 1e3
9
+ } = options;
10
+ const isControlled = controlledWidths !== void 0;
11
+ const [internalWidths, setInternalWidths] = useState(defaultColumnWidths);
12
+ const columnWidths = isControlled ? controlledWidths : internalWidths;
13
+ const [resizeState, setResizeState] = useState(null);
14
+ const resizeStateRef = useRef(null);
15
+ const columnWidthsRef = useRef(columnWidths);
16
+ columnWidthsRef.current = columnWidths;
17
+ const updateWidths = useCallback(
18
+ (newWidths) => {
19
+ if (!isControlled) {
20
+ setInternalWidths(newWidths);
21
+ }
22
+ onColumnWidthsChange == null ? void 0 : onColumnWidthsChange(newWidths);
23
+ },
24
+ [isControlled, onColumnWidthsChange]
25
+ );
26
+ const getColumnWidth = useCallback(
27
+ (columnId) => {
28
+ return columnWidths[columnId];
29
+ },
30
+ [columnWidths]
31
+ );
32
+ const startResize = useCallback((columnId, startX, startWidth) => {
33
+ const state = {
34
+ columnId,
35
+ startX,
36
+ startWidth,
37
+ currentX: startX
38
+ };
39
+ resizeStateRef.current = state;
40
+ setResizeState(state);
41
+ }, []);
42
+ const updateResize = useCallback((currentX) => {
43
+ if (resizeStateRef.current) {
44
+ resizeStateRef.current = { ...resizeStateRef.current, currentX };
45
+ }
46
+ setResizeState((prev) => prev ? { ...prev, currentX } : null);
47
+ }, []);
48
+ const endResize = useCallback(() => {
49
+ const currentResizeState = resizeStateRef.current;
50
+ if (!currentResizeState) {
51
+ setResizeState(null);
52
+ return;
53
+ }
54
+ const { columnId, startWidth, startX, currentX } = currentResizeState;
55
+ const deltaX = currentX - startX;
56
+ const clampedWidth = Math.max(minWidth, Math.min(maxWidth, Math.max(0, startWidth + deltaX)));
57
+ resizeStateRef.current = null;
58
+ setResizeState(null);
59
+ updateWidths({
60
+ ...columnWidthsRef.current,
61
+ [columnId]: clampedWidth
62
+ });
63
+ }, [updateWidths, minWidth, maxWidth]);
64
+ return {
65
+ columnWidths,
66
+ resizeState,
67
+ getColumnWidth,
68
+ startResize,
69
+ updateResize,
70
+ endResize
71
+ };
72
+ }
73
+ export {
74
+ useColumnResize
75
+ };
@@ -0,0 +1,12 @@
1
+ import { ConsecutiveStyle, InternalRow, RowKey } from '../types';
2
+ /**
3
+ * Hook to determine rounded corner style for consecutive selected rows.
4
+ *
5
+ * Returns a function that takes an index and returns the appropriate rounded style:
6
+ * - Single selected: "rounded-md"
7
+ * - First of consecutive: "rounded-t-md"
8
+ * - Last of consecutive: "rounded-b-md"
9
+ * - Middle of consecutive: "rounded-none"
10
+ * - Not selected: ""
11
+ */
12
+ export declare function useConsecutiveSelectionStyle<T>(rows: InternalRow<T>[], selectedKeys: Set<RowKey>): (index: number) => ConsecutiveStyle;
@@ -0,0 +1,28 @@
1
+ import { useMemo, useCallback } from "react";
2
+ function useConsecutiveSelectionStyle(rows, selectedKeys) {
3
+ const selectedIndices = useMemo(() => {
4
+ const indices = /* @__PURE__ */ new Set();
5
+ rows.forEach((row, index) => {
6
+ if (selectedKeys.has(row.key)) {
7
+ indices.add(index);
8
+ }
9
+ });
10
+ return indices;
11
+ }, [rows, selectedKeys]);
12
+ return useCallback(
13
+ (index) => {
14
+ if (index < 0 || selectedIndices.size === 0) return "";
15
+ if (!selectedIndices.has(index)) return "";
16
+ const hasPrev = index > 0 && selectedIndices.has(index - 1);
17
+ const hasNext = selectedIndices.has(index + 1);
18
+ if (!hasPrev && !hasNext) return "rounded-md";
19
+ if (!hasPrev && hasNext) return "rounded-t-md";
20
+ if (hasPrev && !hasNext) return "rounded-b-md";
21
+ return "rounded-none";
22
+ },
23
+ [selectedIndices]
24
+ );
25
+ }
26
+ export {
27
+ useConsecutiveSelectionStyle
28
+ };
@@ -0,0 +1,35 @@
1
+ import { InternalRow, RowKey, SelectionMode, SortDirection, SortingState, TableColumnDef, TableInstance, TableProps } from '../types';
2
+ interface UseTableOptions<T> {
3
+ data: T[];
4
+ getRowKey: (row: T, index: number) => RowKey;
5
+ selectionMode: SelectionMode;
6
+ selectedKeys?: RowKey[];
7
+ defaultSelectedKeys?: RowKey[];
8
+ onSelectionChange?: (keys: RowKey[]) => void;
9
+ sorting?: SortingState[];
10
+ defaultSorting?: SortingState[];
11
+ onSortingChange?: (sorting: SortingState[]) => void;
12
+ tableRef?: TableProps<T>["tableRef"];
13
+ }
14
+ export declare function useTable<T>(options: UseTableOptions<T>): {
15
+ rows: InternalRow<T>[];
16
+ columns: TableColumnDef<T>[];
17
+ registerColumn: (column: TableColumnDef<T>) => void;
18
+ unregisterColumn: (id: string) => void;
19
+ selectedKeys: Set<RowKey>;
20
+ selectRow: (key: RowKey) => void;
21
+ deselectRow: (key: RowKey) => void;
22
+ toggleRowSelection: (key: RowKey, index?: number) => void;
23
+ selectRange: (fromIndex: number, toIndex: number) => void;
24
+ selectAll: () => void;
25
+ deselectAll: () => void;
26
+ isRowSelected: (key: RowKey) => boolean;
27
+ isAllSelected: () => boolean;
28
+ isSomeSelected: () => boolean;
29
+ handleCheckboxClick: (key: RowKey, index: number, event: React.MouseEvent) => void;
30
+ sorting: SortingState[];
31
+ toggleSort: (columnId: string) => void;
32
+ getSortDirection: (columnId: string) => SortDirection | null;
33
+ tableInstance: TableInstance<T>;
34
+ };
35
+ export {};
@@ -0,0 +1,245 @@
1
+ import { useState, useCallback, useMemo, useRef, useImperativeHandle } from "react";
2
+ function useTable(options) {
3
+ const {
4
+ data,
5
+ getRowKey,
6
+ selectionMode,
7
+ selectedKeys: controlledSelectedKeys,
8
+ defaultSelectedKeys = [],
9
+ onSelectionChange,
10
+ sorting: controlledSorting,
11
+ defaultSorting = [],
12
+ onSortingChange,
13
+ tableRef
14
+ } = options;
15
+ const [columns, setColumns] = useState([]);
16
+ const registerColumn = useCallback((column) => {
17
+ setColumns((prev) => {
18
+ const exists = prev.find((c) => c.id === column.id);
19
+ if (exists) return prev;
20
+ return [...prev, column];
21
+ });
22
+ }, []);
23
+ const unregisterColumn = useCallback((id) => {
24
+ setColumns((prev) => prev.filter((c) => c.id !== id));
25
+ }, []);
26
+ const isSelectionControlled = controlledSelectedKeys !== void 0;
27
+ const [internalSelectedKeys, setInternalSelectedKeys] = useState(
28
+ () => new Set(defaultSelectedKeys)
29
+ );
30
+ const selectedKeys = useMemo(
31
+ () => isSelectionControlled ? new Set(controlledSelectedKeys) : internalSelectedKeys,
32
+ [isSelectionControlled, controlledSelectedKeys, internalSelectedKeys]
33
+ );
34
+ const selectedKeysRef = useRef(selectedKeys);
35
+ selectedKeysRef.current = selectedKeys;
36
+ const isSortingControlled = controlledSorting !== void 0;
37
+ const [internalSorting, setInternalSorting] = useState(defaultSorting);
38
+ const sorting = isSortingControlled ? controlledSorting : internalSorting;
39
+ const lastSelectedIndexRef = useRef(null);
40
+ const rows = useMemo(
41
+ () => data.map((item, index) => ({
42
+ key: getRowKey(item, index),
43
+ data: item,
44
+ index
45
+ })),
46
+ [data, getRowKey]
47
+ );
48
+ const rowsRef = useRef(rows);
49
+ rowsRef.current = rows;
50
+ const updateSelection = useCallback(
51
+ (newKeys) => {
52
+ if (!isSelectionControlled) {
53
+ setInternalSelectedKeys(newKeys);
54
+ }
55
+ onSelectionChange == null ? void 0 : onSelectionChange(Array.from(newKeys));
56
+ },
57
+ [isSelectionControlled, onSelectionChange]
58
+ );
59
+ const selectRow = useCallback(
60
+ (key) => {
61
+ if (selectionMode === "none") return;
62
+ const currentKeys = selectedKeysRef.current;
63
+ const newKeys = new Set(currentKeys);
64
+ if (selectionMode === "single") {
65
+ newKeys.clear();
66
+ }
67
+ newKeys.add(key);
68
+ updateSelection(newKeys);
69
+ },
70
+ [selectionMode, updateSelection]
71
+ );
72
+ const deselectRow = useCallback(
73
+ (key) => {
74
+ const currentKeys = selectedKeysRef.current;
75
+ const newKeys = new Set(currentKeys);
76
+ newKeys.delete(key);
77
+ updateSelection(newKeys);
78
+ },
79
+ [updateSelection]
80
+ );
81
+ const toggleRowSelection = useCallback(
82
+ (key, index) => {
83
+ if (selectionMode === "none") return;
84
+ const currentKeys = selectedKeysRef.current;
85
+ if (currentKeys.has(key)) {
86
+ const newKeys = new Set(currentKeys);
87
+ newKeys.delete(key);
88
+ updateSelection(newKeys);
89
+ } else {
90
+ if (selectionMode === "single") {
91
+ updateSelection(/* @__PURE__ */ new Set([key]));
92
+ } else {
93
+ const newKeys = new Set(currentKeys);
94
+ newKeys.add(key);
95
+ updateSelection(newKeys);
96
+ }
97
+ }
98
+ if (index !== void 0) {
99
+ lastSelectedIndexRef.current = index;
100
+ }
101
+ },
102
+ [selectionMode, updateSelection]
103
+ );
104
+ const selectRange = useCallback(
105
+ (fromIndex, toIndex) => {
106
+ if (selectionMode !== "multiple") return;
107
+ const currentRows = rowsRef.current;
108
+ if (currentRows.length === 0) return;
109
+ if (fromIndex < 0 && toIndex < 0) return;
110
+ const clampedFrom = Math.max(0, Math.min(fromIndex, currentRows.length - 1));
111
+ const clampedTo = Math.max(0, Math.min(toIndex, currentRows.length - 1));
112
+ const start = Math.min(clampedFrom, clampedTo);
113
+ const end = Math.max(clampedFrom, clampedTo);
114
+ const currentKeys = selectedKeysRef.current;
115
+ const newKeys = new Set(currentKeys);
116
+ for (let i = start; i <= end; i++) {
117
+ const row = currentRows[i];
118
+ if (row) {
119
+ newKeys.add(row.key);
120
+ }
121
+ }
122
+ updateSelection(newKeys);
123
+ },
124
+ [selectionMode, updateSelection]
125
+ );
126
+ const selectAll = useCallback(() => {
127
+ if (selectionMode !== "multiple") return;
128
+ const currentRows = rowsRef.current;
129
+ const allKeys = new Set(currentRows.map((row) => row.key));
130
+ updateSelection(allKeys);
131
+ }, [selectionMode, updateSelection]);
132
+ const deselectAll = useCallback(() => {
133
+ updateSelection(/* @__PURE__ */ new Set());
134
+ }, [updateSelection]);
135
+ const isRowSelected = useCallback((key) => selectedKeys.has(key), [selectedKeys]);
136
+ const isAllSelected = useCallback(
137
+ () => rows.length > 0 && rows.every((row) => selectedKeys.has(row.key)),
138
+ [rows, selectedKeys]
139
+ );
140
+ const isSomeSelected = useCallback(
141
+ () => rows.some((row) => selectedKeys.has(row.key)) && !isAllSelected(),
142
+ [rows, selectedKeys, isAllSelected]
143
+ );
144
+ const updateSorting = useCallback(
145
+ (newSorting) => {
146
+ if (!isSortingControlled) {
147
+ setInternalSorting(newSorting);
148
+ }
149
+ onSortingChange == null ? void 0 : onSortingChange(newSorting);
150
+ },
151
+ [isSortingControlled, onSortingChange]
152
+ );
153
+ const toggleSort = useCallback(
154
+ (columnId) => {
155
+ const existingSort = sorting.find((s) => s.id === columnId);
156
+ let newSorting;
157
+ if (!existingSort) {
158
+ newSorting = [{ id: columnId, desc: false }];
159
+ } else if (!existingSort.desc) {
160
+ newSorting = [{ id: columnId, desc: true }];
161
+ } else {
162
+ newSorting = [];
163
+ }
164
+ updateSorting(newSorting);
165
+ },
166
+ [sorting, updateSorting]
167
+ );
168
+ const getSortDirection = useCallback(
169
+ (columnId) => {
170
+ const sort = sorting.find((s) => s.id === columnId);
171
+ if (!sort) return null;
172
+ return sort.desc ? "desc" : "asc";
173
+ },
174
+ [sorting]
175
+ );
176
+ const handleCheckboxClick = useCallback(
177
+ (key, index, event) => {
178
+ if (selectionMode === "none") return;
179
+ if (event.shiftKey && lastSelectedIndexRef.current !== null && selectionMode === "multiple") {
180
+ selectRange(lastSelectedIndexRef.current, index);
181
+ } else {
182
+ toggleRowSelection(key, index);
183
+ }
184
+ lastSelectedIndexRef.current = index;
185
+ },
186
+ [selectionMode, selectRange, toggleRowSelection]
187
+ );
188
+ const tableInstance = useMemo(
189
+ () => ({
190
+ getData: () => data,
191
+ getSelectedKeys: () => Array.from(selectedKeys),
192
+ getSelectedRows: () => rows.filter((row) => selectedKeys.has(row.key)).map((row) => row.data),
193
+ isRowSelected,
194
+ selectRow,
195
+ deselectRow,
196
+ toggleRowSelection,
197
+ selectAll,
198
+ deselectAll,
199
+ isAllSelected,
200
+ isSomeSelected
201
+ }),
202
+ [
203
+ data,
204
+ selectedKeys,
205
+ rows,
206
+ isRowSelected,
207
+ selectRow,
208
+ deselectRow,
209
+ toggleRowSelection,
210
+ selectAll,
211
+ deselectAll,
212
+ isAllSelected,
213
+ isSomeSelected
214
+ ]
215
+ );
216
+ useImperativeHandle(tableRef, () => tableInstance, [tableInstance]);
217
+ return {
218
+ // Data
219
+ rows,
220
+ columns,
221
+ registerColumn,
222
+ unregisterColumn,
223
+ // Selection
224
+ selectedKeys,
225
+ selectRow,
226
+ deselectRow,
227
+ toggleRowSelection,
228
+ selectRange,
229
+ selectAll,
230
+ deselectAll,
231
+ isRowSelected,
232
+ isAllSelected,
233
+ isSomeSelected,
234
+ handleCheckboxClick,
235
+ // Sorting
236
+ sorting,
237
+ toggleSort,
238
+ getSortDirection,
239
+ // Instance
240
+ tableInstance
241
+ };
242
+ }
243
+ export {
244
+ useTable
245
+ };
@@ -0,0 +1,4 @@
1
+ export * from './table';
2
+ export * from './types';
3
+ export { useTableStatic, useTableScroll, useTableSelection, useTableColumnState, useTableDragResize, useTableRows, } from './context';
4
+ export { tableVariants } from './tv';
@@ -0,0 +1,88 @@
1
+ import { TableEmptyProps } from './components';
2
+ import { TableBodyProps, TableCellProps, TableColumnProps, TableFooterProps, TableHeaderProps, TableProps, TableRowProps, TableValueProps } from './types';
3
+ /**
4
+ * Table component with compound components pattern.
5
+ *
6
+ * Supports:
7
+ * - Row selection (single/multiple)
8
+ * - Consecutive selection rounded corners
9
+ * - Virtualization for large datasets
10
+ * - Two scroll modes: "container" (internal ScrollArea) or "window" (window scroll)
11
+ *
12
+ * @example
13
+ * // Container scroll (default) - Table has its own scroll area
14
+ * <Table
15
+ * data={users}
16
+ * getRowKey={(user) => user.id}
17
+ * selectable
18
+ * height={400}
19
+ * >
20
+ * <Table.Header>
21
+ * <Table.Column id="name" width={200}>Name</Table.Column>
22
+ * <Table.Column id="email">Email</Table.Column>
23
+ * </Table.Header>
24
+ * <Table.Body>
25
+ * {(user, index) => (
26
+ * <Table.Row rowKey={user.id} index={index}>
27
+ * <Table.Cell columnId="name">{user.name}</Table.Cell>
28
+ * <Table.Cell columnId="email">{user.email}</Table.Cell>
29
+ * </Table.Row>
30
+ * )}
31
+ * </Table.Body>
32
+ * </Table>
33
+ *
34
+ * @example
35
+ * // Window scroll - Table uses window scroll for virtualization
36
+ * <Table
37
+ * data={users}
38
+ * getRowKey={(user) => user.id}
39
+ * selectable
40
+ * scrollMode="window"
41
+ * >
42
+ * <Table.Header>
43
+ * <Table.Column id="name">Name</Table.Column>
44
+ * <Table.Column id="email">Email</Table.Column>
45
+ * </Table.Header>
46
+ * <Table.Body>
47
+ * {(user, index) => (
48
+ * <Table.Row rowKey={user.id} index={index}>
49
+ * <Table.Cell columnId="name">{user.name}</Table.Cell>
50
+ * <Table.Cell columnId="email">{user.email}</Table.Cell>
51
+ * </Table.Row>
52
+ * )}
53
+ * </Table.Body>
54
+ * </Table>
55
+ *
56
+ * @example
57
+ * // Custom scroll container - Provide your own ScrollArea
58
+ * const scrollRef = useRef<HTMLDivElement>(null)
59
+ * const containerRef = useRef<HTMLDivElement>(null)
60
+ *
61
+ * <ScrollArea>
62
+ * <ScrollArea.Viewport ref={scrollRef}>
63
+ * <ScrollArea.Content ref={containerRef}>
64
+ * <Table
65
+ * data={users}
66
+ * getRowKey={(user) => user.id}
67
+ * scrollRef={scrollRef}
68
+ * containerRef={containerRef}
69
+ * >
70
+ * ...
71
+ * </Table>
72
+ * </ScrollArea.Content>
73
+ * </ScrollArea.Viewport>
74
+ * </ScrollArea>
75
+ */
76
+ declare function Table<T>(props: TableProps<T>): import("react/jsx-runtime").JSX.Element;
77
+ declare namespace Table {
78
+ var Header: (props: TableHeaderProps) => React.ReactNode;
79
+ var Column: (props: TableColumnProps) => React.ReactNode;
80
+ var Body: <T>(props: TableBodyProps<T>) => React.ReactNode;
81
+ var Row: (props: TableRowProps) => React.ReactNode;
82
+ var Cell: (props: TableCellProps) => React.ReactNode;
83
+ var Value: (props: TableValueProps) => React.ReactNode;
84
+ var Empty: (props: TableEmptyProps) => React.ReactNode;
85
+ var Footer: (props: TableFooterProps) => React.ReactNode;
86
+ }
87
+ export { Table };
88
+ export type { TableBodyProps, TableCellProps, TableColumnProps, TableEmptyProps, TableFooterProps, TableHeaderProps, TableProps, TableRowProps, TableValueProps, };
@@ -0,0 +1,24 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { TableRoot } from "./components/table-root.js";
3
+ import { TableHeader } from "./components/table-header.js";
4
+ import { TableColumn } from "./components/table-column.js";
5
+ import { TableBody } from "./components/table-body.js";
6
+ import { TableRow } from "./components/table-row.js";
7
+ import { TableCell } from "./components/table-cell.js";
8
+ import { TableValue } from "./components/table-value.js";
9
+ import { TableEmpty } from "./components/table-empty.js";
10
+ import { TableFooter } from "./components/table-footer.js";
11
+ function Table(props) {
12
+ return /* @__PURE__ */ jsx(TableRoot, { ...props });
13
+ }
14
+ Table.Header = TableHeader;
15
+ Table.Column = TableColumn;
16
+ Table.Body = TableBody;
17
+ Table.Row = TableRow;
18
+ Table.Cell = TableCell;
19
+ Table.Value = TableValue;
20
+ Table.Empty = TableEmpty;
21
+ Table.Footer = TableFooter;
22
+ export {
23
+ Table
24
+ };