Skip to content

Commit 11fc6da

Browse files
committed
VSCode styling for shadcn/ui + expose container prop in dropdown portals
1 parent e3d7f25 commit 11fc6da

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

webview-ui/src/components/ui/button.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { cva, type VariantProps } from "class-variance-authority"
55
import { cn } from "@/lib/utils"
66

77
const buttonVariants = cva(
8-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
8+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer active:opacity-90",
99
{
1010
variants: {
1111
variant: {
@@ -17,10 +17,10 @@ const buttonVariants = cva(
1717
link: "text-primary underline-offset-4 hover:underline",
1818
},
1919
size: {
20-
default: "h-9 px-4 py-2",
21-
sm: "h-8 rounded-md px-3 text-xs",
22-
lg: "h-10 rounded-md px-8",
23-
icon: "h-9 w-9",
20+
default: "h-7 px-3",
21+
sm: "h-6 px-2 text-sm",
22+
lg: "h-8 px-4 text-lg",
23+
icon: "h-7 w-7",
2424
},
2525
},
2626
defaultVariants: {

webview-ui/src/components/ui/dropdown-menu.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,11 @@ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayNam
5353

5454
const DropdownMenuContent = React.forwardRef<
5555
React.ElementRef<typeof DropdownMenuPrimitive.Content>,
56-
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
57-
>(({ className, sideOffset = 4, ...props }, ref) => (
58-
<DropdownMenuPrimitive.Portal>
56+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> & {
57+
container?: HTMLElement
58+
}
59+
>(({ className, sideOffset = 4, container, ...props }, ref) => (
60+
<DropdownMenuPrimitive.Portal container={container}>
5961
<DropdownMenuPrimitive.Content
6062
ref={ref}
6163
sideOffset={sideOffset}
@@ -79,7 +81,7 @@ const DropdownMenuItem = React.forwardRef<
7981
<DropdownMenuPrimitive.Item
8082
ref={ref}
8183
className={cn(
82-
"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
84+
"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0 active:opacity-90",
8385
inset && "pl-8",
8486
className,
8587
)}

webview-ui/src/index.css

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222
@plugin "tailwindcss-animate";
2323

2424
@theme {
25+
--font-display: var(--vscode-font-family);
26+
--text-sm: calc(var(--vscode-font-size) * 0.9);
27+
--text-base: var(--vscode-font-size);
28+
--text-lg: calc(var(--vscode-font-size) * 1.1);
29+
2530
--color-background: var(--background);
2631
--color-foreground: var(--foreground);
2732
--color-card: var(--card);
@@ -65,11 +70,11 @@
6570
--secondary-foreground: var(--vscode-button-secondaryForeground);
6671
--muted: var(--vscode-disabledForeground);
6772
--muted-foreground: var(--vscode-descriptionForeground);
68-
--accent: var(--vscode-input-border);
73+
--accent: var(--vscode-list-hoverBackground);
6974
--accent-foreground: var(--vscode-button-foreground);
7075
--destructive: var(--vscode-errorForeground);
7176
--destructive-foreground: var(--vscode-button-foreground);
72-
--border: var(--vscode-widget-border);
77+
--border: var(--vscode-input-border);
7378
--input: var(--vscode-input-background);
7479
--ring: var(--vscode-input-border);
7580
--chart-1: var(--vscode-charts-red);

0 commit comments

Comments
 (0)