Skip to content

Commit 600d1e3

Browse files
committed
feat(titlebar): macOS-style traffic light controls and action dropdown
- Window minimize/maximize/close via Tauri API\n- Hover-revealed control icons, improved spacing\n- Agents/Usage buttons with tooltips and motion\n- More options dropdown for Claude, MCP, About
1 parent 9baaac2 commit 600d1e3

File tree

1 file changed

+9
-19
lines changed

1 file changed

+9
-19
lines changed

src/components/CustomTitlebar.tsx

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,7 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
7575
return (
7676
<TooltipProvider>
7777
<div
78-
className="relative z-[200] h-11 bg-background/95 backdrop-blur-sm flex items-center justify-between select-none border-b border-border/50"
79-
style={{
80-
WebkitAppRegion: 'drag',
81-
userSelect: 'none'
82-
}}
78+
className="relative z-[200] h-11 bg-background/95 backdrop-blur-sm flex items-center justify-between select-none border-b border-border/50 tauri-drag"
8379
data-tauri-drag-region
8480
onMouseEnter={() => setIsHovered(true)}
8581
onMouseLeave={() => setIsHovered(false)}
@@ -93,8 +89,7 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
9389
e.stopPropagation();
9490
handleClose();
9591
}}
96-
className="group relative w-3 h-3 rounded-full bg-red-500 hover:bg-red-600 transition-all duration-200 flex items-center justify-center"
97-
style={{ WebkitAppRegion: 'no-drag' }}
92+
className="group relative w-3 h-3 rounded-full bg-red-500 hover:bg-red-600 transition-all duration-200 flex items-center justify-center tauri-no-drag"
9893
title="Close"
9994
>
10095
{isHovered && (
@@ -108,8 +103,7 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
108103
e.stopPropagation();
109104
handleMinimize();
110105
}}
111-
className="group relative w-3 h-3 rounded-full bg-yellow-500 hover:bg-yellow-600 transition-all duration-200 flex items-center justify-center"
112-
style={{ WebkitAppRegion: 'no-drag' }}
106+
className="group relative w-3 h-3 rounded-full bg-yellow-500 hover:bg-yellow-600 transition-all duration-200 flex items-center justify-center tauri-no-drag"
113107
title="Minimize"
114108
>
115109
{isHovered && (
@@ -123,8 +117,7 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
123117
e.stopPropagation();
124118
handleMaximize();
125119
}}
126-
className="group relative w-3 h-3 rounded-full bg-green-500 hover:bg-green-600 transition-all duration-200 flex items-center justify-center"
127-
style={{ WebkitAppRegion: 'no-drag' }}
120+
className="group relative w-3 h-3 rounded-full bg-green-500 hover:bg-green-600 transition-all duration-200 flex items-center justify-center tauri-no-drag"
128121
title="Maximize"
129122
>
130123
{isHovered && (
@@ -143,7 +136,7 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
143136
</div> */}
144137

145138
{/* Right side - Navigation icons with improved spacing */}
146-
<div className="flex items-center pr-5 gap-3" style={{ WebkitAppRegion: 'no-drag' }}>
139+
<div className="flex items-center pr-5 gap-3 tauri-no-drag">
147140
{/* Primary actions group */}
148141
<div className="flex items-center gap-1">
149142
{onAgentsClick && (
@@ -152,8 +145,7 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
152145
onClick={onAgentsClick}
153146
whileTap={{ scale: 0.97 }}
154147
transition={{ duration: 0.15 }}
155-
className="p-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors"
156-
style={{ WebkitAppRegion: 'no-drag' }}
148+
className="p-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors tauri-no-drag"
157149
>
158150
<Bot size={16} />
159151
</motion.button>
@@ -166,8 +158,7 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
166158
onClick={onUsageClick}
167159
whileTap={{ scale: 0.97 }}
168160
transition={{ duration: 0.15 }}
169-
className="p-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors"
170-
style={{ WebkitAppRegion: 'no-drag' }}
161+
className="p-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors tauri-no-drag"
171162
>
172163
<BarChart3 size={16} />
173164
</motion.button>
@@ -186,8 +177,7 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
186177
onClick={onSettingsClick}
187178
whileTap={{ scale: 0.97 }}
188179
transition={{ duration: 0.15 }}
189-
className="p-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors"
190-
style={{ WebkitAppRegion: 'no-drag' }}
180+
className="p-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors tauri-no-drag"
191181
>
192182
<Settings size={16} />
193183
</motion.button>
@@ -257,4 +247,4 @@ export const CustomTitlebar: React.FC<CustomTitlebarProps> = ({
257247
</div>
258248
</TooltipProvider>
259249
);
260-
};
250+
};

0 commit comments

Comments
 (0)