@choice-ui/react 1.4.3 → 1.4.6

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 (459) 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 +47 -251
  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 +4 -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/slate-converters.d.ts +6 -6
  101. package/dist/components/context-input/src/utils/slate-converters.js +2 -2
  102. package/dist/components/context-input/src/utils/text-extraction.js +7 -1
  103. package/dist/components/context-menu/src/context-menu.js +10 -4
  104. package/dist/components/dialog/dist/index.js +1 -2
  105. package/dist/components/dialog/src/dialog.js +0 -1
  106. package/dist/components/dialog/src/hooks/use-floating-dialog.js +1 -1
  107. package/dist/components/dialog/src/index.d.ts +3 -2
  108. package/dist/components/dropdown/dist/index.d.ts +1 -2
  109. package/dist/components/dropdown/dist/index.js +23 -8
  110. package/dist/components/dropdown/src/dropdown.d.ts +1 -2
  111. package/dist/components/dropdown/src/dropdown.js +23 -8
  112. package/dist/components/emoji-picker/dist/index.d.ts +33 -1
  113. package/dist/components/emoji-picker/dist/index.js +3 -1
  114. package/dist/components/emoji-picker/src/emoji-picker.d.ts +1 -1
  115. package/dist/components/emoji-picker/src/emoji-picker.js +3 -1
  116. package/dist/components/emoji-picker/src/index.d.ts +3 -1
  117. package/dist/components/form/dist/index.d.ts +93 -98
  118. package/dist/components/form/src/adapters/base-adapter.d.ts +3 -3
  119. package/dist/components/form/src/adapters/checkbox-adapter.d.ts +1 -1
  120. package/dist/components/form/src/adapters/chips-input-adapter.d.ts +9 -0
  121. package/dist/components/form/src/adapters/chips-input-adapter.js +38 -0
  122. package/dist/components/form/src/adapters/index.d.ts +8 -7
  123. package/dist/components/form/src/adapters/input-adapter.d.ts +1 -1
  124. package/dist/components/form/src/adapters/multi-select-adapter.d.ts +1 -1
  125. package/dist/components/form/src/adapters/numeric-input-adapter.d.ts +1 -1
  126. package/dist/components/form/src/adapters/raido-group-adapter.d.ts +1 -7
  127. package/dist/components/form/src/adapters/range-adapter.d.ts +1 -7
  128. package/dist/components/form/src/adapters/segmented-adapter.d.ts +1 -7
  129. package/dist/components/form/src/adapters/select-adapter.d.ts +1 -1
  130. package/dist/components/form/src/adapters/switch-adapter.d.ts +1 -1
  131. package/dist/components/form/src/adapters/textarea-adapter.d.ts +1 -1
  132. package/dist/components/form/src/index.d.ts +18 -16
  133. package/dist/components/form/src/index.js +16 -13
  134. package/dist/components/form/src/types.d.ts +58 -51
  135. package/dist/components/hint/dist/index.d.ts +10 -54
  136. package/dist/components/hint/src/components/info-content.d.ts +3 -5
  137. package/dist/components/hint/src/components/info-content.js +14 -6
  138. package/dist/components/hint/src/components/info-trigger.d.ts +2 -3
  139. package/dist/components/hint/src/components/info-trigger.js +4 -2
  140. package/dist/components/hint/src/context/hint-context.d.ts +2 -0
  141. package/dist/components/hint/src/context/hint-context.js +1 -1
  142. package/dist/components/hint/src/hint.d.ts +7 -7
  143. package/dist/components/hint/src/hint.js +24 -29
  144. package/dist/components/hint/src/hooks/use-hint.d.ts +4 -2
  145. package/dist/components/hint/src/hooks/use-hint.js +12 -4
  146. package/dist/components/hint/src/index.d.ts +3 -3
  147. package/dist/components/hint/src/tv.d.ts +33 -0
  148. package/dist/components/hint/src/tv.js +11 -0
  149. package/dist/components/icon-button/dist/index.js +2 -2
  150. package/dist/components/icon-button/src/icon-button.js +2 -2
  151. package/dist/components/index.d.ts +3 -0
  152. package/dist/components/input/dist/index.js +4 -4
  153. package/dist/components/input/src/input.js +3 -3
  154. package/dist/components/input/src/tv.js +1 -1
  155. package/dist/components/kbd/dist/index.js +4 -4
  156. package/dist/components/kbd/src/kbd.js +4 -4
  157. package/dist/components/label/dist/index.js +3 -3
  158. package/dist/components/label/src/tv.js +3 -3
  159. package/dist/components/link-button/dist/index.js +3 -3
  160. package/dist/components/link-button/src/link-button.js +3 -3
  161. package/dist/components/list/src/components/list-content.js +2 -2
  162. package/dist/components/list/src/components/list-divider.js +3 -3
  163. package/dist/components/list/src/components/list-item.js +5 -5
  164. package/dist/components/list/src/components/list-label.js +2 -2
  165. package/dist/components/list/src/components/list-sub-trigger.js +4 -4
  166. package/dist/components/list/src/list.js +2 -2
  167. package/dist/components/md-input/dist/index.d.ts +8 -104
  168. package/dist/components/md-input/src/components/extensions/md-input-mention.d.ts +6 -4
  169. package/dist/components/md-input/src/components/extensions/md-input-mention.js +23 -6
  170. package/dist/components/md-input/src/components/md-input-container.js +1 -0
  171. package/dist/components/md-input/src/components/md-input-editor.js +4 -1
  172. package/dist/components/md-input/src/components/md-input-footer.js +5 -1
  173. package/dist/components/md-input/src/components/toolbar/default-actions.d.ts +2 -2
  174. package/dist/components/md-input/src/components/toolbar/toolbar-button.d.ts +1 -0
  175. package/dist/components/md-input/src/components/toolbar/toolbar-button.js +1 -7
  176. package/dist/components/md-input/src/components/toolbar/toolbar.d.ts +2 -2
  177. package/dist/components/md-input/src/hooks/use-markdown-mentions.d.ts +5 -4
  178. package/dist/components/md-input/src/hooks/use-markdown-mentions.js +31 -4
  179. package/dist/components/md-input/src/index.d.ts +1 -4
  180. package/dist/components/md-input/src/md-input.js +18 -14
  181. package/dist/components/md-input/src/tv.d.ts +3 -0
  182. package/dist/components/md-input/src/tv.js +2 -1
  183. package/dist/components/md-input/src/types.d.ts +18 -16
  184. package/dist/components/md-render/dist/index.d.ts +1 -4
  185. package/dist/components/md-render/dist/index.js +8 -9
  186. package/dist/components/md-render/src/components/markdown-components.js +3 -3
  187. package/dist/components/md-render/src/index.d.ts +0 -1
  188. package/dist/components/md-render/src/md-render.js +5 -4
  189. package/dist/components/md-render/src/tv.js +1 -1
  190. package/dist/components/menubar/dist/index.d.ts +50 -0
  191. package/dist/components/menubar/src/components/index.d.ts +3 -0
  192. package/dist/components/menubar/src/components/menubar-divider.d.ts +8 -0
  193. package/dist/components/menubar/src/components/menubar-divider.js +24 -0
  194. package/dist/components/menubar/src/components/menubar-item.d.ts +8 -0
  195. package/dist/components/menubar/src/components/menubar-item.js +195 -0
  196. package/dist/components/menubar/src/components/menubar-trigger.d.ts +8 -0
  197. package/dist/components/menubar/src/components/menubar-trigger.js +45 -0
  198. package/dist/components/menubar/src/context/index.d.ts +1 -0
  199. package/dist/components/menubar/src/context/menubar-context.d.ts +34 -0
  200. package/dist/components/menubar/src/context/menubar-context.js +13 -0
  201. package/dist/components/menubar/src/index.d.ts +3 -0
  202. package/dist/components/menubar/src/menubar.d.ts +22 -0
  203. package/dist/components/menubar/src/menubar.js +177 -0
  204. package/dist/components/menubar/src/tv.d.ts +108 -0
  205. package/dist/components/menubar/src/tv.js +72 -0
  206. package/dist/components/menubar/tsup.config.d.ts +2 -0
  207. package/dist/components/menus/dist/index.d.ts +144 -143
  208. package/dist/components/menus/dist/index.js +50 -49
  209. package/dist/components/menus/src/components/menu-button.js +2 -2
  210. package/dist/components/menus/src/components/menu-checkbox.d.ts +1 -2
  211. package/dist/components/menus/src/components/menu-checkbox.js +2 -2
  212. package/dist/components/menus/src/components/menu-divider.js +3 -3
  213. package/dist/components/menus/src/components/menu-item.js +5 -5
  214. package/dist/components/menus/src/components/menu-label.js +2 -2
  215. package/dist/components/menus/src/components/menu-scroll-arrow.d.ts +2 -2
  216. package/dist/components/menus/src/components/menu-scroll-arrow.js +13 -3
  217. package/dist/components/menus/src/components/menu-search.js +3 -3
  218. package/dist/components/menus/src/components/menu-trigger.js +4 -4
  219. package/dist/components/menus/src/context/menu-context-item.d.ts +6 -6
  220. package/dist/components/menus/src/context/menu-context-item.js +2 -2
  221. package/dist/components/menus/src/context/menu-context-sub-trigger.js +4 -19
  222. package/dist/components/menus/src/context/menu-context.d.ts +2 -2
  223. package/dist/components/menus/src/hooks/use-menu-base-refs.d.ts +12 -12
  224. package/dist/components/menus/src/hooks/use-menu-children.d.ts +16 -16
  225. package/dist/components/menus/src/hooks/use-menu-floating.d.ts +22 -22
  226. package/dist/components/menus/src/hooks/use-menu-refs.d.ts +8 -8
  227. package/dist/components/menus/src/hooks/use-menu-refs.js +2 -2
  228. package/dist/components/menus/src/hooks/use-menu-scroll-height.d.ts +11 -11
  229. package/dist/components/menus/src/hooks/use-menu-scroll.d.ts +18 -18
  230. package/dist/components/menus/src/hooks/use-menu-selection.d.ts +21 -21
  231. package/dist/components/menus/src/hooks/use-menu-state.d.ts +11 -11
  232. package/dist/components/menus/src/hooks/use-menu-state.js +4 -4
  233. package/dist/components/menus/src/hooks/use-menu-touch.d.ts +11 -11
  234. package/dist/components/menus/src/hooks/use-menu-tree.d.ts +15 -15
  235. package/dist/components/menus/src/index.d.ts +5 -0
  236. package/dist/components/menus/src/menus.js +2 -2
  237. package/dist/components/menus/src/tv.d.ts +15 -0
  238. package/dist/components/menus/src/tv.js +8 -2
  239. package/dist/components/modal/dist/index.d.ts +3 -1
  240. package/dist/components/modal/dist/index.js +18 -11
  241. package/dist/components/modal/src/components/modal-content.js +2 -2
  242. package/dist/components/modal/src/components/modal-footer.js +2 -2
  243. package/dist/components/modal/src/components/modal-header.d.ts +3 -1
  244. package/dist/components/modal/src/components/modal-header.js +12 -5
  245. package/dist/components/modal/src/modal.js +2 -2
  246. package/dist/components/multi-select/dist/index.js +13 -11
  247. package/dist/components/multi-select/src/components/multi-select-trigger.js +8 -8
  248. package/dist/components/multi-select/src/multi-select.js +5 -3
  249. package/dist/components/numeric-input/dist/index.d.ts +10 -117
  250. package/dist/components/numeric-input/dist/index.js +18 -24
  251. package/dist/components/numeric-input/src/components/numeric-input-element.js +2 -2
  252. package/dist/components/numeric-input/src/components/numeric-input-menu-trigger.d.ts +1 -1
  253. package/dist/components/numeric-input/src/components/numeric-input-menu-trigger.js +2 -2
  254. package/dist/components/numeric-input/src/components/numeric-input-variable.d.ts +1 -2
  255. package/dist/components/numeric-input/src/components/numeric-input-variable.js +3 -3
  256. package/dist/components/numeric-input/src/hooks/use-input-interactions.d.ts +3 -3
  257. package/dist/components/numeric-input/src/hooks/use-numeric-input.d.ts +3 -3
  258. package/dist/components/numeric-input/src/hooks/use-numeric-value-processing.d.ts +3 -3
  259. package/dist/components/numeric-input/src/hooks/use-step-calculation.d.ts +6 -6
  260. package/dist/components/numeric-input/src/index.d.ts +5 -4
  261. package/dist/components/numeric-input/src/numeric-input.js +9 -9
  262. package/dist/components/numeric-input/src/utils/error-handler.d.ts +8 -8
  263. package/dist/components/numeric-input/src/utils/expression-evaluator.d.ts +11 -11
  264. package/dist/components/numeric-input/src/utils/input-parser.d.ts +8 -8
  265. package/dist/components/numeric-input/src/utils/numeric-value-processor.d.ts +6 -6
  266. package/dist/components/numeric-input/src/utils/pattern-parser.d.ts +7 -7
  267. package/dist/components/numeric-input/src/utils/value-comparator.d.ts +16 -16
  268. package/dist/components/numeric-input/src/utils/value-processor.d.ts +14 -14
  269. package/dist/components/pagination/src/components/pagination-items-per-page.js +1 -1
  270. package/dist/components/pagination/src/components/pagination-navigation.js +5 -5
  271. package/dist/components/pagination/src/components/pagination-root.js +3 -3
  272. package/dist/components/pagination/src/components/pagination-spinner.js +20 -19
  273. package/dist/components/pagination/src/context/index.d.ts +1 -0
  274. package/dist/components/popover/dist/index.d.ts +2 -4
  275. package/dist/components/popover/dist/index.js +25 -33
  276. package/dist/components/popover/src/components/popover-header.js +1 -1
  277. package/dist/components/popover/src/hooks/use-drag.d.ts +3 -3
  278. package/dist/components/popover/src/hooks/use-floating-popover.d.ts +0 -2
  279. package/dist/components/popover/src/hooks/use-floating-popover.js +16 -13
  280. package/dist/components/popover/src/index.d.ts +2 -1
  281. package/dist/components/popover/src/popover.d.ts +1 -2
  282. package/dist/components/popover/src/popover.js +11 -21
  283. package/dist/components/progress/src/index.d.ts +4 -2
  284. package/dist/components/radio/dist/index.d.ts +1 -17
  285. package/dist/components/radio/dist/index.js +7 -10
  286. package/dist/components/radio/src/context.js +1 -1
  287. package/dist/components/radio/src/index.d.ts +0 -4
  288. package/dist/components/radio/src/radio-label.js +2 -2
  289. package/dist/components/radio/src/radio.js +4 -4
  290. package/dist/components/range/dist/index.js +16 -16
  291. package/dist/components/range/src/index.d.ts +4 -2
  292. package/dist/components/range/src/range-tuple.js +10 -10
  293. package/dist/components/range/src/range.js +6 -6
  294. package/dist/components/rich-input/dist/index.d.ts +12 -366
  295. package/dist/components/rich-input/src/components/rich-input-editable-component.d.ts +2 -2
  296. package/dist/components/rich-input/src/components/rich-input-viewport.d.ts +2 -2
  297. package/dist/components/rich-input/src/hooks/use-editor-config.d.ts +1 -1
  298. package/dist/components/rich-input/src/hooks/use-editor-effects.js +3 -0
  299. package/dist/components/rich-input/src/hooks/use-floating-ui.js +1 -1
  300. package/dist/components/rich-input/src/hooks/use-keyboard-shortcuts.d.ts +9 -9
  301. package/dist/components/rich-input/src/hooks/use-rich-input.d.ts +2 -2
  302. package/dist/components/rich-input/src/hooks/use-rich-input.js +40 -17
  303. package/dist/components/rich-input/src/hooks/use-selection-events.js +1 -2
  304. package/dist/components/rich-input/src/index.d.ts +3 -5
  305. package/dist/components/rich-input/src/rich-input-base.js +1 -1
  306. package/dist/components/rich-input/src/utils/custom-options.js +1 -1
  307. package/dist/components/rich-input/src/utils/editor-utils.js +1 -1
  308. package/dist/components/rich-input/src/utils/markdown-to-slate.d.ts +2 -2
  309. package/dist/components/rich-input/src/utils/slate-to-markdown.d.ts +1 -1
  310. package/dist/components/rich-input/src/utils/slate-to-markdown.js +9 -0
  311. package/dist/components/scroll-area/dist/index.d.ts +19 -19
  312. package/dist/components/scroll-area/dist/index.js +24 -24
  313. package/dist/components/scroll-area/src/components/scroll-area-corner.js +2 -2
  314. package/dist/components/scroll-area/src/components/scroll-area-root.js +3 -3
  315. package/dist/components/scroll-area/src/components/scroll-area-scrollbar.js +2 -2
  316. package/dist/components/scroll-area/src/components/scroll-area-thumb.js +2 -2
  317. package/dist/components/scroll-area/src/hooks/use-scroll-performance-monitor.d.ts +6 -6
  318. package/dist/components/scroll-area/src/hooks/use-scroll-performance-monitor.js +3 -3
  319. package/dist/components/scroll-area/src/hooks/use-scroll-state-and-visibility.d.ts +1 -1
  320. package/dist/components/scroll-area/src/hooks/use-scroll-state-and-visibility.js +3 -3
  321. package/dist/components/scroll-area/src/hooks/use-scrollbar.d.ts +2 -2
  322. package/dist/components/scroll-area/src/hooks/use-thumb.d.ts +2 -2
  323. package/dist/components/scroll-area/src/tv.d.ts +18 -18
  324. package/dist/components/scroll-area/src/tv.js +12 -12
  325. package/dist/components/scroll-area/src/types.d.ts +8 -8
  326. package/dist/components/scroll-area/src/utils/index.d.ts +3 -3
  327. package/dist/components/search-input/dist/index.js +3 -3
  328. package/dist/components/search-input/src/index.d.ts +2 -1
  329. package/dist/components/search-input/src/search-input.js +3 -3
  330. package/dist/components/segmented/dist/index.js +5 -5
  331. package/dist/components/segmented/src/segmented-item.js +3 -3
  332. package/dist/components/segmented/src/segmented.js +2 -2
  333. package/dist/components/select/dist/index.js +4 -4
  334. package/dist/components/select/src/select.js +4 -4
  335. package/dist/components/separator/dist/index.d.ts +26 -0
  336. package/dist/components/separator/src/index.d.ts +2 -0
  337. package/dist/components/separator/src/separator.d.ts +22 -0
  338. package/dist/components/separator/src/separator.js +33 -0
  339. package/dist/components/separator/src/tv.d.ts +76 -0
  340. package/dist/components/separator/src/tv.js +25 -0
  341. package/dist/components/separator/tsup.config.d.ts +2 -0
  342. package/dist/components/skeleton/dist/index.d.ts +1 -28
  343. package/dist/components/skeleton/src/context/skeleton-context.js +1 -1
  344. package/dist/components/skeleton/src/hooks/use-skeleton.d.ts +1 -2
  345. package/dist/components/skeleton/src/hooks/use-skeleton.js +1 -1
  346. package/dist/components/skeleton/src/index.d.ts +1 -3
  347. package/dist/components/skeleton/src/skeleton.d.ts +0 -13
  348. package/dist/components/skeleton/src/skeleton.js +4 -6
  349. package/dist/components/skeleton/src/tv.d.ts +18 -12
  350. package/dist/components/skeleton/src/tv.js +10 -6
  351. package/dist/components/slot/dist/index.d.ts +10 -10
  352. package/dist/components/slot/dist/index.js +4 -2
  353. package/dist/components/slot/src/slot.d.ts +12 -12
  354. package/dist/components/slot/src/slot.js +6 -3
  355. package/dist/components/stackflow/src/context.js +1 -1
  356. package/dist/components/stackflow/src/index.d.ts +2 -1
  357. package/dist/components/switch/dist/index.d.ts +2 -2
  358. package/dist/components/switch/dist/index.js +6 -7
  359. package/dist/components/switch/src/index.d.ts +2 -1
  360. package/dist/components/switch/src/switch.js +6 -6
  361. package/dist/components/table/dist/index.d.ts +679 -0
  362. package/dist/components/table/index.d.ts +1 -0
  363. package/dist/components/table/src/components/column-resizer.d.ts +8 -0
  364. package/dist/components/table/src/components/column-resizer.js +58 -0
  365. package/dist/components/table/src/components/drag-guide.d.ts +6 -0
  366. package/dist/components/table/src/components/drag-guide.js +64 -0
  367. package/dist/components/table/src/components/index.d.ts +12 -0
  368. package/dist/components/table/src/components/resize-guide.d.ts +5 -0
  369. package/dist/components/table/src/components/resize-guide.js +25 -0
  370. package/dist/components/table/src/components/table-body.d.ts +6 -0
  371. package/dist/components/table/src/components/table-body.js +335 -0
  372. package/dist/components/table/src/components/table-cell.d.ts +6 -0
  373. package/dist/components/table/src/components/table-cell.js +89 -0
  374. package/dist/components/table/src/components/table-column.d.ts +5 -0
  375. package/dist/components/table/src/components/table-column.js +269 -0
  376. package/dist/components/table/src/components/table-empty.d.ts +8 -0
  377. package/dist/components/table/src/components/table-empty.js +10 -0
  378. package/dist/components/table/src/components/table-footer.d.ts +7 -0
  379. package/dist/components/table/src/components/table-footer.js +15 -0
  380. package/dist/components/table/src/components/table-header.d.ts +3 -0
  381. package/dist/components/table/src/components/table-header.js +88 -0
  382. package/dist/components/table/src/components/table-root.d.ts +3 -0
  383. package/dist/components/table/src/components/table-root.js +317 -0
  384. package/dist/components/table/src/components/table-row.d.ts +23 -0
  385. package/dist/components/table/src/components/table-row.js +166 -0
  386. package/dist/components/table/src/components/table-value.d.ts +6 -0
  387. package/dist/components/table/src/components/table-value.js +8 -0
  388. package/dist/components/table/src/context.d.ts +121 -0
  389. package/dist/components/table/src/context.js +63 -0
  390. package/dist/components/table/src/hooks/index.d.ts +4 -0
  391. package/dist/components/table/src/hooks/use-column-order.d.ts +26 -0
  392. package/dist/components/table/src/hooks/use-column-order.js +95 -0
  393. package/dist/components/table/src/hooks/use-column-resize.d.ts +17 -0
  394. package/dist/components/table/src/hooks/use-column-resize.js +75 -0
  395. package/dist/components/table/src/hooks/use-consecutive-selection-style.d.ts +12 -0
  396. package/dist/components/table/src/hooks/use-consecutive-selection-style.js +28 -0
  397. package/dist/components/table/src/hooks/use-table.d.ts +35 -0
  398. package/dist/components/table/src/hooks/use-table.js +245 -0
  399. package/dist/components/table/src/index.d.ts +4 -0
  400. package/dist/components/table/src/table.d.ts +88 -0
  401. package/dist/components/table/src/table.js +24 -0
  402. package/dist/components/table/src/tv.d.ts +176 -0
  403. package/dist/components/table/src/tv.js +97 -0
  404. package/dist/components/table/src/types.d.ts +292 -0
  405. package/dist/components/table/tsup.config.d.ts +2 -0
  406. package/dist/components/tabs/dist/index.js +4 -3
  407. package/dist/components/tabs/src/tabs.d.ts +2 -2
  408. package/dist/components/tabs/src/tabs.js +5 -4
  409. package/dist/components/text-field/dist/index.d.ts +1 -1
  410. package/dist/components/text-field/dist/index.js +10 -10
  411. package/dist/components/text-field/src/components/field-addon.d.ts +1 -2
  412. package/dist/components/text-field/src/index.d.ts +3 -1
  413. package/dist/components/text-field/src/text-field.js +10 -10
  414. package/dist/components/textarea/dist/index.d.ts +33 -5
  415. package/dist/components/textarea/dist/index.js +32 -7
  416. package/dist/components/textarea/src/components/autosize/index.d.ts +6 -1
  417. package/dist/components/textarea/src/components/autosize/index.js +31 -6
  418. package/dist/components/textarea/src/textarea.js +1 -1
  419. package/dist/components/textarea/src/types.d.ts +33 -5
  420. package/dist/components/toggle-button/dist/index.d.ts +26 -2
  421. package/dist/components/toggle-button/src/context.d.ts +11 -0
  422. package/dist/components/toggle-button/src/context.js +13 -0
  423. package/dist/components/toggle-button/src/index.d.ts +2 -0
  424. package/dist/components/toggle-button/src/toggle-button.js +4 -4
  425. package/dist/components/toggle-button/src/toggle-group.d.ts +26 -0
  426. package/dist/components/toggle-button/src/toggle-group.js +156 -0
  427. package/dist/components/toggle-button/src/tv.d.ts +67 -3
  428. package/dist/components/toggle-button/src/tv.js +45 -14
  429. package/dist/components/tooltip/dist/index.d.ts +10 -43
  430. package/dist/components/tooltip/dist/index.js +35 -33
  431. package/dist/components/tooltip/src/components/tooltip-arrow.js +1 -1
  432. package/dist/components/tooltip/src/components/tooltip-content.js +5 -4
  433. package/dist/components/tooltip/src/context/index.d.ts +1 -0
  434. package/dist/components/tooltip/src/hooks/use-tooltip.js +3 -3
  435. package/dist/components/tooltip/src/index.d.ts +2 -4
  436. package/dist/components/tooltip/src/tooltip.d.ts +7 -1
  437. package/dist/components/tooltip/src/tooltip.js +6 -1
  438. package/dist/components/tooltip/src/tv.js +1 -1
  439. package/dist/components/virtualized-grid/dist/index.d.ts +2 -2
  440. package/dist/components/virtualized-grid/src/use-item-pool.js +14 -26
  441. package/dist/components/virtualized-grid/src/use-virtualized-grid.d.ts +1 -1
  442. package/dist/components/virtualized-grid/src/use-virtualized-grid.js +14 -8
  443. package/dist/components/virtualized-grid/src/utility.d.ts +1 -1
  444. package/dist/components/virtualized-grid/src/utility.js +37 -31
  445. package/dist/components/virtualized-grid/src/virtualized-grid.js +27 -17
  446. package/dist/context/choice-ui-provider.d.ts +35 -0
  447. package/dist/context/choice-ui-provider.js +14 -0
  448. package/dist/context/index.d.ts +2 -0
  449. package/dist/index.d.ts +1 -0
  450. package/dist/index.js +53 -177
  451. package/package.json +1 -1
  452. package/dist/components/code-block/src/index.js +0 -15
  453. package/dist/components/rich-input/src/hooks/use-mouse-events.js +0 -113
  454. package/dist/components/rich-input/src/hooks/use-validation.js +0 -80
  455. package/dist/components/rich-input/src/utils/markdown-to-slate.js +0 -219
  456. /package/dist/components/command/src/{command-score.d.ts → utils/command-score.d.ts} +0 -0
  457. /package/dist/components/command/src/{command-score.js → utils/command-score.js} +0 -0
  458. /package/dist/components/pagination/src/{components → context}/pagination-context.d.ts +0 -0
  459. /package/dist/components/pagination/src/{components → context}/pagination-context.js +0 -0
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { IconButton } from "../../../icon-button/dist/index.js";
3
- import { FileCode, CircleCirclehecirclek, ClipboardSmall, Enlarge } from "@choiceform/icons-react";
3
+ import { FileCode, Check, ClipboardSmall, Enlarge } from "@choiceform/icons-react";
4
4
  import { memo } from "react";
