Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
claude-code ink.ts
3.9 kB · 85 lines
TypeScript
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586import { createElement, type ReactNode } from 'react'import { ThemeProvider } from './components/design-system/ThemeProvider.js'import inkRender, { type Instance, createRoot as inkCreateRoot, type RenderOptions, type Root,} from './ink/root.js'
export type { RenderOptions, Instance, Root }
// Wrap all CC render calls with ThemeProvider so ThemedBox/ThemedText work// without every call site having to mount it. Ink itself is theme-agnostic.function withTheme(node: ReactNode): ReactNode { return createElement(ThemeProvider, null, node)}
export async function render( node: ReactNode, options?: NodeJS.WriteStream | RenderOptions,): Promise<Instance> { return inkRender(withTheme(node), options)}
export async function createRoot(options?: RenderOptions): Promise<Root> { const root = await inkCreateRoot(options) return { ...root, render: node => root.render(withTheme(node)), }}
export { color } from './components/design-system/color.js'export type { Props as BoxProps } from './components/design-system/ThemedBox.js'export { default as Box } from './components/design-system/ThemedBox.js'export type { Props as TextProps } from './components/design-system/ThemedText.js'export { default as Text } from './components/design-system/ThemedText.js'export { ThemeProvider, usePreviewTheme, useTheme, useThemeSetting,} from './components/design-system/ThemeProvider.js'export { Ansi } from './ink/Ansi.js'export type { Props as AppProps } from './ink/components/AppContext.js'export type { Props as BaseBoxProps } from './ink/components/Box.js'export { default as BaseBox } from './ink/components/Box.js'export type { ButtonState, Props as ButtonProps,} from './ink/components/Button.js'export { default as Button } from './ink/components/Button.js'export type { Props as LinkProps } from './ink/components/Link.js'export { default as Link } from './ink/components/Link.js'export type { Props as NewlineProps } from './ink/components/Newline.js'export { default as Newline } from './ink/components/Newline.js'export { NoSelect } from './ink/components/NoSelect.js'export { RawAnsi } from './ink/components/RawAnsi.js'export { default as Spacer } from './ink/components/Spacer.js'export type { Props as StdinProps } from './ink/components/StdinContext.js'export type { Props as BaseTextProps } from './ink/components/Text.js'export { default as BaseText } from './ink/components/Text.js'export type { DOMElement } from './ink/dom.js'export { ClickEvent } from './ink/events/click-event.js'export { EventEmitter } from './ink/events/emitter.js'export { Event } from './ink/events/event.js'export type { Key } from './ink/events/input-event.js'export { InputEvent } from './ink/events/input-event.js'export type { TerminalFocusEventType } from './ink/events/terminal-focus-event.js'export { TerminalFocusEvent } from './ink/events/terminal-focus-event.js'export { FocusManager } from './ink/focus.js'export type { FlickerReason } from './ink/frame.js'export { useAnimationFrame } from './ink/hooks/use-animation-frame.js'export { default as useApp } from './ink/hooks/use-app.js'export { default as useInput } from './ink/hooks/use-input.js'export { useAnimationTimer, useInterval } from './ink/hooks/use-interval.js'export { useSelection } from './ink/hooks/use-selection.js'export { default as useStdin } from './ink/hooks/use-stdin.js'export { useTabStatus } from './ink/hooks/use-tab-status.js'export { useTerminalFocus } from './ink/hooks/use-terminal-focus.js'export { useTerminalTitle } from './ink/hooks/use-terminal-title.js'export { useTerminalViewport } from './ink/hooks/use-terminal-viewport.js'export { default as measureElement } from './ink/measure-element.js'export { supportsTabStatus } from './ink/termio/osc.js'export { default as wrapText } from './ink/wrap-text.js'