Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,199 changes: 1,116 additions & 83 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,13 @@
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-slot": "^1.2.3",
"@radix-ui/react-switch": "^1.2.6",
"@radix-ui/react-tooltip": "^1.2.8",
"@tailwindcss/vite": "^4.1.14",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"lucide-react": "^0.544.0",
"radix-ui": "^1.4.3",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-toastify": "^11.0.5",
Expand Down
121 changes: 62 additions & 59 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { ToastContainer, toast } from 'react-toastify';
import { Menu, X } from 'lucide-react';
import 'react-toastify/dist/ReactToastify.css';
import { Button } from '@/components/ui/button';
import { TooltipProvider } from '@/components/ui/tooltip';
import { EntityTreeSidebar } from '@/components/EntityTreeSidebar';
import { EntityDetailPanel } from '@/components/EntityDetailPanel';
import { ServerConnectionDialog } from '@/components/ServerConnectionDialog';
Expand Down Expand Up @@ -82,73 +83,75 @@ function App() {
toast.error(`Application error: ${error.message}`);
}}
>
<div className="flex h-screen bg-background relative">
{/* Mobile menu toggle */}
<Button
variant="ghost"
size="icon"
className="fixed top-3 left-3 z-50 md:hidden"
onClick={() => setSidebarOpen(!sidebarOpen)}
aria-label={sidebarOpen ? 'Close menu' : 'Open menu'}
>
{sidebarOpen ? <X className="w-5 h-5" /> : <Menu className="w-5 h-5" />}
</Button>
<TooltipProvider>
<div className="flex h-screen bg-background relative">
{/* Mobile menu toggle */}
<Button
variant="ghost"
size="icon"
className="fixed top-3 left-3 z-50 md:hidden"
onClick={() => setSidebarOpen(!sidebarOpen)}
aria-label={sidebarOpen ? 'Close menu' : 'Open menu'}
>
{sidebarOpen ? <X className="w-5 h-5" /> : <Menu className="w-5 h-5" />}
</Button>

{/* Sidebar with responsive behavior */}
<div
className={`
{/* Sidebar with responsive behavior */}
<div
className={`
fixed inset-y-0 left-0 z-40 w-80 transform transition-transform duration-200 ease-in-out
md:relative md:translate-x-0
${sidebarOpen ? 'translate-x-0' : '-translate-x-full'}
`}
>
<EntityTreeSidebar
onSettingsClick={() => setShowConnectionDialog(true)}
onFaultsDashboardClick={handleFaultsDashboardClick}
/>
</div>

{/* Overlay for mobile when sidebar is open */}
{sidebarOpen && (
<button
type="button"
className="fixed inset-0 z-30 bg-black/50 md:hidden cursor-default"
onClick={() => setSidebarOpen(false)}
onKeyDown={(event) => {
if (event.key === 'Escape') {
setSidebarOpen(false);
}
}}
aria-label="Close sidebar"
/>
)}
>
<EntityTreeSidebar
onSettingsClick={() => setShowConnectionDialog(true)}
onFaultsDashboardClick={handleFaultsDashboardClick}
/>
</div>

{/* Main content */}
<div className="flex-1 md:ml-0">
<ErrorBoundary>
<EntityDetailPanel
onConnectClick={() => setShowConnectionDialog(true)}
viewMode={viewMode}
onEntitySelect={handleEntitySelect}
{/* Overlay for mobile when sidebar is open */}
{sidebarOpen && (
<button
type="button"
className="fixed inset-0 z-30 bg-black/50 md:hidden cursor-default"
onClick={() => setSidebarOpen(false)}
onKeyDown={(event) => {
if (event.key === 'Escape') {
setSidebarOpen(false);
}
}}
aria-label="Close sidebar"
/>
</ErrorBoundary>
</div>
)}

{/* Main content */}
<div className="flex-1 md:ml-0 flex flex-col overflow-hidden">
<ErrorBoundary>
<EntityDetailPanel
onConnectClick={() => setShowConnectionDialog(true)}
viewMode={viewMode}
onEntitySelect={handleEntitySelect}
/>
</ErrorBoundary>
</div>

<ServerConnectionDialog open={showConnectionDialog} onOpenChange={setShowConnectionDialog} />
<SearchCommand open={showSearch} onOpenChange={setShowSearch} />
<ToastContainer
position="bottom-right"
autoClose={5000}
hideProgressBar={false}
newestOnTop
closeOnClick
rtl={false}
pauseOnFocusLoss
draggable
pauseOnHover
theme="dark"
/>
</div>
<ServerConnectionDialog open={showConnectionDialog} onOpenChange={setShowConnectionDialog} />
<SearchCommand open={showSearch} onOpenChange={setShowSearch} />
<ToastContainer
position="bottom-right"
autoClose={5000}
hideProgressBar={false}
newestOnTop
closeOnClick
rtl={false}
pauseOnFocusLoss
draggable
pauseOnHover
theme="dark"
/>
</div>
</TooltipProvider>
</ErrorBoundary>
);
}
Expand Down
Loading