import { Icon as IconV2 } from "@opencode-ai/ui/v2/icon" import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" import { MenuV2 } from "@opencode-ai/ui/v2/menu-v2" import { type Component, Show } from "solid-js" import { useServerManagementController } from "@/components/dialog-select-server" import { useLanguage } from "@/context/language" import { ServerConnection } from "@/context/server" export const ServerRowMenu: Component<{ server: ServerConnection.Any controller: ReturnType onEdit: (server: ServerConnection.Http) => void open?: boolean onOpenChange?: (open: boolean) => void }> = (props) => { const language = useLanguage() const key = ServerConnection.key(props.server) return ( props.controller.setDefault(key)} onRemoveDefault={() => props.controller.setDefault(null)} onRemove={() => props.controller.handleRemove(key)} open={props.open} onOpenChange={props.onOpenChange} /> ) } export function serverMenuLabels(language: ReturnType) { return { more: language.t("common.moreOptions"), server: language.t("settings.section.server"), edit: language.t("dialog.server.menu.edit"), default: language.t("dialog.server.menu.default"), defaultRemove: language.t("dialog.server.menu.defaultRemove"), delete: language.t("dialog.server.menu.delete"), } } export const ServerRowMenuView: Component<{ server: ServerConnection.Any labels: ReturnType canDefault: boolean isDefault: boolean onEdit: (server: ServerConnection.Http) => void onSetDefault: () => void onRemoveDefault: () => void onRemove: () => void open?: boolean onOpenChange?: (open: boolean) => void }> = (props) => { const builtin = () => ServerConnection.builtin(props.server) const httpServer = () => (props.server.type === "http" ? props.server : undefined) return ( } aria-label={props.labels.more} /> {props.labels.server} { const server = httpServer() if (server) props.onEdit(server) }} > {props.labels.edit} {props.labels.default} {props.labels.defaultRemove} {props.labels.delete} ) }