summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components/basic-tool.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-13 06:27:58 -0500
committerGitHub <[email protected]>2026-03-13 06:27:58 -0500
commit270cb0b8b4265ac0965ac8b94a58a3bca86fa558 (patch)
tree5a37c81bec1dea75b5c24f6aa8fb6a762d438f64 /packages/ui/src/components/basic-tool.tsx
parent46ba9c81703fc6e7db7e623a607eeaab94fcd00f (diff)
downloadopencode-270cb0b8b4265ac0965ac8b94a58a3bca86fa558.tar.gz
opencode-270cb0b8b4265ac0965ac8b94a58a3bca86fa558.zip
chore: cleanup (#17284)
Diffstat (limited to 'packages/ui/src/components/basic-tool.tsx')
-rw-r--r--packages/ui/src/components/basic-tool.tsx19
1 files changed, 12 insertions, 7 deletions
diff --git a/packages/ui/src/components/basic-tool.tsx b/packages/ui/src/components/basic-tool.tsx
index 4ad91824d..3f009f4e0 100644
--- a/packages/ui/src/components/basic-tool.tsx
+++ b/packages/ui/src/components/basic-tool.tsx
@@ -1,5 +1,6 @@
-import { createEffect, createSignal, For, Match, on, onCleanup, Show, Switch, type JSX } from "solid-js"
+import { createEffect, For, Match, on, onCleanup, Show, Switch, type JSX } from "solid-js"
import { animate, type AnimationPlaybackControls } from "motion"
+import { createStore } from "solid-js/store"
import { Collapsible } from "./collapsible"
import type { IconProps } from "./icon"
import { TextShimmer } from "./text-shimmer"
@@ -37,8 +38,12 @@ export interface BasicToolProps {
const SPRING = { type: "spring" as const, visualDuration: 0.35, bounce: 0 }
export function BasicTool(props: BasicToolProps) {
- const [open, setOpen] = createSignal(props.defaultOpen ?? false)
- const [ready, setReady] = createSignal(open())
+ const [state, setState] = createStore({
+ open: props.defaultOpen ?? false,
+ ready: props.defaultOpen ?? false,
+ })
+ const open = () => state.open
+ const ready = () => state.ready
const pending = () => props.status === "pending" || props.status === "running"
let frame: number | undefined
@@ -52,7 +57,7 @@ export function BasicTool(props: BasicToolProps) {
onCleanup(cancel)
createEffect(() => {
- if (props.forceOpen) setOpen(true)
+ if (props.forceOpen) setState("open", true)
})
createEffect(
@@ -62,7 +67,7 @@ export function BasicTool(props: BasicToolProps) {
if (!props.defer) return
if (!value) {
cancel()
- setReady(false)
+ setState("ready", false)
return
}
@@ -70,7 +75,7 @@ export function BasicTool(props: BasicToolProps) {
frame = requestAnimationFrame(() => {
frame = undefined
if (!open()) return
- setReady(true)
+ setState("ready", true)
})
},
{ defer: true },
@@ -112,7 +117,7 @@ export function BasicTool(props: BasicToolProps) {
const handleOpenChange = (value: boolean) => {
if (pending()) return
if (props.locked && !value) return
- setOpen(value)
+ setState("open", value)
}
return (