Skip to content

Commit d55545f

Browse files
authored
Add deep thinking option to docs home page chat (#339)
* Add deep thinking option * Appease linter
1 parent 792aa9a commit d55545f

File tree

4 files changed

+88
-12
lines changed

4 files changed

+88
-12
lines changed

package-lock.json

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"@docsearch/js": "^3.3.3",
2424
"@fontsource/roboto": "~4.5",
2525
"@fontsource/roboto-mono": "~4.5",
26-
"@kapaai/react-sdk": "^0.3.0",
26+
"@kapaai/react-sdk": "^0.9.0",
2727
"autoprefixer": "~9.7",
2828
"babelify": "^10.0.0",
2929
"browser-pack-flat": "~3.4",

src/css/home.css

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,60 @@ body.article.home {
252252
cursor: not-allowed;
253253
}
254254

255+
.home .chat-footer-buttons {
256+
display: flex;
257+
align-items: center;
258+
gap: var(--spacings-spacing-sm);
259+
}
260+
261+
.home .deep-thinking-button {
262+
padding: 0 12px;
263+
background: transparent;
264+
border: 1px solid var(--body-font-color);
265+
border-radius: var(--border-radius-radius-md);
266+
display: inline-flex;
267+
align-items: center;
268+
gap: 6px;
269+
cursor: pointer;
270+
color: var(--body-font-color);
271+
font-size: 14px;
272+
font-weight: 500;
273+
transition: all 0.2s ease;
274+
}
275+
276+
.home .deep-thinking-button .button-icon-left {
277+
display: flex;
278+
align-items: center;
279+
margin-right: 4px;
280+
}
281+
282+
.home .deep-thinking-button .button-icon {
283+
width: 18px;
284+
height: 18px;
285+
}
286+
287+
.home .deep-thinking-button .button-text {
288+
font-size: 14px;
289+
font-weight: 500;
290+
}
291+
292+
.home .deep-thinking-button:hover {
293+
background: rgba(24, 24, 24, 0.05);
294+
border-color: var(--body-font-color);
295+
color: var(--body-font-color);
296+
}
297+
298+
.home .deep-thinking-button.active {
299+
background: rgba(218, 93, 8, 0.1);
300+
border-color: var(--color-primitives-global-orange-orange-800);
301+
color: var(--color-primitives-global-orange-orange-800);
302+
}
303+
304+
.home .deep-thinking-button.active:hover {
305+
background: rgba(218, 93, 8, 0.15);
306+
border-color: var(--color-primitives-global-orange-orange-800);
307+
}
308+
255309
.home .feedback-group {
256310
display: flex;
257311
gap: 5px;

src/js/react/components/ChatInterface.jsx

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState, useEffect, useRef, Component } from 'react'
2-
import { useChat } from '@kapaai/react-sdk'
2+
import { useChat, useDeepThinking } from '@kapaai/react-sdk'
33
import {
44
ArrowUp,
55
ArrowDown,
@@ -8,6 +8,7 @@ import {
88
RefreshCcw,
99
ClipboardCopy,
1010
CircleStop,
11+
FileSearch,
1112
} from 'lucide-react'
1213
import DOMPurify from 'dompurify'
1314
import { Marked } from 'marked'
@@ -208,6 +209,8 @@ export default function ChatInterface() {
208209
isPreparingAnswer,
209210
} = useChat()
210211

212+
const deepThinking = useDeepThinking()
213+
211214
const latestQA = conversation.getLatest()
212215

213216
// Show/hide “scroll down” button
@@ -450,7 +453,12 @@ export default function ChatInterface() {
450453
)
451454
})}
452455
{isPreparingAnswer && (
453-
<div className="loading">Preparing answer{dots}</div>
456+
<div className="loading">
457+
{deepThinking.active
458+
? `Running deep thinking mode up to a minute. ${deepThinking.seconds}s…`
459+
: `Preparing answer${dots}`
460+
}
461+
</div>
454462
)}
455463
</div>
456464
</div>
@@ -504,10 +512,24 @@ export default function ChatInterface() {
504512
<span className="button-text">Stop</span>
505513
</button>
506514
) : (
507-
<button type="submit" className="main-button">
508-
<ArrowUp className="button-icon" />
509-
<span className="button-text">Submit</span>
510-
</button>
515+
<div className="chat-footer-buttons">
516+
<button
517+
type="button"
518+
onClick={deepThinking.toggle}
519+
className={`deep-thinking-button outlined ${deepThinking.active ? 'active' : ''}`}
520+
title="For harder questions. Search longer across all sources. Takes up to 1 minute."
521+
>
522+
<span className="button-icon-left">
523+
{/* Tabler FileSearch icon from lucide-react */}
524+
<FileSearch className="button-icon" />
525+
</span>
526+
<span className="button-text">Deep thinking</span>
527+
</button>
528+
<button type="submit" className="main-button">
529+
<ArrowUp className="button-icon" />
530+
<span className="button-text">Submit</span>
531+
</button>
532+
</div>
511533
)}
512534
</div>
513535
</div>

0 commit comments

Comments
 (0)