test(better auth): implementation start of better auth
This commit is contained in:
11
frontend/src/lib/authClient.ts
Normal file
11
frontend/src/lib/authClient.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { createAuthClient } from "better-auth/client";
|
||||
import { usernameClient } from "better-auth/client/plugins";
|
||||
export const authClient = createAuthClient({
|
||||
baseURL: `${window.location.origin}/lst/api/auth`, // 👈 This is fine
|
||||
callbacks: {
|
||||
onUpdate: (session: any) => console.log("Session updated", session),
|
||||
onSignIn: (session: any) => console.log("Signed in!", session),
|
||||
onSignOut: () => console.log("Signed out!"),
|
||||
},
|
||||
plugins: [usernameClient()],
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
import { clsx, type ClassValue } from "clsx"
|
||||
import { twMerge } from "tailwind-merge"
|
||||
import { clsx, type ClassValue } from "clsx";
|
||||
import { twMerge } from "tailwind-merge";
|
||||
|
||||
export function cn(...inputs: ClassValue[]) {
|
||||
return twMerge(clsx(inputs))
|
||||
return twMerge(clsx(inputs));
|
||||
}
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
import { StrictMode } from "react";
|
||||
import ReactDOM from "react-dom/client";
|
||||
import "./index.css";
|
||||
|
||||
import { RouterProvider, createRouter } from "@tanstack/react-router";
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
||||
|
||||
// Import the generated route tree
|
||||
import { routeTree } from "./routeTree.gen";
|
||||
|
||||
// Create a client
|
||||
const queryClient = new QueryClient();
|
||||
|
||||
// Create a new router instance
|
||||
const router = createRouter({ routeTree, basepath: "/lst/app" });
|
||||
|
||||
@@ -19,6 +22,8 @@ declare module "@tanstack/react-router" {
|
||||
|
||||
ReactDOM.createRoot(document.getElementById("root")!).render(
|
||||
<StrictMode>
|
||||
<RouterProvider router={router} />
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<RouterProvider router={router} />
|
||||
</QueryClientProvider>
|
||||
</StrictMode>
|
||||
);
|
||||
|
||||
@@ -9,38 +9,160 @@
|
||||
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
||||
|
||||
import { Route as rootRouteImport } from './routes/__root'
|
||||
import { Route as _adminRouteImport } from './routes/__admin'
|
||||
import { Route as AdminLayoutRouteRouteImport } from './routes/_adminLayout/route'
|
||||
import { Route as IndexRouteImport } from './routes/index'
|
||||
import { Route as AdminSettingsRouteImport } from './routes/admin_/settings'
|
||||
import { Route as AdminLayoutAdminIndexRouteImport } from './routes/_adminLayout/admin/index'
|
||||
import { Route as AdminLayoutAdminUsersRouteImport } from './routes/_adminLayout/admin/users'
|
||||
import { Route as AdminLayoutAdminServersRouteImport } from './routes/_adminLayout/admin/servers'
|
||||
import { Route as AdminLayoutAdminUserUserIdRouteImport } from './routes/_adminLayout/admin/user/$userId'
|
||||
import { Route as AdminLayoutAdminServersServerIdRouteImport } from './routes/_adminLayout/admin/servers/$serverId'
|
||||
import { Route as AdminLayoutAdminServersServerIdEditRouteImport } from './routes/_adminLayout/admin/servers/$serverId_/edit'
|
||||
|
||||
const _adminRoute = _adminRouteImport.update({
|
||||
id: '/__admin',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const AdminLayoutRouteRoute = AdminLayoutRouteRouteImport.update({
|
||||
id: '/_adminLayout',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const IndexRoute = IndexRouteImport.update({
|
||||
id: '/',
|
||||
path: '/',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const AdminSettingsRoute = AdminSettingsRouteImport.update({
|
||||
id: '/admin_/settings',
|
||||
path: '/admin/settings',
|
||||
getParentRoute: () => rootRouteImport,
|
||||
} as any)
|
||||
const AdminLayoutAdminIndexRoute = AdminLayoutAdminIndexRouteImport.update({
|
||||
id: '/admin/',
|
||||
path: '/admin/',
|
||||
getParentRoute: () => AdminLayoutRouteRoute,
|
||||
} as any)
|
||||
const AdminLayoutAdminUsersRoute = AdminLayoutAdminUsersRouteImport.update({
|
||||
id: '/admin/users',
|
||||
path: '/admin/users',
|
||||
getParentRoute: () => AdminLayoutRouteRoute,
|
||||
} as any)
|
||||
const AdminLayoutAdminServersRoute = AdminLayoutAdminServersRouteImport.update({
|
||||
id: '/admin/servers',
|
||||
path: '/admin/servers',
|
||||
getParentRoute: () => AdminLayoutRouteRoute,
|
||||
} as any)
|
||||
const AdminLayoutAdminUserUserIdRoute =
|
||||
AdminLayoutAdminUserUserIdRouteImport.update({
|
||||
id: '/admin/user/$userId',
|
||||
path: '/admin/user/$userId',
|
||||
getParentRoute: () => AdminLayoutRouteRoute,
|
||||
} as any)
|
||||
const AdminLayoutAdminServersServerIdRoute =
|
||||
AdminLayoutAdminServersServerIdRouteImport.update({
|
||||
id: '/$serverId',
|
||||
path: '/$serverId',
|
||||
getParentRoute: () => AdminLayoutAdminServersRoute,
|
||||
} as any)
|
||||
const AdminLayoutAdminServersServerIdEditRoute =
|
||||
AdminLayoutAdminServersServerIdEditRouteImport.update({
|
||||
id: '/$serverId_/edit',
|
||||
path: '/$serverId/edit',
|
||||
getParentRoute: () => AdminLayoutAdminServersRoute,
|
||||
} as any)
|
||||
|
||||
export interface FileRoutesByFullPath {
|
||||
'/': typeof IndexRoute
|
||||
'/admin/settings': typeof AdminSettingsRoute
|
||||
'/admin/servers': typeof AdminLayoutAdminServersRouteWithChildren
|
||||
'/admin/users': typeof AdminLayoutAdminUsersRoute
|
||||
'/admin': typeof AdminLayoutAdminIndexRoute
|
||||
'/admin/servers/$serverId': typeof AdminLayoutAdminServersServerIdRoute
|
||||
'/admin/user/$userId': typeof AdminLayoutAdminUserUserIdRoute
|
||||
'/admin/servers/$serverId/edit': typeof AdminLayoutAdminServersServerIdEditRoute
|
||||
}
|
||||
export interface FileRoutesByTo {
|
||||
'/': typeof IndexRoute
|
||||
'/admin/settings': typeof AdminSettingsRoute
|
||||
'/admin/servers': typeof AdminLayoutAdminServersRouteWithChildren
|
||||
'/admin/users': typeof AdminLayoutAdminUsersRoute
|
||||
'/admin': typeof AdminLayoutAdminIndexRoute
|
||||
'/admin/servers/$serverId': typeof AdminLayoutAdminServersServerIdRoute
|
||||
'/admin/user/$userId': typeof AdminLayoutAdminUserUserIdRoute
|
||||
'/admin/servers/$serverId/edit': typeof AdminLayoutAdminServersServerIdEditRoute
|
||||
}
|
||||
export interface FileRoutesById {
|
||||
__root__: typeof rootRouteImport
|
||||
'/': typeof IndexRoute
|
||||
'/_adminLayout': typeof AdminLayoutRouteRouteWithChildren
|
||||
'/__admin': typeof _adminRoute
|
||||
'/admin_/settings': typeof AdminSettingsRoute
|
||||
'/_adminLayout/admin/servers': typeof AdminLayoutAdminServersRouteWithChildren
|
||||
'/_adminLayout/admin/users': typeof AdminLayoutAdminUsersRoute
|
||||
'/_adminLayout/admin/': typeof AdminLayoutAdminIndexRoute
|
||||
'/_adminLayout/admin/servers/$serverId': typeof AdminLayoutAdminServersServerIdRoute
|
||||
'/_adminLayout/admin/user/$userId': typeof AdminLayoutAdminUserUserIdRoute
|
||||
'/_adminLayout/admin/servers/$serverId_/edit': typeof AdminLayoutAdminServersServerIdEditRoute
|
||||
}
|
||||
export interface FileRouteTypes {
|
||||
fileRoutesByFullPath: FileRoutesByFullPath
|
||||
fullPaths: '/'
|
||||
fullPaths:
|
||||
| '/'
|
||||
| '/admin/settings'
|
||||
| '/admin/servers'
|
||||
| '/admin/users'
|
||||
| '/admin'
|
||||
| '/admin/servers/$serverId'
|
||||
| '/admin/user/$userId'
|
||||
| '/admin/servers/$serverId/edit'
|
||||
fileRoutesByTo: FileRoutesByTo
|
||||
to: '/'
|
||||
id: '__root__' | '/'
|
||||
to:
|
||||
| '/'
|
||||
| '/admin/settings'
|
||||
| '/admin/servers'
|
||||
| '/admin/users'
|
||||
| '/admin'
|
||||
| '/admin/servers/$serverId'
|
||||
| '/admin/user/$userId'
|
||||
| '/admin/servers/$serverId/edit'
|
||||
id:
|
||||
| '__root__'
|
||||
| '/'
|
||||
| '/_adminLayout'
|
||||
| '/__admin'
|
||||
| '/admin_/settings'
|
||||
| '/_adminLayout/admin/servers'
|
||||
| '/_adminLayout/admin/users'
|
||||
| '/_adminLayout/admin/'
|
||||
| '/_adminLayout/admin/servers/$serverId'
|
||||
| '/_adminLayout/admin/user/$userId'
|
||||
| '/_adminLayout/admin/servers/$serverId_/edit'
|
||||
fileRoutesById: FileRoutesById
|
||||
}
|
||||
export interface RootRouteChildren {
|
||||
IndexRoute: typeof IndexRoute
|
||||
AdminLayoutRouteRoute: typeof AdminLayoutRouteRouteWithChildren
|
||||
_adminRoute: typeof _adminRoute
|
||||
AdminSettingsRoute: typeof AdminSettingsRoute
|
||||
}
|
||||
|
||||
declare module '@tanstack/react-router' {
|
||||
interface FileRoutesByPath {
|
||||
'/__admin': {
|
||||
id: '/__admin'
|
||||
path: ''
|
||||
fullPath: ''
|
||||
preLoaderRoute: typeof _adminRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/_adminLayout': {
|
||||
id: '/_adminLayout'
|
||||
path: ''
|
||||
fullPath: ''
|
||||
preLoaderRoute: typeof AdminLayoutRouteRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/': {
|
||||
id: '/'
|
||||
path: '/'
|
||||
@@ -48,11 +170,97 @@ declare module '@tanstack/react-router' {
|
||||
preLoaderRoute: typeof IndexRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/admin_/settings': {
|
||||
id: '/admin_/settings'
|
||||
path: '/admin/settings'
|
||||
fullPath: '/admin/settings'
|
||||
preLoaderRoute: typeof AdminSettingsRouteImport
|
||||
parentRoute: typeof rootRouteImport
|
||||
}
|
||||
'/_adminLayout/admin/': {
|
||||
id: '/_adminLayout/admin/'
|
||||
path: '/admin'
|
||||
fullPath: '/admin'
|
||||
preLoaderRoute: typeof AdminLayoutAdminIndexRouteImport
|
||||
parentRoute: typeof AdminLayoutRouteRoute
|
||||
}
|
||||
'/_adminLayout/admin/users': {
|
||||
id: '/_adminLayout/admin/users'
|
||||
path: '/admin/users'
|
||||
fullPath: '/admin/users'
|
||||
preLoaderRoute: typeof AdminLayoutAdminUsersRouteImport
|
||||
parentRoute: typeof AdminLayoutRouteRoute
|
||||
}
|
||||
'/_adminLayout/admin/servers': {
|
||||
id: '/_adminLayout/admin/servers'
|
||||
path: '/admin/servers'
|
||||
fullPath: '/admin/servers'
|
||||
preLoaderRoute: typeof AdminLayoutAdminServersRouteImport
|
||||
parentRoute: typeof AdminLayoutRouteRoute
|
||||
}
|
||||
'/_adminLayout/admin/user/$userId': {
|
||||
id: '/_adminLayout/admin/user/$userId'
|
||||
path: '/admin/user/$userId'
|
||||
fullPath: '/admin/user/$userId'
|
||||
preLoaderRoute: typeof AdminLayoutAdminUserUserIdRouteImport
|
||||
parentRoute: typeof AdminLayoutRouteRoute
|
||||
}
|
||||
'/_adminLayout/admin/servers/$serverId': {
|
||||
id: '/_adminLayout/admin/servers/$serverId'
|
||||
path: '/$serverId'
|
||||
fullPath: '/admin/servers/$serverId'
|
||||
preLoaderRoute: typeof AdminLayoutAdminServersServerIdRouteImport
|
||||
parentRoute: typeof AdminLayoutAdminServersRoute
|
||||
}
|
||||
'/_adminLayout/admin/servers/$serverId_/edit': {
|
||||
id: '/_adminLayout/admin/servers/$serverId_/edit'
|
||||
path: '/$serverId/edit'
|
||||
fullPath: '/admin/servers/$serverId/edit'
|
||||
preLoaderRoute: typeof AdminLayoutAdminServersServerIdEditRouteImport
|
||||
parentRoute: typeof AdminLayoutAdminServersRoute
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface AdminLayoutAdminServersRouteChildren {
|
||||
AdminLayoutAdminServersServerIdRoute: typeof AdminLayoutAdminServersServerIdRoute
|
||||
AdminLayoutAdminServersServerIdEditRoute: typeof AdminLayoutAdminServersServerIdEditRoute
|
||||
}
|
||||
|
||||
const AdminLayoutAdminServersRouteChildren: AdminLayoutAdminServersRouteChildren =
|
||||
{
|
||||
AdminLayoutAdminServersServerIdRoute: AdminLayoutAdminServersServerIdRoute,
|
||||
AdminLayoutAdminServersServerIdEditRoute:
|
||||
AdminLayoutAdminServersServerIdEditRoute,
|
||||
}
|
||||
|
||||
const AdminLayoutAdminServersRouteWithChildren =
|
||||
AdminLayoutAdminServersRoute._addFileChildren(
|
||||
AdminLayoutAdminServersRouteChildren,
|
||||
)
|
||||
|
||||
interface AdminLayoutRouteRouteChildren {
|
||||
AdminLayoutAdminServersRoute: typeof AdminLayoutAdminServersRouteWithChildren
|
||||
AdminLayoutAdminUsersRoute: typeof AdminLayoutAdminUsersRoute
|
||||
AdminLayoutAdminIndexRoute: typeof AdminLayoutAdminIndexRoute
|
||||
AdminLayoutAdminUserUserIdRoute: typeof AdminLayoutAdminUserUserIdRoute
|
||||
}
|
||||
|
||||
const AdminLayoutRouteRouteChildren: AdminLayoutRouteRouteChildren = {
|
||||
AdminLayoutAdminServersRoute: AdminLayoutAdminServersRouteWithChildren,
|
||||
AdminLayoutAdminUsersRoute: AdminLayoutAdminUsersRoute,
|
||||
AdminLayoutAdminIndexRoute: AdminLayoutAdminIndexRoute,
|
||||
AdminLayoutAdminUserUserIdRoute: AdminLayoutAdminUserUserIdRoute,
|
||||
}
|
||||
|
||||
const AdminLayoutRouteRouteWithChildren =
|
||||
AdminLayoutRouteRoute._addFileChildren(AdminLayoutRouteRouteChildren)
|
||||
|
||||
const rootRouteChildren: RootRouteChildren = {
|
||||
IndexRoute: IndexRoute,
|
||||
AdminLayoutRouteRoute: AdminLayoutRouteRouteWithChildren,
|
||||
_adminRoute: _adminRoute,
|
||||
AdminSettingsRoute: AdminSettingsRoute,
|
||||
}
|
||||
export const routeTree = rootRouteImport
|
||||
._addFileChildren(rootRouteChildren)
|
||||
|
||||
9
frontend/src/routes/__admin.tsx
Normal file
9
frontend/src/routes/__admin.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { createFileRoute } from '@tanstack/react-router'
|
||||
|
||||
export const Route = createFileRoute('/__admin')({
|
||||
component: RouteComponent,
|
||||
})
|
||||
|
||||
function RouteComponent() {
|
||||
return <div>Hello "/(__admin)/__admin"!</div>
|
||||
}
|
||||
@@ -1,8 +1,13 @@
|
||||
import { createRootRoute, Outlet } from "@tanstack/react-router";
|
||||
import { createRootRoute, Link, Outlet } from "@tanstack/react-router";
|
||||
import { TanStackRouterDevtools } from "@tanstack/react-router-devtools";
|
||||
|
||||
const RootLayout = () => (
|
||||
<>
|
||||
<nav className="flex gap-1">
|
||||
<Link to="/">Home</Link>
|
||||
{/* <Link to="/admin">Admin</Link> */}
|
||||
</nav>
|
||||
<hr></hr>
|
||||
<Outlet />
|
||||
<TanStackRouterDevtools />
|
||||
</>
|
||||
|
||||
23
frontend/src/routes/_adminLayout/-components/Nav.tsx
Normal file
23
frontend/src/routes/_adminLayout/-components/Nav.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
import { Link } from "@tanstack/react-router";
|
||||
|
||||
export default function Nav() {
|
||||
return (
|
||||
<div>
|
||||
<nav className="flex gap-1">
|
||||
<Link
|
||||
to="/admin"
|
||||
className="[&.active]:font-bold"
|
||||
activeOptions={{ exact: true }}
|
||||
>
|
||||
Admin
|
||||
</Link>
|
||||
<Link to="/admin/servers" className="[&.active]:font-bold">
|
||||
Servers
|
||||
</Link>
|
||||
<Link to="/admin/users" className="[&.active]:font-bold">
|
||||
Users
|
||||
</Link>
|
||||
</nav>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
8
frontend/src/routes/_adminLayout/-components/Server.tsx
Normal file
8
frontend/src/routes/_adminLayout/-components/Server.tsx
Normal file
@@ -0,0 +1,8 @@
|
||||
import { getRouteApi } from "@tanstack/react-router";
|
||||
|
||||
export default function Server() {
|
||||
const { useParams } = getRouteApi("/_adminLayout/admin/servers/$serverId");
|
||||
|
||||
const { serverId } = useParams();
|
||||
return <div>server id {serverId}!</div>;
|
||||
}
|
||||
9
frontend/src/routes/_adminLayout/admin/index.tsx
Normal file
9
frontend/src/routes/_adminLayout/admin/index.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { createFileRoute } from '@tanstack/react-router'
|
||||
|
||||
export const Route = createFileRoute('/_adminLayout/admin/')({
|
||||
component: RouteComponent,
|
||||
})
|
||||
|
||||
function RouteComponent() {
|
||||
return <div>Hello "/_adminLayout/admin/"!</div>
|
||||
}
|
||||
27
frontend/src/routes/_adminLayout/admin/servers.tsx
Normal file
27
frontend/src/routes/_adminLayout/admin/servers.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import { createFileRoute, Link } from "@tanstack/react-router";
|
||||
|
||||
export const Route = createFileRoute("/_adminLayout/admin/servers")({
|
||||
component: RouteComponent,
|
||||
});
|
||||
|
||||
function RouteComponent() {
|
||||
return (
|
||||
<div>
|
||||
Hello "/admin/servers"! <br />
|
||||
<Link
|
||||
to="/admin/servers/$serverId"
|
||||
params={{
|
||||
serverId: "5",
|
||||
}}
|
||||
>
|
||||
Server 5
|
||||
</Link>
|
||||
<Link
|
||||
to="/admin/servers/$serverId"
|
||||
params={(prev) => ({ ...prev, serverId: "10" })}
|
||||
>
|
||||
Server 5
|
||||
</Link>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
10
frontend/src/routes/_adminLayout/admin/servers/$serverId.tsx
Normal file
10
frontend/src/routes/_adminLayout/admin/servers/$serverId.tsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import { createFileRoute } from "@tanstack/react-router";
|
||||
import Server from "../../-components/Server";
|
||||
|
||||
export const Route = createFileRoute("/_adminLayout/admin/servers/$serverId")({
|
||||
component: RouteComponent,
|
||||
});
|
||||
|
||||
function RouteComponent() {
|
||||
return <Server />;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { createFileRoute } from '@tanstack/react-router'
|
||||
|
||||
export const Route = createFileRoute('/_adminLayout/admin/servers/$serverId_/edit')({
|
||||
component: RouteComponent,
|
||||
})
|
||||
|
||||
function RouteComponent() {
|
||||
return <div>Hello "/_adminLayout/admin/_server/$edit"!</div>
|
||||
}
|
||||
9
frontend/src/routes/_adminLayout/admin/user/$userId.tsx
Normal file
9
frontend/src/routes/_adminLayout/admin/user/$userId.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { createFileRoute } from '@tanstack/react-router'
|
||||
|
||||
export const Route = createFileRoute('/_adminLayout/admin/user/$userId')({
|
||||
component: RouteComponent,
|
||||
})
|
||||
|
||||
function RouteComponent() {
|
||||
return <div>Hello "/_adminLayout/admin/$userId"!</div>
|
||||
}
|
||||
9
frontend/src/routes/_adminLayout/admin/users.tsx
Normal file
9
frontend/src/routes/_adminLayout/admin/users.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { createFileRoute } from '@tanstack/react-router'
|
||||
|
||||
export const Route = createFileRoute('/_adminLayout/admin/users')({
|
||||
component: RouteComponent,
|
||||
})
|
||||
|
||||
function RouteComponent() {
|
||||
return <div>Hello "/admin/users"!</div>
|
||||
}
|
||||
16
frontend/src/routes/_adminLayout/route.tsx
Normal file
16
frontend/src/routes/_adminLayout/route.tsx
Normal file
@@ -0,0 +1,16 @@
|
||||
import { createFileRoute, Outlet } from "@tanstack/react-router";
|
||||
import Nav from "./-components/Nav";
|
||||
|
||||
export const Route = createFileRoute("/_adminLayout")({
|
||||
component: RouteComponent,
|
||||
});
|
||||
|
||||
function RouteComponent() {
|
||||
return (
|
||||
<div>
|
||||
<Nav />
|
||||
<hr />
|
||||
<Outlet />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
9
frontend/src/routes/admin_/settings.tsx
Normal file
9
frontend/src/routes/admin_/settings.tsx
Normal file
@@ -0,0 +1,9 @@
|
||||
import { createFileRoute } from '@tanstack/react-router'
|
||||
|
||||
export const Route = createFileRoute('/admin_/settings')({
|
||||
component: RouteComponent,
|
||||
})
|
||||
|
||||
function RouteComponent() {
|
||||
return <div>Hello "/admin_/settings"!</div>
|
||||
}
|
||||
@@ -7,12 +7,14 @@ export const Route = createFileRoute("/")({
|
||||
|
||||
function Index() {
|
||||
return (
|
||||
<div className="h-screen flex items-center justify-center">
|
||||
<Button className="h-96 w-96">
|
||||
<a href="/lst/d" target="_blank" className="text-4xl">
|
||||
LST-DOCS
|
||||
</a>
|
||||
</Button>
|
||||
<div>
|
||||
<div className="h-screen flex items-center justify-center">
|
||||
<Button className="h-96 w-96">
|
||||
<a href="/lst/d" target="_blank" className="text-4xl">
|
||||
LST-DOCS
|
||||
</a>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user