diff --git a/packages/app/src/components/dialog-select-model.tsx b/packages/app/src/components/dialog-select-model.tsx index 4f0dcc3ee6..268e67134e 100644 --- a/packages/app/src/components/dialog-select-model.tsx +++ b/packages/app/src/components/dialog-select-model.tsx @@ -118,6 +118,17 @@ export function ModelSelectorPopover(props: { } const language = useLanguage() + // Set data-active on trigger when popover is open + createEffect(() => { + const trigger = store.trigger + if (!trigger) return + if (store.open) { + trigger.setAttribute("data-active", "true") + } else { + trigger.removeAttribute("data-active") + } + }) + createEffect(() => { if (!store.open) return @@ -174,7 +185,8 @@ export function ModelSelectorPopover(props: { setStore("open", next) }} modal={false} - placement="top-start" + placement="top" + flip gutter={8} > = (props) => { }) } + const currentModelVariant = createMemo(() => { + const modelVariant = local.model.variant.current() ?? "" + return modelVariant === "xhigh" + ? "xHigh" + : modelVariant.length > 0 + ? modelVariant[0].toUpperCase() + modelVariant.slice(1) + : "Default" + }) + return (
@@ -1891,7 +1901,7 @@ export const PromptInput: Component = (props) => {
-
+
@@ -1910,7 +1920,7 @@ export const PromptInput: Component = (props) => { options={local.agent.list().map((agent) => agent.name)} current={local.agent.current()?.name ?? ""} onSelect={local.agent.set} - class="capitalize" + class="capitalize shrink-0" variant="ghost" /> @@ -1922,12 +1932,19 @@ export const PromptInput: Component = (props) => { title={language.t("command.model.choose")} keybind={command.keybind("model.choose")} > - } @@ -1937,12 +1954,20 @@ export const PromptInput: Component = (props) => { title={language.t("command.model.choose")} keybind={command.keybind("model.choose")} > - + - {local.model.current()?.name ?? language.t("dialog.model.select.title")} - + + @@ -1952,14 +1977,22 @@ export const PromptInput: Component = (props) => { title={language.t("command.model.variant.cycle")} keybind={command.keybind("model.variant.cycle")} > - + icon={} + valueClass="hidden sm:inline" + /> @@ -1994,7 +2027,7 @@ export const PromptInput: Component = (props) => {
-
+
= (props) => { e.currentTarget.value = "" }} /> -
+
@@ -2047,7 +2079,6 @@ export const PromptInput: Component = (props) => { disabled={!prompt.dirty() && !working()} icon={working() ? "stop" : "arrow-up"} variant="primary" - class="h-6 w-4.5" aria-label={working() ? language.t("prompt.action.stop") : language.t("prompt.action.send")} /> diff --git a/packages/ui/src/components/icon.tsx b/packages/ui/src/components/icon.tsx index 544c6abdd2..c092a69deb 100644 --- a/packages/ui/src/components/icon.tsx +++ b/packages/ui/src/components/icon.tsx @@ -9,6 +9,7 @@ const icons = { "bubble-5": ``, brain: ``, "bullet-list": ``, + bulb: ``, "check-small": ``, "chevron-down": ``, "chevron-right": ``, diff --git a/packages/ui/src/components/select.tsx b/packages/ui/src/components/select.tsx index 0386c329ec..cfa5371d06 100644 --- a/packages/ui/src/components/select.tsx +++ b/packages/ui/src/components/select.tsx @@ -18,6 +18,8 @@ export type SelectProps = Omit>, "value" | " children?: (item: T | undefined) => JSX.Element triggerStyle?: JSX.CSSProperties triggerVariant?: "settings" + icon?: JSX.Element + valueClass?: string } export function Select(props: SelectProps & Omit) { @@ -36,6 +38,8 @@ export function Select(props: SelectProps & Omit) "children", "triggerStyle", "triggerVariant", + "icon", + "valueClass", ]) const state = { @@ -84,7 +88,8 @@ export function Select(props: SelectProps & Omit) {...others} data-component="select" data-trigger-style={local.triggerVariant} - placement={local.triggerVariant === "settings" ? "bottom-end" : "bottom-start"} + placement={local.triggerVariant === "settings" ? "bottom-end" : "top-start"} + flip gutter={4} value={local.current} options={grouped()} @@ -140,7 +145,8 @@ export function Select(props: SelectProps & Omit) [local.class ?? ""]: !!local.class, }} > - data-slot="select-select-trigger-value"> + {local.icon} + data-slot="select-select-trigger-value" class={local.valueClass}> {(state) => { const selected = state.selectedOption() ?? local.current if (!selected) return local.placeholder || "" @@ -153,14 +159,7 @@ export function Select(props: SelectProps & Omit) - +