@visulima/tui 0.0.1 → 1.0.0-alpha.2
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.
- package/CHANGELOG.md +200 -0
- package/LICENSE.md +303 -0
- package/README.md +173 -29
- package/dist/core/app.d.ts +50 -0
- package/dist/core/cell.d.ts +33 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.js +5 -0
- package/dist/core/inline.d.ts +22 -0
- package/dist/core/input.d.ts +18 -0
- package/dist/core/native-binding.d.ts +22 -0
- package/dist/ink/ansi-to-cell.d.ts +5 -0
- package/dist/ink/ansi-tokenizer.d.ts +38 -0
- package/dist/ink/clipboard.d.ts +29 -0
- package/dist/ink/color-matrix.d.ts +49 -0
- package/dist/ink/color-utils.d.ts +30 -0
- package/dist/ink/colorize.d.ts +4 -0
- package/dist/ink/components/AccessibilityContext.d.ts +4 -0
- package/dist/ink/components/Alert.d.ts +30 -0
- package/dist/ink/components/AnimationContext.d.ts +10 -0
- package/dist/ink/components/App.d.ts +19 -0
- package/dist/ink/components/AppContext.d.ts +38 -0
- package/dist/ink/components/BackgroundContext.d.ts +5 -0
- package/dist/ink/components/Badge.d.ts +27 -0
- package/dist/ink/components/BigText.d.ts +71 -0
- package/dist/ink/components/Box.d.ts +58 -0
- package/dist/ink/components/Code.d.ts +46 -0
- package/dist/ink/components/ConfirmInput.d.ts +40 -0
- package/dist/ink/components/ConsoleOverlay.d.ts +52 -0
- package/dist/ink/components/Cursor.d.ts +43 -0
- package/dist/ink/components/CursorContext.d.ts +12 -0
- package/dist/ink/components/Dialog.d.ts +93 -0
- package/dist/ink/components/DiffView.d.ts +71 -0
- package/dist/ink/components/ErrorBoundary.d.ts +17 -0
- package/dist/ink/components/ErrorOverview.d.ts +6 -0
- package/dist/ink/components/FocusContext.d.ts +17 -0
- package/dist/ink/components/Gradient.d.ts +38 -0
- package/dist/ink/components/Help.d.ts +49 -0
- package/dist/ink/components/Link.d.ts +34 -0
- package/dist/ink/components/Markdown.d.ts +34 -0
- package/dist/ink/components/MultiSelect.d.ts +63 -0
- package/dist/ink/components/Newline.d.ts +12 -0
- package/dist/ink/components/OrderedList.d.ts +30 -0
- package/dist/ink/components/Paginator.d.ts +75 -0
- package/dist/ink/components/ProgressBar.d.ts +51 -0
- package/dist/ink/components/SelectInput.d.ts +96 -0
- package/dist/ink/components/SelectInputIndicator.d.ts +36 -0
- package/dist/ink/components/SelectInputItem.d.ts +43 -0
- package/dist/ink/components/Slider.d.ts +92 -0
- package/dist/ink/components/Spacer.d.ts +7 -0
- package/dist/ink/components/Spinner.d.ts +42 -0
- package/dist/ink/components/Static.d.ts +24 -0
- package/dist/ink/components/StaticRender.d.ts +28 -0
- package/dist/ink/components/StatusMessage.d.ts +26 -0
- package/dist/ink/components/StderrContext.d.ts +16 -0
- package/dist/ink/components/StdinContext.d.ts +29 -0
- package/dist/ink/components/StdoutContext.d.ts +16 -0
- package/dist/ink/components/Stopwatch.d.ts +44 -0
- package/dist/ink/components/Tab.d.ts +25 -0
- package/dist/ink/components/Table.d.ts +80 -0
- package/dist/ink/components/Tabs.d.ts +104 -0
- package/dist/ink/components/Text.d.ts +63 -0
- package/dist/ink/components/TextInput.d.ts +48 -0
- package/dist/ink/components/Textarea.d.ts +62 -0
- package/dist/ink/components/Timer.d.ts +52 -0
- package/dist/ink/components/Transform.d.ts +16 -0
- package/dist/ink/components/UnorderedList.d.ts +35 -0
- package/dist/ink/components/file-picker/FilePicker.d.ts +75 -0
- package/dist/ink/components/file-picker/index.d.ts +3 -0
- package/dist/ink/components/file-picker/types.d.ts +38 -0
- package/dist/ink/components/file-picker/use-file-system.d.ts +16 -0
- package/dist/ink/components/scroll/ControlledScrollView.d.ts +43 -0
- package/dist/ink/components/scroll/ScrollBar.d.ts +20 -0
- package/dist/ink/components/scroll/ScrollBarBox.d.ts +15 -0
- package/dist/ink/components/scroll/ScrollList.d.ts +12 -0
- package/dist/ink/components/scroll/ScrollView.d.ts +98 -0
- package/dist/ink/components/scroll/index.d.ts +10 -0
- package/dist/ink/components/scroll/use-state-ref.d.ts +8 -0
- package/dist/ink/components/tree-view/TreeView.d.ts +89 -0
- package/dist/ink/components/tree-view/TreeViewNode.d.ts +29 -0
- package/dist/ink/components/tree-view/index.d.ts +11 -0
- package/dist/ink/components/tree-view/theme.d.ts +24 -0
- package/dist/ink/components/tree-view/tree-node-map.d.ts +72 -0
- package/dist/ink/components/tree-view/types.d.ts +55 -0
- package/dist/ink/components/tree-view/use-tree-view-state.d.ts +135 -0
- package/dist/ink/components/tree-view/use-tree-view.d.ts +26 -0
- package/dist/ink/components/variant-config.d.ts +10 -0
- package/dist/ink/cursor-helpers.d.ts +38 -0
- package/dist/ink/data-limited-lru-map.d.ts +21 -0
- package/dist/ink/devtools-window-polyfill.d.ts +1 -0
- package/dist/ink/devtools.d.ts +1 -0
- package/dist/ink/dom.d.ts +213 -0
- package/dist/ink/get-max-width.d.ts +3 -0
- package/dist/ink/highlighter.d.ts +28 -0
- package/dist/ink/hooks/use-animation.d.ts +43 -0
- package/dist/ink/hooks/use-app.d.ts +6 -0
- package/dist/ink/hooks/use-box-metrics.d.ts +58 -0
- package/dist/ink/hooks/use-clipboard.d.ts +29 -0
- package/dist/ink/hooks/use-color-blindness.d.ts +33 -0
- package/dist/ink/hooks/use-console-capture.d.ts +43 -0
- package/dist/ink/hooks/use-cursor.d.ts +12 -0
- package/dist/ink/hooks/use-focus-manager.d.ts +42 -0
- package/dist/ink/hooks/use-focus.d.ts +30 -0
- package/dist/ink/hooks/use-input.d.ts +149 -0
- package/dist/ink/hooks/use-is-screen-reader-enabled.d.ts +6 -0
- package/dist/ink/hooks/use-key-bindings.d.ts +61 -0
- package/dist/ink/hooks/use-linked-scroll.d.ts +41 -0
- package/dist/ink/hooks/use-paste.d.ts +44 -0
- package/dist/ink/hooks/use-scroll-acceleration.d.ts +47 -0
- package/dist/ink/hooks/use-scroll-input.d.ts +34 -0
- package/dist/ink/hooks/use-stderr.d.ts +6 -0
- package/dist/ink/hooks/use-stdin.d.ts +7 -0
- package/dist/ink/hooks/use-stdout.d.ts +6 -0
- package/dist/ink/hooks/use-stopwatch.d.ts +40 -0
- package/dist/ink/hooks/use-terminal-palette.d.ts +19 -0
- package/dist/ink/hooks/use-text-buffer.d.ts +42 -0
- package/dist/ink/hooks/use-text-selection.d.ts +45 -0
- package/dist/ink/hooks/use-timer.d.ts +49 -0
- package/dist/ink/hooks/use-window-size.d.ts +18 -0
- package/dist/ink/ime-utils.d.ts +25 -0
- package/dist/ink/index.d.ts +159 -0
- package/dist/ink/index.js +100 -0
- package/dist/ink/ink.d.ts +189 -0
- package/dist/ink/input-parser.d.ts +10 -0
- package/dist/ink/input-utils.d.ts +16 -0
- package/dist/ink/instances.d.ts +3 -0
- package/dist/ink/kitty-keyboard.d.ts +23 -0
- package/dist/ink/layout.d.ts +26 -0
- package/dist/ink/log-update-native.d.ts +14 -0
- package/dist/ink/log-update.d.ts +21 -0
- package/dist/ink/measure-element.d.ts +147 -0
- package/dist/ink/measure-text.d.ts +56 -0
- package/dist/ink/mouse/Fullscreen.d.ts +8 -0
- package/dist/ink/mouse/MouseProvider.d.ts +11 -0
- package/dist/ink/mouse/ansi-parser.d.ts +37 -0
- package/dist/ink/mouse/constants.d.ts +59 -0
- package/dist/ink/mouse/index.d.ts +20 -0
- package/dist/ink/mouse/is-intersecting.d.ts +18 -0
- package/dist/ink/mouse/mouse-context.d.ts +36 -0
- package/dist/ink/mouse/use-element-position.d.ts +29 -0
- package/dist/ink/mouse/use-mouse-action.d.ts +7 -0
- package/dist/ink/mouse/use-mouse-position.d.ts +7 -0
- package/dist/ink/mouse/use-mouse.d.ts +7 -0
- package/dist/ink/mouse/use-on-mouse-click.d.ts +14 -0
- package/dist/ink/mouse/use-on-mouse-hover.d.ts +8 -0
- package/dist/ink/mouse/use-on-mouse-state.d.ts +11 -0
- package/dist/ink/output.d.ts +74 -0
- package/dist/ink/parse-keypress.d.ts +22 -0
- package/dist/ink/reconciler.d.ts +3 -0
- package/dist/ink/region.d.ts +99 -0
- package/dist/ink/render-background.d.ts +4 -0
- package/dist/ink/render-border.d.ts +4 -0
- package/dist/ink/render-node-to-output.d.ts +38 -0
- package/dist/ink/render-scrollbar.d.ts +9 -0
- package/dist/ink/render-sticky.d.ts +44 -0
- package/dist/ink/render-to-string.d.ts +37 -0
- package/dist/ink/render.d.ts +191 -0
- package/dist/ink/renderer.d.ts +17 -0
- package/dist/ink/resize-observer.d.ts +44 -0
- package/dist/ink/sanitize-ansi.d.ts +2 -0
- package/dist/ink/scroll.d.ts +23 -0
- package/dist/ink/selection.d.ts +70 -0
- package/dist/ink/squash-text-nodes.d.ts +18 -0
- package/dist/ink/style-flags.d.ts +17 -0
- package/dist/ink/styled-line-factory.d.ts +25 -0
- package/dist/ink/styled-line-serializer.d.ts +18 -0
- package/dist/ink/styled-line.d.ts +109 -0
- package/dist/ink/styles.d.ts +369 -0
- package/dist/ink/terminal-palette.d.ts +25 -0
- package/dist/ink/text-wrap.d.ts +10 -0
- package/dist/ink/token-to-elements.d.ts +22 -0
- package/dist/ink/utils/format-time.d.ts +4 -0
- package/dist/ink/utils.d.ts +9 -0
- package/dist/ink/wrap-text.d.ts +3 -0
- package/dist/ink/write-synchronized.d.ts +4 -0
- package/dist/packem_chunks/devtools.js +27 -0
- package/dist/packem_shared/AccessibilityContext-BLelHhNU.js +7 -0
- package/dist/packem_shared/Alert-Dr3s_LD9.js +17 -0
- package/dist/packem_shared/AnimationContext-BcJg8Jr6.js +15 -0
- package/dist/packem_shared/AppContext-CP0U6H7O.js +11 -0
- package/dist/packem_shared/BackgroundContext-BAUaxfOb.js +5 -0
- package/dist/packem_shared/Badge-Dk7EGGM6.js +13 -0
- package/dist/packem_shared/BigText-CjMdY63X.js +24 -0
- package/dist/packem_shared/Box-D_pSJ9Jp.js +73 -0
- package/dist/packem_shared/COLOR_BLINDNESS_SIMULATION-BsMy5Ewl.js +81 -0
- package/dist/packem_shared/Cell-DCg1kJY-.js +48 -0
- package/dist/packem_shared/Code-DjQvPBD9.js +53 -0
- package/dist/packem_shared/ConfirmInput-85Y4kRQW.js +44 -0
- package/dist/packem_shared/ConsoleOverlay-DBNa4vtj.js +57 -0
- package/dist/packem_shared/ControlledScrollView-BlOaxcsN.js +286 -0
- package/dist/packem_shared/ControlledScrollView-DfAhcufF.js +5 -0
- package/dist/packem_shared/Cursor-DiW7YoSK.js +18 -0
- package/dist/packem_shared/CursorContext-JxRzlqAx.js +9 -0
- package/dist/packem_shared/DevTools-aMPIsaHx.js +61 -0
- package/dist/packem_shared/Dialog-DsSNAVgC.js +71 -0
- package/dist/packem_shared/DiffView-hqaw-2S6.js +329 -0
- package/dist/packem_shared/FilePicker-DNwFxRhq.js +254 -0
- package/dist/packem_shared/FocusContext-CWkYtgcm.js +26 -0
- package/dist/packem_shared/FocusContext-D5wFxSRz.js +153 -0
- package/dist/packem_shared/Fullscreen-DrElAE1o.js +11 -0
- package/dist/packem_shared/Gradient-Ql5P0GUd.js +136 -0
- package/dist/packem_shared/Help-6wanGG38.js +112 -0
- package/dist/packem_shared/IMECompositionBuffer-Dl3S0KnF.js +55 -0
- package/dist/packem_shared/InputParser-BKHpWfvN.js +156 -0
- package/dist/packem_shared/LayoutNode-Cjnsodiy.js +131 -0
- package/dist/packem_shared/Link-COcKYfGT.js +66 -0
- package/dist/packem_shared/Markdown-y1ISztof.js +212 -0
- package/dist/packem_shared/MouseProvider-Y9TSSEGl.js +136 -0
- package/dist/packem_shared/MultiSelect-ChoLUcDI.js +129 -0
- package/dist/packem_shared/NAMED_COLORS-a4QBvb5r.js +262 -0
- package/dist/packem_shared/Newline-DBtYEg8x.js +7 -0
- package/dist/packem_shared/OrderedList-Cp7pXr6m.js +26 -0
- package/dist/packem_shared/Paginator-D1AuD-kj.js +104 -0
- package/dist/packem_shared/ProgressBar-DOfpVagn.js +22 -0
- package/dist/packem_shared/Renderer-zZ5O3vxc.js +31 -0
- package/dist/packem_shared/ResizeObserverEntry-Br4seLeQ.js +102 -0
- package/dist/packem_shared/ScrollBar-EWAs2Uc7.js +106 -0
- package/dist/packem_shared/ScrollBarBox-DTNNlh7R.js +72 -0
- package/dist/packem_shared/ScrollList-DCeIFL8M.js +227 -0
- package/dist/packem_shared/ScrollView-v3MCNIyX.js +196 -0
- package/dist/packem_shared/SelectInput-BN2TMyxp.js +260 -0
- package/dist/packem_shared/SelectInputIndicator-DkRMoH_b.js +9 -0
- package/dist/packem_shared/SelectInputItem-BF9LQgKu.js +8 -0
- package/dist/packem_shared/Slider-BWD7xZX6.js +116 -0
- package/dist/packem_shared/Spacer-Bs4ER-HK.js +8 -0
- package/dist/packem_shared/Spinner-BuI-kN4p.js +1799 -0
- package/dist/packem_shared/Static-DpTd6Eed.js +22 -0
- package/dist/packem_shared/Static-xmD9giJj.js +18 -0
- package/dist/packem_shared/StaticRender-tYwH6QXl.js +33 -0
- package/dist/packem_shared/StatusMessage-BtSYxzwb.js +14 -0
- package/dist/packem_shared/StderrContext-Bj4Mf7v7.js +17 -0
- package/dist/packem_shared/StdinContext-Bq_GNJ3z.js +38 -0
- package/dist/packem_shared/StdoutContext-CgjWeCdO.js +17 -0
- package/dist/packem_shared/Stopwatch-DjtTCyHn.js +23 -0
- package/dist/packem_shared/Tab-C6r5q4hR.js +7 -0
- package/dist/packem_shared/Table-D-rSVlzb.js +82 -0
- package/dist/packem_shared/Tabs-hki-KRnx.js +153 -0
- package/dist/packem_shared/Text-DvAUdZcK.js +65 -0
- package/dist/packem_shared/TextInput-C79WEQ5U.js +137 -0
- package/dist/packem_shared/Textarea-Dj06R6Zd.js +272 -0
- package/dist/packem_shared/Timer-wi9zuh4n.js +22 -0
- package/dist/packem_shared/Transform-BHxY_dAM.js +14 -0
- package/dist/packem_shared/TreeNodeMap-CtJUvBnd.js +155 -0
- package/dist/packem_shared/TreeView-C2062dtj.js +148 -0
- package/dist/packem_shared/TuiApp-DfxOnXqi.js +120 -0
- package/dist/packem_shared/TuiContext-CqEjMyXd.js +415 -0
- package/dist/packem_shared/UnorderedList-DhnadWjX.js +33 -0
- package/dist/packem_shared/ansi-parser-0BdVTKho.js +41 -0
- package/dist/packem_shared/ansi-tokenizer-LHq2LUWA.js +307 -0
- package/dist/packem_shared/boxes-oi3WUbyR.js +92 -0
- package/dist/packem_shared/colorize-88_Vk8cn.js +48 -0
- package/dist/packem_shared/comparePoints-CGMDnd3_.js +287 -0
- package/dist/packem_shared/createInlineLoop-BxMmcq9D.js +93 -0
- package/dist/packem_shared/createLinkedScrollGroup-Djw4Ceo0.js +44 -0
- package/dist/packem_shared/dom-DvzhsAez.js +225 -0
- package/dist/packem_shared/format-time-BGmnDukX.js +12 -0
- package/dist/packem_shared/getPathToRoot-a1wbwxfL.js +4 -0
- package/dist/packem_shared/getScrollHeight-BubfU_df.js +63 -0
- package/dist/packem_shared/input-utils-ViAEXa0Z.js +19 -0
- package/dist/packem_shared/isIntersecting-fEXHJN5R.js +10 -0
- package/dist/packem_shared/isOsc52Supported-G0k4sXJx.js +36 -0
- package/dist/packem_shared/isTerminalPaletteQuerySupported-EeiwMKbr.js +93 -0
- package/dist/packem_shared/kittyFlags-bNNf_9kX.js +26 -0
- package/dist/packem_shared/measure-element-Reza_yfC.js +396 -0
- package/dist/packem_shared/measure-text-DItZYotK.js +1189 -0
- package/dist/packem_shared/measureElement-CTgFCmKd.js +4 -0
- package/dist/packem_shared/mouse-context-BUHWKEIe.js +6 -0
- package/dist/packem_shared/parseSgrMouse-BHVBPP9G.js +1 -0
- package/dist/packem_shared/processLayout-BQ9kXfd3.js +2 -0
- package/dist/packem_shared/reconciler-BXf6miSS.js +211 -0
- package/dist/packem_shared/reconciler-gfmqURLy.js +680 -0
- package/dist/packem_shared/render-BAwdjfki.js +2806 -0
- package/dist/packem_shared/render-Bpjhf0lD.js +195 -0
- package/dist/packem_shared/renderToString-Cfg55DRD.js +62 -0
- package/dist/packem_shared/renderToString-ClIaXgrC.js +86 -0
- package/dist/packem_shared/renderTreeToBuffer-D3mo7M7m.js +308 -0
- package/dist/packem_shared/renderer-B3wROkeg.js +1431 -0
- package/dist/packem_shared/setEnableStyledLineCache-BpskngSJ.js +2 -0
- package/dist/packem_shared/squashTextNodesWithMap-iqm6OMMT.js +100 -0
- package/dist/packem_shared/text-width-DhuarWcB.js +42 -0
- package/dist/packem_shared/token-to-elements-BRFl_rzw.js +249 -0
- package/dist/packem_shared/treeViewTheme-BpSw9TMf.js +52 -0
- package/dist/packem_shared/useAnimation-kj31sA-T.js +62 -0
- package/dist/packem_shared/useApp-DPQlRzi5.js +6 -0
- package/dist/packem_shared/useBoxMetrics-rBjKc-g4.js +54 -0
- package/dist/packem_shared/useClipboard-B_9-adw1.js +23 -0
- package/dist/packem_shared/useColorBlindness-D_sTIhcb.js +30 -0
- package/dist/packem_shared/useConsoleCapture-Dvt7G1W1.js +61 -0
- package/dist/packem_shared/useCursor-BIJzc8k9.js +19 -0
- package/dist/packem_shared/useElementDimensions-CAoKitVD.js +67 -0
- package/dist/packem_shared/useFocus-CNl5QHHf.js +37 -0
- package/dist/packem_shared/useFocusManager-BPYaUuKQ.js +16 -0
- package/dist/packem_shared/useInput-Cfp5zB2s.js +594 -0
- package/dist/packem_shared/useIsScreenReaderEnabled-CnGKCe0f.js +9 -0
- package/dist/packem_shared/useKeyBindings-B78l1E1n.js +66 -0
- package/dist/packem_shared/useMouseAction-C5gZ2nj7.js +29 -0
- package/dist/packem_shared/useMouseContext-D-rFy60Q.js +12 -0
- package/dist/packem_shared/useMousePosition-BHBJ-kBk.js +25 -0
- package/dist/packem_shared/useOnMouseClick--ZIyBOBO.js +35 -0
- package/dist/packem_shared/useOnMouseHover-26diuXUC.js +32 -0
- package/dist/packem_shared/useOnMouseState-NO_Kda_C.js +13 -0
- package/dist/packem_shared/usePaste-Ct8J4AGR.js +35 -0
- package/dist/packem_shared/useScrollAcceleration-R9LfrPVG.js +73 -0
- package/dist/packem_shared/useScrollInput-D3CpBq_a.js +72 -0
- package/dist/packem_shared/useStderr-CAOVUh4E.js +6 -0
- package/dist/packem_shared/useStdin-X-O0kd-n.js +7 -0
- package/dist/packem_shared/useStdout-DyF6DSH0.js +6 -0
- package/dist/packem_shared/useStopwatch-qC4Beai4.js +33 -0
- package/dist/packem_shared/useTerminalPalette-BaWO2c4Q.js +38 -0
- package/dist/packem_shared/useTextBuffer-C8fEe9Ly.js +398 -0
- package/dist/packem_shared/useTextSelection-mXtxgsPK.js +50 -0
- package/dist/packem_shared/useTimer-CPQ7j827.js +46 -0
- package/dist/packem_shared/useTreeView-BT57P3Kx.js +101 -0
- package/dist/packem_shared/useTreeViewState-BpS_KZ-K.js +502 -0
- package/dist/packem_shared/useWindowSize-ugEmGZJm.js +20 -0
- package/dist/packem_shared/utils-BgdlrbOH.js +140 -0
- package/dist/packem_shared/variant-config-DSZoX5TM.js +8 -0
- package/dist/packem_shared/wrapOrTruncateStyledLine-DN3Nogoc.js +147 -0
- package/dist/react/devtools.d.ts +27 -0
- package/dist/react/focus.d.ts +39 -0
- package/dist/react/hooks.d.ts +238 -0
- package/dist/react/index.d.ts +8 -0
- package/dist/react/index.js +9 -0
- package/dist/react/layout.d.ts +35 -0
- package/dist/react/react.d.ts +57 -0
- package/dist/react/reconciler.d.ts +4 -0
- package/dist/react/render-to-string.d.ts +21 -0
- package/dist/react/renderer.d.ts +2 -0
- package/dist/react/scene.d.ts +3 -0
- package/dist/react/static.d.ts +39 -0
- package/dist/react/styles.d.ts +83 -0
- package/dist/react/text-width.d.ts +20 -0
- package/dist/testing/index.d.ts +144 -0
- package/dist/testing/index.js +260 -0
- package/dist/testing/keys.d.ts +89 -0
- package/dist/testing/screen.d.ts +35 -0
- package/dist/testing/wait-for.d.ts +21 -0
- package/index.js +585 -0
- package/package.json +117 -7
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status message component for Ink.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by ink-ui StatusMessage 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, ReactNode } from "react";
|
|
11
|
+
import type { Variant } from "./variant-config.d.ts";
|
|
12
|
+
export type StatusMessageVariant = Variant;
|
|
13
|
+
export type Props = {
|
|
14
|
+
/**
|
|
15
|
+
* Message content.
|
|
16
|
+
*/
|
|
17
|
+
readonly children: ReactNode;
|
|
18
|
+
/**
|
|
19
|
+
* Determines the icon and color of the status message.
|
|
20
|
+
*/
|
|
21
|
+
readonly variant: StatusMessageVariant;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Renders a status notification with a colored icon and message text.
|
|
25
|
+
*/
|
|
26
|
+
export default function StatusMessage({ children, variant }: Props): ReactElement;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Context } from "react";
|
|
2
|
+
export type Props = {
|
|
3
|
+
/**
|
|
4
|
+
* Stderr stream passed to `render()` in `options.stderr` or `process.stderr` by default.
|
|
5
|
+
*/
|
|
6
|
+
readonly stderr: NodeJS.WriteStream;
|
|
7
|
+
/**
|
|
8
|
+
* Write any string to stderr while preserving Ink's output. It's useful when you want to display external information outside of Ink's rendering and ensure there's no conflict between the two. It's similar to `<Static>`, except it can't accept components; it only works with strings.
|
|
9
|
+
*/
|
|
10
|
+
readonly write: (data: string) => void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* `StderrContext` is a React context that exposes the stderr stream.
|
|
14
|
+
*/
|
|
15
|
+
declare const StderrContext: Context<Props>;
|
|
16
|
+
export default StderrContext;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import type { Context } from "react";
|
|
3
|
+
export type PublicProps = {
|
|
4
|
+
/**
|
|
5
|
+
* A boolean flag determining if the current `stdin` supports `setRawMode`. A component using `setRawMode` might want to use `isRawModeSupported` to nicely fall back in environments where raw mode is not supported.
|
|
6
|
+
*/
|
|
7
|
+
readonly isRawModeSupported: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Ink exposes this function via own `<StdinContext>` to be able to handle Ctrl+C, that's why you should use Ink's `setRawMode` instead of `process.stdin.setRawMode`. If the `stdin` stream passed to Ink does not support setRawMode, this function does nothing.
|
|
10
|
+
*/
|
|
11
|
+
readonly setRawMode: (value: boolean) => void;
|
|
12
|
+
/**
|
|
13
|
+
* The stdin stream passed to `render()` in `options.stdin`, or `process.stdin` by default. Useful if your app needs to handle user input.
|
|
14
|
+
*/
|
|
15
|
+
readonly stdin: NodeJS.ReadStream;
|
|
16
|
+
};
|
|
17
|
+
export type Props = PublicProps & {
|
|
18
|
+
readonly internal_eventEmitter: EventEmitter;
|
|
19
|
+
readonly internal_exitOnCtrlC: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Enable or disable bracketed paste mode on the terminal. When enabled, pasted text is wrapped in escape sequences that allow it to be distinguished from typed input.
|
|
22
|
+
*/
|
|
23
|
+
readonly setBracketedPasteMode: (value: boolean) => void;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* `StdinContext` is a React context that exposes the input stream.
|
|
27
|
+
*/
|
|
28
|
+
declare const StdinContext: Context<Props>;
|
|
29
|
+
export default StdinContext;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Context } from "react";
|
|
2
|
+
export type Props = {
|
|
3
|
+
/**
|
|
4
|
+
* Stdout stream passed to `render()` in `options.stdout` or `process.stdout` by default.
|
|
5
|
+
*/
|
|
6
|
+
readonly stdout: NodeJS.WriteStream;
|
|
7
|
+
/**
|
|
8
|
+
* Write any string to stdout while preserving Ink's output. It's useful when you want to display external information outside of Ink's rendering and ensure there's no conflict between the two. It's similar to `<Static>`, except it can't accept components; it only works with strings.
|
|
9
|
+
*/
|
|
10
|
+
readonly write: (data: string) => void;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* `StdoutContext` is a React context that exposes the stdout stream where Ink renders your app.
|
|
14
|
+
*/
|
|
15
|
+
declare const StdoutContext: Context<Props>;
|
|
16
|
+
export default StdoutContext;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ForwardRefExoticComponent, RefAttributes } from "react";
|
|
2
|
+
import type { UseStopwatchResult } from "../hooks/use-stopwatch.d.ts";
|
|
3
|
+
export type StopwatchRef = Omit<UseStopwatchResult, "elapsed" | "isRunning" | "laps">;
|
|
4
|
+
export type Props = {
|
|
5
|
+
/**
|
|
6
|
+
* Whether to start counting immediately.
|
|
7
|
+
*
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
readonly autoStart?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Make the rendered text bold.
|
|
13
|
+
*/
|
|
14
|
+
readonly bold?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Text color for the rendered time.
|
|
17
|
+
*/
|
|
18
|
+
readonly color?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Custom formatter for the elapsed time.
|
|
21
|
+
* Receives elapsed milliseconds, returns a display string.
|
|
22
|
+
*
|
|
23
|
+
* @default formatDuration (MM:SS or HH:MM:SS)
|
|
24
|
+
*/
|
|
25
|
+
readonly format?: (elapsed: number) => string;
|
|
26
|
+
/**
|
|
27
|
+
* Tick interval in milliseconds.
|
|
28
|
+
*
|
|
29
|
+
* @default 1000
|
|
30
|
+
*/
|
|
31
|
+
readonly interval?: number;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* A count-up stopwatch component.
|
|
35
|
+
*
|
|
36
|
+
* Exposes `start`, `stop`, `toggle`, `reset`, and `lap` methods via ref.
|
|
37
|
+
*
|
|
38
|
+
* ```tsx
|
|
39
|
+
* const ref = useRef<StopwatchRef>(null);
|
|
40
|
+
* <Stopwatch ref={ref} autoStart />
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
declare const Stopwatch: ForwardRefExoticComponent<Props & RefAttributes<StopwatchRef>>;
|
|
44
|
+
export default Stopwatch;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tab component for Ink.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by ink-tab by Julien Deniau.
|
|
5
|
+
* @see https://github.com/jdeniau/ink-tab
|
|
6
|
+
*
|
|
7
|
+
* MIT License
|
|
8
|
+
* Copyright (c) Julien Deniau (github.com/jdeniau)
|
|
9
|
+
*/
|
|
10
|
+
import type { ReactElement, ReactNode } from "react";
|
|
11
|
+
export type Props = {
|
|
12
|
+
/**
|
|
13
|
+
* Tab content to render when the tab is active.
|
|
14
|
+
*/
|
|
15
|
+
readonly children: ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Unique name identifying this tab.
|
|
18
|
+
*/
|
|
19
|
+
readonly name: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* A single tab within a Tabs container.
|
|
23
|
+
* The `name` prop identifies the tab; `children` is rendered when active.
|
|
24
|
+
*/
|
|
25
|
+
export default function Tab({ children }: Props): ReactElement;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { BorderStyle, HorizontalAlignment } from "@visulima/tabular";
|
|
2
|
+
import type { ReactElement } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Scalar value that can be displayed in a table cell.
|
|
5
|
+
*/
|
|
6
|
+
type Scalar = bigint | boolean | number | string | null | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Dictionary with scalar values, representing a single row of data.
|
|
9
|
+
*/
|
|
10
|
+
type ScalarDict = Record<string, Scalar>;
|
|
11
|
+
/**
|
|
12
|
+
* Configuration for a single table column.
|
|
13
|
+
*/
|
|
14
|
+
type ColumnConfig<T extends ScalarDict> = {
|
|
15
|
+
/**
|
|
16
|
+
* Horizontal alignment of cell content.
|
|
17
|
+
*/
|
|
18
|
+
readonly align?: HorizontalAlignment;
|
|
19
|
+
/**
|
|
20
|
+
* Custom header label. Defaults to the key name.
|
|
21
|
+
*/
|
|
22
|
+
readonly header?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Key from the data object to display in this column.
|
|
25
|
+
*/
|
|
26
|
+
readonly key: keyof T & string;
|
|
27
|
+
/**
|
|
28
|
+
* Fixed width for this column in characters.
|
|
29
|
+
*/
|
|
30
|
+
readonly width?: number;
|
|
31
|
+
};
|
|
32
|
+
type Props<T extends ScalarDict> = {
|
|
33
|
+
/**
|
|
34
|
+
* Border style preset name or a custom `BorderStyle` object from `@visulima/tabular`.
|
|
35
|
+
* @default "default"
|
|
36
|
+
*/
|
|
37
|
+
readonly borderStyle?: "ascii" | "block" | "default" | "dots" | "double" | "markdown" | "minimal" | "none" | "rounded" | "thick" | BorderStyle;
|
|
38
|
+
/**
|
|
39
|
+
* Columns to display and their order.
|
|
40
|
+
* Accepts simple key strings or `ColumnConfig` objects for advanced control.
|
|
41
|
+
* If omitted, all keys from the first data item are used.
|
|
42
|
+
*/
|
|
43
|
+
readonly columns?: ((keyof T & string) | ColumnConfig<T>)[];
|
|
44
|
+
/**
|
|
45
|
+
* Array of objects to display as rows.
|
|
46
|
+
*/
|
|
47
|
+
readonly data: T[];
|
|
48
|
+
/**
|
|
49
|
+
* Format a cell value before rendering. Return a string to display in the cell.
|
|
50
|
+
*/
|
|
51
|
+
readonly formatCell?: (value: Scalar, column: keyof T & string, rowIndex: number) => string;
|
|
52
|
+
/**
|
|
53
|
+
* Format a header label before rendering. Return a string to display as the column header.
|
|
54
|
+
*/
|
|
55
|
+
readonly formatHeader?: (column: keyof T & string) => string;
|
|
56
|
+
/**
|
|
57
|
+
* Maximum width of the table in characters. Columns will be truncated or wrapped to fit.
|
|
58
|
+
*/
|
|
59
|
+
readonly maxWidth?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Cell padding (left and right) in characters.
|
|
62
|
+
* @default 1
|
|
63
|
+
*/
|
|
64
|
+
readonly padding?: number;
|
|
65
|
+
/**
|
|
66
|
+
* Whether to show the header row.
|
|
67
|
+
* @default true
|
|
68
|
+
*/
|
|
69
|
+
readonly showHeader?: boolean;
|
|
70
|
+
/** Placeholder shown in place of `null` or `undefined` cell values. Defaults to an empty string. */
|
|
71
|
+
readonly skeleton?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Enable word wrap instead of truncation when cells exceed their width.
|
|
74
|
+
* @default false
|
|
75
|
+
*/
|
|
76
|
+
readonly wordWrap?: boolean;
|
|
77
|
+
};
|
|
78
|
+
declare const _default: <T extends ScalarDict>(props: Props<T>) => ReactElement;
|
|
79
|
+
export default _default;
|
|
80
|
+
export type { ColumnConfig, Props, Scalar, ScalarDict };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tabs component for Ink.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by ink-tab by Julien Deniau.
|
|
5
|
+
* @see https://github.com/jdeniau/ink-tab
|
|
6
|
+
*
|
|
7
|
+
* MIT License
|
|
8
|
+
* Copyright (c) Julien Deniau (github.com/jdeniau)
|
|
9
|
+
*/
|
|
10
|
+
import type { AnsiColors } from "@visulima/colorize";
|
|
11
|
+
import type { ReactElement, ReactNode } from "react";
|
|
12
|
+
import type { LiteralUnion } from "type-fest";
|
|
13
|
+
import type { Props as TabProps } from "./Tab.d.ts";
|
|
14
|
+
/**
|
|
15
|
+
* Keyboard navigation configuration for Tabs.
|
|
16
|
+
*/
|
|
17
|
+
export type KeyMap = {
|
|
18
|
+
/**
|
|
19
|
+
* Key names that move to the next tab.
|
|
20
|
+
* Defaults to `["rightArrow"]` for row layouts and `["downArrow"]` for column layouts.
|
|
21
|
+
*/
|
|
22
|
+
readonly next?: ReadonlyArray<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Key names that move to the previous tab.
|
|
25
|
+
* Defaults to `["leftArrow"]` for row layouts and `["upArrow"]` for column layouts.
|
|
26
|
+
*/
|
|
27
|
+
readonly previous?: ReadonlyArray<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Whether Meta/Cmd + 1–9 jumps to a specific tab.
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
readonly useNumbers?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the Tab key cycles through tabs (only when `isFocused` is not managed by Ink).
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
37
|
+
readonly useTab?: boolean;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Color customization for active tab styling.
|
|
41
|
+
*/
|
|
42
|
+
export type TabColors = {
|
|
43
|
+
readonly activeTab?: {
|
|
44
|
+
readonly backgroundColor?: LiteralUnion<AnsiColors, string>;
|
|
45
|
+
readonly color?: LiteralUnion<AnsiColors, string>;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export type Props = {
|
|
49
|
+
/**
|
|
50
|
+
* Tab elements to render.
|
|
51
|
+
*/
|
|
52
|
+
readonly children: ReactNode;
|
|
53
|
+
/**
|
|
54
|
+
* Active tab colors. When `isFocused` is `false`, the active tab uses gray.
|
|
55
|
+
*/
|
|
56
|
+
readonly colors?: TabColors;
|
|
57
|
+
/**
|
|
58
|
+
* Name of the tab to select initially (uncontrolled mode).
|
|
59
|
+
* Ignored when `value` is provided.
|
|
60
|
+
*/
|
|
61
|
+
readonly defaultValue?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Layout direction for the tab bar.
|
|
64
|
+
* @default "row"
|
|
65
|
+
*/
|
|
66
|
+
readonly flexDirection?: "column" | "column-reverse" | "row" | "row-reverse";
|
|
67
|
+
/**
|
|
68
|
+
* Whether the tabs are focused and respond to keyboard input.
|
|
69
|
+
* - `true`: focused, uses active colors.
|
|
70
|
+
* - `false`: unfocused, uses gray active color, ignores input.
|
|
71
|
+
* - `undefined`/`null`: always active (focus not managed by Ink).
|
|
72
|
+
* @default undefined
|
|
73
|
+
*/
|
|
74
|
+
readonly isFocused?: boolean | null;
|
|
75
|
+
/**
|
|
76
|
+
* Custom keyboard mappings.
|
|
77
|
+
*/
|
|
78
|
+
readonly keyMap?: KeyMap;
|
|
79
|
+
/**
|
|
80
|
+
* Called when the active tab changes.
|
|
81
|
+
*/
|
|
82
|
+
readonly onChange: (name: string, activeTab: ReactElement<TabProps>) => void;
|
|
83
|
+
/**
|
|
84
|
+
* Whether to display 1-based index numbers before each tab name.
|
|
85
|
+
* @default true
|
|
86
|
+
*/
|
|
87
|
+
readonly showIndex?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Controlled active tab name. When provided, the component is controlled —
|
|
90
|
+
* the parent owns the active tab state and must update it via `onChange`.
|
|
91
|
+
* When omitted, the component manages its own state (uncontrolled mode).
|
|
92
|
+
*/
|
|
93
|
+
readonly value?: string;
|
|
94
|
+
/**
|
|
95
|
+
* Width of the container Box. Also determines the separator width in column layouts.
|
|
96
|
+
*/
|
|
97
|
+
readonly width?: number | string;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Tabbed navigation component. Renders a row or column of tabs with keyboard
|
|
101
|
+
* navigation (arrow keys, Tab, number keys) and calls `onChange` when the
|
|
102
|
+
* active tab changes.
|
|
103
|
+
*/
|
|
104
|
+
export default function Tabs({ children, colors: colorsProp, defaultValue, flexDirection, isFocused, keyMap: keyMapProp, onChange, showIndex, value, width, }: Props): ReactElement;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { AnsiColors } from "@visulima/colorize";
|
|
2
|
+
import type { ReactElement, ReactNode } from "react";
|
|
3
|
+
import type { LiteralUnion } from "type-fest";
|
|
4
|
+
import type { Styles } from "../styles.d.ts";
|
|
5
|
+
export type Props = {
|
|
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
|
+
* Same as `color`, but for the background.
|
|
16
|
+
*/
|
|
17
|
+
readonly backgroundColor?: LiteralUnion<AnsiColors, string>;
|
|
18
|
+
/**
|
|
19
|
+
* Make the text bold.
|
|
20
|
+
*/
|
|
21
|
+
readonly bold?: boolean;
|
|
22
|
+
readonly children?: ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* Change text color. Ink uses @visulima/colorize under the hood, so all its functionality is supported.
|
|
25
|
+
*/
|
|
26
|
+
readonly color?: LiteralUnion<AnsiColors, string>;
|
|
27
|
+
/**
|
|
28
|
+
* Dim the color (make it less bright).
|
|
29
|
+
*/
|
|
30
|
+
readonly dimColor?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Inverse background and foreground colors.
|
|
33
|
+
*/
|
|
34
|
+
readonly inverse?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Make the text italic.
|
|
37
|
+
*/
|
|
38
|
+
readonly italic?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Make the text crossed out with a line.
|
|
41
|
+
*/
|
|
42
|
+
readonly strikethrough?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Make the text underlined.
|
|
45
|
+
*/
|
|
46
|
+
readonly underline?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Controls how text wraps when it exceeds the container width.
|
|
49
|
+
*
|
|
50
|
+
* - `wrap` (default) — Wrap at word boundaries; break inside words only when a single word exceeds the width.
|
|
51
|
+
* - `wrap-anywhere` — Break at any character boundary, even when a whitespace break exists earlier.
|
|
52
|
+
* - `wrap-preserve-words` — Wrap at word boundaries; never break inside words (long words may overflow).
|
|
53
|
+
* - `wrap-strict` — Enforce exact width; always break at the column limit.
|
|
54
|
+
* - `truncate` / `truncate-end` — Truncate at the end with an ellipsis.
|
|
55
|
+
* - `truncate-start` — Truncate at the start with an ellipsis.
|
|
56
|
+
* - `truncate-middle` — Truncate in the middle with an ellipsis.
|
|
57
|
+
*/
|
|
58
|
+
readonly wrap?: Styles["textWrap"];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* This component can display text and change its style to make it bold, underlined, italic, or strikethrough.
|
|
62
|
+
*/
|
|
63
|
+
export default function Text({ "aria-hidden": ariaHidden, "aria-label": ariaLabel, backgroundColor, bold, children, color, dimColor, inverse, italic, strikethrough, underline, wrap, }: Props): ReactElement | null;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text input component for Ink.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by ink-ui TextInput by Vadim Demedes and ink-text-input by Sindre Sorhus.
|
|
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
|
+
/** @default "" */
|
|
13
|
+
readonly defaultValue?: string;
|
|
14
|
+
/**
|
|
15
|
+
* When true, all input is ignored and text is dimmed.
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
readonly isDisabled?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* When true, renders asterisks instead of the actual characters.
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
readonly mask?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Fires on every keystroke with the updated text.
|
|
26
|
+
*/
|
|
27
|
+
readonly onChange?: (value: string) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Fires when the user presses Enter.
|
|
30
|
+
*/
|
|
31
|
+
readonly onSubmit?: (value: string) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Greyed-out text shown when the input is empty.
|
|
34
|
+
*/
|
|
35
|
+
readonly placeholder?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Autocomplete candidates. The first case-sensitive prefix match is shown
|
|
38
|
+
* dimmed after the current input. Press right-arrow or Enter to accept.
|
|
39
|
+
*/
|
|
40
|
+
readonly suggestions?: ReadonlyArray<string>;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* A single-line text input with cursor navigation, optional placeholder,
|
|
44
|
+
* autocomplete suggestions, and password masking.
|
|
45
|
+
*
|
|
46
|
+
* Supports arrow keys, Home/End, Ctrl+A/E, Ctrl+U/K/W, Backspace, Delete.
|
|
47
|
+
*/
|
|
48
|
+
export default function TextInput({ defaultValue, isDisabled, mask, onChange, onSubmit, placeholder, suggestions }: Props): ReactElement;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-line text input component for Ink.
|
|
3
|
+
*
|
|
4
|
+
* Provides a full-featured textarea with cursor navigation, selection,
|
|
5
|
+
* clipboard support, undo/redo, and viewport scrolling.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactElement } from "react";
|
|
8
|
+
export type Props = {
|
|
9
|
+
/** @default "" */
|
|
10
|
+
readonly defaultValue?: string;
|
|
11
|
+
/**
|
|
12
|
+
* When true, all input is ignored and text is dimmed.
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
readonly isDisabled?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* When true, the component responds to keyboard input.
|
|
18
|
+
* @default true
|
|
19
|
+
*/
|
|
20
|
+
readonly isFocused?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Maximum visible rows before viewport scrolling kicks in.
|
|
23
|
+
* When set, the textarea will grow from `rows` to `maxRows` before scrolling.
|
|
24
|
+
*/
|
|
25
|
+
readonly maxRows?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Fires on every edit with the updated text.
|
|
28
|
+
*/
|
|
29
|
+
readonly onChange?: (value: string) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Fires when the user presses Meta+Enter or Ctrl+Enter.
|
|
32
|
+
*/
|
|
33
|
+
readonly onSubmit?: (value: string) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Greyed-out text shown when the textarea is empty.
|
|
36
|
+
*/
|
|
37
|
+
readonly placeholder?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Number of visible rows (viewport height).
|
|
40
|
+
* @default 5
|
|
41
|
+
*/
|
|
42
|
+
readonly rows?: number;
|
|
43
|
+
/**
|
|
44
|
+
* Show line numbers in the left gutter.
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
readonly showLineNumbers?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Number of spaces inserted for a Tab key press.
|
|
50
|
+
* @default 2
|
|
51
|
+
*/
|
|
52
|
+
readonly tabSize?: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* A multi-line text input with cursor navigation, selection, clipboard, undo/redo,
|
|
56
|
+
* paste support, and viewport scrolling.
|
|
57
|
+
*
|
|
58
|
+
* ```tsx
|
|
59
|
+
* <Textarea defaultValue="Hello\nWorld" rows={10} onChange={setValue} onSubmit={handleSubmit} />
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export default function Textarea({ defaultValue, isDisabled, isFocused, maxRows, onChange, onSubmit, placeholder, rows, showLineNumbers, tabSize, }: Props): ReactElement;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ForwardRefExoticComponent, RefAttributes } from "react";
|
|
2
|
+
import type { UseTimerResult } from "../hooks/use-timer.d.ts";
|
|
3
|
+
export type TimerRef = Omit<UseTimerResult, "isFinished" | "isRunning" | "remaining">;
|
|
4
|
+
export type Props = {
|
|
5
|
+
/**
|
|
6
|
+
* Whether to start the timer immediately.
|
|
7
|
+
*
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
readonly autoStart?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Make the rendered text bold.
|
|
13
|
+
*/
|
|
14
|
+
readonly bold?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Text color for the rendered time.
|
|
17
|
+
*/
|
|
18
|
+
readonly color?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Total countdown duration in milliseconds.
|
|
21
|
+
*/
|
|
22
|
+
readonly duration: number;
|
|
23
|
+
/**
|
|
24
|
+
* Custom formatter for the remaining time.
|
|
25
|
+
* Receives remaining milliseconds, returns a display string.
|
|
26
|
+
*
|
|
27
|
+
* @default formatDuration (MM:SS or HH:MM:SS)
|
|
28
|
+
*/
|
|
29
|
+
readonly format?: (remaining: number) => string;
|
|
30
|
+
/**
|
|
31
|
+
* Tick interval in milliseconds.
|
|
32
|
+
*
|
|
33
|
+
* @default 1000
|
|
34
|
+
*/
|
|
35
|
+
readonly interval?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Called once when the timer reaches zero.
|
|
38
|
+
*/
|
|
39
|
+
readonly onTimeout?: () => void;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* A countdown timer component.
|
|
43
|
+
*
|
|
44
|
+
* Exposes `start`, `stop`, `toggle`, and `reset` methods via ref.
|
|
45
|
+
*
|
|
46
|
+
* ```tsx
|
|
47
|
+
* const ref = useRef<TimerRef>(null);
|
|
48
|
+
* <Timer ref={ref} duration={60_000} autoStart />
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
declare const Timer: ForwardRefExoticComponent<Props & RefAttributes<TimerRef>>;
|
|
52
|
+
export default Timer;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from "react";
|
|
2
|
+
export type Props = {
|
|
3
|
+
/**
|
|
4
|
+
* Screen-reader-specific text to output. If this is set, all children will be ignored.
|
|
5
|
+
*/
|
|
6
|
+
readonly accessibilityLabel?: string;
|
|
7
|
+
readonly children?: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Function that transforms children output. It accepts children and must return transformed children as well. Note that when children use `<Text>` styling props (e.g. `color`, `bold`), the string will contain ANSI escape codes.
|
|
10
|
+
*/
|
|
11
|
+
readonly transform: (children: string, index: number) => string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Transform a string representation of React components before they're written to output. For example, you might want to apply a gradient to text, add a clickable link, or create some text effects. These use cases can't accept React nodes as input; they expect a string. That's what the <Transform> component does: it gives you an output string of its child components and lets you transform it in any way.
|
|
15
|
+
*/
|
|
16
|
+
export default function Transform({ accessibilityLabel, children, transform }: Props): ReactElement | null;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unordered list component for Ink.
|
|
3
|
+
*
|
|
4
|
+
* Inspired by ink-ui UnorderedList 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, ReactNode } from "react";
|
|
11
|
+
export type UnorderedListEntry = {
|
|
12
|
+
/**
|
|
13
|
+
* Content of the list entry. Can be a string or nested list.
|
|
14
|
+
*/
|
|
15
|
+
readonly children?: ReadonlyArray<UnorderedListEntry>;
|
|
16
|
+
/**
|
|
17
|
+
* Display text for this item.
|
|
18
|
+
*/
|
|
19
|
+
readonly label: ReactNode;
|
|
20
|
+
};
|
|
21
|
+
export type Props = {
|
|
22
|
+
/**
|
|
23
|
+
* Entries to render as a bullet list.
|
|
24
|
+
*/
|
|
25
|
+
readonly items: ReadonlyArray<UnorderedListEntry>;
|
|
26
|
+
/**
|
|
27
|
+
* Custom bullet symbol(s). A string uses the same symbol at all depths.
|
|
28
|
+
* An array cycles through symbols by nesting depth.
|
|
29
|
+
*/
|
|
30
|
+
readonly marker?: ReadonlyArray<string> | string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Renders a bullet list with nesting support.
|
|
34
|
+
*/
|
|
35
|
+
export default function UnorderedList({ items, marker }: Props): ReactElement;
|