blob: 730274eaa8f2e76debd6037c6cea176fccb31186 [file] [log] [blame]
banksean333aa672025-07-13 19:49:21 +00001import { html } from "lit";
Josh Bleecher Snyder2d081192025-05-29 13:46:04 +00002import { customElement, property } from "lit/decorators.js";
3import { ToolCall } from "../types";
banksean333aa672025-07-13 19:49:21 +00004import { SketchTailwindElement } from "./sketch-tailwind-element";
5import "./sketch-tool-card-base";
Josh Bleecher Snyder2d081192025-05-29 13:46:04 +00006
7@customElement("sketch-tool-card-browser-navigate")
banksean333aa672025-07-13 19:49:21 +00008export class SketchToolCardBrowserNavigate extends SketchTailwindElement {
Josh Bleecher Snyder2d081192025-05-29 13:46:04 +00009 @property()
10 toolCall: ToolCall;
11
12 @property()
13 open: boolean;
14
Josh Bleecher Snyder2d081192025-05-29 13:46:04 +000015 render() {
16 // Parse the input to get URL
17 let url = "";
18 try {
19 if (this.toolCall?.input) {
20 const input = JSON.parse(this.toolCall.input);
21 url = input.url || "";
22 }
23 } catch (e) {
24 console.error("Error parsing navigate input:", e);
25 }
26
banksean333aa672025-07-13 19:49:21 +000027 const summaryContent = html`<span class="font-mono text-gray-700 break-all">
28 🌐 ${url}
29 </span>`;
30 const inputContent = html`<div>
31 Navigate to:
32 <span
33 class="font-mono bg-black/[0.05] px-2 py-1 rounded inline-block break-all"
34 >${url}</span
35 >
36 </div>`;
37 const resultContent = this.toolCall?.result_message?.tool_result
38 ? html`<pre
39 class="bg-gray-200 text-black p-2 rounded whitespace-pre-wrap break-words max-w-full w-full box-border"
40 >
41${this.toolCall.result_message.tool_result}</pre
42 >`
43 : "";
44
Josh Bleecher Snyder2d081192025-05-29 13:46:04 +000045 return html`
banksean333aa672025-07-13 19:49:21 +000046 <sketch-tool-card-base
47 .open=${this.open}
48 .toolCall=${this.toolCall}
49 .summaryContent=${summaryContent}
50 .inputContent=${inputContent}
51 .resultContent=${resultContent}
52 >
53 </sketch-tool-card-base>
Josh Bleecher Snyder2d081192025-05-29 13:46:04 +000054 `;
55 }
56}
57
58declare global {
59 interface HTMLElementTagNameMap {
60 "sketch-tool-card-browser-navigate": SketchToolCardBrowserNavigate;
61 }
62}