Skip to content

Commit 9d588e3

Browse files
authored
Merge pull request #881 from RooVetGit/cte/shadcn-tooltips
Add tooltips on checkpoint actions
2 parents e70248c + 0daab65 commit 9d588e3

File tree

6 files changed

+315
-7
lines changed

6 files changed

+315
-7
lines changed

webview-ui/package-lock.json

Lines changed: 246 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"@radix-ui/react-icons": "^1.3.2",
2121
"@radix-ui/react-popover": "^1.1.6",
2222
"@radix-ui/react-slot": "^1.1.1",
23+
"@radix-ui/react-tooltip": "^1.1.8",
2324
"@tailwindcss/vite": "^4.0.0",
2425
"@vscode/webview-ui-toolkit": "^1.4.0",
2526
"class-variance-authority": "^0.7.1",

webview-ui/src/components/chat/checkpoints/CheckpointMenu.tsx

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@ import { CheckIcon, Cross2Icon } from "@radix-ui/react-icons"
33

44
import { vscode } from "../../../utils/vscode"
55

6-
import { Button, Popover, PopoverContent, PopoverTrigger } from "@/components/ui"
6+
import {
7+
Button,
8+
Popover,
9+
PopoverContent,
10+
PopoverTrigger,
11+
Tooltip,
12+
TooltipContent,
13+
TooltipProvider,
14+
TooltipTrigger,
15+
} from "@/components/ui"
716

817
type CheckpointMenuProps = {
918
ts: number
@@ -43,19 +52,33 @@ export const CheckpointMenu = ({ ts, commitHash, currentCheckpointHash }: Checkp
4352

4453
return (
4554
<div className="flex flex-row gap-1">
46-
<Button variant="ghost" size="icon" onClick={onCheckpointDiff}>
47-
<span className="codicon codicon-diff-single" />
48-
</Button>
55+
<TooltipProvider>
56+
<Tooltip>
57+
<TooltipTrigger asChild>
58+
<Button variant="ghost" size="icon" onClick={onCheckpointDiff}>
59+
<span className="codicon codicon-diff-single" />
60+
</Button>
61+
</TooltipTrigger>
62+
<TooltipContent align="end">View Diff</TooltipContent>
63+
</Tooltip>
64+
</TooltipProvider>
4965
<Popover
5066
open={isOpen}
5167
onOpenChange={(open) => {
5268
setIsOpen(open)
5369
setIsConfirming(false)
5470
}}>
5571
<PopoverTrigger asChild>
56-
<Button variant="ghost" size="icon">
57-
<span className="codicon codicon-history" />
58-
</Button>
72+
<TooltipProvider>
73+
<Tooltip>
74+
<TooltipTrigger asChild>
75+
<Button variant="ghost" size="icon">
76+
<span className="codicon codicon-history" />
77+
</Button>
78+
</TooltipTrigger>
79+
<TooltipContent align="end">Restore Checkpoint</TooltipContent>
80+
</Tooltip>
81+
</TooltipProvider>
5982
</PopoverTrigger>
6083
<PopoverContent align="end" container={portalContainer}>
6184
<div className="flex flex-col gap-2">

webview-ui/src/components/ui/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export * from "./command"
33
export * from "./dialog"
44
export * from "./dropdown-menu"
55
export * from "./popover"
6+
export * from "./tooltip"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import * as React from "react"
2+
import * as TooltipPrimitive from "@radix-ui/react-tooltip"
3+
4+
import { cn } from "@/lib/utils"
5+
6+
const TooltipProvider = TooltipPrimitive.Provider
7+
8+
const Tooltip = TooltipPrimitive.Root
9+
10+
const TooltipTrigger = TooltipPrimitive.Trigger
11+
12+
const TooltipContent = React.forwardRef<
13+
React.ElementRef<typeof TooltipPrimitive.Content>,
14+
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
15+
>(({ className, sideOffset = 4, ...props }, ref) => (
16+
<TooltipPrimitive.Portal>
17+
<TooltipPrimitive.Content
18+
ref={ref}
19+
sideOffset={sideOffset}
20+
className={cn(
21+
"z-50 overflow-hidden rounded-xs bg-vscode-notifications-background border border-vscode-notifications-border px-3 py-1.5 text-xs text-vscode-notifications-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
22+
className,
23+
)}
24+
{...props}
25+
/>
26+
</TooltipPrimitive.Portal>
27+
))
28+
TooltipContent.displayName = TooltipPrimitive.Content.displayName
29+
30+
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }

webview-ui/src/index.css

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@
7676

7777
--color-vscode-input-background: var(--vscode-input-background);
7878
--color-vscode-input-border: var(--vscode-input-border);
79+
80+
--color-vscode-badge-foreground: var(--vscode-badge-foreground);
81+
--color-vscode-badge-background: var(--vscode-badge-background);
82+
83+
--color-vscode-notifications-foreground: var(--vscode-notifications-foreground);
84+
--color-vscode-notifications-background: var(--vscode-notifications-background);
85+
--color-vscode-notifications-border: var(--vscode-notifications-border);
7986
}
8087

8188
@layer base {

0 commit comments

Comments
 (0)