This commit is contained in:
Sebastian Herrlinger
2026-03-25 22:37:44 +01:00
parent 0506b53f27
commit ede8a50f1e

View File

@@ -1,14 +1,12 @@
import { Keybind } from "@/util/keybind" import { Keybind } from "@/util/keybind"
import type { TuiPlugin, TuiPluginStatus } from "@opencode-ai/plugin/tui" import type { TuiPlugin, TuiPluginApi, TuiPluginStatus } from "@opencode-ai/plugin/tui"
import { DialogSelect, type DialogSelectOption } from "@tui/ui/dialog-select" import { DialogSelect, type DialogSelectOption } from "@tui/ui/dialog-select"
import { createMemo, createSignal } from "solid-js" import { createMemo, createSignal } from "solid-js"
type Api = Parameters<TuiPlugin>[0]
const id = "internal:plugin-manager" const id = "internal:plugin-manager"
const key = Keybind.parse("space").at(0) const key = Keybind.parse("space").at(0)
function state(api: Api, item: TuiPluginStatus) { function state(api: TuiPluginApi, item: TuiPluginStatus) {
return ( return (
<span style={{ fg: item.active ? api.theme.current.success : api.theme.current.error }}> <span style={{ fg: item.active ? api.theme.current.success : api.theme.current.error }}>
{item.active ? "active" : "inactive"} {item.active ? "active" : "inactive"}
@@ -16,7 +14,7 @@ function state(api: Api, item: TuiPluginStatus) {
) )
} }
function row(api: Api, item: TuiPluginStatus): DialogSelectOption<string> { function row(api: TuiPluginApi, item: TuiPluginStatus): DialogSelectOption<string> {
return { return {
title: item.name, title: item.name,
value: item.id, value: item.id,
@@ -27,7 +25,7 @@ function row(api: Api, item: TuiPluginStatus): DialogSelectOption<string> {
} }
} }
function View(props: { api: Api }) { function View(props: { api: TuiPluginApi }) {
const [list, setList] = createSignal(props.api.plugins.list()) const [list, setList] = createSignal(props.api.plugins.list())
const [cur, setCur] = createSignal<string | undefined>() const [cur, setCur] = createSignal<string | undefined>()
const [lock, setLock] = createSignal(false) const [lock, setLock] = createSignal(false)
@@ -88,7 +86,7 @@ function View(props: { api: Api }) {
) )
} }
function show(api: Api) { function show(api: TuiPluginApi) {
api.ui.dialog.replace(() => <View api={api} />) api.ui.dialog.replace(() => <View api={api} />)
} }