From d327a2b1cf750a7552d149078658fdc8ad037171 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:53:38 -0600 Subject: chore(app): use radio group in prompt input (#14025) --- packages/app/src/components/prompt-input.tsx | 89 +++++++++++++++------------- 1 file changed, 49 insertions(+), 40 deletions(-) (limited to 'packages/app/src/components') diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index ca7cc0325..dcd5bd2f1 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -1,5 +1,5 @@ import { useFilteredList } from "@opencode-ai/ui/hooks" -import { createEffect, on, Component, Show, For, onCleanup, Switch, Match, createMemo, createSignal } from "solid-js" +import { createEffect, on, Component, Show, onCleanup, Switch, Match, createMemo, createSignal } from "solid-js" import { createStore } from "solid-js/store" import { createFocusSignal } from "@solid-primitives/active-element" import { useLocal } from "@/context/local" @@ -26,6 +26,7 @@ import type { IconName } from "@opencode-ai/ui/icons/provider" import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip" import { IconButton } from "@opencode-ai/ui/icon-button" import { Select } from "@opencode-ai/ui/select" +import { RadioGroup } from "@opencode-ai/ui/radio-group" import { useDialog } from "@opencode-ai/ui/context/dialog" import { ModelSelectorPopover } from "@/components/dialog-select-model" import { DialogSelectModelUnpaid } from "@/components/dialog-select-model-unpaid" @@ -249,7 +250,6 @@ export const PromptInput: Component = (props) => { return messages.some((m) => m.role === "user") }) - const MAX_HISTORY = 100 const [history, setHistory] = persisted( Persist.global("prompt-history", ["prompt-history.v1"]), createStore<{ @@ -319,6 +319,9 @@ export const PromptInput: Component = (props) => { requestAnimationFrame(() => editorRef?.focus()) } + const shellModeKey = "mod+shift+x" + const normalModeKey = "mod+shift+e" + command.register("prompt-input", () => [ { id: "file.attach", @@ -328,6 +331,22 @@ export const PromptInput: Component = (props) => { disabled: store.mode !== "normal", onSelect: pick, }, + { + id: "prompt.mode.shell", + title: language.t("command.prompt.mode.shell"), + category: language.t("command.category.session"), + keybind: shellModeKey, + disabled: store.mode === "shell", + onSelect: () => setMode("shell"), + }, + { + id: "prompt.mode.normal", + title: language.t("command.prompt.mode.normal"), + category: language.t("command.category.session"), + keybind: normalModeKey, + disabled: store.mode === "normal", + onSelect: () => setMode("normal"), + }, ]) const closePopover = () => setStore("popover", null) @@ -1339,45 +1358,35 @@ export const PromptInput: Component = (props) => { - -
-
-
- - -
+ + + )} + onSelect={(mode) => mode && setMode(mode)} + fill + pad="none" + class="w-[68px]" + />
-- cgit v1.2.3