diff --git a/app/routes/_data.machines.$id.tsx b/app/routes/_data.machines.$id/route.tsx similarity index 97% rename from app/routes/_data.machines.$id.tsx rename to app/routes/_data.machines.$id/route.tsx index f6ff1d0..2b3388f 100644 --- a/app/routes/_data.machines.$id.tsx +++ b/app/routes/_data.machines.$id/route.tsx @@ -13,8 +13,8 @@ import { pull } from '~/utils/headscale' import { getSession } from '~/utils/sessions' import { useLiveData } from '~/utils/useLiveData' -import { menuAction } from './_data.machines._index/action' -import MenuOptions from './_data.machines._index/menu' +import { menuAction } from '../_data.machines._index/action' +import MenuOptions from '../_data.machines._index/menu' export async function loader({ request, params }: LoaderFunctionArgs) { const session = await getSession(request.headers.get('Cookie')) diff --git a/app/routes/_data.machines._index/route.tsx b/app/routes/_data.machines._index/route.tsx index 203f274..707c2e6 100644 --- a/app/routes/_data.machines._index/route.tsx +++ b/app/routes/_data.machines._index/route.tsx @@ -1,17 +1,18 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import { InfoIcon } from '@primer/octicons-react' -import { type ActionFunctionArgs, type LoaderFunctionArgs } from '@remix-run/node' +import { ActionFunctionArgs, LoaderFunctionArgs } from '@remix-run/node' import { useLoaderData } from '@remix-run/react' import { Button, Tooltip, TooltipTrigger } from 'react-aria-components' import Code from '~/components/Code' -import { type Machine, type Route, User } from '~/types' +import Link from '~/components/Link' import { cn } from '~/utils/cn' import { loadContext } from '~/utils/config/headplane' import { loadConfig } from '~/utils/config/headscale' import { pull } from '~/utils/headscale' import { getSession } from '~/utils/sessions' import { useLiveData } from '~/utils/useLiveData' +import type { Machine, Route, User } from '~/types' import { menuAction } from './action' import MachineRow from './machine' @@ -58,8 +59,20 @@ export default function Page() { return ( <> -
-

Machines

+
+
+

Machines

+

+ Manage the devices connected to your Tailnet. + {' '} + + Learn more + +

+
diff --git a/app/routes/_data.settings.auth-keys._index/route.tsx b/app/routes/_data.settings.auth-keys._index/route.tsx index 73e3bb5..1fa34a0 100644 --- a/app/routes/_data.settings.auth-keys._index/route.tsx +++ b/app/routes/_data.settings.auth-keys._index/route.tsx @@ -110,6 +110,7 @@ export default function Page() { const { keys, users, server } = useLoaderData() const [user, setUser] = useState('All') const [status, setStatus] = useState('Active') + useLiveData({ interval: 3000 }) const filteredKeys = keys.filter(key => { if (user !== 'All' && key.user !== user) {