Skip to content

Commit d3223f2

Browse files
authored
fix: format styling (Announcements.tsx, AutoApproveMenu.tsx). Adding vscStyles.ts (RooCodeInc#1288)
* fix: format styling (Announcements.tsx). Adding vscStyles.ts * prettier for unrelated files * removing some styled components * comment tweak * Update mcp-quickstart.md * update post merge * VSC prefix
1 parent 67ac1fd commit d3223f2

File tree

3 files changed

+55
-12
lines changed

3 files changed

+55
-12
lines changed

webview-ui/src/components/chat/Announcement.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react"
22
import { memo } from "react"
33
import { useTranslation } from "react-i18next"
44
import { Trans } from "react-i18next"
5+
import { getAsVar, VSC_DESCRIPTION_FOREGROUND, VSC_INACTIVE_SELECTION_BACKGROUND } from "../../utils/vscStyles"
56

67
interface AnnouncementProps {
78
version: string
@@ -18,7 +19,7 @@ const Announcement = ({ version, hideAnnouncement }: AnnouncementProps) => {
1819
return (
1920
<div
2021
style={{
21-
backgroundColor: "var(--vscode-editor-inactiveSelectionBackground)",
22+
backgroundColor: getAsVar(VSC_INACTIVE_SELECTION_BACKGROUND),
2223
borderRadius: "3px",
2324
padding: "12px 16px",
2425
margin: "5px 15px 5px 15px",
@@ -104,7 +105,7 @@ const Announcement = ({ version, hideAnnouncement }: AnnouncementProps) => {
104105
<div
105106
style={{
106107
height: "1px",
107-
background: "var(--vscode-foreground)",
108+
background: getAsVar(VSC_DESCRIPTION_FOREGROUND),
108109
opacity: 0.1,
109110
margin: "8px 0",
110111
}}

webview-ui/src/components/chat/AutoApproveMenu.tsx

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import styled from "styled-components"
44
import { useExtensionState } from "../../context/ExtensionStateContext"
55
import { AutoApprovalSettings } from "../../../../src/shared/AutoApprovalSettings"
66
import { vscode } from "../../utils/vscode"
7+
import { getAsVar, VSC_FOREGROUND, VSC_TITLEBAR_INACTIVE_FOREGROUND, VSC_DESCRIPTION_FOREGROUND } from "../../utils/vscStyles"
78

89
interface AutoApproveMenuProps {
910
style?: React.CSSProperties
@@ -128,7 +129,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
128129
padding: "0 15px",
129130
userSelect: "none",
130131
borderTop: isExpanded
131-
? `0.5px solid color-mix(in srgb, var(--vscode-titleBar-inactiveForeground) 20%, transparent)`
132+
? `0.5px solid color-mix(in srgb, ${getAsVar(VSC_TITLEBAR_INACTIVE_FOREGROUND)} 20%, transparent)`
132133
: "none",
133134
overflowY: "auto",
134135
...style,
@@ -186,7 +187,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
186187
}}>
187188
<span
188189
style={{
189-
color: "var(--vscode-foreground)",
190+
color: getAsVar(VSC_FOREGROUND),
190191
whiteSpace: "nowrap",
191192
}}>
192193
Auto-approve:
@@ -213,7 +214,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
213214
<div
214215
style={{
215216
marginBottom: "10px",
216-
color: "var(--vscode-descriptionForeground)",
217+
color: getAsVar(VSC_DESCRIPTION_FOREGROUND),
217218
fontSize: "12px",
218219
}}>
219220
Auto-approve allows Cline to perform the following actions without asking for permission. Please use with
@@ -232,7 +233,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
232233
<div
233234
style={{
234235
marginLeft: "28px",
235-
color: "var(--vscode-descriptionForeground)",
236+
color: getAsVar(VSC_DESCRIPTION_FOREGROUND),
236237
fontSize: "12px",
237238
}}>
238239
{action.description}
@@ -242,7 +243,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
242243
<div
243244
style={{
244245
height: "0.5px",
245-
background: "var(--vscode-titleBar-inactiveForeground)",
246+
background: getAsVar(VSC_TITLEBAR_INACTIVE_FOREGROUND),
246247
margin: "15px 0",
247248
opacity: 0.2,
248249
}}
@@ -254,7 +255,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
254255
gap: "8px",
255256
marginTop: "10px",
256257
marginBottom: "8px",
257-
color: "var(--vscode-foreground)",
258+
color: getAsVar(VSC_FOREGROUND),
258259
}}>
259260
<span style={{ flexShrink: 1, minWidth: 0 }}>Max Requests:</span>
260261
<VSCodeTextField
@@ -280,7 +281,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
280281
</div>
281282
<div
282283
style={{
283-
color: "var(--vscode-descriptionForeground)",
284+
color: getAsVar(VSC_DESCRIPTION_FOREGROUND),
284285
fontSize: "12px",
285286
marginBottom: "10px",
286287
}}>
@@ -298,7 +299,7 @@ const AutoApproveMenu = ({ style }: AutoApproveMenuProps) => {
298299
<div
299300
style={{
300301
marginLeft: "28px",
301-
color: "var(--vscode-descriptionForeground)",
302+
color: getAsVar(VSC_DESCRIPTION_FOREGROUND),
302303
fontSize: "12px",
303304
}}>
304305
Receive system notifications when Cline requires approval to proceed or when a task is completed.
@@ -314,12 +315,12 @@ const CollapsibleSection = styled.div<{ isHovered?: boolean }>`
314315
display: flex;
315316
align-items: center;
316317
gap: 4px;
317-
color: ${(props) => (props.isHovered ? "var(--vscode-foreground)" : "var(--vscode-descriptionForeground)")};
318+
color: ${(props) => (props.isHovered ? getAsVar(VSC_FOREGROUND) : getAsVar(VSC_DESCRIPTION_FOREGROUND))};
318319
flex: 1;
319320
min-width: 0;
320321
321322
&:hover {
322-
color: var(--vscode-foreground);
323+
color: ${getAsVar(VSC_FOREGROUND)};
323324
}
324325
`
325326

webview-ui/src/utils/vscStyles.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
export const VSC_INPUT_BACKGROUND = "--vscode-input-background"
2+
export const VSC_SIDEBAR_BACKGROUND = "--vscode-sideBar-background"
3+
export const VSC_FOREGROUND = "--vscode-foreground"
4+
export const VSC_EDITOR_FOREGROUND = "--vscode-editor-foreground"
5+
export const VSC_FOREGROUND_MUTED = "--vscode-foreground-muted"
6+
export const VSC_DESCRIPTION_FOREGROUND = "--vscode-descriptionForeground"
7+
export const VSC_INPUT_PLACEHOLDER_FOREGROUND = "--vscode-input-placeholderForeground"
8+
export const VSC_BUTTON_BACKGROUND = "--vscode-button-background"
9+
export const VSC_BUTTON_FOREGROUND = "--vscode-button-foreground"
10+
export const VSC_EDITOR_BACKGROUND = "--vscode-editor-background"
11+
export const VSC_LIST_SELECTION_BACKGROUND = "--vscode-list-activeSelectionBackground"
12+
export const VSC_FOCUS_BORDER = "--vscode-focus-border"
13+
export const VSC_LIST_ACTIVE_FOREGROUND = "--vscode-quickInputList-focusForeground"
14+
export const VSC_QUICK_INPUT_BACKGROUND = "--vscode-quickInput-background"
15+
export const VSC_INPUT_BORDER = "--vscode-input-border"
16+
export const VSC_INPUT_BORDER_FOCUS = "--vscode-focusBorder"
17+
export const VSC_BADGE_BACKGROUND = "--vscode-badge-background"
18+
export const VSC_BADGE_FOREGROUND = "--vscode-badge-foreground"
19+
export const VSC_SIDEBAR_BORDER = "--vscode-sideBar-border"
20+
export const VSC_DIFF_REMOVED_LINE_BACKGROUND = "--vscode-diffEditor-removedLineBackground"
21+
export const VSC_DIFF_INSERTED_LINE_BACKGROUND = "--vscode-diffEditor-insertedLineBackground"
22+
export const VSC_INACTIVE_SELECTION_BACKGROUND = "--vscode-editor-inactiveSelectionBackground"
23+
export const VSC_TITLEBAR_INACTIVE_FOREGROUND = "--vscode-titleBar-inactiveForeground"
24+
25+
export function getAsVar(varName: string): string {
26+
return `var(${varName})`
27+
}
28+
29+
export function hexToRGB(hexColor: string): { r: number; g: number; b: number } {
30+
const hex = hexColor.replace(/^#/, "").slice(0, 6)
31+
const [r, g, b] = [0, 2, 4].map((offset) => parseInt(hex.slice(offset, offset + 2), 16))
32+
return { r, g, b }
33+
}
34+
35+
export function colorToHex(colorVar: string): string {
36+
const value = getComputedStyle(document.documentElement).getPropertyValue(colorVar).trim()
37+
if (value.startsWith("#")) return value.slice(0, 7)
38+
39+
const rgbValues = value.match(/\d+/g)?.slice(0, 3).map(Number) || []
40+
return `#${rgbValues.map((x) => x.toString(16).padStart(2, "0")).join("")}`
41+
}

0 commit comments

Comments
 (0)