@@ -9,11 +9,12 @@ import { vscode } from "@src/utils/vscode"
99import { telemetryClient } from "@src/utils/TelemetryClient"
1010import { ToggleSwitch } from "@/components/ui/toggle-switch"
1111import { renderCloudBenefitsContent } from "./CloudUpsellDialog"
12- import { TriangleAlert } from "lucide-react"
12+ import { CircleAlert , Info , Lock , TriangleAlert } from "lucide-react"
1313import { cn } from "@/lib/utils"
1414import { Tab , TabContent , TabHeader } from "../common/Tab"
1515import { Button } from "@/components/ui/button"
1616import { OrganizationSwitcher } from "./OrganizationSwitcher"
17+ import { StandardTooltip } from "../ui"
1718
1819// Define the production URL constant locally to avoid importing from cloud package in tests
1920const PRODUCTION_ROO_CODE_API_URL = "https://app.roocode.com"
@@ -163,11 +164,11 @@ export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, onDone, orga
163164 < Button onClick = { onDone } > { t ( "settings:common.done" ) } </ Button >
164165 </ TabHeader >
165166
166- < TabContent >
167+ < TabContent className = "pt-10" >
167168 { isAuthenticated ? (
168169 < >
169170 { userInfo && (
170- < div className = "flex flex-col items-center mb-6" >
171+ < div className = "flex flex-col items-start ml-4 mb-6" >
171172 < div className = "w-16 h-16 mb-3 rounded-full overflow-hidden" >
172173 { userInfo ?. picture ? (
173174 < img
@@ -190,15 +191,15 @@ export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, onDone, orga
190191
191192 { /* Organization Switcher - moved below email */ }
192193 { organizations && organizations . length > 0 && (
193- < div className = "w-full max-w-sm mt-4" >
194+ < div className = "w-full max-w-60 mt-4" >
194195 < OrganizationSwitcher userInfo = { userInfo } organizations = { organizations } />
195196 </ div >
196197 ) }
197198 </ div >
198199 ) }
199200
200201 { /* Task Sync Toggle - Always shown when authenticated */ }
201- < div className = "border-t border-vscode-widget-border pt -4 mt-4 " >
202+ < div className = "mt-4 p-4 border-b border- t border-vscode-widget-border pl -4 max-w-140 " >
202203 < div className = "flex items-center gap-3 mb-2" >
203204 < ToggleSwitch
204205 checked = { taskSyncEnabled }
@@ -208,21 +209,25 @@ export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, onDone, orga
208209 data-testid = "task-sync-toggle"
209210 disabled = { ! ! userInfo ?. organizationId }
210211 />
211- < span className = "font-medium text-vscode-foreground" > { t ( "cloud:taskSync" ) } </ span >
212+ < span className = "font-medium text-vscode-foreground flex items-center" >
213+ { t ( "cloud:taskSync" ) }
214+ { userInfo ?. organizationId && (
215+ < StandardTooltip content = { t ( "cloud:taskSyncManagedByOrganization" ) } >
216+ < div className = "bg-vscode-badge-background text-vscode-badge-foreground/80 p-1.5 ml-2 -mb-2 relative -top-1 rounded-full inline-block cursor-help" >
217+ < Lock className = "size-3 block" />
218+ </ div >
219+ </ StandardTooltip >
220+ ) }
221+ </ span >
212222 </ div >
213- < div className = "text-vscode-descriptionForeground text-sm mt-1 mb-4 ml-8" >
223+ < div className = "text-vscode-descriptionForeground text-sm mt-1 ml-8" >
214224 { t ( "cloud:taskSyncDescription" ) }
215225 </ div >
216- { userInfo ?. organizationId && (
217- < div className = "text-vscode-descriptionForeground text-sm mt-1 mb-4 ml-8 italic" >
218- { t ( "cloud:taskSyncManagedByOrganization" ) }
219- </ div >
220- ) }
221226
222227 { /* Remote Control Toggle - Only shown when both extensionBridgeEnabled and featureRoomoteControlEnabled are true */ }
223228 { userInfo ?. extensionBridgeEnabled && featureRoomoteControlEnabled && (
224229 < >
225- < div className = "flex items-center gap-3 mb-2" >
230+ < div className = "flex items-center gap-3 mt-4 mb-2" >
226231 < ToggleSwitch
227232 checked = { remoteControlEnabled }
228233 onChange = { handleRemoteControlToggle }
@@ -235,37 +240,42 @@ export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, onDone, orga
235240 { t ( "cloud:remoteControl" ) }
236241 </ span >
237242 </ div >
238- < div className = "text-vscode-descriptionForeground text-sm mt-1 mb-4 ml-8" >
243+ < div className = "text-vscode-descriptionForeground text-sm mt-1 mb-2 ml-8" >
239244 { t ( "cloud:remoteControlDescription" ) }
240245 { ! taskSyncEnabled && (
241- < div className = "text-vscode-errorForeground mt-2" >
246+ < div className = "text-vscode-editorWarning-foreground mt-2" >
247+ < CircleAlert className = "inline size-3 mr-1 mb-0.5 text-vscode-editorWarning-foreground" />
242248 { t ( "cloud:remoteControlRequiresTaskSync" ) }
243249 </ div >
244250 ) }
245251 </ div >
246252 </ >
247253 ) }
254+ </ div >
248255
249- { /* Info text about usage metrics */ }
250- < div className = "text-vscode-descriptionForeground text-sm mt-4 mb-4 ml-8 italic" >
251- { t ( "cloud:usageMetricsAlwaysReported" ) }
252- </ div >
253-
254- < hr className = "border-vscode-widget-border mb-4" />
256+ < div className = "text-vscode-descriptionForeground text-sm mt-4 mb-8 pl-4" >
257+ < Info className = "inline size-3 mr-1 mb-0.5 text-vscode-descriptionForeground" />
258+ { t ( "cloud:usageMetricsAlwaysReported" ) }
255259 </ div >
256260
257- < div className = "flex flex-col gap-2 mt-4" >
258- < VSCodeButton appearance = "secondary" onClick = { handleVisitCloudWebsite } className = "w-full" >
261+ < div className = "flex flex-col gap-2 mt-4 pl-4" >
262+ < VSCodeButton
263+ appearance = "secondary"
264+ onClick = { handleVisitCloudWebsite }
265+ className = "w-full max-w-80" >
259266 { t ( "cloud:visitCloudWebsite" ) }
260267 </ VSCodeButton >
261- < VSCodeButton appearance = "secondary" onClick = { handleLogoutClick } className = "w-full" >
268+ < VSCodeButton
269+ appearance = "secondary"
270+ onClick = { handleLogoutClick }
271+ className = "w-full max-w-80" >
262272 { t ( "cloud:logOut" ) }
263273 </ VSCodeButton >
264274 </ div >
265275 </ >
266276 ) : (
267277 < >
268- < div className = "flex flex-col items-start gap-4 px-8" >
278+ < div className = "flex flex-col items-start gap-4 px-8 max-w-100 " >
269279 < div className = { cn ( authInProgress && "opacity-50" ) } > { renderCloudBenefitsContent ( t ) } </ div >
270280
271281 { ! authInProgress && (
@@ -320,10 +330,10 @@ export const CloudView = ({ userInfo, isAuthenticated, cloudApiUrl, onDone, orga
320330 </ >
321331 ) }
322332 { cloudApiUrl && cloudApiUrl !== PRODUCTION_ROO_CODE_API_URL && (
323- < div className = "ml-8 mt-6 flex justify-start " >
333+ < div className = "ml-4 mt-6 flex" >
324334 < div className = "inline-flex items-center gap-2 text-xs" >
325- < TriangleAlert className = "size-4 text-vscode-descriptionForeground" />
326- < span className = "text-vscode-foreground/75" > { t ( "cloud:cloudUrlPillLabel" ) } : </ span >
335+ < TriangleAlert className = "size-3 text-vscode-descriptionForeground" />
336+ < span className = "text-vscode-foreground/75" > { t ( "cloud:cloudUrlPillLabel" ) } </ span >
327337 < button
328338 onClick = { handleOpenCloudUrl }
329339 className = "text-vscode-textLink-foreground hover:text-vscode-textLink-activeForeground underline cursor-pointer bg-transparent border-none p-0" >
0 commit comments