refactor(vscode): reorganize webview component folder structure

Move loose root-level components into feature folders and extract
cross-feature reusable components into a shared/ layer:

- components/profile/ — ProfileView + DeviceAuthCard (was at root)
- components/settings/Settings.tsx — moved from root into settings/
- components/shared/ — ModelSelector, ModeSwitcher, ThinkingSelector,
  WorkingIndicator, model-selector-utils (extracted from chat/)

Fixes the cross-folder coupling where settings/ProvidersTab and
agent-manager/ imported from chat/ for reusable selector components.
Update all import paths in App.tsx, PromptInput, MessageList,
ProvidersTab, AgentManagerApp, MultiModelSelector, and settings/index.ts.
This commit is contained in:
Catriel Müller
2026-02-26 13:06:31 -03:00
parent 691761aa15
commit 98100e6f59
15 changed files with 34 additions and 33 deletions
@@ -58,8 +58,8 @@ import { ConfigProvider } from "../src/context/config"
import { SessionProvider, useSession } from "../src/context/session"
import { WorktreeModeProvider } from "../src/context/worktree-mode"
import { ChatView } from "../src/components/chat"
import { ModelSelectorBase } from "../src/components/chat/ModelSelector"
import { ModeSwitcherBase } from "../src/components/chat/ModeSwitcher"
import { ModelSelectorBase } from "../src/components/shared/ModelSelector"
import { ModeSwitcherBase } from "../src/components/shared/ModeSwitcher"
import {
MultiModelSelector,
type ModelAllocations,
@@ -3,7 +3,7 @@ import { Icon } from "@kilocode/kilo-ui/icon"
import { useProvider } from "../src/context/provider"
import type { EnrichedModel } from "../src/context/provider"
import { useLanguage } from "../src/context/language"
import { KILO_GATEWAY_ID, providerSortKey } from "../src/components/chat/model-selector-utils"
import { KILO_GATEWAY_ID, providerSortKey } from "../src/components/shared/model-selector-utils"
import {
type ModelAllocations,
MAX_MULTI_VERSIONS,
+2 -2
View File
@@ -8,8 +8,8 @@ import { Code } from "@kilocode/kilo-ui/code"
import { Diff } from "@kilocode/kilo-ui/diff"
import { DataProvider } from "@kilocode/kilo-ui/context/data"
import { Toast } from "@kilocode/kilo-ui/toast"
import Settings from "./components/Settings"
import ProfileView from "./components/ProfileView"
import Settings from "./components/settings/Settings"
import ProfileView from "./components/profile/ProfileView"
import { VSCodeProvider, useVSCode } from "./context/vscode"
import { ServerProvider, useServer } from "./context/server"
import { ProviderProvider, useProvider } from "./context/provider"
@@ -18,7 +18,7 @@ import { useLanguage } from "../../context/language"
import { formatRelativeDate } from "../../utils/date"
import { CloudImportDialog } from "./CloudImportDialog"
import { VscodeSessionTurn } from "./VscodeSessionTurn"
import { WorkingIndicator } from "./WorkingIndicator"
import { WorkingIndicator } from "../shared/WorkingIndicator"
const KiloLogo = (): JSX.Element => {
const iconsBaseUri = (window as { ICONS_BASE_URI?: string }).ICONS_BASE_URI || ""
@@ -11,9 +11,9 @@ import { useSession } from "../../context/session"
import { useServer } from "../../context/server"
import { useLanguage } from "../../context/language"
import { useVSCode } from "../../context/vscode"
import { ModelSelector } from "./ModelSelector"
import { ModeSwitcher } from "./ModeSwitcher"
import { ThinkingSelector } from "./ThinkingSelector"
import { ModelSelector } from "../shared/ModelSelector"
import { ModeSwitcher } from "../shared/ModeSwitcher"
import { ThinkingSelector } from "../shared/ThinkingSelector"
import { useFileMention } from "../../hooks/useFileMention"
import { useImageAttachments } from "../../hooks/useImageAttachments"
import { fileName, dirName, buildHighlightSegments } from "./prompt-input-utils"
@@ -3,10 +3,10 @@ import { Button } from "@kilocode/kilo-ui/button"
import { Card } from "@kilocode/kilo-ui/card"
import { Spinner } from "@kilocode/kilo-ui/spinner"
import { showToast } from "@kilocode/kilo-ui/toast"
import { useVSCode } from "../context/vscode"
import { useLanguage } from "../context/language"
import { generateQRCode } from "../utils/qrcode"
import type { DeviceAuthStatus } from "../types/messages"
import { useVSCode } from "../../context/vscode"
import { useLanguage } from "../../context/language"
import { generateQRCode } from "../../utils/qrcode"
import type { DeviceAuthStatus } from "../../types/messages"
interface DeviceAuthCardProps {
status: DeviceAuthStatus
@@ -4,10 +4,10 @@ import { Card } from "@kilocode/kilo-ui/card"
import { Icon } from "@kilocode/kilo-ui/icon"
import { Select } from "@kilocode/kilo-ui/select"
import { Tooltip } from "@kilocode/kilo-ui/tooltip"
import { useVSCode } from "../context/vscode"
import { useLanguage } from "../context/language"
import { useVSCode } from "../../context/vscode"
import { useLanguage } from "../../context/language"
import DeviceAuthCard from "./DeviceAuthCard"
import type { ProfileData, DeviceAuthState } from "../types/messages"
import type { ProfileData, DeviceAuthState } from "../../types/messages"
export type { ProfileData }
@@ -6,7 +6,7 @@ import { IconButton } from "@kilocode/kilo-ui/icon-button"
import { useConfig } from "../../context/config"
import { useProvider } from "../../context/provider"
import { useLanguage } from "../../context/language"
import { ModelSelectorBase } from "../chat/ModelSelector"
import { ModelSelectorBase } from "../shared/ModelSelector"
import type { ModelSelection } from "../../types/messages"
import SettingsRow from "./SettingsRow"
@@ -3,22 +3,22 @@ import { Button } from "@kilocode/kilo-ui/button"
import { Icon } from "@kilocode/kilo-ui/icon"
import { Tabs } from "@kilocode/kilo-ui/tabs"
import { Tooltip } from "@kilocode/kilo-ui/tooltip"
import { useLanguage } from "../context/language"
import ProvidersTab from "./settings/ProvidersTab"
import AgentBehaviourTab from "./settings/AgentBehaviourTab"
import AutoApproveTab from "./settings/AutoApproveTab"
import BrowserTab from "./settings/BrowserTab"
import CheckpointsTab from "./settings/CheckpointsTab"
import DisplayTab from "./settings/DisplayTab"
import AutocompleteTab from "./settings/AutocompleteTab"
import NotificationsTab from "./settings/NotificationsTab"
import ContextTab from "./settings/ContextTab"
import TerminalTab from "./settings/TerminalTab"
import PromptsTab from "./settings/PromptsTab"
import ExperimentalTab from "./settings/ExperimentalTab"
import LanguageTab from "./settings/LanguageTab"
import AboutKiloCodeTab from "./settings/AboutKiloCodeTab"
import { useServer } from "../context/server"
import { useLanguage } from "../../context/language"
import ProvidersTab from "./ProvidersTab"
import AgentBehaviourTab from "./AgentBehaviourTab"
import AutoApproveTab from "./AutoApproveTab"
import BrowserTab from "./BrowserTab"
import CheckpointsTab from "./CheckpointsTab"
import DisplayTab from "./DisplayTab"
import AutocompleteTab from "./AutocompleteTab"
import NotificationsTab from "./NotificationsTab"
import ContextTab from "./ContextTab"
import TerminalTab from "./TerminalTab"
import PromptsTab from "./PromptsTab"
import ExperimentalTab from "./ExperimentalTab"
import LanguageTab from "./LanguageTab"
import AboutKiloCodeTab from "./AboutKiloCodeTab"
import { useServer } from "../../context/server"
export interface SettingsProps {
onBack?: () => void
@@ -1,3 +1,4 @@
export { default as Settings } from "./Settings"
export { default as ProvidersTab } from "./ProvidersTab"
export { default as AgentBehaviourTab } from "./AgentBehaviourTab"
export { default as AutoApproveTab } from "./AutoApproveTab"