5
5
  import { getIconFromFilename, getLanguageIcon } from "../utils/language-icon-map.js";
6
6
  import { getDefaultFilenameForLanguage } from "../utils/default-filename.js";
@@ -9,17 +9,51 @@ const codeBlockHeaderTv = tcv({
9
9
  slots: {
10
10
  header: "text-body-medium code-header flex h-8 items-center justify-between pr-1 pl-2",
11
11
  title: "flex items-center gap-1",
12
- filename: "text-secondary-foreground",
12
+ filename: "",
13
13
  actions: "flex items-center",
14
- button: "opacity-0 group-hover:opacity-100",
14
+ button: "opacity-0 group-hover/code-block:opacity-100",
15
15
  lineCount: "text-success-foreground ml-2 font-strong"
16
16
  },
17
17
  variants: {
18
18
  isExpanded: {
19
- true: { header: "bg-secondary-background" },
19
+ true: {},
20
20
  false: {}
21
+ },
22
+ variant: {
23
+ default: {
24
+ filename: "text-secondary-foreground"
25
+ },
26
+ light: {
27
+ filename: "text-gray-900"
28
+ },
29
+ dark: {
30
+ filename: "text-white"
31
+ }
21
32
  }
22
33
  },
34
+ compoundVariants: [
35
+ {
36
+ variant: "default",
37
+ isExpanded: true,
38
+ class: {
39
+ header: "bg-secondary-background"
40
+ }
41
+ },
42
+ {
43
+ variant: "light",
44
+ isExpanded: true,
45
+ class: {
46
+ header: "bg-gray-100"
47
+ }
48
+ },
49
+ {
50
+ variant: "dark",
51
+ isExpanded: true,
52
+ class: {
53
+ header: "bg-gray-700"
54
+ }
55
+ }
56
+ ],
23
57
  defaultVariants: {
24
58
  isExpanded: true
25
59
  }
@@ -28,7 +62,7 @@ const CodeBlockHeader = memo(function CodeBlockHeader2(props) {
28
62
  const {
29
63
  className,
30
64
  codeBlock,
31
- showLineCount = true,
65
+ showLineCount = false,
32
66
  i18n = {
33
67
  collapse: "Collapse",
34
68
  copied: "Copied",
@@ -46,12 +80,13 @@ const CodeBlockHeader = memo(function CodeBlockHeader2(props) {
46
80
  copied = false,
47
81
  expandable = true,
48
82
  handleExpand,
49
- handleCopy
83
+ handleCopy,
84
+ variant
50
85
  } = codeBlock;
51
86
  if (!handleExpand || !handleCopy) {
52
87
  return null;
53
88
  }
54
- const tv = codeBlockHeaderTv({ isExpanded });
89
+ const tv = codeBlockHeaderTv({ isExpanded, variant });
55
90
  let icon = null;
56
91
  try {
57
92
  if (filename && typeof filename === "string") {
@@ -78,17 +113,17 @@ const CodeBlockHeader = memo(function CodeBlockHeader2(props) {
78
113
  IconButton,
79
114
  {
80
115
  className: tv.button(),
81
- variant: "ghost",
116
+ variant: variant === "dark" ? "dark" : "ghost",
82
117
  onClick: () => handleCopy(),
83
118
  tooltip: { content: copyTooltipContent },
84
- children: copied ? /* @__PURE__ */ jsx(CircleCirclehecirclek, { className: "text-success-foreground" }) : /* @__PURE__ */ jsx(ClipboardSmall, {})
119
+ children: copied ? /* @__PURE__ */ jsx(Check, { className: "text-success-foreground" }) : /* @__PURE__ */ jsx(ClipboardSmall, {})
85
120
  }
86
121
  ),
87
122
  expandable && /* @__PURE__ */ jsx(
88
123
  IconButton,
89
124
  {
90
125
  className: tv.button(),
91
- variant: "ghost",
126
+ variant: variant === "dark" ? "dark" : "ghost",
92
127
  onClick: handleExpand,
93
128
  tooltip: {
94
129
  content: expandTooltipContent
@@ -1,10 +1,4 @@
1
- import { CodeBlockContent } from './components';
2
- export declare const CodeBlock: import('react').NamedExoticComponent<import('../..').CodeBlockProps> & {
3
- Code: import('react').NamedExoticComponent<import('../..').CodeBlockCodeProps>;
4
- Content: typeof CodeBlockContent;
5
- Footer: import('react').NamedExoticComponent<import('../..').CodeBlockFooterProps>;
6
- Header: import('react').NamedExoticComponent<import('../..').CodeBlockHeaderProps>;
7
- };
8
- export { CodeBlockCode } from './components';
9
- export type { CodeBlockProps, CodeBlockHeaderProps, CodeBlockFooterProps, CodeBlockContentProps, CodeBlockCodeProps, CodeBlockContextValue, CodeBlockInjectedProps, UseCodeBlockOptions, UseCodeBlockReturn, UseScrollDetectionOptions, } from './types';
1
+ export { CodeBlock } from './code-block';
2
+ export { CodeBlockHeader, CodeBlockFooter, CodeBlockContent, CodeBlockCode } from './components';
3
+ export type { CodeBlockProps, CodeBlockHeaderProps, CodeBlockFooterProps, CodeBlockContentProps, CodeBlockCodeProps, } from './types';
10
4
  export { getDefaultFilenameForLanguage } from './utils';
@@ -19,21 +19,33 @@ interface ComboboxTriggerProps extends Omit<HTMLProps<HTMLInputElement>, "size"
19
19
  value?: string;
20
20
  variant?: "default" | "dark" | "reset";
21
21
  }
22
- declare const ComboboxTrigger: React.ForwardRefExoticComponent<Omit<ComboboxTriggerProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
22
+ declare const ComboboxTrigger: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<ComboboxTriggerProps, "ref"> & React.RefAttributes<HTMLInputElement>>>;
23
23
 
24
24
  interface ComboboxRef {
25
25
  handleKeyDown: (event: React.KeyboardEvent) => void;
26
26
  }
27
27
  interface ComboboxProps {
28
+ /**
29
+ * @default true
30
+ */
28
31
  autoSelection?: boolean;
29
32
  children?: React.ReactNode;
30
33
  disabled?: boolean;
31
- focusManagerProps?: FloatingFocusManagerProps;
34
+ /**
35
+ * @default { returnFocus: true, modal: false }
36
+ */
37
+ focusManagerProps?: Partial<Omit<FloatingFocusManagerProps, "children" | "context">>;
38
+ /**
39
+ * @default true
40
+ */
32
41
  matchTriggerWidth?: boolean;
33
42
  onBlur?: (value: string) => void;
34
43
  onChange?: (value: string) => void;
35
44
  onOpenChange?: (open: boolean, trigger?: "click" | "focus" | "input") => void;
36
45
  open?: boolean;
46
+ /**
47
+ * @default "bottom-start"
48
+ */
37
49
  placement?: Placement;
38
50
  portalId?: string;
39
51
  position?: {
@@ -42,8 +54,15 @@ interface ComboboxProps {
42
54
  } | null;
43
55
  readOnly?: boolean;
44
56
  root?: HTMLElement | null;
57
+ /**
58
+ * Trigger type: "input" for input mode, "coordinate" for coordinate mode
59
+ * @default "input"
60
+ */
45
61
  trigger?: "input" | "coordinate";
46
62
  value?: string;
63
+ /**
64
+ * @default "default"
65
+ */
47
66
  variant?: "default" | "light" | "reset";
48
67
  }
49
68
  interface ComboboxComponentType extends React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<ComboboxRef>> {
@@ -119,8 +119,8 @@ var comboboxTriggerTv = tcv({
119
119
  noMatch: false
120
120
  }
121
121
  });
122
- var ComboboxTrigger = forwardRef(
123
- function ComboboxTrigger2(props, ref) {
122
+ var ComboboxTrigger = memo(
123
+ forwardRef(function ComboboxTrigger2(props, ref) {
124
124
  const {
125
125
  active = false,
126
126
  className,
@@ -194,12 +194,14 @@ var ComboboxTrigger = forwardRef(
194
194
  variant: "ghost",
195
195
  tooltip: { content: i18n.clear },
196
196
  onClick: handleClear,
197
+ disabled,
197
198
  children: /* @__PURE__ */ jsx(RemoveSmall, {})
198
199
  }
199
200
  ) : suffixElement && /* @__PURE__ */ jsx(
200
201
  IconButton,
201
202
  {
202
203
  className: tv.icon(),
204
+ disabled,
203
205
  variant: "solid",
204
206
  active,
205
207
  onClick: (e) => {
@@ -211,8 +213,9 @@ var ComboboxTrigger = forwardRef(
211
213
  }
212
214
  )
213
215
  ] });
214
- }
216
+ })
215
217
  );
218
+ ComboboxTrigger.displayName = "ComboboxTrigger";
216
219
  var PORTAL_ROOT_ID = "floating-menu-root";
217
220
  var DEFAULT_OFFSET = 4;
218
221
  var ComboboxComponent = memo(function ComboboxComponent2(props) {
@@ -230,7 +233,6 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
230
233
  position,
231
234
  readOnly = false,
232
235
  trigger = "input",
233
- // 默认为输入模式
234
236
  value: controlledValue = "",
235
237
  focusManagerProps = {
236
238
  returnFocus: true,
@@ -327,8 +329,10 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
327
329
  apply(args) {
328
330
  var _a;
329
331
  const { elements, availableHeight, rects } = args;
330
- const contentHeight = ((_a = scrollRef.current) == null ? void 0 : _a.scrollHeight) || elements.floating.scrollHeight;
331
- const maxHeight = Math.min(contentHeight, availableHeight);
332
+ const floatingScrollHeight = elements.floating.scrollHeight;
333
+ const scrollRefHeight = ((_a = scrollRef.current) == null ? void 0 : _a.scrollHeight) || 0;
334
+ const contentHeight = Math.max(floatingScrollHeight, scrollRefHeight);
335
+ const maxHeight = contentHeight > 0 ? Math.min(contentHeight, availableHeight) : availableHeight;
332
336
  Object.assign(elements.floating.style, {
333
337
  maxHeight: `${maxHeight}px`,
334
338
  display: "flex",
@@ -375,8 +379,6 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
375
379
  virtual: true,
376
380
  loop: true,
377
381
  allowEscape: !isCoordinateMode
378
- // 官方案例中有这个设置
379
- // selectedIndex: isCoordinateMode ? null : activeIndex, // 确保选中状态同步
380
382
  });
381
383
  const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([
382
384
  role,
@@ -431,11 +433,11 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
431
433
  setScrollTop,
432
434
  touch,
433
435
  isSelect: false,
434
- // Combobox 不是 Select
436
+ // Combobox is not a Select
435
437
  fallback: false,
436
- // Combobox 没有 fallback 机制
438
+ // Combobox does not have fallback mechanism
437
439
  setInnerOffset: void 0
438
- // Combobox 不使用 innerOffset
440
+ // Combobox does not use innerOffset
439
441
  });
440
442
  const handleTouchStart = useEventCallback(() => {
441
443
  setTouch(true);
@@ -568,7 +570,7 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
568
570
  onContextMenu(e) {
569
571
  e.preventDefault();
570
572
  },
571
- // 坐标模式下添加键盘事件处理
573
+ // Add keyboard event handling in coordinate mode
572
574
  ...isCoordinateMode && {
573
575
  tabIndex: 0,
574
576
  onKeyDown: handleKeyDown
@@ -590,7 +592,8 @@ var ComboboxComponent = memo(function ComboboxComponent2(props) {
590
592
  innerOffset: 0,
591
593
  isPositioned,
592
594
  onScroll: handleArrowScroll,
593
- onHide: handleArrowHide
595
+ onHide: handleArrowHide,
596
+ variant
594
597
  },
595
598
  dir
596
599
  ))
@@ -17,4 +17,4 @@ export interface ComboboxTriggerProps extends Omit<HTMLProps<HTMLInputElement>,
17
17
  value?: string;
18
18
  variant?: "default" | "dark" | "reset";
19
19
  }
20
- export declare const ComboboxTrigger: React.ForwardRefExoticComponent<Omit<ComboboxTriggerProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
20
+ export declare const ComboboxTrigger: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<ComboboxTriggerProps, "ref"> & React.RefAttributes<HTMLInputElement>>>;
@@ -1,12 +1,12 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { IconButton } from "../../icon-button/dist/index.js";
3
3
  import { ChevronDownSmall, RemoveSmall } from "@choiceform/icons-react";
4
- import { forwardRef, useState } from "react";
4
+ import { memo, forwardRef, useState } from "react";
5
5
  import { useEventCallback } from "usehooks-ts";
6
6
  import { comboboxTriggerTv } from "./tv.js";
7
7
  import { tcx } from "../../../shared/utils/tcx/tcx.js";
8
- const ComboboxTrigger = forwardRef(
9
- function ComboboxTrigger2(props, ref) {
8
+ const ComboboxTrigger = memo(
9
+ forwardRef(function ComboboxTrigger2(props, ref) {
10
10
  const {
11
11
  active = false,
12
12
  className,
@@ -80,12 +80,14 @@ const ComboboxTrigger = forwardRef(
80
80
  variant: "ghost",
81
81
  tooltip: { content: i18n.clear },
82
82
  onClick: handleClear,
83
+ disabled,
83
84
  children: /* @__PURE__ */ jsx(RemoveSmall, {})
84
85
  }
85
86
  ) : suffixElement && /* @__PURE__ */ jsx(
86
87
  IconButton,
87
88
  {
88
89
  className: tv.icon(),
90
+ disabled,
89
91
  variant: "solid",
90
92
  active,
91
93
  onClick: (e) => {
@@ -97,8 +99,9 @@ const ComboboxTrigger = forwardRef(
97
99
  }
98
100
  )
99
101
  ] });
100
- }
102
+ })
101
103
  );
104
+ ComboboxTrigger.displayName = "ComboboxTrigger";
102
105
  export {
103
106
  ComboboxTrigger
104
107
  };
@@ -6,15 +6,27 @@ export interface ComboboxRef {
6
6
  handleKeyDown: (event: React.KeyboardEvent) => void;
7
7
  }
8
8
  export interface ComboboxProps {
9
+ /**
10
+ * @default true
11
+ */
9
12
  autoSelection?: boolean;
10
13
  children?: React.ReactNode;
11
14
  disabled?: boolean;
12
- focusManagerProps?: FloatingFocusManagerProps;
15
+ /**
16
+ * @default { returnFocus: true, modal: false }
17
+ */
18
+ focusManagerProps?: Partial<Omit<FloatingFocusManagerProps, "children" | "context">>;
19
+ /**
20
+ * @default true
21
+ */
13
22
  matchTriggerWidth?: boolean;
14
23
  onBlur?: (value: string) => void;
15
24
  onChange?: (value: string) => void;
16
25
  onOpenChange?: (open: boolean, trigger?: "click" | "focus" | "input") => void;
17
26
  open?: boolean;
27
+ /**
28
+ * @default "bottom-start"
29
+ */
18
30
  placement?: Placement;
19
31
  portalId?: string;
20
32
  position?: {
@@ -23,8 +35,15 @@ export interface ComboboxProps {
23
35
  } | null;
24
36
  readOnly?: boolean;
25
37
  root?: HTMLElement | null;
38
+ /**
39
+ * Trigger type: "input" for input mode, "coordinate" for coordinate mode
40
+ * @default "input"
41
+ */
26
42
  trigger?: "input" | "coordinate";
27
43
  value?: string;
44
+ /**
45
+ * @default "default"
46
+ */
28
47
  variant?: "default" | "light" | "reset";
29
48
  }
30
49
  interface ComboboxComponentType extends React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<ComboboxRef>> {
@@ -24,7 +24,6 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
24
24
  position,
25
25
  readOnly = false,
26
26
  trigger = "input",
27
- // 默认为输入模式
28
27
  value: controlledValue = "",
29
28
  focusManagerProps = {
30
29
  returnFocus: true,
@@ -121,8 +120,10 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
121
120
  apply(args) {
122
121
  var _a;
123
122
  const { elements, availableHeight, rects } = args;
124
- const contentHeight = ((_a = scrollRef.current) == null ? void 0 : _a.scrollHeight) || elements.floating.scrollHeight;
125
- const maxHeight = Math.min(contentHeight, availableHeight);
123
+ const floatingScrollHeight = elements.floating.scrollHeight;
124
+ const scrollRefHeight = ((_a = scrollRef.current) == null ? void 0 : _a.scrollHeight) || 0;
125
+ const contentHeight = Math.max(floatingScrollHeight, scrollRefHeight);
126
+ const maxHeight = contentHeight > 0 ? Math.min(contentHeight, availableHeight) : availableHeight;
126
127
  Object.assign(elements.floating.style, {
127
128
  maxHeight: `${maxHeight}px`,
128
129
  display: "flex",
@@ -169,8 +170,6 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
169
170
  virtual: true,
170
171
  loop: true,
171
172
  allowEscape: !isCoordinateMode
172
- // 官方案例中有这个设置
173
- // selectedIndex: isCoordinateMode ? null : activeIndex, // 确保选中状态同步
174
173
  });
175
174
  const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([
176
175
  role,
@@ -225,11 +224,11 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
225
224
  setScrollTop,
226
225
  touch,
227
226
  isSelect: false,
228
- // Combobox 不是 Select
227
+ // Combobox is not a Select
229
228
  fallback: false,
230
- // Combobox 没有 fallback 机制
229
+ // Combobox does not have fallback mechanism
231
230
  setInnerOffset: void 0
232
- // Combobox 不使用 innerOffset
231
+ // Combobox does not use innerOffset
233
232
  });
234
233
  const handleTouchStart = useEventCallback(() => {
235
234
  setTouch(true);
@@ -362,7 +361,7 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
362
361
  onContextMenu(e) {
363
362
  e.preventDefault();
364
363
  },
365
- // 坐标模式下添加键盘事件处理
364
+ // Add keyboard event handling in coordinate mode
366
365
  ...isCoordinateMode && {
367
366
  tabIndex: 0,
368
367
  onKeyDown: handleKeyDown
@@ -384,7 +383,8 @@ const ComboboxComponent = memo(function ComboboxComponent2(props) {
384
383
  innerOffset: 0,
385
384
  isPositioned,
386
385
  onScroll: handleArrowScroll,
387
- onHide: handleArrowHide
386
+ onHide: handleArrowHide,
387
+ variant
388
388
  },
389
389
  dir
390
390
  ))
@@ -10,9 +10,24 @@ interface CommandEmptyProps extends HTMLProps<HTMLDivElement> {
10
10
  }
11
11
 
12
12
  interface CommandGroupProps extends HTMLProps<HTMLDivElement> {
13
+ /**
14
+ * Whether to force mount the group.
15
+ * @default false
16
+ */
13
17
  forceMount?: boolean;
18
+ /**
19
+ * The heading of the group.
20
+ */
14
21
  heading?: react__default.ReactNode;
22
+ /**
23
+ * The value of the group.
24
+ */
15
25
  value?: string;
26
+ /**
27
+ * Whether the group is hidden.
28
+ * @default false
29
+ */
30
+ hidden?: boolean;
16
31
  }
17
32
 
18
33
  interface CommandInputProps extends Omit<TextFieldProps, "value" | "onChange" | "type"> {
@@ -43,12 +58,23 @@ interface CommandListProps extends ScrollAreaProps {
43
58
  }
44
59
 
45
60
  interface CommandLoadingProps extends react__default.HTMLAttributes<HTMLDivElement> {
61
+ /**
62
+ * The label of the loading.
63
+ * @default "Loading..."
64
+ */
46
65
  label?: string;
66
+ /**
67
+ * The progress of the loading.
68
+ * @default undefined
69
+ */
47
70
  progress?: number;
48
71
  }
49
72
 
50
73
  interface CommandDividerProps extends HTMLProps<HTMLDivElement> {
51
- /** 是否始终渲染此分隔符。当禁用自动过滤功能时特别有用。 */
74
+ /**
75
+ * Whether to always render this divider. Useful when automatic filtering is disabled.
76
+ * @default false
77
+ */
52
78
  alwaysRender?: boolean;
53
79
  }
54
80
 
@@ -85,17 +111,40 @@ interface CommandProps extends Omit<react__default.HTMLAttributes<HTMLDivElement
85
111
  * If `false`, you must conditionally render valid items based on the search query yourself.
86
112
  */
87
113
  shouldFilter?: boolean;
114
+ /**
115
+ * The size of the command menu.
116
+ * @default "default"
117
+ */
88
118
  size?: "default" | "large";
89
119
  /**
90
120
  * Optional controlled state of the selected command menu item.
91
121
  */
92
122
  value?: string;
123
+ /**
124
+ * The variant of the command menu.
125
+ * @default "default"
126
+ */
93
127
  variant?: "default" | "dark";
94
128
  /**
95
129
  * Set to `false` to disable ctrl+n/j/p/k shortcuts. Defaults to `true`.
96
130
  */
97
131
  vimBindings?: boolean;
98
132
  }
133
+ type Context = {
134
+ filter: () => boolean;
135
+ getDisablePointerSelection: () => boolean;
136
+ group: (id: string) => () => void;
137
+ inputId: string;
138
+ item: (id: string, groupId?: string) => () => void;
139
+ label?: string;
140
+ labelId: string;
141
+ listId: string;
142
+ listInnerRef: react__default.MutableRefObject<HTMLDivElement | null>;
143
+ size?: "default" | "large";
144
+ store: Store;
145
+ value: (id: string, value?: string, keywords?: string[]) => void;
146
+ variant?: "default" | "dark";
147
+ };
99
148
  type State = {
100
149
  filtered: {
101
150
  count: number;
@@ -106,19 +155,31 @@ type State = {
106
155
  selectedItemId?: string;
107
156
  value: string;
108
157
  };
158
+ type Store = {
159
+ emit: () => void;
160
+ setState: <K extends keyof State>(key: K, value: State[K], opts?: unknown) => void;
161
+ snapshot: () => State;
162
+ subscribe: (callback: () => void) => () => void;
163
+ };
109
164
 
110
165
  declare const defaultFilter: CommandFilter;
111
166
  declare const Command$1: react__default.ForwardRefExoticComponent<CommandProps & react__default.RefAttributes<HTMLDivElement>>;
112
167
 
168
+ declare const useCommand: () => Context;
169
+
113
170
  /** Run a selector against the store state. */
114
171
  declare function useCommandState<T>(selector: (state: State) => T): T;
115
172
 
173
+ declare function useValue(id: string, ref: react__default.RefObject<HTMLElement>, deps: (string | react__default.ReactNode | react__default.RefObject<HTMLElement>)[], aliases?: string[]): react__default.MutableRefObject<string | undefined>;
174
+
175
+ declare function commandScore(string: string, abbreviation: string, aliases?: string[]): number;
176
+
116
177
  declare const Command: react.ForwardRefExoticComponent<CommandProps & react.RefAttributes<HTMLDivElement>> & {
117
178
  Empty: react.ForwardRefExoticComponent<Omit<CommandEmptyProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
118
179
  Footer: react.ForwardRefExoticComponent<Omit<react.HTMLProps<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
119
- Group: react.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
180
+ Group: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & react.RefAttributes<HTMLDivElement>>>;
120
181
  Input: react.ForwardRefExoticComponent<Omit<CommandInputProps, "ref"> & react.RefAttributes<HTMLInputElement>>;
121
- Item: react.ForwardRefExoticComponent<Omit<CommandItemProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
182
+ Item: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<CommandItemProps, "ref"> & react.RefAttributes<HTMLDivElement>>>;
122
183
  List: react.ForwardRefExoticComponent<CommandListProps & react.RefAttributes<HTMLDivElement>>;
123
184
  Loading: react.ForwardRefExoticComponent<CommandLoadingProps & react.RefAttributes<HTMLDivElement>>;
124
185
  Divider: react.ForwardRefExoticComponent<Omit<CommandDividerProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
@@ -127,4 +188,4 @@ declare const Command: react.ForwardRefExoticComponent<CommandProps & react.RefA
127
188
  TabItem: react.MemoExoticComponent<react.ForwardRefExoticComponent<Omit<_choice_ui_tabs.TabItemProps, "ref"> & react.RefAttributes<HTMLElement>>>;
128
189
  };
129
190
 
130
- export { Command, Command$1 as CommandRoot, defaultFilter, useCommandState };
191
+ export { Command, type CommandDividerProps, type CommandGroupProps, type CommandInputProps, type CommandItemProps, type CommandListProps, type CommandLoadingProps, type CommandProps, Command$1 as CommandRoot, commandScore, defaultFilter, useCommand, useCommandState, useValue };
@@ -1,7 +1,6 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, useId, useRef, useMemo, useCallback } from "react";
3
3
  import { useIsomorphicLayoutEffect, useEventCallback } from "usehooks-ts";
4
- import { commandScore } from "./command-score.js";
5
4
  import { commandTv } from "./tv.js";
6
5
  import { useAsRef } from "./hooks/use-as-ref.js";
7
6
  import { useScheduleLayoutEffect } from "./hooks/use-schedule-layout-effect.js";
@@ -10,6 +9,7 @@ import { findNextSibling, findPreviousSibling } from "./utils/dom.js";
10
9
  import { createCommandContext } from "./context/create-command-context.js";
11
10
  import { SlottableWithNestedChildren } from "./utils/helpers.js";
12
11
  import { StoreContext, CommandContext } from "./context/command-context.js";
12
+ import { commandScore } from "./utils/command-score.js";
13
13
  import { useLazyRef } from "../../../shared/hooks/use-lazy-ref/use-lazy-ref.js";
14
14
  import { tcx } from "../../../shared/utils/tcx/tcx.js";
15
15
  const defaultFilter = (value, search, keywords) => commandScore(value, search, keywords);
@@ -163,7 +163,6 @@ const Command = forwardRef((props, forwardedRef) => {
163
163
  store.setState("value", value2 || "");
164
164
  }, []);
165
165
  const filterItems = useCallback(() => {
166
- var _a, _b;
167
166
  if (!state.current.search || // Explicitly false, because true | undefined is the default
168
167
  propsRef.current.shouldFilter === false) {
169
168
  state.current.filtered.count = allItems.current.size;
@@ -172,8 +171,10 @@ const Command = forwardRef((props, forwardedRef) => {
172
171
  state.current.filtered.groups = /* @__PURE__ */ new Set();
173
172
  let itemCount = 0;
174
173
  for (const id of allItems.current) {
175
- const value2 = ((_a = ids.current.get(id)) == null ? void 0 : _a.value) ?? "";
176
- const keywords = ((_b = ids.current.get(id)) == null ? void 0 : _b.keywords) ?? [];
174
+ const itemData = ids.current.get(id);
175
+ if (!itemData) continue;
176
+ const value2 = itemData.value ?? "";
177
+ const keywords = itemData.keywords ?? [];
177
178
  const rank = score(value2, keywords);
178
179
  state.current.filtered.items.set(id, rank);
179
180
  if (rank > 0) itemCount++;
@@ -259,7 +260,7 @@ const Command = forwardRef((props, forwardedRef) => {
259
260
  variant
260
261
  }),
261
262
  []
262
- // 空依赖数组,和原始实现一致
263
+ // Empty deps array, consistent with original cmdk implementation
263
264
  );
264
265
  const last = () => updateSelectedToIndex(getValidItems().length - 1);
265
266
  const next = (e) => {
@@ -1,6 +1,9 @@
1
1
  import { HTMLProps } from 'react';
2
2
  export interface CommandDividerProps extends HTMLProps<HTMLDivElement> {
3
- /** 是否始终渲染此分隔符。当禁用自动过滤功能时特别有用。 */
3
+ /**
4
+ * Whether to always render this divider. Useful when automatic filtering is disabled.
5
+ * @default false
6
+ */
4
7
  alwaysRender?: boolean;
5
8
  }
6
9
  export declare const CommandDivider: import('react').ForwardRefExoticComponent<Omit<CommandDividerProps, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
@@ -1,7 +1,22 @@
1
1
  import { default as React, HTMLProps } from 'react';
2
2
  export interface CommandGroupProps extends HTMLProps<HTMLDivElement> {
3
+ /**
4
+ * Whether to force mount the group.
5
+ * @default false
6
+ */
3
7
  forceMount?: boolean;
8
+ /**
9
+ * The heading of the group.
10
+ */
4
11
  heading?: React.ReactNode;
12
+ /**
13
+ * The value of the group.
14
+ */
5
15
  value?: string;
16
+ /**
17
+ * Whether the group is hidden.
18
+ * @default false
19
+ */
20
+ hidden?: boolean;
6
21
  }
7
- export declare const CommandGroup: React.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
22
+ export declare const CommandGroup: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<CommandGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>>;