{
const target = e.target as HTMLElement
if (target.tagName !== 'BUTTON' && !target.hasAttribute('role')) {
diff --git a/site/src/components/ui/chart.tsx b/site/src/components/ui/chart.tsx
index c216d66d..3be000f8 100644
--- a/site/src/components/ui/chart.tsx
+++ b/site/src/components/ui/chart.tsx
@@ -124,15 +124,13 @@ const ChartTooltipContent = React.forwardRef<
) => {
const { config } = useChart()
- payload = React.useMemo(() => {
+ React.useMemo(() => {
if (itemSorter) {
- return payload.sort(itemSorter)
+ // @ts-ignore
+ payload?.sort(itemSorter)
}
- return payload
}, [itemSorter, payload])
- // console.log('iiiiii', itemSorter)
-
const tooltipLabel = React.useMemo(() => {
if (hideLabel || !payload?.length) {
return null
diff --git a/site/src/main.tsx b/site/src/main.tsx
index 431bfee7..02fc6610 100644
--- a/site/src/main.tsx
+++ b/site/src/main.tsx
@@ -3,11 +3,11 @@ import React, { Suspense, lazy, useEffect } from 'react'
import ReactDOM from 'react-dom/client'
import Home from './components/routes/home.tsx'
import { ThemeProvider } from './components/theme-provider.tsx'
-import { $authenticated, $router, $servers, navigate } from './lib/stores.ts'
+import { $authenticated, $router, $servers, navigate, pb } from './lib/stores.ts'
import { ModeToggle } from './components/mode-toggle.tsx'
import { cn, updateFavicon, updateServerList } from './lib/utils.ts'
import { buttonVariants } from './components/ui/button.tsx'
-import { Github } from 'lucide-react'
+import { DatabaseBackupIcon, Github, LogOutIcon, LogsIcon, UserIcon } from 'lucide-react'
import { useStore } from '@nanostores/react'
import { Toaster } from './components/ui/toaster.tsx'
import { Logo } from './components/logo.tsx'
@@ -17,6 +17,13 @@ import {
TooltipTrigger,
TooltipContent,
} from '@/components/ui/tooltip.tsx'
+import {
+ DropdownMenu,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuSeparator,
+ DropdownMenuTrigger,
+} from './components/ui/dropdown-menu.tsx'
const ServerDetail = lazy(() => import('./components/routes/server.tsx'))
const CommandPalette = lazy(() => import('./components/command-palette.tsx'))
@@ -39,17 +46,20 @@ const App = () => {
for (const server of servers) {
if (server.status === 'down') {
updateFavicon('/favicon-red.svg')
- return
+ break
} else if (server.status === 'up') {
up = true
}
}
updateFavicon(up ? '/favicon-green.svg' : '/favicon.svg')
}
+ return () => {
+ updateFavicon('/favicon.svg')
+ }
}, [authenticated, servers])
if (!page) {
- return
404
+ return
404
} else if (page.path === '/') {
return
} else if (page.route === 'server') {
@@ -84,7 +94,37 @@ const Layout = () => {
-
+
+
+
+
+
+
+
+
+ pb.authStore.clear()}>
+
+ Log out
+
+
+
+
+
+ Logs
+
+
+
+
+
+ Backups
+
+
+
+
@@ -118,7 +158,9 @@ const Layout = () => {
ReactDOM.createRoot(document.getElementById('app')!).render(
-
+
+
+
)