@comma-agents/tui 2.0.0-rc.0

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 (256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -0
  3. package/dist/App/App.d.ts +24 -0
  4. package/dist/App/App.theme.d.ts +12 -0
  5. package/dist/App/App.types.d.ts +8 -0
  6. package/dist/App/index.d.ts +4 -0
  7. package/dist/Theme/DefineTheme.d.ts +53 -0
  8. package/dist/Theme/Theme.d.ts +11 -0
  9. package/dist/Theme/Theme.types.d.ts +100 -0
  10. package/dist/Theme/index.d.ts +9 -0
  11. package/dist/Theme/themes/dark.d.ts +14 -0
  12. package/dist/Theme/themes/dracula.d.ts +9 -0
  13. package/dist/Theme/themes/index.d.ts +25 -0
  14. package/dist/Theme/themes/light.d.ts +10 -0
  15. package/dist/Theme/themes/solarized-dark.d.ts +9 -0
  16. package/dist/Theme/useTheme/index.d.ts +3 -0
  17. package/dist/Theme/useTheme/useTheme.context.d.ts +31 -0
  18. package/dist/Theme/useTheme/useTheme.d.ts +11 -0
  19. package/dist/Theme/useTheme/useTheme.types.d.ts +10 -0
  20. package/dist/components/BorderedPanel/BorderedPanel.d.ts +70 -0
  21. package/dist/components/BorderedPanel/BorderedPanel.theme.d.ts +59 -0
  22. package/dist/components/BorderedPanel/index.d.ts +4 -0
  23. package/dist/components/Button/Button.d.ts +69 -0
  24. package/dist/components/Button/Button.theme.d.ts +50 -0
  25. package/dist/components/Button/Button.types.d.ts +9 -0
  26. package/dist/components/Button/index.d.ts +4 -0
  27. package/dist/components/ChatTextArea/ChatTextArea.d.ts +85 -0
  28. package/dist/components/ChatTextArea/ChatTextArea.theme.d.ts +34 -0
  29. package/dist/components/ChatTextArea/index.d.ts +2 -0
  30. package/dist/components/CodeView/CodeView.constants.d.ts +9 -0
  31. package/dist/components/CodeView/CodeView.d.ts +23 -0
  32. package/dist/components/CodeView/CodeView.theme.d.ts +26 -0
  33. package/dist/components/CodeView/index.d.ts +4 -0
  34. package/dist/components/CommandPalette/CommandPalette.constants.d.ts +8 -0
  35. package/dist/components/CommandPalette/CommandPalette.d.ts +62 -0
  36. package/dist/components/CommandPalette/CommandPalette.theme.d.ts +50 -0
  37. package/dist/components/CommandPalette/CommandPalette.types.d.ts +50 -0
  38. package/dist/components/CommandPalette/CommandPalette.utils.d.ts +6 -0
  39. package/dist/components/CommandPalette/index.d.ts +5 -0
  40. package/dist/components/CommandPalette/pages/HelpPage/HelpPage.constants.d.ts +2 -0
  41. package/dist/components/CommandPalette/pages/HelpPage/HelpPage.d.ts +12 -0
  42. package/dist/components/CommandPalette/pages/HelpPage/HelpPage.types.d.ts +5 -0
  43. package/dist/components/CommandPalette/pages/HelpPage/index.d.ts +3 -0
  44. package/dist/components/CommandPalette/pages/ListProvidersPage/ListProvidersPage.d.ts +42 -0
  45. package/dist/components/CommandPalette/pages/ListProvidersPage/index.d.ts +1 -0
  46. package/dist/components/CommandPalette/pages/RegisteredProvidersPage/RegisteredProvidersPage.constants.d.ts +3 -0
  47. package/dist/components/CommandPalette/pages/RegisteredProvidersPage/RegisteredProvidersPage.d.ts +40 -0
  48. package/dist/components/CommandPalette/pages/RegisteredProvidersPage/RegisteredProvidersPage.types.d.ts +13 -0
  49. package/dist/components/CommandPalette/pages/RegisteredProvidersPage/RegisteredProvidersPage.utils.d.ts +9 -0
  50. package/dist/components/CommandPalette/pages/RegisteredProvidersPage/index.d.ts +2 -0
  51. package/dist/components/CommandPalette/pages/RunPickerPage/RunPickerPage.constants.d.ts +3 -0
  52. package/dist/components/CommandPalette/pages/RunPickerPage/RunPickerPage.d.ts +31 -0
  53. package/dist/components/CommandPalette/pages/RunPickerPage/RunPickerPage.types.d.ts +8 -0
  54. package/dist/components/CommandPalette/pages/RunPickerPage/RunPickerPage.utils.d.ts +7 -0
  55. package/dist/components/CommandPalette/pages/RunPickerPage/index.d.ts +3 -0
  56. package/dist/components/CommandPalette/pages/SettingsPage/SettingsPage.d.ts +24 -0
  57. package/dist/components/CommandPalette/pages/SettingsPage/index.d.ts +2 -0
  58. package/dist/components/Frame/Frame.d.ts +48 -0
  59. package/dist/components/Frame/Frame.theme.d.ts +52 -0
  60. package/dist/components/Frame/index.d.ts +4 -0
  61. package/dist/components/Hide/Hide.d.ts +20 -0
  62. package/dist/components/Hide/Hide.types.d.ts +12 -0
  63. package/dist/components/Hide/index.d.ts +2 -0
  64. package/dist/components/MessageList/AgentMessage/AgentMessage.d.ts +71 -0
  65. package/dist/components/MessageList/AgentMessage/index.d.ts +2 -0
  66. package/dist/components/MessageList/ContextUsageModal/ContextUsageModal.constants.d.ts +2 -0
  67. package/dist/components/MessageList/ContextUsageModal/ContextUsageModal.d.ts +9 -0
  68. package/dist/components/MessageList/ContextUsageModal/ContextUsageModal.types.d.ts +12 -0
  69. package/dist/components/MessageList/ContextUsageModal/index.d.ts +4 -0
  70. package/dist/components/MessageList/MarkdownView/MarkdownView.constants.d.ts +51 -0
  71. package/dist/components/MessageList/MarkdownView/MarkdownView.d.ts +34 -0
  72. package/dist/components/MessageList/MarkdownView/MarkdownView.theme.d.ts +89 -0
  73. package/dist/components/MessageList/MarkdownView/MarkdownView.types.d.ts +96 -0
  74. package/dist/components/MessageList/MarkdownView/MarkdownView.utils.d.ts +58 -0
  75. package/dist/components/MessageList/MarkdownView/index.d.ts +6 -0
  76. package/dist/components/MessageList/MessageList.d.ts +20 -0
  77. package/dist/components/MessageList/MessageList.theme.d.ts +170 -0
  78. package/dist/components/MessageList/MessageList.types.d.ts +26 -0
  79. package/dist/components/MessageList/OutputModal/OutputModal.constants.d.ts +22 -0
  80. package/dist/components/MessageList/OutputModal/OutputModal.d.ts +37 -0
  81. package/dist/components/MessageList/OutputModal/OutputModal.theme.d.ts +68 -0
  82. package/dist/components/MessageList/OutputModal/OutputModal.types.d.ts +56 -0
  83. package/dist/components/MessageList/OutputModal/OutputModal.utils.d.ts +3 -0
  84. package/dist/components/MessageList/OutputModal/index.d.ts +6 -0
  85. package/dist/components/MessageList/SpawnedStrategyView/SpawnedStrategyView.d.ts +47 -0
  86. package/dist/components/MessageList/SpawnedStrategyView/SpawnedStrategyView.theme.d.ts +58 -0
  87. package/dist/components/MessageList/SpawnedStrategyView/index.d.ts +4 -0
  88. package/dist/components/MessageList/SystemMessage/SystemMessage.d.ts +21 -0
  89. package/dist/components/MessageList/SystemMessage/index.d.ts +2 -0
  90. package/dist/components/MessageList/ToolCallView/ToolCallView.constants.d.ts +42 -0
  91. package/dist/components/MessageList/ToolCallView/ToolCallView.d.ts +71 -0
  92. package/dist/components/MessageList/ToolCallView/ToolCallView.theme.d.ts +47 -0
  93. package/dist/components/MessageList/ToolCallView/ToolCallView.types.d.ts +60 -0
  94. package/dist/components/MessageList/ToolCallView/ToolCallView.utils.d.ts +40 -0
  95. package/dist/components/MessageList/ToolCallView/index.d.ts +8 -0
  96. package/dist/components/MessageList/UserMessage/UserMessage.d.ts +25 -0
  97. package/dist/components/MessageList/UserMessage/index.d.ts +2 -0
  98. package/dist/components/MessageList/index.d.ts +14 -0
  99. package/dist/components/Modal/Modal.d.ts +64 -0
  100. package/dist/components/Modal/Modal.theme.d.ts +29 -0
  101. package/dist/components/Modal/index.d.ts +4 -0
  102. package/dist/components/MouseProvider/MouseContext.d.ts +36 -0
  103. package/dist/components/MouseProvider/MouseProvider.d.ts +20 -0
  104. package/dist/components/MouseProvider/index.d.ts +4 -0
  105. package/dist/components/PermissionPrompt/PermissionPrompt.d.ts +33 -0
  106. package/dist/components/PermissionPrompt/index.d.ts +2 -0
  107. package/dist/components/QuestionPrompt/QuestionPrompt.d.ts +4 -0
  108. package/dist/components/QuestionPrompt/QuestionPrompt.types.d.ts +18 -0
  109. package/dist/components/QuestionPrompt/index.d.ts +2 -0
  110. package/dist/components/ScrollableList/ScrollableList.d.ts +33 -0
  111. package/dist/components/ScrollableList/ScrollableList.theme.d.ts +33 -0
  112. package/dist/components/ScrollableList/ScrollableList.types.d.ts +66 -0
  113. package/dist/components/ScrollableList/index.d.ts +4 -0
  114. package/dist/components/ScrollableView/ScrollableView.d.ts +34 -0
  115. package/dist/components/ScrollableView/ScrollableView.theme.d.ts +34 -0
  116. package/dist/components/ScrollableView/ScrollableView.types.d.ts +113 -0
  117. package/dist/components/ScrollableView/index.d.ts +4 -0
  118. package/dist/components/Scrollbar/Scrollbar.d.ts +21 -0
  119. package/dist/components/Scrollbar/Scrollbar.theme.d.ts +16 -0
  120. package/dist/components/Scrollbar/Scrollbar.types.d.ts +27 -0
  121. package/dist/components/Scrollbar/Scrollbar.utils.d.ts +21 -0
  122. package/dist/components/Scrollbar/index.d.ts +4 -0
  123. package/dist/components/SearchInput/SearchInput.d.ts +22 -0
  124. package/dist/components/SearchInput/SearchInput.theme.d.ts +30 -0
  125. package/dist/components/SearchInput/SearchInput.types.d.ts +25 -0
  126. package/dist/components/SearchInput/SearchInput.utils.d.ts +22 -0
  127. package/dist/components/SearchInput/index.d.ts +5 -0
  128. package/dist/components/Separator/Separator.d.ts +39 -0
  129. package/dist/components/Separator/Separator.theme.d.ts +22 -0
  130. package/dist/components/Separator/index.d.ts +4 -0
  131. package/dist/components/StatusBar/StatusBar.d.ts +4 -0
  132. package/dist/components/StatusBar/StatusBar.theme.d.ts +35 -0
  133. package/dist/components/StatusBar/StatusBar.types.d.ts +24 -0
  134. package/dist/components/StatusBar/index.d.ts +2 -0
  135. package/dist/components/TextAreaInput/TextAreaInput.d.ts +68 -0
  136. package/dist/components/TextAreaInput/TextAreaInput.theme.d.ts +14 -0
  137. package/dist/components/TextAreaInput/TextAreaInput.utils.d.ts +69 -0
  138. package/dist/components/TextAreaInput/index.d.ts +2 -0
  139. package/dist/components/TitleIcon/TitleIcon.d.ts +13 -0
  140. package/dist/components/TitleIcon/TitleIcon.theme.d.ts +19 -0
  141. package/dist/components/TitleIcon/index.d.ts +1 -0
  142. package/dist/components/index.d.ts +61 -0
  143. package/dist/hooks/index.d.ts +27 -0
  144. package/dist/hooks/useBreakpoint/index.d.ts +2 -0
  145. package/dist/hooks/useBreakpoint/useBreakpoint.d.ts +15 -0
  146. package/dist/hooks/useBreakpoint/useBreakpoint.types.d.ts +18 -0
  147. package/dist/hooks/useChat/index.d.ts +22 -0
  148. package/dist/hooks/useChat/useChat.context.d.ts +7 -0
  149. package/dist/hooks/useChat/useChat.d.ts +11 -0
  150. package/dist/hooks/useChat/useChat.types.d.ts +209 -0
  151. package/dist/hooks/useChat/useChat.utils.d.ts +18 -0
  152. package/dist/hooks/useChat/useChatActions.d.ts +10 -0
  153. package/dist/hooks/useChat/useChatAgentMessages/index.d.ts +1 -0
  154. package/dist/hooks/useChat/useChatAgentMessages/useChatAgentMessages.d.ts +2 -0
  155. package/dist/hooks/useChat/useChatInputRequests/index.d.ts +2 -0
  156. package/dist/hooks/useChat/useChatInputRequests/useChatInputRequests.d.ts +3 -0
  157. package/dist/hooks/useChat/useChatInputRequests/useChatInputRequests.types.d.ts +4 -0
  158. package/dist/hooks/useChat/useChatLifecycle.d.ts +5 -0
  159. package/dist/hooks/useChat/useChatPermissionRequests/index.d.ts +2 -0
  160. package/dist/hooks/useChat/useChatPermissionRequests/useChatPermissionRequestSubscriptions.d.ts +2 -0
  161. package/dist/hooks/useChat/useChatPermissionRequests/useChatPermissionRequests.d.ts +3 -0
  162. package/dist/hooks/useChat/useChatPermissionRequests/useChatPermissionRequests.types.d.ts +4 -0
  163. package/dist/hooks/useChat/useChatQuestionRequests/index.d.ts +2 -0
  164. package/dist/hooks/useChat/useChatQuestionRequests/useChatQuestionRequestSubscriptions.d.ts +2 -0
  165. package/dist/hooks/useChat/useChatQuestionRequests/useChatQuestionRequests.d.ts +3 -0
  166. package/dist/hooks/useChat/useChatQuestionRequests/useChatQuestionRequests.types.d.ts +4 -0
  167. package/dist/hooks/useChat/useChatRunLifecycle/index.d.ts +2 -0
  168. package/dist/hooks/useChat/useChatRunLifecycle/useChatRunLifecycle.d.ts +3 -0
  169. package/dist/hooks/useChat/useChatRunLifecycle/useChatRunLifecycle.types.d.ts +11 -0
  170. package/dist/hooks/useChat/useChatRunLifecycle/useChatRunLifecycleSubscriptions.d.ts +2 -0
  171. package/dist/hooks/useChat/useChatRunStore/index.d.ts +1 -0
  172. package/dist/hooks/useChat/useChatRunStore/useChatRunStore.d.ts +3 -0
  173. package/dist/hooks/useChat/useChatRuns.d.ts +10 -0
  174. package/dist/hooks/useChat/useChatState.d.ts +17 -0
  175. package/dist/hooks/useChat/useChatSteering/index.d.ts +2 -0
  176. package/dist/hooks/useChat/useChatSteering/useChatSteering.d.ts +3 -0
  177. package/dist/hooks/useChat/useChatSteering/useChatSteering.types.d.ts +4 -0
  178. package/dist/hooks/useChat/useChatStepMessages/index.d.ts +1 -0
  179. package/dist/hooks/useChat/useChatStepMessages/useChatStepMessages.d.ts +2 -0
  180. package/dist/hooks/useChat/usePersistedRunList/index.d.ts +2 -0
  181. package/dist/hooks/useChat/usePersistedRunList/usePersistedRunList.d.ts +3 -0
  182. package/dist/hooks/useChat/usePersistedRunList/usePersistedRunList.types.d.ts +5 -0
  183. package/dist/hooks/useDaemon/index.d.ts +6 -0
  184. package/dist/hooks/useDaemon/useDaemon.context.d.ts +18 -0
  185. package/dist/hooks/useDaemon/useDaemon.d.ts +7 -0
  186. package/dist/hooks/useDaemon/useDaemon.types.d.ts +62 -0
  187. package/dist/hooks/useDaemon/useDaemonCommand/index.d.ts +2 -0
  188. package/dist/hooks/useDaemon/useDaemonCommand/useDaemonCommand.d.ts +20 -0
  189. package/dist/hooks/useDaemon/useDaemonCommand/useDaemonCommand.types.d.ts +28 -0
  190. package/dist/hooks/useDaemon/useDaemonSubscription/index.d.ts +1 -0
  191. package/dist/hooks/useDaemon/useDaemonSubscription/useDaemonSubscription.d.ts +18 -0
  192. package/dist/hooks/useDebugRender/index.d.ts +2 -0
  193. package/dist/hooks/useDebugRender/useDebugRender.constants.d.ts +18 -0
  194. package/dist/hooks/useDebugRender/useDebugRender.d.ts +35 -0
  195. package/dist/hooks/useDebugRender/useDebugRender.types.d.ts +60 -0
  196. package/dist/hooks/useDebugRender/useDebugRender.utils.d.ts +34 -0
  197. package/dist/hooks/useLogs/index.d.ts +3 -0
  198. package/dist/hooks/useLogs/logStore.d.ts +18 -0
  199. package/dist/hooks/useLogs/useLogs.constants.d.ts +2 -0
  200. package/dist/hooks/useLogs/useLogs.d.ts +15 -0
  201. package/dist/hooks/useLogs/useLogs.types.d.ts +47 -0
  202. package/dist/hooks/useLogs/useLogs.utils.d.ts +13 -0
  203. package/dist/hooks/useModal/index.d.ts +3 -0
  204. package/dist/hooks/useModal/useModal.context.d.ts +20 -0
  205. package/dist/hooks/useModal/useModal.d.ts +22 -0
  206. package/dist/hooks/useModal/useModal.types.d.ts +49 -0
  207. package/dist/hooks/useMouse/index.d.ts +2 -0
  208. package/dist/hooks/useMouse/useMouse.types.d.ts +43 -0
  209. package/dist/hooks/useMouse/useMouse.utils.d.ts +30 -0
  210. package/dist/hooks/useMouseClick/index.d.ts +2 -0
  211. package/dist/hooks/useMouseClick/useMouseClick.d.ts +23 -0
  212. package/dist/hooks/useMouseClick/useMouseClick.types.d.ts +28 -0
  213. package/dist/hooks/useMouseHover/index.d.ts +2 -0
  214. package/dist/hooks/useMouseHover/useMouseHover.d.ts +25 -0
  215. package/dist/hooks/useMouseHover/useMouseHover.types.d.ts +38 -0
  216. package/dist/hooks/useMouseWheelScroll/index.d.ts +2 -0
  217. package/dist/hooks/useMouseWheelScroll/useMouseWheelScroll.d.ts +28 -0
  218. package/dist/hooks/useMouseWheelScroll/useMouseWheelScroll.types.d.ts +32 -0
  219. package/dist/hooks/useRegion/index.d.ts +3 -0
  220. package/dist/hooks/useRegion/useRegion.d.ts +21 -0
  221. package/dist/hooks/useRegion/useRegion.types.d.ts +41 -0
  222. package/dist/hooks/useRegion/useRegion.utils.d.ts +51 -0
  223. package/dist/hooks/useStrategies/useStrategies.d.ts +10 -0
  224. package/dist/hooks/useToolSpinner/index.d.ts +1 -0
  225. package/dist/hooks/useToolSpinner/useToolSpinner.d.ts +28 -0
  226. package/dist/hooks/useUserConfig/index.d.ts +4 -0
  227. package/dist/hooks/useUserConfig/useUserConfig.constants.d.ts +17 -0
  228. package/dist/hooks/useUserConfig/useUserConfig.context.d.ts +9 -0
  229. package/dist/hooks/useUserConfig/useUserConfig.d.ts +9 -0
  230. package/dist/hooks/useUserConfig/useUserConfig.types.d.ts +30 -0
  231. package/dist/hooks/useUserConfig/useUserConfig.utils.d.ts +19 -0
  232. package/dist/hooks/useWebSocket/index.d.ts +2 -0
  233. package/dist/hooks/useWebSocket/useWebSocket.d.ts +17 -0
  234. package/dist/hooks/useWebSocket/useWebSocket.types.d.ts +27 -0
  235. package/dist/index.d.ts +2 -0
  236. package/dist/index.js +10592 -0
  237. package/dist/main.js +10655 -0
  238. package/dist/pages/ChatPage/ChatPage.constants.d.ts +2 -0
  239. package/dist/pages/ChatPage/ChatPage.d.ts +25 -0
  240. package/dist/pages/ChatPage/ChatPage.theme.d.ts +56 -0
  241. package/dist/pages/ChatPage/index.d.ts +4 -0
  242. package/dist/pages/IntroPage/IntroPage.d.ts +14 -0
  243. package/dist/pages/IntroPage/IntroPage.theme.d.ts +13 -0
  244. package/dist/pages/IntroPage/index.d.ts +4 -0
  245. package/dist/pages/LogsPage/LogsPage.d.ts +14 -0
  246. package/dist/pages/LogsPage/LogsPage.theme.d.ts +49 -0
  247. package/dist/pages/LogsPage/LogsPage.utils.d.ts +5 -0
  248. package/dist/pages/LogsPage/index.d.ts +4 -0
  249. package/dist/pages/SpawnedStrategyPage/SpawnedStrategyPage.d.ts +12 -0
  250. package/dist/pages/SpawnedStrategyPage/index.d.ts +2 -0
  251. package/dist/run-tui.d.ts +12 -0
  252. package/dist/run-tui.types.d.ts +12 -0
  253. package/dist/utils/debug.d.ts +12 -0
  254. package/dist/utils/mouseEscape.d.ts +29 -0
  255. package/dist/utils/yogaLayout.d.ts +32 -0
  256. package/package.json +66 -0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Visual style variant for the button.
3
+ *
4
+ * - `primary` — high-emphasis action; uses the theme primary color.
5
+ * - `secondary` — medium-emphasis; uses the secondary color.
6
+ * - `danger` — destructive action; uses the error color.
7
+ * - `ghost` — minimal; no border, text only.
8
+ */
9
+ export type ButtonVariant = "primary" | "secondary" | "danger" | "ghost";
@@ -0,0 +1,4 @@
1
+ export type { ButtonProps, ButtonRenderProps } from "./Button";
2
+ export { Button, ButtonRender } from "./Button";
3
+ export { type ButtonTheme, useButtonTheme } from "./Button.theme";
4
+ export type { ButtonVariant } from "./Button.types";
@@ -0,0 +1,85 @@
1
+ import type { DiscoveredStrategy } from "@comma-agents/core";
2
+ import type React from "react";
3
+ /** Props for the ChatTextArea container. */
4
+ export interface ChatTextAreaProps {
5
+ /**
6
+ * Stable focus ID for programmatic focusing via `useFocusManager().focus(id)`.
7
+ * When omitted the component still participates in tab-order cycling.
8
+ */
9
+ readonly id?: string;
10
+ /** Available strategies the user can cycle through. */
11
+ readonly strategies: readonly DiscoveredStrategy[];
12
+ /** Strategy path selected when the composer is first shown. */
13
+ readonly initialStrategyPath?: string;
14
+ /** Width — columns (number) or CSS-like string. @default "100%" */
15
+ readonly width?: number | string;
16
+ /** Visible row count for the text area. @default 10 */
17
+ readonly height?: number;
18
+ /** Placeholder shown when the text area is empty. */
19
+ readonly placeholder?: string;
20
+ /**
21
+ * Whether to show the strategy row (label + "Tab to change strategy" hint).
22
+ * Hide it when the strategy is fixed (e.g. steering or replying mid-run).
23
+ * @default true
24
+ */
25
+ readonly showStrategyRow?: boolean;
26
+ /** Called when the user submits a message with the selected strategy. */
27
+ readonly onSubmit: (strategyPath: DiscoveredStrategy, input: string) => void;
28
+ }
29
+ /**
30
+ * Component that provides a text area for user prompts with strategy selection.
31
+ *
32
+ * @param props - Props for the ChatTextArea container including strategies and onSubmit handler.
33
+ * @example
34
+ * ```tsx
35
+ * <ChatTextArea
36
+ * strategies={discoveredStrategies}
37
+ * onSubmit={(strategy, text) => handleSend(strategy, text)}
38
+ * />
39
+ * ```
40
+ */
41
+ export declare function ChatTextArea({ id, strategies, initialStrategyPath, width, height, placeholder, showStrategyRow, onSubmit, }: ChatTextAreaProps): React.ReactElement;
42
+ /** Props for the ChatTextArea render function. */
43
+ export interface ChatTextAreaRenderProps {
44
+ /**
45
+ * Focus ID forwarded from `ChatTextAreaProps`. Passed through to `TextAreaInput`
46
+ * so both the container's `useInput` (tab/ctrl+s) and the leaf's `useInput`
47
+ * (typing) share a single focus slot.
48
+ */
49
+ readonly id?: string;
50
+ /** Current text input value. */
51
+ readonly inputValue: string;
52
+ /** Label of the currently selected strategy. */
53
+ readonly strategyLabel: string;
54
+ /** Description of the currently selected strategy. */
55
+ readonly strategyDescription: string | undefined;
56
+ /** Width for the text area. */
57
+ readonly width: number | string;
58
+ /** Height for the text area. */
59
+ readonly height: number;
60
+ /** Placeholder text. */
61
+ readonly placeholder: string;
62
+ /** Whether to show the strategy row. */
63
+ readonly showStrategyRow: boolean;
64
+ /** Called when the text input value changes. */
65
+ readonly onInputChange: (value: string) => void;
66
+ /** Called on Meta+Enter with the current text. */
67
+ readonly onSubmit: (text: string) => void;
68
+ }
69
+ /**
70
+ * Pure render component for the ChatTextArea.
71
+ *
72
+ * @param props - Props for the layout and content of the text area.
73
+ * @example
74
+ * ```tsx
75
+ * <ChatTextAreaRender
76
+ * inputValue="Hello"
77
+ * strategyLabel="General"
78
+ * width={80}
79
+ * height={5}
80
+ * onInputChange={setVal}
81
+ * onSubmit={send}
82
+ * />
83
+ * ```
84
+ */
85
+ export declare function ChatTextAreaRender({ id, inputValue, onInputChange, onSubmit, strategyLabel, strategyDescription: _strategyDescription, width, height, placeholder, showStrategyRow, }: ChatTextAreaRenderProps): React.ReactElement;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Returns themed style objects for the ChatTextArea component.
3
+ * Consumes global tokens via `useTheme()`.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * const theme = useChatTextAreaTheme();
8
+ * return <Box style={theme.container}>...</Box>;
9
+ * ```
10
+ */
11
+ export declare const useChatTextAreaTheme: () => {
12
+ container: {
13
+ flexDirection: "column";
14
+ borderStyle: "single";
15
+ borderLeft: true;
16
+ borderRight: true;
17
+ borderTop: false;
18
+ borderBottom: false;
19
+ borderColor: string;
20
+ borderBackgroundColor: string;
21
+ };
22
+ strategyRow: {
23
+ backgroundColor: string;
24
+ flexDirection: "row";
25
+ justifyContent: "space-between";
26
+ };
27
+ strategyLabel: {
28
+ color: string;
29
+ bold: true;
30
+ };
31
+ hint: {
32
+ color: string;
33
+ };
34
+ };
@@ -0,0 +1,2 @@
1
+ export type { ChatTextAreaProps, ChatTextAreaRenderProps, } from "./ChatTextArea";
2
+ export { ChatTextArea, ChatTextAreaRender } from "./ChatTextArea";
@@ -0,0 +1,9 @@
1
+ /** Default shiki theme optimized for terminal rendering. */
2
+ export declare const DEFAULT_SHIKI_THEME: "vitesse-dark";
3
+ /**
4
+ * Commonly used languages to pre-load in the highlighter.
5
+ * Additional languages are loaded on-demand by shiki.
6
+ */
7
+ export declare const PRELOADED_LANGUAGES: readonly ["typescript", "javascript", "python", "json", "bash", "html", "css", "markdown"];
8
+ /** Minimum gutter width (characters) for line numbers. */
9
+ export declare const MIN_LINE_NUMBER_WIDTH: 3;
@@ -0,0 +1,23 @@
1
+ import type React from "react";
2
+ import type { BundledLanguage } from "shiki";
3
+ import { type CodeViewTheme } from "./CodeView.theme";
4
+ export interface CodeViewProps {
5
+ /** The source code string to syntax-highlight. */
6
+ readonly code: string;
7
+ /** Language identifier for highlighting (e.g. "typescript", "python"). */
8
+ readonly language: BundledLanguage;
9
+ /** Whether to display line numbers in the gutter. @default false */
10
+ readonly showLineNumbers?: boolean;
11
+ }
12
+ export declare function CodeView({ code, language, showLineNumbers, }: CodeViewProps): React.ReactElement;
13
+ export interface CodeViewRenderProps {
14
+ /** ANSI-highlighted code string, or `null` while the highlighter is loading. */
15
+ readonly highlightedCode: string | null;
16
+ /** Whether to display line numbers in the gutter. */
17
+ readonly showLineNumbers: boolean;
18
+ /** Original code string, used to derive line numbers and as fallback before highlighting loads. */
19
+ readonly code: string;
20
+ /** Resolved theme style objects for the component. */
21
+ readonly theme: CodeViewTheme;
22
+ }
23
+ export declare function CodeViewRender({ highlightedCode, showLineNumbers, code, theme, }: CodeViewRenderProps): React.ReactElement;
@@ -0,0 +1,26 @@
1
+ import { type ThemeOf } from "../../Theme";
2
+ /** Memoized themed style objects for the `CodeView` component. */
3
+ export declare const useCodeViewTheme: () => {
4
+ /** Root container wrapping the entire code block. */
5
+ root: {
6
+ flexDirection: "column";
7
+ paddingX: number;
8
+ };
9
+ /** Row container for a single line (gutter + code). */
10
+ lineRow: {
11
+ flexDirection: "row";
12
+ };
13
+ /** Line number gutter text style. */
14
+ lineNumber: {
15
+ dimColor: boolean;
16
+ color: string;
17
+ };
18
+ /** Gutter separator gap between line number and code. */
19
+ gutterGap: number;
20
+ /** Fallback text style used while the highlighter is loading. */
21
+ fallback: {
22
+ dimColor: boolean;
23
+ };
24
+ };
25
+ /** Resolved style object shape returned by {@link useCodeViewTheme}. */
26
+ export type CodeViewTheme = ThemeOf<typeof useCodeViewTheme>;
@@ -0,0 +1,4 @@
1
+ export type { CodeViewProps, CodeViewRenderProps } from "./CodeView";
2
+ export { CodeView, CodeViewRender } from "./CodeView";
3
+ export type { CodeViewTheme } from "./CodeView.theme";
4
+ export { useCodeViewTheme } from "./CodeView.theme";
@@ -0,0 +1,8 @@
1
+ import type { Command } from "./CommandPalette.types";
2
+ /**
3
+ * The built-in command registry shown in the palette home view.
4
+ *
5
+ * Commands that navigate to a sub-page supply `page`; commands that fire
6
+ * an effect immediately supply `action`.
7
+ */
8
+ export declare const BUILT_IN_COMMANDS: readonly Command[];
@@ -0,0 +1,62 @@
1
+ import type React from "react";
2
+ import type { Command } from "./CommandPalette.types";
3
+ /**
4
+ * Command palette modal content.
5
+ *
6
+ * Owns a small navigation stack: the home view shows the searchable command
7
+ * list; selecting a page-type command pushes a sub-page. Esc pops the
8
+ * sub-page back to home, or closes the palette when already at home.
9
+ *
10
+ * The palette is rendered *inside* a `<Modal closeOnEsc=\{false\}>` so that
11
+ * Esc is routed here rather than dismissing the modal directly — otherwise
12
+ * one keystroke would close the whole palette regardless of view.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <Modal modalId="command-palette" title="Command Palette" closeOnEsc={false}>
17
+ * <CommandPalette
18
+ * isVisible={isOpen}
19
+ * onClose={close}
20
+ * onExitApp={() => process.exit(0)}
21
+ * />
22
+ * </Modal>
23
+ * ```
24
+ */
25
+ export interface CommandPaletteProps {
26
+ /**
27
+ * Whether the palette is currently visible. When false the component
28
+ * renders nothing and handles no input.
29
+ */
30
+ readonly isVisible: boolean;
31
+ /**
32
+ * Stable Ink focus ID. Required for `useFocusManager().focus(id)` and
33
+ * mouse click-to-focus. The palette registers exactly one focus zone
34
+ * under this ID — no child component registers a competing zone.
35
+ */
36
+ readonly id?: string;
37
+ /** Called when the user dismisses the palette from the home view. */
38
+ readonly onClose: () => void;
39
+ /** Called by the built-in `exit` command to quit the application. */
40
+ readonly onExitApp: () => void;
41
+ /** Called by the built-in `new-run` command to reset chat and return to intro. */
42
+ readonly onResetChat: () => void;
43
+ /**
44
+ * Override the built-in command registry. Defaults to `BUILT_IN_COMMANDS`.
45
+ */
46
+ readonly commands?: readonly Command[];
47
+ }
48
+ export declare function CommandPalette({ isVisible, id, onClose, onExitApp, onResetChat, commands, }: CommandPaletteProps): React.ReactElement | null;
49
+ export interface CommandPaletteRenderProps {
50
+ /** Unique identifier for the palette, used for focus management. */
51
+ readonly id: string;
52
+ /** Current search query string. */
53
+ readonly query: string;
54
+ /** Callback invoked when the search input changes. */
55
+ readonly onSearchInputChange: (value: string) => void;
56
+ /** List of filtered commands to display. */
57
+ readonly filtered: readonly Command[];
58
+ /** Callback invoked when a command is selected. */
59
+ readonly onCommandSelected: (cmd: Command) => void;
60
+ }
61
+ /** Presentational form of `CommandPalette` (home view). */
62
+ export declare function CommandPaletteRender({ id, query, onSearchInputChange, filtered, onCommandSelected, }: CommandPaletteRenderProps): React.ReactElement;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Returns themed style objects for the CommandPalette component.
3
+ * Consumes global tokens via `defineTheme`.
4
+ */
5
+ export declare const useCommandPaletteTheme: () => {
6
+ container: {
7
+ flexGrow: number;
8
+ flexDirection: string;
9
+ width: string;
10
+ height: string;
11
+ };
12
+ searchWrapper: {
13
+ flexShrink: number;
14
+ marginBottom: number;
15
+ };
16
+ item: {
17
+ flexDirection: string;
18
+ paddingX: number;
19
+ paddingY: number;
20
+ };
21
+ itemSelected: {
22
+ flexDirection: string;
23
+ paddingX: number;
24
+ paddingY: number;
25
+ backgroundColor: string;
26
+ };
27
+ label: {
28
+ bold: boolean;
29
+ color: string;
30
+ };
31
+ labelSelected: {
32
+ bold: boolean;
33
+ color: string;
34
+ };
35
+ separator: {
36
+ color: string;
37
+ };
38
+ description: {
39
+ color: string;
40
+ };
41
+ empty: {
42
+ color: string;
43
+ dimColor: boolean;
44
+ };
45
+ };
46
+ /**
47
+ * Extract the resolved theme shape from `useCommandPaletteTheme`.
48
+ * Use this to type the `theme` prop in the component.
49
+ */
50
+ export type CommandPaletteTheme = ReturnType<typeof useCommandPaletteTheme>;
@@ -0,0 +1,50 @@
1
+ import type React from "react";
2
+ /** Unique identifier for a registered command. */
3
+ export type CommandId = string;
4
+ /**
5
+ * Context passed to an action command when it fires.
6
+ * Provides handles for app-level effects.
7
+ */
8
+ export interface CommandActionContext {
9
+ /** Close the command palette modal. */
10
+ readonly closePalette: () => void;
11
+ /** Exit the whole TUI application. */
12
+ readonly exitApp: () => void;
13
+ /** Reset the chat and return to the intro screen. */
14
+ readonly resetChat: () => void;
15
+ }
16
+ /** Callback fired when an action-style command is selected. */
17
+ export type CommandAction = (context: CommandActionContext) => void;
18
+ /**
19
+ * Component rendered for a page-style command. Receives `focusId` so it can
20
+ * register exactly one Ink focus zone and consume keyboard input from the
21
+ * palette without competing with sibling components.
22
+ */
23
+ export type PaletteSubPageComponent = React.ComponentType<{
24
+ readonly focusId: string;
25
+ }>;
26
+ /**
27
+ * A single entry in the command registry.
28
+ *
29
+ * Commands are one of two kinds:
30
+ * - **Page commands** — selecting them pushes a sub-page component inside
31
+ * the palette. Supply `page` as a zero-prop React component.
32
+ * - **Action commands** — selecting them fires `action` immediately (e.g.
33
+ * to close the palette or exit the app). Supply `action` as a callback.
34
+ *
35
+ * Exactly one of `page` or `action` must be set.
36
+ */
37
+ export interface Command {
38
+ /** Stable identifier; used as React key. */
39
+ readonly id: CommandId;
40
+ /** Short display label shown in the suggestion list. */
41
+ readonly label: string;
42
+ /** One-line description rendered next to the label. */
43
+ readonly description: string;
44
+ /** Extra search keywords that fuzzy-match user input (lower-cased). */
45
+ readonly keywords?: readonly string[];
46
+ /** Sub-page component mounted when this command is selected. */
47
+ readonly page?: PaletteSubPageComponent;
48
+ /** Callback invoked when this command is selected instead of navigating. */
49
+ readonly action?: CommandAction;
50
+ }
@@ -0,0 +1,6 @@
1
+ import type { Command } from "./CommandPalette.types";
2
+ /**
3
+ * Filter the command registry to entries that match a free-text query.
4
+ * Delegates to `filterByQuery` with a command-specific haystack function.
5
+ */
6
+ export declare function filterCommands(commands: readonly Command[], query: string): readonly Command[];
@@ -0,0 +1,5 @@
1
+ export type { CommandPaletteRenderProps } from "./CommandPalette";
2
+ export { CommandPalette, CommandPaletteRender } from "./CommandPalette";
3
+ export type { CommandPaletteTheme } from "./CommandPalette.theme";
4
+ export { useCommandPaletteTheme } from "./CommandPalette.theme";
5
+ export type { Command, CommandAction, CommandActionContext, CommandId, PaletteSubPageComponent, } from "./CommandPalette.types";
@@ -0,0 +1,2 @@
1
+ import type { ShortcutEntry } from "./HelpPage.types";
2
+ export declare const SHORTCUTS: readonly ShortcutEntry[];
@@ -0,0 +1,12 @@
1
+ import type React from "react";
2
+ import { useTheme } from "../../../../Theme";
3
+ export interface HelpPageProps {
4
+ /** ID of the currently focused element for API consistency. */
5
+ readonly focusId: string;
6
+ }
7
+ export declare function HelpPage({ focusId: _focusId, }: HelpPageProps): React.ReactElement;
8
+ export interface HelpPageRenderProps {
9
+ /** The active theme tokens. */
10
+ readonly tokens: ReturnType<typeof useTheme>;
11
+ }
12
+ export declare function HelpPageRender({ tokens, }: HelpPageRenderProps): React.ReactElement;
@@ -0,0 +1,5 @@
1
+ /** A single shortcut entry for the help page. */
2
+ export interface ShortcutEntry {
3
+ readonly keys: string;
4
+ readonly description: string;
5
+ }
@@ -0,0 +1,3 @@
1
+ export type { HelpPageProps, HelpPageRenderProps, } from "./HelpPage";
2
+ export { HelpPage, HelpPageRender } from "./HelpPage";
3
+ export type { ShortcutEntry } from "./HelpPage.types";
@@ -0,0 +1,42 @@
1
+ import type React from "react";
2
+ import type { DaemonMessageOf } from "../../../../hooks/useDaemon/useDaemon.types";
3
+ import { useDebugRender } from "../../../../hooks/useDebugRender";
4
+ import { useTheme } from "../../../../Theme";
5
+ import { useSearchInputTheme } from "../../../SearchInput";
6
+ /** Provider shape as returned by the daemon's `provider_list` message. */
7
+ type ProviderInfo = DaemonMessageOf<"provider_list">["providers"][number];
8
+ export interface ListProvidersPageProps {
9
+ /** The unique focus identifier for this page. */
10
+ readonly focusId: string;
11
+ }
12
+ /**
13
+ * Command palette sub-page that lists all configured AI providers.
14
+ *
15
+ * Owns a single focus zone (`focusId`). All keyboard input — typing into the
16
+ * search bar, arrow-key navigation, and Esc — is handled in one `useInput`
17
+ * block. `SearchInputRender` is used (no hooks) so no competing focus zone
18
+ * is registered.
19
+ */
20
+ export declare function ListProvidersPage({ focusId, }: ListProvidersPageProps): React.ReactElement;
21
+ export interface ListProvidersPageRenderProps {
22
+ /** Debug render context. */
23
+ readonly debug: ReturnType<typeof useDebugRender>;
24
+ /** Theme tokens. */
25
+ readonly tokens: ReturnType<typeof useTheme>;
26
+ /** Search input theme. */
27
+ readonly searchTheme: ReturnType<typeof useSearchInputTheme>;
28
+ /** List of all available providers. */
29
+ readonly providers: readonly ProviderInfo[];
30
+ /** Current search query. */
31
+ readonly query: string;
32
+ /** Currently selected index in the filtered list. */
33
+ readonly selectedIndex: number;
34
+ /** Providers filtered by the current query. */
35
+ readonly filtered: readonly ProviderInfo[];
36
+ /** Callback to update the search query. */
37
+ readonly onQueryChange: (query: string) => void;
38
+ /** Callback to update the selected index. */
39
+ readonly onSelectedIndexChange: (index: number) => void;
40
+ }
41
+ export declare function ListProvidersPageRender({ debug, tokens, searchTheme, providers, query, selectedIndex, filtered, _onQueryChange, onSelectedIndexChange, }: ListProvidersPageRenderProps): React.ReactElement;
42
+ export {};
@@ -0,0 +1 @@
1
+ export { ListProvidersPage } from "./ListProvidersPage";
@@ -0,0 +1,3 @@
1
+ export declare const RAW_MODE_SUPPORTED: boolean;
2
+ export declare const CREDENTIAL_TYPE_LABELS: Readonly<Record<string, string>>;
3
+ export declare const UNPRINTABLE_KEYS: Set<string>;
@@ -0,0 +1,40 @@
1
+ import type React from "react";
2
+ import type { Theme } from "../../../../Theme/Theme.types";
3
+ import type { SearchInputTheme } from "../../../SearchInput/SearchInput.theme";
4
+ import type { ProviderInfo, RegisteredProvidersViewState } from "./RegisteredProvidersPage.types";
5
+ export interface RegisteredProvidersPageProps {
6
+ /** Unique identifier for the page to manage focus. */
7
+ readonly focusId: string;
8
+ }
9
+ export declare function RegisteredProvidersPage({ focusId, }: RegisteredProvidersPageProps): React.ReactElement;
10
+ export interface RegisteredProvidersPageRenderProps {
11
+ /** Reference for debug rendering. */
12
+ readonly debugRef: React.RefObject<unknown>;
13
+ /** Global theme tokens. */
14
+ readonly tokens: Theme;
15
+ /** Theme for the search input. */
16
+ readonly searchTheme: SearchInputTheme;
17
+ /** All fetched providers. */
18
+ readonly providers: readonly ProviderInfo[];
19
+ /** All filtered providers (registered first, then available). */
20
+ readonly unifiedProviders: readonly ProviderInfo[];
21
+ /** Filtered list of registered providers to determine section boundary. */
22
+ readonly filteredRegisteredProviders: readonly ProviderInfo[];
23
+ /** Current search query. */
24
+ readonly query: string;
25
+ /** Index of the currently selected provider. */
26
+ readonly selectedIdx: number;
27
+ /** Callback to update the selected index. */
28
+ readonly onSelectedIndexChange: (index: number) => void;
29
+ /** Current view state (list, api-input, or oauth-confirm). */
30
+ readonly viewState: RegisteredProvidersViewState;
31
+ /** Current text in the API key input field. */
32
+ readonly apiKeyInput: string;
33
+ /** Whether a registration process is currently pending. */
34
+ readonly isPending: boolean;
35
+ /** Function to resolve the status color for a provider. */
36
+ readonly statusColor: (status: string) => string;
37
+ /** Function to resolve the credential type color for a provider. */
38
+ readonly credentialTypeColor: (type: string) => string;
39
+ }
40
+ export declare function RegisteredProvidersPageRender({ debugRef, tokens, searchTheme, providers, unifiedProviders, filteredRegisteredProviders, query, selectedIdx, onSelectedIndexChange, viewState, apiKeyInput, isPending, statusColor, credentialTypeColor, }: RegisteredProvidersPageRenderProps): React.ReactElement;
@@ -0,0 +1,13 @@
1
+ import type { DaemonMessageOf } from "../../../../hooks/useDaemon/useDaemon.types";
2
+ /** Type for a provider extracted from the daemon's provider list. */
3
+ export type ProviderInfo = DaemonMessageOf<"provider_list">["providers"][number];
4
+ /** Represents the current view state of the Registered Providers page. */
5
+ export type RegisteredProvidersViewState = {
6
+ readonly kind: "list";
7
+ } | {
8
+ readonly kind: "api-input";
9
+ readonly provider: ProviderInfo;
10
+ } | {
11
+ readonly kind: "oauth-confirm";
12
+ readonly provider: ProviderInfo;
13
+ };
@@ -0,0 +1,9 @@
1
+ import type { ProviderInfo } from "./RegisteredProvidersPage.types";
2
+ /**
3
+ * Creates a searchable string representation of a provider's details.
4
+ */
5
+ export declare function createProviderSearchString(provider: ProviderInfo): string;
6
+ /**
7
+ * Determines if a key input is a printable character.
8
+ */
9
+ export declare function isPrintableCharacter(input: string, key: Record<string, unknown>): boolean;
@@ -0,0 +1,2 @@
1
+ export { RegisteredProvidersPage, RegisteredProvidersPageRender } from "./RegisteredProvidersPage";
2
+ export type { RegisteredProvidersPageProps, RegisteredProvidersPageRenderProps, } from "./RegisteredProvidersPage";
@@ -0,0 +1,3 @@
1
+ /** Modal id shared with App.tsx - must stay in sync. */
2
+ export declare const COMMAND_PALETTE_MODAL_ID = "command-palette";
3
+ export declare const RAW_MODE_SUPPORTED: boolean;
@@ -0,0 +1,31 @@
1
+ import type React from "react";
2
+ import { useDebugRender } from "../../../../hooks/useDebugRender";
3
+ import { useTheme } from "../../../../Theme";
4
+ import { useSearchInputTheme } from "../../../SearchInput";
5
+ import type { RunItem } from "./RunPickerPage.types";
6
+ export interface RunPickerPageProps {
7
+ /** ID used for focus management. */
8
+ readonly focusId: string;
9
+ }
10
+ export declare function RunPickerPage({ focusId, }: RunPickerPageProps): React.ReactElement;
11
+ export interface RunPickerPageRenderProps {
12
+ /** Render debug ref. */
13
+ readonly debug: ReturnType<typeof useDebugRender>;
14
+ /** Theme tokens. */
15
+ readonly tokens: ReturnType<typeof useTheme>;
16
+ /** Search input theme. */
17
+ readonly searchTheme: ReturnType<typeof useSearchInputTheme>;
18
+ /** Filtered list of runs. */
19
+ readonly items: readonly RunItem[];
20
+ /** Selected index in the main list. */
21
+ readonly selectedIndex: number;
22
+ /** Setter for the main list index. */
23
+ readonly setSelectedIndex: (index: number) => void;
24
+ /** Callback invoked when a run is selected. */
25
+ readonly onSelected: (item: RunItem) => void;
26
+ /** Whether the page is currently focused. */
27
+ readonly isFocused: boolean;
28
+ /** ID of the chat run identified by the current route. */
29
+ readonly currentChatRunId: string | null;
30
+ }
31
+ export declare function RunPickerPageRender({ debug, tokens, searchTheme, items, selectedIndex, setSelectedIndex, onSelected, isFocused, currentChatRunId, }: RunPickerPageRenderProps): React.ReactElement;
@@ -0,0 +1,8 @@
1
+ import type { ChatRun, RunOverview } from "../../../../hooks/useChat/useChat.types";
2
+ export type RunItem = {
3
+ readonly kind: "local";
4
+ readonly chatRun: ChatRun;
5
+ } | {
6
+ readonly kind: "persisted";
7
+ readonly meta: RunOverview;
8
+ };
@@ -0,0 +1,7 @@
1
+ import type { ChatRun, RunOverview } from "../../../../hooks/useChat";
2
+ import type { RunItem } from "./RunPickerPage.types";
3
+ export declare function chatRunHaystack(s: ChatRun): string;
4
+ export declare function persistedHaystack(s: RunOverview): string;
5
+ export declare function formatDate(ts: number): string;
6
+ export declare function formatIsoDate(iso: string): string;
7
+ export declare function itemHaystack(item: RunItem): string;
@@ -0,0 +1,3 @@
1
+ export type { RunPickerPageProps, RunPickerPageRenderProps, } from "./RunPickerPage";
2
+ export { RunPickerPage, RunPickerPageRender } from "./RunPickerPage";
3
+ export type { RunItem } from "./RunPickerPage.types";
@@ -0,0 +1,24 @@
1
+ import type React from "react";
2
+ import { useUserConfig } from "../../../../hooks/useUserConfig";
3
+ import { useTheme } from "../../../../Theme/useTheme";
4
+ export declare const RAW_MODE_SUPPORTED: boolean;
5
+ export interface SettingsPageProps {
6
+ /** Unique identifier for the focusable area. */
7
+ readonly focusId: string;
8
+ }
9
+ export declare function SettingsPage({ focusId, }: SettingsPageProps): React.ReactElement;
10
+ export interface SettingsPageRenderProps {
11
+ /** Theme tokens for styling. */
12
+ readonly tokens: ReturnType<typeof useTheme>;
13
+ /** Current user configuration. */
14
+ readonly config: ReturnType<typeof useUserConfig>["config"];
15
+ /** Currently highlighted index in the theme list. */
16
+ readonly selectedIndex: number;
17
+ /** Callback when a new index is highlighted. */
18
+ readonly onSelectedIndexChange: (index: number) => void;
19
+ /** Callback when a theme is selected. */
20
+ readonly onSelected: (index: number) => void;
21
+ /** Whether the page is currently focused. */
22
+ readonly isFocused: boolean;
23
+ }
24
+ export declare function SettingsPageRender({ tokens, config, selectedIndex, onSelectedIndexChange, onSelected, isFocused, }: SettingsPageRenderProps): React.ReactElement;
@@ -0,0 +1,2 @@
1
+ export type { SettingsPageProps, SettingsPageRenderProps, } from "./SettingsPage";
2
+ export { SettingsPage, SettingsPageRender } from "./SettingsPage";