khulnasoft commited on
Commit
b3b4f5c
·
verified ·
1 Parent(s): 19426e2

Create Window.tsx

Browse files
Files changed (1) hide show
  1. components/Window.tsx +71 -0
components/Window.tsx ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @license
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ /* tslint:disable */
6
+ import React from 'react';
7
+
8
+ interface WindowProps {
9
+ title: string;
10
+ children: React.ReactNode;
11
+ onClose: () => void; // This prop remains, though its direct trigger (the X button) is removed.
12
+ isAppOpen: boolean;
13
+ appId?: string | null;
14
+ onToggleParameters: () => void;
15
+ onExitToDesktop: () => void;
16
+ isParametersPanelOpen?: boolean;
17
+ }
18
+
19
+ const MenuItem: React.FC<{
20
+ children: React.ReactNode;
21
+ onClick?: () => void;
22
+ className?: string;
23
+ }> = ({children, onClick, className}) => (
24
+ <span
25
+ className={`menu-item cursor-pointer hover:text-blue-600 ${className}`}
26
+ onClick={onClick}
27
+ onKeyDown={(e) => {
28
+ if (e.key === 'Enter' || e.key === ' ') onClick?.();
29
+ }}
30
+ tabIndex={0}
31
+ role="button">
32
+ {children}
33
+ </span>
34
+ );
35
+
36
+ export const Window: React.FC<WindowProps> = ({
37
+ title,
38
+ children,
39
+ onClose,
40
+ isAppOpen,
41
+ onToggleParameters,
42
+ onExitToDesktop,
43
+ isParametersPanelOpen,
44
+ }) => {
45
+ return (
46
+ <div className="w-[800px] h-[600px] bg-white border border-gray-300 rounded-xl shadow-2xl flex flex-col relative overflow-hidden font-sans backdrop-blur-sm bg-white/80">
47
+ {/* Title Bar */}
48
+ <div className="bg-gray-800/90 text-white py-2 px-4 font-semibold text-base flex justify-between items-center select-none cursor-default rounded-t-xl flex-shrink-0">
49
+ <span className="title-bar-text">{title}</span>
50
+ {/* "X" button removed from here */}
51
+ </div>
52
+
53
+ {/* Menu Bar */}
54
+ <div className="bg-gray-100/80 py-2 px-3 border-b border-gray-200 select-none flex gap-4 flex-shrink-0 text-sm text-gray-700 items-center">
55
+ {!isParametersPanelOpen && (
56
+ <MenuItem onClick={onToggleParameters}>
57
+ <u>P</u>arameters
58
+ </MenuItem>
59
+ )}
60
+ {isAppOpen && (
61
+ <MenuItem onClick={onExitToDesktop} className="ml-auto">
62
+ Exit to Desktop
63
+ </MenuItem>
64
+ )}
65
+ </div>
66
+
67
+ {/* Content */}
68
+ <div className="flex-grow overflow-y-auto">{children}</div>
69
+ </div>
70
+ );
71
+ };