-
Notifications
You must be signed in to change notification settings - Fork 518
Expand file tree
/
Copy pathbuild-mode-buttons.tsx
More file actions
84 lines (82 loc) · 2.29 KB
/
build-mode-buttons.tsx
File metadata and controls
84 lines (82 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import { useState } from 'react'
import type { ChatTheme } from '../types/theme-system'
import { BORDER_CHARS } from '../utils/ui-constants'
import { useTerminalDimensions } from '../hooks/use-terminal-dimensions'
import { Button } from './button'
export const BuildModeButtons = ({
theme,
onBuildFast,
onBuildMax,
}: {
theme: ChatTheme
onBuildFast: () => void
onBuildMax: () => void
}) => {
const [hoveredButton, setHoveredButton] = useState<'fast' | 'max' | null>(
null,
)
const { terminalWidth } = useTerminalDimensions()
const isNarrow = terminalWidth < 55
return (
<box
style={{
flexDirection: 'column',
gap: 0,
paddingTop: 0,
paddingBottom: 0,
paddingLeft: 1,
}}
>
{isNarrow ? null : (
<text style={{ wrapMode: 'none' }} selectable={false}>
<span fg={theme.secondary}>Choose an option to build this plan:</span>
</text>
)}
<box
style={{
flexDirection: 'row',
gap: 1,
}}
>
<Button
style={{
flexDirection: 'row',
alignItems: 'center',
paddingLeft: 2,
paddingRight: 2,
borderStyle: 'single',
borderColor:
hoveredButton === 'fast' ? theme.foreground : theme.secondary,
customBorderChars: BORDER_CHARS,
}}
onClick={onBuildFast}
onMouseOver={() => setHoveredButton('fast')}
onMouseOut={() => setHoveredButton(null)}
>
<text wrapMode="none">
<span fg={theme.foreground}>Build DEFAULT</span>
</text>
</Button>
<Button
style={{
flexDirection: 'row',
alignItems: 'center',
paddingLeft: 2,
paddingRight: 2,
borderStyle: 'single',
borderColor:
hoveredButton === 'max' ? theme.foreground : theme.secondary,
customBorderChars: BORDER_CHARS,
}}
onClick={onBuildMax}
onMouseOver={() => setHoveredButton('max')}
onMouseOut={() => setHoveredButton(null)}
>
<text wrapMode="none">
<span fg={theme.foreground}>Build MAX</span>
</text>
</Button>
</box>
</box>
)
}