@visulima/tui 0.0.1 → 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/CHANGELOG.md +194 -0
  2. package/LICENSE.md +303 -0
  3. package/README.md +173 -29
  4. package/dist/core/app.d.ts +50 -0
  5. package/dist/core/cell.d.ts +33 -0
  6. package/dist/core/index.d.ts +5 -0
  7. package/dist/core/index.js +5 -0
  8. package/dist/core/inline.d.ts +22 -0
  9. package/dist/core/input.d.ts +18 -0
  10. package/dist/core/native-binding.d.ts +22 -0
  11. package/dist/ink/ansi-to-cell.d.ts +5 -0
  12. package/dist/ink/ansi-tokenizer.d.ts +38 -0
  13. package/dist/ink/clipboard.d.ts +29 -0
  14. package/dist/ink/color-matrix.d.ts +49 -0
  15. package/dist/ink/color-utils.d.ts +30 -0
  16. package/dist/ink/colorize.d.ts +4 -0
  17. package/dist/ink/components/AccessibilityContext.d.ts +4 -0
  18. package/dist/ink/components/Alert.d.ts +30 -0
  19. package/dist/ink/components/AnimationContext.d.ts +10 -0
  20. package/dist/ink/components/App.d.ts +19 -0
  21. package/dist/ink/components/AppContext.d.ts +38 -0
  22. package/dist/ink/components/BackgroundContext.d.ts +5 -0
  23. package/dist/ink/components/Badge.d.ts +27 -0
  24. package/dist/ink/components/BigText.d.ts +71 -0
  25. package/dist/ink/components/Box.d.ts +58 -0
  26. package/dist/ink/components/Code.d.ts +46 -0
  27. package/dist/ink/components/ConfirmInput.d.ts +40 -0
  28. package/dist/ink/components/ConsoleOverlay.d.ts +52 -0
  29. package/dist/ink/components/Cursor.d.ts +43 -0
  30. package/dist/ink/components/CursorContext.d.ts +12 -0
  31. package/dist/ink/components/Dialog.d.ts +93 -0
  32. package/dist/ink/components/DiffView.d.ts +71 -0
  33. package/dist/ink/components/ErrorBoundary.d.ts +17 -0
  34. package/dist/ink/components/ErrorOverview.d.ts +6 -0
  35. package/dist/ink/components/FocusContext.d.ts +17 -0
  36. package/dist/ink/components/Gradient.d.ts +38 -0
  37. package/dist/ink/components/Help.d.ts +49 -0
  38. package/dist/ink/components/Link.d.ts +34 -0
  39. package/dist/ink/components/Markdown.d.ts +34 -0
  40. package/dist/ink/components/MultiSelect.d.ts +63 -0
  41. package/dist/ink/components/Newline.d.ts +12 -0
  42. package/dist/ink/components/OrderedList.d.ts +30 -0
  43. package/dist/ink/components/Paginator.d.ts +75 -0
  44. package/dist/ink/components/ProgressBar.d.ts +51 -0
  45. package/dist/ink/components/SelectInput.d.ts +96 -0
  46. package/dist/ink/components/SelectInputIndicator.d.ts +36 -0
  47. package/dist/ink/components/SelectInputItem.d.ts +43 -0
  48. package/dist/ink/components/Slider.d.ts +92 -0
  49. package/dist/ink/components/Spacer.d.ts +7 -0
  50. package/dist/ink/components/Spinner.d.ts +42 -0
  51. package/dist/ink/components/Static.d.ts +24 -0
  52. package/dist/ink/components/StaticRender.d.ts +28 -0
  53. package/dist/ink/components/StatusMessage.d.ts +26 -0
  54. package/dist/ink/components/StderrContext.d.ts +16 -0
  55. package/dist/ink/components/StdinContext.d.ts +29 -0
  56. package/dist/ink/components/StdoutContext.d.ts +16 -0
  57. package/dist/ink/components/Stopwatch.d.ts +44 -0
  58. package/dist/ink/components/Tab.d.ts +25 -0
  59. package/dist/ink/components/Table.d.ts +80 -0
  60. package/dist/ink/components/Tabs.d.ts +97 -0
  61. package/dist/ink/components/Text.d.ts +63 -0
  62. package/dist/ink/components/TextInput.d.ts +48 -0
  63. package/dist/ink/components/Textarea.d.ts +62 -0
  64. package/dist/ink/components/Timer.d.ts +52 -0
  65. package/dist/ink/components/Transform.d.ts +16 -0
  66. package/dist/ink/components/UnorderedList.d.ts +35 -0
  67. package/dist/ink/components/file-picker/FilePicker.d.ts +75 -0
  68. package/dist/ink/components/file-picker/index.d.ts +3 -0
  69. package/dist/ink/components/file-picker/types.d.ts +38 -0
  70. package/dist/ink/components/file-picker/use-file-system.d.ts +16 -0
  71. package/dist/ink/components/scroll/ControlledScrollView.d.ts +43 -0
  72. package/dist/ink/components/scroll/ScrollBar.d.ts +20 -0
  73. package/dist/ink/components/scroll/ScrollBarBox.d.ts +15 -0
  74. package/dist/ink/components/scroll/ScrollList.d.ts +12 -0
  75. package/dist/ink/components/scroll/ScrollView.d.ts +98 -0
  76. package/dist/ink/components/scroll/index.d.ts +10 -0
  77. package/dist/ink/components/scroll/use-state-ref.d.ts +8 -0
  78. package/dist/ink/components/tree-view/TreeView.d.ts +89 -0
  79. package/dist/ink/components/tree-view/TreeViewNode.d.ts +29 -0
  80. package/dist/ink/components/tree-view/index.d.ts +11 -0
  81. package/dist/ink/components/tree-view/theme.d.ts +24 -0
  82. package/dist/ink/components/tree-view/tree-node-map.d.ts +72 -0
  83. package/dist/ink/components/tree-view/types.d.ts +55 -0
  84. package/dist/ink/components/tree-view/use-tree-view-state.d.ts +135 -0
  85. package/dist/ink/components/tree-view/use-tree-view.d.ts +26 -0
  86. package/dist/ink/components/variant-config.d.ts +10 -0
  87. package/dist/ink/cursor-helpers.d.ts +38 -0
  88. package/dist/ink/data-limited-lru-map.d.ts +21 -0
  89. package/dist/ink/devtools-window-polyfill.d.ts +1 -0
  90. package/dist/ink/devtools.d.ts +1 -0
  91. package/dist/ink/dom.d.ts +213 -0
  92. package/dist/ink/get-max-width.d.ts +3 -0
  93. package/dist/ink/highlighter.d.ts +28 -0
  94. package/dist/ink/hooks/use-animation.d.ts +43 -0
  95. package/dist/ink/hooks/use-app.d.ts +6 -0
  96. package/dist/ink/hooks/use-box-metrics.d.ts +58 -0
  97. package/dist/ink/hooks/use-clipboard.d.ts +29 -0
  98. package/dist/ink/hooks/use-color-blindness.d.ts +33 -0
  99. package/dist/ink/hooks/use-console-capture.d.ts +43 -0
  100. package/dist/ink/hooks/use-cursor.d.ts +12 -0
  101. package/dist/ink/hooks/use-focus-manager.d.ts +42 -0
  102. package/dist/ink/hooks/use-focus.d.ts +30 -0
  103. package/dist/ink/hooks/use-input.d.ts +149 -0
  104. package/dist/ink/hooks/use-is-screen-reader-enabled.d.ts +6 -0
  105. package/dist/ink/hooks/use-key-bindings.d.ts +61 -0
  106. package/dist/ink/hooks/use-linked-scroll.d.ts +41 -0
  107. package/dist/ink/hooks/use-paste.d.ts +44 -0
  108. package/dist/ink/hooks/use-scroll-acceleration.d.ts +47 -0
  109. package/dist/ink/hooks/use-scroll-input.d.ts +34 -0
  110. package/dist/ink/hooks/use-stderr.d.ts +6 -0
  111. package/dist/ink/hooks/use-stdin.d.ts +7 -0
  112. package/dist/ink/hooks/use-stdout.d.ts +6 -0
  113. package/dist/ink/hooks/use-stopwatch.d.ts +40 -0
  114. package/dist/ink/hooks/use-terminal-palette.d.ts +19 -0
  115. package/dist/ink/hooks/use-text-buffer.d.ts +42 -0
  116. package/dist/ink/hooks/use-text-selection.d.ts +45 -0
  117. package/dist/ink/hooks/use-timer.d.ts +49 -0
  118. package/dist/ink/hooks/use-window-size.d.ts +18 -0
  119. package/dist/ink/ime-utils.d.ts +25 -0
  120. package/dist/ink/index.d.ts +159 -0
  121. package/dist/ink/index.js +100 -0
  122. package/dist/ink/ink.d.ts +189 -0
  123. package/dist/ink/input-parser.d.ts +10 -0
  124. package/dist/ink/input-utils.d.ts +16 -0
  125. package/dist/ink/instances.d.ts +3 -0
  126. package/dist/ink/kitty-keyboard.d.ts +23 -0
  127. package/dist/ink/layout.d.ts +26 -0
  128. package/dist/ink/log-update-native.d.ts +14 -0
  129. package/dist/ink/log-update.d.ts +21 -0
  130. package/dist/ink/measure-element.d.ts +147 -0
  131. package/dist/ink/measure-text.d.ts +56 -0
  132. package/dist/ink/mouse/Fullscreen.d.ts +8 -0
  133. package/dist/ink/mouse/MouseProvider.d.ts +11 -0
  134. package/dist/ink/mouse/ansi-parser.d.ts +37 -0
  135. package/dist/ink/mouse/constants.d.ts +59 -0
  136. package/dist/ink/mouse/index.d.ts +20 -0
  137. package/dist/ink/mouse/is-intersecting.d.ts +18 -0
  138. package/dist/ink/mouse/mouse-context.d.ts +36 -0
  139. package/dist/ink/mouse/use-element-position.d.ts +29 -0
  140. package/dist/ink/mouse/use-mouse-action.d.ts +7 -0
  141. package/dist/ink/mouse/use-mouse-position.d.ts +7 -0
  142. package/dist/ink/mouse/use-mouse.d.ts +7 -0
  143. package/dist/ink/mouse/use-on-mouse-click.d.ts +14 -0
  144. package/dist/ink/mouse/use-on-mouse-hover.d.ts +8 -0
  145. package/dist/ink/mouse/use-on-mouse-state.d.ts +11 -0
  146. package/dist/ink/output.d.ts +74 -0
  147. package/dist/ink/parse-keypress.d.ts +22 -0
  148. package/dist/ink/reconciler.d.ts +3 -0
  149. package/dist/ink/region.d.ts +99 -0
  150. package/dist/ink/render-background.d.ts +4 -0
  151. package/dist/ink/render-border.d.ts +4 -0
  152. package/dist/ink/render-node-to-output.d.ts +38 -0
  153. package/dist/ink/render-scrollbar.d.ts +9 -0
  154. package/dist/ink/render-sticky.d.ts +44 -0
  155. package/dist/ink/render-to-string.d.ts +37 -0
  156. package/dist/ink/render.d.ts +191 -0
  157. package/dist/ink/renderer.d.ts +17 -0
  158. package/dist/ink/resize-observer.d.ts +44 -0
  159. package/dist/ink/sanitize-ansi.d.ts +2 -0
  160. package/dist/ink/scroll.d.ts +23 -0
  161. package/dist/ink/selection.d.ts +70 -0
  162. package/dist/ink/squash-text-nodes.d.ts +18 -0
  163. package/dist/ink/style-flags.d.ts +17 -0
  164. package/dist/ink/styled-line-factory.d.ts +25 -0
  165. package/dist/ink/styled-line-serializer.d.ts +18 -0
  166. package/dist/ink/styled-line.d.ts +109 -0
  167. package/dist/ink/styles.d.ts +369 -0
  168. package/dist/ink/terminal-palette.d.ts +25 -0
  169. package/dist/ink/text-wrap.d.ts +10 -0
  170. package/dist/ink/token-to-elements.d.ts +22 -0
  171. package/dist/ink/utils/format-time.d.ts +4 -0
  172. package/dist/ink/utils.d.ts +9 -0
  173. package/dist/ink/wrap-text.d.ts +3 -0
  174. package/dist/ink/write-synchronized.d.ts +4 -0
  175. package/dist/packem_chunks/devtools.js +27 -0
  176. package/dist/packem_shared/AccessibilityContext-BLelHhNU.js +7 -0
  177. package/dist/packem_shared/Alert-Dr3s_LD9.js +17 -0
  178. package/dist/packem_shared/AnimationContext-BcJg8Jr6.js +15 -0
  179. package/dist/packem_shared/AppContext-CP0U6H7O.js +11 -0
  180. package/dist/packem_shared/BackgroundContext-BAUaxfOb.js +5 -0
  181. package/dist/packem_shared/Badge-Dk7EGGM6.js +13 -0
  182. package/dist/packem_shared/BigText-CjMdY63X.js +24 -0
  183. package/dist/packem_shared/Box-D_pSJ9Jp.js +73 -0
  184. package/dist/packem_shared/COLOR_BLINDNESS_SIMULATION-BsMy5Ewl.js +81 -0
  185. package/dist/packem_shared/Cell-DCg1kJY-.js +48 -0
  186. package/dist/packem_shared/Code-DjQvPBD9.js +53 -0
  187. package/dist/packem_shared/ConfirmInput-85Y4kRQW.js +44 -0
  188. package/dist/packem_shared/ConsoleOverlay-DBNa4vtj.js +57 -0
  189. package/dist/packem_shared/ControlledScrollView-BlOaxcsN.js +286 -0
  190. package/dist/packem_shared/ControlledScrollView-DfAhcufF.js +5 -0
  191. package/dist/packem_shared/Cursor-DiW7YoSK.js +18 -0
  192. package/dist/packem_shared/CursorContext-JxRzlqAx.js +9 -0
  193. package/dist/packem_shared/DevTools-aMPIsaHx.js +61 -0
  194. package/dist/packem_shared/Dialog-DsSNAVgC.js +71 -0
  195. package/dist/packem_shared/DiffView-hqaw-2S6.js +329 -0
  196. package/dist/packem_shared/FilePicker-DNwFxRhq.js +254 -0
  197. package/dist/packem_shared/FocusContext-CWkYtgcm.js +26 -0
  198. package/dist/packem_shared/FocusContext-D5wFxSRz.js +153 -0
  199. package/dist/packem_shared/Fullscreen-DrElAE1o.js +11 -0
  200. package/dist/packem_shared/Gradient-Ql5P0GUd.js +136 -0
  201. package/dist/packem_shared/Help-6wanGG38.js +112 -0
  202. package/dist/packem_shared/IMECompositionBuffer-Dl3S0KnF.js +55 -0
  203. package/dist/packem_shared/InputParser-BKHpWfvN.js +156 -0
  204. package/dist/packem_shared/LayoutNode-Cjnsodiy.js +131 -0
  205. package/dist/packem_shared/Link-COcKYfGT.js +66 -0
  206. package/dist/packem_shared/Markdown-y1ISztof.js +212 -0
  207. package/dist/packem_shared/MouseProvider-Y9TSSEGl.js +136 -0
  208. package/dist/packem_shared/MultiSelect-ChoLUcDI.js +129 -0
  209. package/dist/packem_shared/NAMED_COLORS-a4QBvb5r.js +262 -0
  210. package/dist/packem_shared/Newline-DBtYEg8x.js +7 -0
  211. package/dist/packem_shared/OrderedList-Cp7pXr6m.js +26 -0
  212. package/dist/packem_shared/Paginator-D1AuD-kj.js +104 -0
  213. package/dist/packem_shared/ProgressBar-DOfpVagn.js +22 -0
  214. package/dist/packem_shared/Renderer-zZ5O3vxc.js +31 -0
  215. package/dist/packem_shared/ResizeObserverEntry-Br4seLeQ.js +102 -0
  216. package/dist/packem_shared/ScrollBar-EWAs2Uc7.js +106 -0
  217. package/dist/packem_shared/ScrollBarBox-DTNNlh7R.js +72 -0
  218. package/dist/packem_shared/ScrollList-DCeIFL8M.js +227 -0
  219. package/dist/packem_shared/ScrollView-v3MCNIyX.js +196 -0
  220. package/dist/packem_shared/SelectInput-BN2TMyxp.js +260 -0
  221. package/dist/packem_shared/SelectInputIndicator-DkRMoH_b.js +9 -0
  222. package/dist/packem_shared/SelectInputItem-BF9LQgKu.js +8 -0
  223. package/dist/packem_shared/Slider-BWD7xZX6.js +116 -0
  224. package/dist/packem_shared/Spacer-Bs4ER-HK.js +8 -0
  225. package/dist/packem_shared/Spinner-BuI-kN4p.js +1799 -0
  226. package/dist/packem_shared/Static-DpTd6Eed.js +22 -0
  227. package/dist/packem_shared/Static-xmD9giJj.js +18 -0
  228. package/dist/packem_shared/StaticRender-tYwH6QXl.js +33 -0
  229. package/dist/packem_shared/StatusMessage-BtSYxzwb.js +14 -0
  230. package/dist/packem_shared/StderrContext-Bj4Mf7v7.js +17 -0
  231. package/dist/packem_shared/StdinContext-Bq_GNJ3z.js +38 -0
  232. package/dist/packem_shared/StdoutContext-CgjWeCdO.js +17 -0
  233. package/dist/packem_shared/Stopwatch-DjtTCyHn.js +23 -0
  234. package/dist/packem_shared/Tab-C6r5q4hR.js +7 -0
  235. package/dist/packem_shared/Table-D-rSVlzb.js +82 -0
  236. package/dist/packem_shared/Tabs-BXpZwLWo.js +146 -0
  237. package/dist/packem_shared/Text-DvAUdZcK.js +65 -0
  238. package/dist/packem_shared/TextInput-C79WEQ5U.js +137 -0
  239. package/dist/packem_shared/Textarea-Dj06R6Zd.js +272 -0
  240. package/dist/packem_shared/Timer-wi9zuh4n.js +22 -0
  241. package/dist/packem_shared/Transform-BHxY_dAM.js +14 -0
  242. package/dist/packem_shared/TreeNodeMap-CtJUvBnd.js +155 -0
  243. package/dist/packem_shared/TreeView-C2062dtj.js +148 -0
  244. package/dist/packem_shared/TuiApp-DfxOnXqi.js +120 -0
  245. package/dist/packem_shared/TuiContext-CqEjMyXd.js +415 -0
  246. package/dist/packem_shared/UnorderedList-DhnadWjX.js +33 -0
  247. package/dist/packem_shared/ansi-parser-0BdVTKho.js +41 -0
  248. package/dist/packem_shared/ansi-tokenizer-LHq2LUWA.js +307 -0
  249. package/dist/packem_shared/boxes-oi3WUbyR.js +92 -0
  250. package/dist/packem_shared/colorize-88_Vk8cn.js +48 -0
  251. package/dist/packem_shared/comparePoints-CGMDnd3_.js +287 -0
  252. package/dist/packem_shared/createInlineLoop-BxMmcq9D.js +93 -0
  253. package/dist/packem_shared/createLinkedScrollGroup-Djw4Ceo0.js +44 -0
  254. package/dist/packem_shared/dom-DvzhsAez.js +225 -0
  255. package/dist/packem_shared/format-time-BGmnDukX.js +12 -0
  256. package/dist/packem_shared/getPathToRoot-a1wbwxfL.js +4 -0
  257. package/dist/packem_shared/getScrollHeight-BubfU_df.js +63 -0
  258. package/dist/packem_shared/input-utils-ViAEXa0Z.js +19 -0
  259. package/dist/packem_shared/isIntersecting-fEXHJN5R.js +10 -0
  260. package/dist/packem_shared/isOsc52Supported-G0k4sXJx.js +36 -0
  261. package/dist/packem_shared/isTerminalPaletteQuerySupported-EeiwMKbr.js +93 -0
  262. package/dist/packem_shared/kittyFlags-bNNf_9kX.js +26 -0
  263. package/dist/packem_shared/measure-element-Reza_yfC.js +396 -0
  264. package/dist/packem_shared/measure-text-DItZYotK.js +1189 -0
  265. package/dist/packem_shared/measureElement-CTgFCmKd.js +4 -0
  266. package/dist/packem_shared/mouse-context-BUHWKEIe.js +6 -0
  267. package/dist/packem_shared/parseSgrMouse-BHVBPP9G.js +1 -0
  268. package/dist/packem_shared/processLayout-BQ9kXfd3.js +2 -0
  269. package/dist/packem_shared/reconciler-BXf6miSS.js +211 -0
  270. package/dist/packem_shared/reconciler-gfmqURLy.js +680 -0
  271. package/dist/packem_shared/render-BAwdjfki.js +2806 -0
  272. package/dist/packem_shared/render-Bpjhf0lD.js +195 -0
  273. package/dist/packem_shared/renderToString-Cfg55DRD.js +62 -0
  274. package/dist/packem_shared/renderToString-ClIaXgrC.js +86 -0
  275. package/dist/packem_shared/renderTreeToBuffer-D3mo7M7m.js +308 -0
  276. package/dist/packem_shared/renderer-B3wROkeg.js +1431 -0
  277. package/dist/packem_shared/setEnableStyledLineCache-BpskngSJ.js +2 -0
  278. package/dist/packem_shared/squashTextNodesWithMap-iqm6OMMT.js +100 -0
  279. package/dist/packem_shared/text-width-DhuarWcB.js +42 -0
  280. package/dist/packem_shared/token-to-elements-BRFl_rzw.js +249 -0
  281. package/dist/packem_shared/treeViewTheme-BpSw9TMf.js +52 -0
  282. package/dist/packem_shared/useAnimation-kj31sA-T.js +62 -0
  283. package/dist/packem_shared/useApp-DPQlRzi5.js +6 -0
  284. package/dist/packem_shared/useBoxMetrics-rBjKc-g4.js +54 -0
  285. package/dist/packem_shared/useClipboard-B_9-adw1.js +23 -0
  286. package/dist/packem_shared/useColorBlindness-D_sTIhcb.js +30 -0
  287. package/dist/packem_shared/useConsoleCapture-Dvt7G1W1.js +61 -0
  288. package/dist/packem_shared/useCursor-BIJzc8k9.js +19 -0
  289. package/dist/packem_shared/useElementDimensions-CAoKitVD.js +67 -0
  290. package/dist/packem_shared/useFocus-CNl5QHHf.js +37 -0
  291. package/dist/packem_shared/useFocusManager-BPYaUuKQ.js +16 -0
  292. package/dist/packem_shared/useInput-Cfp5zB2s.js +594 -0
  293. package/dist/packem_shared/useIsScreenReaderEnabled-CnGKCe0f.js +9 -0
  294. package/dist/packem_shared/useKeyBindings-B78l1E1n.js +66 -0
  295. package/dist/packem_shared/useMouseAction-C5gZ2nj7.js +29 -0
  296. package/dist/packem_shared/useMouseContext-D-rFy60Q.js +12 -0
  297. package/dist/packem_shared/useMousePosition-BHBJ-kBk.js +25 -0
  298. package/dist/packem_shared/useOnMouseClick--ZIyBOBO.js +35 -0
  299. package/dist/packem_shared/useOnMouseHover-26diuXUC.js +32 -0
  300. package/dist/packem_shared/useOnMouseState-NO_Kda_C.js +13 -0
  301. package/dist/packem_shared/usePaste-Ct8J4AGR.js +35 -0
  302. package/dist/packem_shared/useScrollAcceleration-R9LfrPVG.js +73 -0
  303. package/dist/packem_shared/useScrollInput-D3CpBq_a.js +72 -0
  304. package/dist/packem_shared/useStderr-CAOVUh4E.js +6 -0
  305. package/dist/packem_shared/useStdin-X-O0kd-n.js +7 -0
  306. package/dist/packem_shared/useStdout-DyF6DSH0.js +6 -0
  307. package/dist/packem_shared/useStopwatch-qC4Beai4.js +33 -0
  308. package/dist/packem_shared/useTerminalPalette-BaWO2c4Q.js +38 -0
  309. package/dist/packem_shared/useTextBuffer-C8fEe9Ly.js +398 -0
  310. package/dist/packem_shared/useTextSelection-mXtxgsPK.js +50 -0
  311. package/dist/packem_shared/useTimer-CPQ7j827.js +46 -0
  312. package/dist/packem_shared/useTreeView-BT57P3Kx.js +101 -0
  313. package/dist/packem_shared/useTreeViewState-BpS_KZ-K.js +502 -0
  314. package/dist/packem_shared/useWindowSize-ugEmGZJm.js +20 -0
  315. package/dist/packem_shared/utils-BgdlrbOH.js +140 -0
  316. package/dist/packem_shared/variant-config-DSZoX5TM.js +8 -0
  317. package/dist/packem_shared/wrapOrTruncateStyledLine-DN3Nogoc.js +147 -0
  318. package/dist/react/devtools.d.ts +27 -0
  319. package/dist/react/focus.d.ts +39 -0
  320. package/dist/react/hooks.d.ts +238 -0
  321. package/dist/react/index.d.ts +8 -0
  322. package/dist/react/index.js +9 -0
  323. package/dist/react/layout.d.ts +35 -0
  324. package/dist/react/react.d.ts +57 -0
  325. package/dist/react/reconciler.d.ts +4 -0
  326. package/dist/react/render-to-string.d.ts +21 -0
  327. package/dist/react/renderer.d.ts +2 -0
  328. package/dist/react/scene.d.ts +3 -0
  329. package/dist/react/static.d.ts +39 -0
  330. package/dist/react/styles.d.ts +83 -0
  331. package/dist/react/text-width.d.ts +20 -0
  332. package/dist/testing/index.d.ts +144 -0
  333. package/dist/testing/index.js +260 -0
  334. package/dist/testing/keys.d.ts +89 -0
  335. package/dist/testing/screen.d.ts +35 -0
  336. package/dist/testing/wait-for.d.ts +21 -0
  337. package/index.js +585 -0
  338. package/package.json +117 -7
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Badge component for Ink.
3
+ *
4
+ * Inspired by ink-ui Badge by Vadim Demedes.
5
+ * @see https://github.com/vadimdemedes/ink-ui
6
+ *
7
+ * MIT License
8
+ * Copyright (c) Vadym Demedes (github.com/vadimdemedes)
9
+ */
10
+ import type { AnsiColors } from "@visulima/colorize";
11
+ import type { ReactElement, ReactNode } from "react";
12
+ import type { LiteralUnion } from "type-fest";
13
+ export type Props = {
14
+ /**
15
+ * Label content. Strings are automatically uppercased.
16
+ */
17
+ readonly children: ReactNode;
18
+ /**
19
+ * Background color for the badge.
20
+ * @default "magenta"
21
+ */
22
+ readonly color?: LiteralUnion<AnsiColors, string>;
23
+ };
24
+ /**
25
+ * Renders an uppercase colored label badge, useful for status indicators.
26
+ */
27
+ export default function Badge({ children, color }: Props): ReactElement;
@@ -0,0 +1,71 @@
1
+ import type { ReactElement } from "react";
2
+ /**
3
+ * Available CFonts font faces.
4
+ */
5
+ type Font = "3d" | "block" | "chrome" | "grid" | "huge" | "pallet" | "shade" | "simple" | "simple3d" | "simpleBlock" | "slick" | "tiny";
6
+ /**
7
+ * Horizontal text alignment.
8
+ */
9
+ type Align = "center" | "left" | "right";
10
+ /**
11
+ * Terminal background color names supported by CFonts.
12
+ */
13
+ type BackgroundColor = "black" | "blue" | "cyan" | "green" | "magenta" | "red" | "transparent" | "white" | "yellow";
14
+ type Props = {
15
+ /**
16
+ * Horizontal alignment of the text.
17
+ * @default "left"
18
+ */
19
+ readonly align?: Align;
20
+ /**
21
+ * Background color.
22
+ * @default "transparent"
23
+ */
24
+ readonly backgroundColor?: BackgroundColor;
25
+ /**
26
+ * Colors to use for the font. Accepts color names, hex values, or `"system"` for terminal default.
27
+ * @default ["system"]
28
+ */
29
+ readonly colors?: string[];
30
+ /**
31
+ * Font face to use.
32
+ * @default "block"
33
+ * @see https://github.com/dominikwilkowski/cfonts#supported-fonts
34
+ */
35
+ readonly font?: Font;
36
+ /**
37
+ * Letter spacing.
38
+ * @default 1
39
+ */
40
+ readonly letterSpacing?: number;
41
+ /**
42
+ * Line height.
43
+ * @default 1
44
+ */
45
+ readonly lineHeight?: number;
46
+ /**
47
+ * Maximum character length per line. `0` means no limit.
48
+ * @default 0
49
+ */
50
+ readonly maxLength?: number;
51
+ /**
52
+ * Whether to add an empty line on top and at the bottom of the output.
53
+ * @default true
54
+ */
55
+ readonly space?: boolean;
56
+ /**
57
+ * The text to render in a large font.
58
+ */
59
+ readonly text: string;
60
+ };
61
+ /**
62
+ * Render large terminal text using CFonts.
63
+ * @example
64
+ * ```tsx
65
+ * import { BigText } from "@visulima/tui/ink";
66
+ *
67
+ * <BigText text="Hello" font="block" />
68
+ * ```
69
+ */
70
+ export default function BigText({ align, backgroundColor, colors, font, letterSpacing, lineHeight, maxLength, space, text }: Props): ReactElement;
71
+ export type { Align, BackgroundColor, Font, Props };
@@ -0,0 +1,58 @@
1
+ import type { ForwardRefExoticComponent, PropsWithChildren, ReactNode, RefAttributes } from "react";
2
+ import type { Except } from "type-fest";
3
+ import type { DOMElement } from "../dom.d.ts";
4
+ import type { Styles } from "../styles.d.ts";
5
+ export type Props = Except<Styles, "textWrap"> & {
6
+ /**
7
+ * Hide the element from screen readers.
8
+ */
9
+ readonly "aria-hidden"?: boolean;
10
+ /**
11
+ * A label for the element for screen readers.
12
+ */
13
+ readonly "aria-label"?: string;
14
+ /**
15
+ * The role of the element.
16
+ */
17
+ readonly "aria-role"?: "button" | "checkbox" | "combobox" | "list" | "listbox" | "listitem" | "menu" | "menuitem" | "option" | "progressbar" | "radio" | "radiogroup" | "tab" | "tablist" | "table" | "textbox" | "timer" | "toolbar";
18
+ /**
19
+ * The state of the element.
20
+ */
21
+ readonly "aria-state"?: {
22
+ readonly busy?: boolean;
23
+ readonly checked?: boolean;
24
+ readonly disabled?: boolean;
25
+ readonly expanded?: boolean;
26
+ readonly multiline?: boolean;
27
+ readonly multiselectable?: boolean;
28
+ readonly readonly?: boolean;
29
+ readonly required?: boolean;
30
+ readonly selected?: boolean;
31
+ };
32
+ /**
33
+ * Whether this element is opaque (prevents rendering of covered content beneath it).
34
+ * Useful for performance optimization with layered content.
35
+ */
36
+ readonly opaque?: boolean;
37
+ /**
38
+ * Whether to render a scrollbar for this scrollable element.
39
+ * Only applies when `overflow` is `'scroll'`. Defaults to `true`.
40
+ */
41
+ readonly scrollbar?: boolean;
42
+ /**
43
+ * Makes this element sticky within its scroll container.
44
+ * - `true` or `'top'`: pinned to the top during scroll
45
+ * - `'bottom'`: pinned to the bottom during scroll
46
+ */
47
+ readonly sticky?: boolean | "top" | "bottom";
48
+ /**
49
+ * Alternate content to render when this element is in its sticky (pinned) state.
50
+ * Only applies when `sticky` is set. When omitted, the normal children are used.
51
+ */
52
+ readonly stickyChildren?: ReactNode;
53
+ };
54
+ /**
55
+ * `&lt;Box>` is an essential Ink component to build your layout. It's like `&lt;div style="display: flex">` in the browser.
56
+ */
57
+ declare const Box: ForwardRefExoticComponent<PropsWithChildren<Props> & RefAttributes<DOMElement>>;
58
+ export default Box;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Syntax-highlighted code display component for Ink.
3
+ *
4
+ * Uses Shiki for tokenization and maps themed tokens to colored
5
+ * Ink Text elements for terminal rendering.
6
+ */
7
+ import type { ReactElement } from "react";
8
+ export type Props = {
9
+ /**
10
+ * The source code string to highlight.
11
+ */
12
+ readonly code: string;
13
+ /**
14
+ * Set of line numbers to visually emphasize.
15
+ */
16
+ readonly highlightLines?: ReadonlySet<number>;
17
+ /**
18
+ * Programming language for syntax highlighting.
19
+ * Falls back to plain text if the language is unknown.
20
+ */
21
+ readonly language?: string;
22
+ /**
23
+ * Whether to show line numbers in the gutter.
24
+ * @default false
25
+ */
26
+ readonly showLineNumbers?: boolean;
27
+ /**
28
+ * Starting line number (useful for code excerpts).
29
+ * @default 1
30
+ */
31
+ readonly startLine?: number;
32
+ /**
33
+ * Shiki theme name.
34
+ * @default "github-dark-default"
35
+ */
36
+ readonly theme?: string;
37
+ };
38
+ /**
39
+ * Render source code with syntax highlighting.
40
+ *
41
+ * ```tsx
42
+ * &lt;Code code="const x = 42;" language="typescript" />
43
+ * &lt;Code code={source} language="python" showLineNumbers />
44
+ * ```
45
+ */
46
+ export default function Code({ code, highlightLines, language, showLineNumbers, startLine, theme }: Props): ReactElement;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Confirm input component for Ink.
3
+ *
4
+ * Inspired by ink-ui ConfirmInput by Vadim Demedes.
5
+ * @see https://github.com/vadimdemedes/ink-ui
6
+ *
7
+ * MIT License
8
+ * Copyright (c) Vadym Demedes (github.com/vadimdemedes)
9
+ */
10
+ import type { ReactElement } from "react";
11
+ export type Props = {
12
+ /**
13
+ * The default action when pressing Enter without typing Y or N.
14
+ * @default "confirm"
15
+ */
16
+ readonly defaultChoice?: "cancel" | "confirm";
17
+ /**
18
+ * Whether the input is disabled.
19
+ * @default false
20
+ */
21
+ readonly isDisabled?: boolean;
22
+ /**
23
+ * Called when the user cancels (presses N).
24
+ */
25
+ readonly onCancel: () => void;
26
+ /**
27
+ * Called when the user confirms (presses Y).
28
+ */
29
+ readonly onConfirm: () => void;
30
+ /**
31
+ * Whether pressing Enter submits the default choice.
32
+ * @default true
33
+ */
34
+ readonly submitOnEnter?: boolean;
35
+ };
36
+ /**
37
+ * Renders a Y/N confirmation prompt. Shows "Y/n" when default is confirm,
38
+ * or "y/N" when default is cancel.
39
+ */
40
+ export default function ConfirmInput({ defaultChoice, isDisabled, onCancel, onConfirm, submitOnEnter }: Props): ReactElement;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Console overlay component for Ink.
3
+ *
4
+ * Captures console.log/warn/error/debug output and displays it
5
+ * in a dockable panel within the TUI, similar to browser devtools.
6
+ */
7
+ import type { ReactElement } from "react";
8
+ import type { ConsoleLevel } from "../hooks/use-console-capture.d.ts";
9
+ export type ConsoleOverlayDock = "bottom" | "top";
10
+ export type Props = {
11
+ /**
12
+ * Dock position within the parent container.
13
+ * @default "bottom"
14
+ */
15
+ readonly dock?: ConsoleOverlayDock;
16
+ /**
17
+ * Which console levels to capture.
18
+ * @default ["log", "info", "warn", "error", "debug"]
19
+ */
20
+ readonly filter?: ReadonlyArray<ConsoleLevel>;
21
+ /**
22
+ * Visible height in rows.
23
+ * @default 8
24
+ */
25
+ readonly height?: number;
26
+ /**
27
+ * Maximum entries to keep in the buffer.
28
+ * @default 200
29
+ */
30
+ readonly maxEntries?: number;
31
+ /**
32
+ * Show the log level label.
33
+ * @default true
34
+ */
35
+ readonly showLevel?: boolean;
36
+ /**
37
+ * Show timestamps on each entry.
38
+ * @default true
39
+ */
40
+ readonly showTimestamp?: boolean;
41
+ };
42
+ /**
43
+ * A dockable console overlay that captures and displays console output.
44
+ *
45
+ * ```tsx
46
+ * &lt;Box flexDirection="column" height="100%">
47
+ * &lt;Box flexGrow={1}>{mainContent}&lt;/Box>
48
+ * &lt;ConsoleOverlay dock="bottom" height={6} />
49
+ * &lt;/Box>
50
+ * ```
51
+ */
52
+ export default function ConsoleOverlay({ dock, filter, height, maxEntries, showLevel, showTimestamp }: Props): ReactElement;
@@ -0,0 +1,43 @@
1
+ import type { RefObject } from "react";
2
+ import React from "react";
3
+ import type { DOMElement } from "../dom.d.ts";
4
+ export type Props = {
5
+ /**
6
+ * Optional reference to anchor cursor coordinates to a different element.
7
+ * If omitted, `&lt;Cursor>` uses the parent container as anchor.
8
+ * If `anchorRef` is set but currently unresolved, Ink hides the cursor for that frame.
9
+ * If multiple `&lt;Cursor>` components are rendered in one frame, the last rendered one controls the terminal cursor position.
10
+ */
11
+ readonly anchorRef?: RefObject<DOMElement | null>;
12
+ /**
13
+ * Horizontal offset from anchor content origin.
14
+ */
15
+ readonly x?: number;
16
+ /**
17
+ * Vertical offset from anchor content origin.
18
+ */
19
+ readonly y?: number;
20
+ };
21
+ /**
22
+ * Declaratively position the terminal cursor.
23
+ * `&lt;Cursor>` must not be rendered inside `&lt;Text>`.
24
+ *
25
+ * **Inline mode** (no props): place `&lt;Cursor />` after a `&lt;Text>` node and the
26
+ * cursor appears where that text ended — even when text wraps across lines.
27
+ *
28
+ * **Anchor mode**: pass `anchorRef` and/or `x`/`y` to position relative to
29
+ * another element's content origin.
30
+ * @example Inline mode — cursor follows text naturally
31
+ * ```jsx
32
+ * <Box>
33
+ * <Text>{prompt + value}</Text>
34
+ * <Cursor />
35
+ * </Box>
36
+ * ```
37
+ * @example Anchor mode — offset from a referenced element
38
+ * ```jsx
39
+ * <Box ref={ref} />
40
+ * <Cursor anchorRef={ref} x={5} />
41
+ * ```
42
+ */
43
+ export default function Cursor({ anchorRef, x, y }: Props): React.JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { Context } from "react";
2
+ import type { CursorPosition } from "../log-update.d.ts";
3
+ export type Props = {
4
+ /**
5
+ * Set the cursor position relative to the Ink output.
6
+ *
7
+ * Pass `undefined` to hide the cursor.
8
+ */
9
+ readonly setCursorPosition: (position: CursorPosition | undefined) => void;
10
+ };
11
+ declare const CursorContext: Context<Props>;
12
+ export default CursorContext;
@@ -0,0 +1,93 @@
1
+ import type { ReactElement, ReactNode } from "react";
2
+ import type { ScrollViewRef } from "./index.d.ts";
3
+ export type Props = {
4
+ /**
5
+ * Background color for the dialog. Defaults to the detected terminal
6
+ * background color, falling back to `"black"`.
7
+ */
8
+ readonly backgroundColor?: string;
9
+ /**
10
+ * Border color.
11
+ * @default "cyan"
12
+ */
13
+ readonly borderColor?: string;
14
+ /**
15
+ * Border style.
16
+ * @default "round"
17
+ */
18
+ readonly borderStyle?: "arrow" | "bold" | "classic" | "double" | "doubleSingle" | "round" | "single" | "singleDouble";
19
+ /**
20
+ * Dialog content.
21
+ */
22
+ readonly children: ReactNode;
23
+ /**
24
+ * Override terminal columns. Useful in renderToString or testing contexts
25
+ * where useWindowSize is unavailable.
26
+ */
27
+ readonly columns?: number;
28
+ /**
29
+ * Footer content rendered below the scrollable area.
30
+ * Useful for hints like "Press ? to close".
31
+ */
32
+ readonly footer?: ReactNode;
33
+ /**
34
+ * Maximum height as a fraction of terminal rows (0-1) or absolute rows.
35
+ * Values &lt;= 1 are treated as fractions; values > 1 as absolute row counts.
36
+ * @default 0.8
37
+ */
38
+ readonly maxHeight?: number;
39
+ /**
40
+ * Padding inside the dialog border.
41
+ * @default 2
42
+ */
43
+ readonly paddingX?: number;
44
+ /**
45
+ * Vertical padding inside the dialog border.
46
+ * @default 1
47
+ */
48
+ readonly paddingY?: number;
49
+ /**
50
+ * Override terminal rows. Useful in renderToString or testing contexts
51
+ * where useWindowSize is unavailable.
52
+ */
53
+ readonly rows?: number;
54
+ /**
55
+ * Scrollbar visual style.
56
+ * @default "block"
57
+ */
58
+ readonly scrollbarStyle?: "arrow" | "block" | "bold" | "classic" | "dots" | "double" | "doubleSingle" | "line" | "round" | "single" | "singleDouble" | "thick";
59
+ /**
60
+ * Ref to the internal ScrollView for programmatic scrolling.
61
+ */
62
+ readonly scrollRef?: React.Ref<ScrollViewRef>;
63
+ /**
64
+ * Title rendered at the top of the dialog. If a string is provided,
65
+ * it is rendered as bold cyan text.
66
+ */
67
+ readonly title?: ReactNode;
68
+ /**
69
+ * Whether the dialog is visible. When `false`, nothing is rendered.
70
+ * @default true
71
+ */
72
+ readonly visible?: boolean;
73
+ /**
74
+ * Dialog width in columns.
75
+ * @default 60
76
+ */
77
+ readonly width?: number;
78
+ };
79
+ /**
80
+ * A centered overlay dialog with automatic scrolling and scrollbar when
81
+ * content exceeds the available terminal height.
82
+ *
83
+ * Uses the terminal's detected background color by default so the
84
+ * dialog blends with the user's theme.
85
+ *
86
+ * ```tsx
87
+ * &lt;Dialog title="Help" footer={&lt;Text dimColor>Press Esc to close&lt;/Text>}>
88
+ * &lt;Text>Dialog content here&lt;/Text>
89
+ * &lt;/Dialog>
90
+ * ```
91
+ */
92
+ declare const Dialog: ({ backgroundColor: backgroundColorProp, borderColor, borderStyle, children, columns: columnsProp, footer, maxHeight: maxHeightProp, paddingX, paddingY, rows: rowsProp, scrollbarStyle: scrollbarStyleProp, scrollRef: externalScrollRef, title, visible, width, }: Props) => ReactElement | null;
93
+ export default Dialog;
@@ -0,0 +1,71 @@
1
+ import type { ReactElement } from "react";
2
+ export type DiffViewMode = "split" | "unified";
3
+ export type InlineDiffMode = "chars" | "words";
4
+ export type Props = {
5
+ /**
6
+ * Number of unchanged context lines around changes.
7
+ * @default 3
8
+ */
9
+ readonly context?: number;
10
+ /**
11
+ * Pre-computed unified diff string. If provided, `oldText`/`newText` are ignored.
12
+ */
13
+ readonly diff?: string;
14
+ /**
15
+ * Enable character-level inline diff highlighting within changed lines.
16
+ * @default true
17
+ */
18
+ readonly inlineDiff?: boolean;
19
+ /**
20
+ * Granularity of inline diff highlighting.
21
+ * - `"chars"` — character-level (best for code)
22
+ * - `"words"` — word-level (best for prose)
23
+ * @default "chars"
24
+ */
25
+ readonly inlineDiffMode?: InlineDiffMode;
26
+ /**
27
+ * Programming language for syntax highlighting within diff lines.
28
+ * When provided, diff content is highlighted with Shiki.
29
+ */
30
+ readonly language?: string;
31
+ /**
32
+ * Display mode: unified (interleaved) or split (side-by-side).
33
+ * @default "unified"
34
+ */
35
+ readonly mode?: DiffViewMode;
36
+ /**
37
+ * Label for the new version.
38
+ */
39
+ readonly newLabel?: string;
40
+ /**
41
+ * Modified text ("new" / right side).
42
+ */
43
+ readonly newText?: string;
44
+ /**
45
+ * Label for the old version.
46
+ */
47
+ readonly oldLabel?: string;
48
+ /**
49
+ * Original text ("old" / left side).
50
+ */
51
+ readonly oldText?: string;
52
+ /**
53
+ * Whether to display line numbers.
54
+ * @default true
55
+ */
56
+ readonly showLineNumbers?: boolean;
57
+ /**
58
+ * Shiki theme for syntax highlighting.
59
+ * @default "github-dark-default"
60
+ */
61
+ readonly theme?: string;
62
+ };
63
+ /**
64
+ * Display file differences with colored additions/deletions.
65
+ *
66
+ * ```tsx
67
+ * &lt;DiffView oldText="hello" newText="hello world" />
68
+ * &lt;DiffView diff={unifiedDiffString} mode="split" />
69
+ * ```
70
+ */
71
+ export default function DiffView({ context, diff: diffProp, inlineDiff, inlineDiffMode, language, mode, newLabel, newText, oldLabel, oldText, showLineNumbers, theme, }: Props): ReactElement;
@@ -0,0 +1,17 @@
1
+ import type { ReactNode } from "react";
2
+ import { PureComponent } from "react";
3
+ type Props = {
4
+ readonly children: ReactNode;
5
+ readonly onError: (error: Error) => void;
6
+ };
7
+ type State = {
8
+ readonly error?: Error;
9
+ };
10
+ export default class ErrorBoundary extends PureComponent<Props, State> {
11
+ static displayName: string;
12
+ static getDerivedStateFromError(error: Error): State;
13
+ state: State;
14
+ componentDidCatch(error: Error): void;
15
+ render(): ReactNode;
16
+ }
17
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { ReactElement } from "react";
2
+ type Props = {
3
+ readonly error: Error;
4
+ };
5
+ export default function ErrorOverview({ error }: Props): ReactElement;
6
+ export {};
@@ -0,0 +1,17 @@
1
+ import type { Context } from "react";
2
+ export type Props = {
3
+ readonly activate: (id: string) => void;
4
+ readonly activeId?: string;
5
+ readonly add: (id: string, options: {
6
+ autoFocus: boolean;
7
+ }) => void;
8
+ readonly deactivate: (id: string) => void;
9
+ readonly disableFocus: () => void;
10
+ readonly enableFocus: () => void;
11
+ readonly focus: (id: string) => void;
12
+ readonly focusNext: () => void;
13
+ readonly focusPrevious: () => void;
14
+ readonly remove: (id: string) => void;
15
+ };
16
+ declare const FocusContext: Context<Props>;
17
+ export default FocusContext;
@@ -0,0 +1,38 @@
1
+ import { multilineGradient } from "@visulima/colorize/gradient";
2
+ import type { ReactElement, ReactNode } from "react";
3
+ /**
4
+ * A color stop for the gradient — hex string, CSS color name, RGB tuple, RGB object, or positioned stop.
5
+ */
6
+ type GradientStop = Parameters<typeof multilineGradient>[0][number];
7
+ /**
8
+ * Built-in gradient presets.
9
+ */
10
+ type GradientName = "atlas" | "cristal" | "fruit" | "instagram" | "mind" | "morning" | "pastel" | "passion" | "rainbow" | "retro" | "summer" | "teen" | "vice";
11
+ /**
12
+ * Custom gradient colors — an array of color stops accepted by `@visulima/colorize`'s gradient API.
13
+ */
14
+ type GradientColors = GradientStop[];
15
+ export type Props = {
16
+ /**
17
+ * The content to colorize.
18
+ *
19
+ * Multiple `&lt;Text>` children are treated as separate nodes, which preserves layout when `&lt;Gradient>` is placed inside a `&lt;Box flexDirection="column">`.
20
+ *
21
+ * If you want a continuous gradient across multiple lines, pass a single string or a single `&lt;Text>` with `\n`.
22
+ */
23
+ readonly children: ReactNode;
24
+ /**
25
+ * [Colors to use to make the gradient.](https://visulima.com/packages/colorize)
26
+ *
27
+ * Mutually exclusive with `name`.
28
+ */
29
+ readonly colors?: GradientColors;
30
+ /**
31
+ * The name of a built-in gradient preset.
32
+ *
33
+ * Mutually exclusive with `colors`.
34
+ */
35
+ readonly name?: GradientName;
36
+ };
37
+ export default function Gradient({ children, colors, name }: Props): ReactElement | null;
38
+ export type { GradientColors, GradientName };
@@ -0,0 +1,49 @@
1
+ import type { ReactElement } from "react";
2
+ import type { KeyBinding } from "../hooks/use-key-bindings.d.ts";
3
+ export type Props = {
4
+ /**
5
+ * Key bindings to display. Typically the `bindings` array returned by `useKeyBindings`.
6
+ */
7
+ readonly bindings: readonly KeyBinding[];
8
+ /**
9
+ * Color for description text.
10
+ *
11
+ * @default undefined (uses dimColor)
12
+ */
13
+ readonly descriptionColor?: string;
14
+ /**
15
+ * Color for key labels.
16
+ *
17
+ * @default "cyan"
18
+ */
19
+ readonly keyColor?: string;
20
+ /**
21
+ * Maximum number of columns in full mode.
22
+ *
23
+ * @default 3
24
+ */
25
+ readonly maxColumns?: number;
26
+ /**
27
+ * Display mode.
28
+ * - `"short"`: Single-line horizontal bar, truncated to terminal width.
29
+ * - `"full"`: Multi-column layout grouped by `group` field.
30
+ *
31
+ * @default "short"
32
+ */
33
+ readonly mode?: "full" | "short";
34
+ /**
35
+ * Separator between key-description pairs in short mode.
36
+ *
37
+ * @default " \u00b7 "
38
+ */
39
+ readonly separator?: string;
40
+ };
41
+ /**
42
+ * Renders a keybinding help bar from an array of `KeyBinding` definitions.
43
+ *
44
+ * ```tsx
45
+ * <Help bindings={bindings} />
46
+ * <Help bindings={bindings} mode="full" />
47
+ * ```
48
+ */
49
+ export default function Help({ bindings, descriptionColor, keyColor, maxColumns, mode, separator, }: Props): ReactElement;