Spaces:
Paused
Paused
Add public uptime monitoring with shareable links
Browse files- Create public uptime page (/u/:username) accessible without authentication
- Add share button with copy link functionality to dashboard
- Implement getUserMonitorStatsByUsername() for username-based queries
- Public page shows overall stats and individual monitor status
- Include share and home buttons on public page
- Responsive recent checks visualization with horizontal scroll
- Clean UI with glow effects and proper error handling
- .env +2 -0
- .playwright-mcp/page-2025-10-17T17-23-03-432Z.png +0 -0
- .playwright-mcp/page-2025-10-17T17-23-48-820Z.png +0 -0
- .playwright-mcp/page-2025-10-17T17-24-34-080Z.png +0 -0
- .playwright-mcp/page-2025-10-17T17-25-18-041Z.png +0 -0
- .playwright-mcp/page-2025-10-17T17-28-10-684Z.png +0 -0
- .playwright-mcp/page-2025-10-17T17-33-26-845Z.png +0 -0
- .react-router/types/+future.ts +9 -0
- .react-router/types/+routes.ts +65 -0
- .react-router/types/+server-build.d.ts +17 -0
- .react-router/types/app/+types/root.ts +59 -0
- .react-router/types/app/routes/+types/home.ts +62 -0
- .react-router/types/app/routes/+types/login.ts +62 -0
- .react-router/types/app/routes/+types/logout.ts +62 -0
- .react-router/types/app/routes/+types/register.ts +62 -0
- .react-router/types/app/routes/+types/uptime.ts +62 -0
- build/client/assets/button-1YLPPCtt.js +1 -0
- build/client/assets/card-nZ_hrmF6.js +1 -0
- build/client/assets/chunk-OIYGIGL5-O35CAIo3.js +0 -0
- build/client/assets/entry.client-BqCLKtvt.js +0 -0
- build/client/assets/home-CCZyLKHc.js +1 -0
- build/client/assets/login-CtRm5tfE.js +1 -0
- build/client/assets/logout-l0sNRNKZ.js +1 -0
- build/client/assets/manifest-ceec8a43.js +1 -0
- build/client/assets/register-BLpbiVIx.js +1 -0
- build/client/assets/root-C5Mnt1V9.js +1 -0
- build/client/assets/root-DePtEpHZ.css +1 -0
- build/client/assets/server-build-DePtEpHZ.css +1 -0
- build/client/assets/uptime-BYui58Ub.js +1 -0
- build/client/favicon.ico +0 -0
- build/server/assets/cron.server-BkSBgtlB.js +45 -0
- build/server/assets/server-build-BAW0Iiqy.js +990 -0
- build/server/index.js +31 -0
.env
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
TURSO_DATABASE_URL=libsql://always-uptime-sachnun.aws-ap-south-1.turso.io
|
| 2 |
+
TURSO_AUTH_TOKEN=eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjA2Nzc3MzgsImlkIjoiMWFhMjUwZjEtM2RlZS00Y2ZkLWE0Y2MtMGY2N2Y4ODE5NzJhIiwicmlkIjoiZTg0ZTkxMzctNmIyMy00YmJlLTgzZDQtNjJmNjRiYmQ3MjVkIn0._G24rVvgdaAXezHqs2IdoHJNG_z-kRY6HBg8BoQqU-wNuzBraiKLSkHOLPHKpMzRyW9EokTmuxL_x6HqHk0qDQ
|
.playwright-mcp/page-2025-10-17T17-23-03-432Z.png
ADDED
|
.playwright-mcp/page-2025-10-17T17-23-48-820Z.png
ADDED
|
.playwright-mcp/page-2025-10-17T17-24-34-080Z.png
ADDED
|
.playwright-mcp/page-2025-10-17T17-25-18-041Z.png
ADDED
|
.playwright-mcp/page-2025-10-17T17-28-10-684Z.png
ADDED
|
.playwright-mcp/page-2025-10-17T17-33-26-845Z.png
ADDED
|
.react-router/types/+future.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
import "react-router";
|
| 4 |
+
|
| 5 |
+
declare module "react-router" {
|
| 6 |
+
interface Future {
|
| 7 |
+
v8_middleware: false
|
| 8 |
+
}
|
| 9 |
+
}
|
.react-router/types/+routes.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
import "react-router"
|
| 4 |
+
|
| 5 |
+
declare module "react-router" {
|
| 6 |
+
interface Register {
|
| 7 |
+
pages: Pages
|
| 8 |
+
routeFiles: RouteFiles
|
| 9 |
+
routeModules: RouteModules
|
| 10 |
+
}
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
type Pages = {
|
| 14 |
+
"/": {
|
| 15 |
+
params: {};
|
| 16 |
+
};
|
| 17 |
+
"/login": {
|
| 18 |
+
params: {};
|
| 19 |
+
};
|
| 20 |
+
"/register": {
|
| 21 |
+
params: {};
|
| 22 |
+
};
|
| 23 |
+
"/logout": {
|
| 24 |
+
params: {};
|
| 25 |
+
};
|
| 26 |
+
"/uptime": {
|
| 27 |
+
params: {};
|
| 28 |
+
};
|
| 29 |
+
};
|
| 30 |
+
|
| 31 |
+
type RouteFiles = {
|
| 32 |
+
"root.tsx": {
|
| 33 |
+
id: "root";
|
| 34 |
+
page: "/" | "/login" | "/register" | "/logout" | "/uptime";
|
| 35 |
+
};
|
| 36 |
+
"routes/home.tsx": {
|
| 37 |
+
id: "routes/home";
|
| 38 |
+
page: "/";
|
| 39 |
+
};
|
| 40 |
+
"routes/login.tsx": {
|
| 41 |
+
id: "routes/login";
|
| 42 |
+
page: "/login";
|
| 43 |
+
};
|
| 44 |
+
"routes/register.tsx": {
|
| 45 |
+
id: "routes/register";
|
| 46 |
+
page: "/register";
|
| 47 |
+
};
|
| 48 |
+
"routes/logout.tsx": {
|
| 49 |
+
id: "routes/logout";
|
| 50 |
+
page: "/logout";
|
| 51 |
+
};
|
| 52 |
+
"routes/uptime.tsx": {
|
| 53 |
+
id: "routes/uptime";
|
| 54 |
+
page: "/uptime";
|
| 55 |
+
};
|
| 56 |
+
};
|
| 57 |
+
|
| 58 |
+
type RouteModules = {
|
| 59 |
+
"root": typeof import("./app/root.tsx");
|
| 60 |
+
"routes/home": typeof import("./app/routes/home.tsx");
|
| 61 |
+
"routes/login": typeof import("./app/routes/login.tsx");
|
| 62 |
+
"routes/register": typeof import("./app/routes/register.tsx");
|
| 63 |
+
"routes/logout": typeof import("./app/routes/logout.tsx");
|
| 64 |
+
"routes/uptime": typeof import("./app/routes/uptime.tsx");
|
| 65 |
+
};
|
.react-router/types/+server-build.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
declare module "virtual:react-router/server-build" {
|
| 4 |
+
import { ServerBuild } from "react-router";
|
| 5 |
+
export const assets: ServerBuild["assets"];
|
| 6 |
+
export const assetsBuildDirectory: ServerBuild["assetsBuildDirectory"];
|
| 7 |
+
export const basename: ServerBuild["basename"];
|
| 8 |
+
export const entry: ServerBuild["entry"];
|
| 9 |
+
export const future: ServerBuild["future"];
|
| 10 |
+
export const isSpaMode: ServerBuild["isSpaMode"];
|
| 11 |
+
export const prerender: ServerBuild["prerender"];
|
| 12 |
+
export const publicPath: ServerBuild["publicPath"];
|
| 13 |
+
export const routeDiscovery: ServerBuild["routeDiscovery"];
|
| 14 |
+
export const routes: ServerBuild["routes"];
|
| 15 |
+
export const ssr: ServerBuild["ssr"];
|
| 16 |
+
export const unstable_getCriticalCss: ServerBuild["unstable_getCriticalCss"];
|
| 17 |
+
}
|
.react-router/types/app/+types/root.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
import type { GetInfo, GetAnnotations } from "react-router/internal";
|
| 4 |
+
|
| 5 |
+
type Module = typeof import("../root.js")
|
| 6 |
+
|
| 7 |
+
type Info = GetInfo<{
|
| 8 |
+
file: "root.tsx",
|
| 9 |
+
module: Module
|
| 10 |
+
}>
|
| 11 |
+
|
| 12 |
+
type Matches = [{
|
| 13 |
+
id: "root";
|
| 14 |
+
module: typeof import("../root.js");
|
| 15 |
+
}];
|
| 16 |
+
|
| 17 |
+
type Annotations = GetAnnotations<Info & { module: Module, matches: Matches }, false>;
|
| 18 |
+
|
| 19 |
+
export namespace Route {
|
| 20 |
+
// links
|
| 21 |
+
export type LinkDescriptors = Annotations["LinkDescriptors"];
|
| 22 |
+
export type LinksFunction = Annotations["LinksFunction"];
|
| 23 |
+
|
| 24 |
+
// meta
|
| 25 |
+
export type MetaArgs = Annotations["MetaArgs"];
|
| 26 |
+
export type MetaDescriptors = Annotations["MetaDescriptors"];
|
| 27 |
+
export type MetaFunction = Annotations["MetaFunction"];
|
| 28 |
+
|
| 29 |
+
// headers
|
| 30 |
+
export type HeadersArgs = Annotations["HeadersArgs"];
|
| 31 |
+
export type HeadersFunction = Annotations["HeadersFunction"];
|
| 32 |
+
|
| 33 |
+
// middleware
|
| 34 |
+
export type MiddlewareFunction = Annotations["MiddlewareFunction"];
|
| 35 |
+
|
| 36 |
+
// clientMiddleware
|
| 37 |
+
export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
|
| 38 |
+
|
| 39 |
+
// loader
|
| 40 |
+
export type LoaderArgs = Annotations["LoaderArgs"];
|
| 41 |
+
|
| 42 |
+
// clientLoader
|
| 43 |
+
export type ClientLoaderArgs = Annotations["ClientLoaderArgs"];
|
| 44 |
+
|
| 45 |
+
// action
|
| 46 |
+
export type ActionArgs = Annotations["ActionArgs"];
|
| 47 |
+
|
| 48 |
+
// clientAction
|
| 49 |
+
export type ClientActionArgs = Annotations["ClientActionArgs"];
|
| 50 |
+
|
| 51 |
+
// HydrateFallback
|
| 52 |
+
export type HydrateFallbackProps = Annotations["HydrateFallbackProps"];
|
| 53 |
+
|
| 54 |
+
// Component
|
| 55 |
+
export type ComponentProps = Annotations["ComponentProps"];
|
| 56 |
+
|
| 57 |
+
// ErrorBoundary
|
| 58 |
+
export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"];
|
| 59 |
+
}
|
.react-router/types/app/routes/+types/home.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
import type { GetInfo, GetAnnotations } from "react-router/internal";
|
| 4 |
+
|
| 5 |
+
type Module = typeof import("../home.js")
|
| 6 |
+
|
| 7 |
+
type Info = GetInfo<{
|
| 8 |
+
file: "routes/home.tsx",
|
| 9 |
+
module: Module
|
| 10 |
+
}>
|
| 11 |
+
|
| 12 |
+
type Matches = [{
|
| 13 |
+
id: "root";
|
| 14 |
+
module: typeof import("../../root.js");
|
| 15 |
+
}, {
|
| 16 |
+
id: "routes/home";
|
| 17 |
+
module: typeof import("../home.js");
|
| 18 |
+
}];
|
| 19 |
+
|
| 20 |
+
type Annotations = GetAnnotations<Info & { module: Module, matches: Matches }, false>;
|
| 21 |
+
|
| 22 |
+
export namespace Route {
|
| 23 |
+
// links
|
| 24 |
+
export type LinkDescriptors = Annotations["LinkDescriptors"];
|
| 25 |
+
export type LinksFunction = Annotations["LinksFunction"];
|
| 26 |
+
|
| 27 |
+
// meta
|
| 28 |
+
export type MetaArgs = Annotations["MetaArgs"];
|
| 29 |
+
export type MetaDescriptors = Annotations["MetaDescriptors"];
|
| 30 |
+
export type MetaFunction = Annotations["MetaFunction"];
|
| 31 |
+
|
| 32 |
+
// headers
|
| 33 |
+
export type HeadersArgs = Annotations["HeadersArgs"];
|
| 34 |
+
export type HeadersFunction = Annotations["HeadersFunction"];
|
| 35 |
+
|
| 36 |
+
// middleware
|
| 37 |
+
export type MiddlewareFunction = Annotations["MiddlewareFunction"];
|
| 38 |
+
|
| 39 |
+
// clientMiddleware
|
| 40 |
+
export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
|
| 41 |
+
|
| 42 |
+
// loader
|
| 43 |
+
export type LoaderArgs = Annotations["LoaderArgs"];
|
| 44 |
+
|
| 45 |
+
// clientLoader
|
| 46 |
+
export type ClientLoaderArgs = Annotations["ClientLoaderArgs"];
|
| 47 |
+
|
| 48 |
+
// action
|
| 49 |
+
export type ActionArgs = Annotations["ActionArgs"];
|
| 50 |
+
|
| 51 |
+
// clientAction
|
| 52 |
+
export type ClientActionArgs = Annotations["ClientActionArgs"];
|
| 53 |
+
|
| 54 |
+
// HydrateFallback
|
| 55 |
+
export type HydrateFallbackProps = Annotations["HydrateFallbackProps"];
|
| 56 |
+
|
| 57 |
+
// Component
|
| 58 |
+
export type ComponentProps = Annotations["ComponentProps"];
|
| 59 |
+
|
| 60 |
+
// ErrorBoundary
|
| 61 |
+
export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"];
|
| 62 |
+
}
|
.react-router/types/app/routes/+types/login.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
import type { GetInfo, GetAnnotations } from "react-router/internal";
|
| 4 |
+
|
| 5 |
+
type Module = typeof import("../login.js")
|
| 6 |
+
|
| 7 |
+
type Info = GetInfo<{
|
| 8 |
+
file: "routes/login.tsx",
|
| 9 |
+
module: Module
|
| 10 |
+
}>
|
| 11 |
+
|
| 12 |
+
type Matches = [{
|
| 13 |
+
id: "root";
|
| 14 |
+
module: typeof import("../../root.js");
|
| 15 |
+
}, {
|
| 16 |
+
id: "routes/login";
|
| 17 |
+
module: typeof import("../login.js");
|
| 18 |
+
}];
|
| 19 |
+
|
| 20 |
+
type Annotations = GetAnnotations<Info & { module: Module, matches: Matches }, false>;
|
| 21 |
+
|
| 22 |
+
export namespace Route {
|
| 23 |
+
// links
|
| 24 |
+
export type LinkDescriptors = Annotations["LinkDescriptors"];
|
| 25 |
+
export type LinksFunction = Annotations["LinksFunction"];
|
| 26 |
+
|
| 27 |
+
// meta
|
| 28 |
+
export type MetaArgs = Annotations["MetaArgs"];
|
| 29 |
+
export type MetaDescriptors = Annotations["MetaDescriptors"];
|
| 30 |
+
export type MetaFunction = Annotations["MetaFunction"];
|
| 31 |
+
|
| 32 |
+
// headers
|
| 33 |
+
export type HeadersArgs = Annotations["HeadersArgs"];
|
| 34 |
+
export type HeadersFunction = Annotations["HeadersFunction"];
|
| 35 |
+
|
| 36 |
+
// middleware
|
| 37 |
+
export type MiddlewareFunction = Annotations["MiddlewareFunction"];
|
| 38 |
+
|
| 39 |
+
// clientMiddleware
|
| 40 |
+
export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
|
| 41 |
+
|
| 42 |
+
// loader
|
| 43 |
+
export type LoaderArgs = Annotations["LoaderArgs"];
|
| 44 |
+
|
| 45 |
+
// clientLoader
|
| 46 |
+
export type ClientLoaderArgs = Annotations["ClientLoaderArgs"];
|
| 47 |
+
|
| 48 |
+
// action
|
| 49 |
+
export type ActionArgs = Annotations["ActionArgs"];
|
| 50 |
+
|
| 51 |
+
// clientAction
|
| 52 |
+
export type ClientActionArgs = Annotations["ClientActionArgs"];
|
| 53 |
+
|
| 54 |
+
// HydrateFallback
|
| 55 |
+
export type HydrateFallbackProps = Annotations["HydrateFallbackProps"];
|
| 56 |
+
|
| 57 |
+
// Component
|
| 58 |
+
export type ComponentProps = Annotations["ComponentProps"];
|
| 59 |
+
|
| 60 |
+
// ErrorBoundary
|
| 61 |
+
export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"];
|
| 62 |
+
}
|
.react-router/types/app/routes/+types/logout.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
import type { GetInfo, GetAnnotations } from "react-router/internal";
|
| 4 |
+
|
| 5 |
+
type Module = typeof import("../logout.js")
|
| 6 |
+
|
| 7 |
+
type Info = GetInfo<{
|
| 8 |
+
file: "routes/logout.tsx",
|
| 9 |
+
module: Module
|
| 10 |
+
}>
|
| 11 |
+
|
| 12 |
+
type Matches = [{
|
| 13 |
+
id: "root";
|
| 14 |
+
module: typeof import("../../root.js");
|
| 15 |
+
}, {
|
| 16 |
+
id: "routes/logout";
|
| 17 |
+
module: typeof import("../logout.js");
|
| 18 |
+
}];
|
| 19 |
+
|
| 20 |
+
type Annotations = GetAnnotations<Info & { module: Module, matches: Matches }, false>;
|
| 21 |
+
|
| 22 |
+
export namespace Route {
|
| 23 |
+
// links
|
| 24 |
+
export type LinkDescriptors = Annotations["LinkDescriptors"];
|
| 25 |
+
export type LinksFunction = Annotations["LinksFunction"];
|
| 26 |
+
|
| 27 |
+
// meta
|
| 28 |
+
export type MetaArgs = Annotations["MetaArgs"];
|
| 29 |
+
export type MetaDescriptors = Annotations["MetaDescriptors"];
|
| 30 |
+
export type MetaFunction = Annotations["MetaFunction"];
|
| 31 |
+
|
| 32 |
+
// headers
|
| 33 |
+
export type HeadersArgs = Annotations["HeadersArgs"];
|
| 34 |
+
export type HeadersFunction = Annotations["HeadersFunction"];
|
| 35 |
+
|
| 36 |
+
// middleware
|
| 37 |
+
export type MiddlewareFunction = Annotations["MiddlewareFunction"];
|
| 38 |
+
|
| 39 |
+
// clientMiddleware
|
| 40 |
+
export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
|
| 41 |
+
|
| 42 |
+
// loader
|
| 43 |
+
export type LoaderArgs = Annotations["LoaderArgs"];
|
| 44 |
+
|
| 45 |
+
// clientLoader
|
| 46 |
+
export type ClientLoaderArgs = Annotations["ClientLoaderArgs"];
|
| 47 |
+
|
| 48 |
+
// action
|
| 49 |
+
export type ActionArgs = Annotations["ActionArgs"];
|
| 50 |
+
|
| 51 |
+
// clientAction
|
| 52 |
+
export type ClientActionArgs = Annotations["ClientActionArgs"];
|
| 53 |
+
|
| 54 |
+
// HydrateFallback
|
| 55 |
+
export type HydrateFallbackProps = Annotations["HydrateFallbackProps"];
|
| 56 |
+
|
| 57 |
+
// Component
|
| 58 |
+
export type ComponentProps = Annotations["ComponentProps"];
|
| 59 |
+
|
| 60 |
+
// ErrorBoundary
|
| 61 |
+
export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"];
|
| 62 |
+
}
|
.react-router/types/app/routes/+types/register.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
import type { GetInfo, GetAnnotations } from "react-router/internal";
|
| 4 |
+
|
| 5 |
+
type Module = typeof import("../register.js")
|
| 6 |
+
|
| 7 |
+
type Info = GetInfo<{
|
| 8 |
+
file: "routes/register.tsx",
|
| 9 |
+
module: Module
|
| 10 |
+
}>
|
| 11 |
+
|
| 12 |
+
type Matches = [{
|
| 13 |
+
id: "root";
|
| 14 |
+
module: typeof import("../../root.js");
|
| 15 |
+
}, {
|
| 16 |
+
id: "routes/register";
|
| 17 |
+
module: typeof import("../register.js");
|
| 18 |
+
}];
|
| 19 |
+
|
| 20 |
+
type Annotations = GetAnnotations<Info & { module: Module, matches: Matches }, false>;
|
| 21 |
+
|
| 22 |
+
export namespace Route {
|
| 23 |
+
// links
|
| 24 |
+
export type LinkDescriptors = Annotations["LinkDescriptors"];
|
| 25 |
+
export type LinksFunction = Annotations["LinksFunction"];
|
| 26 |
+
|
| 27 |
+
// meta
|
| 28 |
+
export type MetaArgs = Annotations["MetaArgs"];
|
| 29 |
+
export type MetaDescriptors = Annotations["MetaDescriptors"];
|
| 30 |
+
export type MetaFunction = Annotations["MetaFunction"];
|
| 31 |
+
|
| 32 |
+
// headers
|
| 33 |
+
export type HeadersArgs = Annotations["HeadersArgs"];
|
| 34 |
+
export type HeadersFunction = Annotations["HeadersFunction"];
|
| 35 |
+
|
| 36 |
+
// middleware
|
| 37 |
+
export type MiddlewareFunction = Annotations["MiddlewareFunction"];
|
| 38 |
+
|
| 39 |
+
// clientMiddleware
|
| 40 |
+
export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
|
| 41 |
+
|
| 42 |
+
// loader
|
| 43 |
+
export type LoaderArgs = Annotations["LoaderArgs"];
|
| 44 |
+
|
| 45 |
+
// clientLoader
|
| 46 |
+
export type ClientLoaderArgs = Annotations["ClientLoaderArgs"];
|
| 47 |
+
|
| 48 |
+
// action
|
| 49 |
+
export type ActionArgs = Annotations["ActionArgs"];
|
| 50 |
+
|
| 51 |
+
// clientAction
|
| 52 |
+
export type ClientActionArgs = Annotations["ClientActionArgs"];
|
| 53 |
+
|
| 54 |
+
// HydrateFallback
|
| 55 |
+
export type HydrateFallbackProps = Annotations["HydrateFallbackProps"];
|
| 56 |
+
|
| 57 |
+
// Component
|
| 58 |
+
export type ComponentProps = Annotations["ComponentProps"];
|
| 59 |
+
|
| 60 |
+
// ErrorBoundary
|
| 61 |
+
export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"];
|
| 62 |
+
}
|
.react-router/types/app/routes/+types/uptime.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Generated by React Router
|
| 2 |
+
|
| 3 |
+
import type { GetInfo, GetAnnotations } from "react-router/internal";
|
| 4 |
+
|
| 5 |
+
type Module = typeof import("../uptime.js")
|
| 6 |
+
|
| 7 |
+
type Info = GetInfo<{
|
| 8 |
+
file: "routes/uptime.tsx",
|
| 9 |
+
module: Module
|
| 10 |
+
}>
|
| 11 |
+
|
| 12 |
+
type Matches = [{
|
| 13 |
+
id: "root";
|
| 14 |
+
module: typeof import("../../root.js");
|
| 15 |
+
}, {
|
| 16 |
+
id: "routes/uptime";
|
| 17 |
+
module: typeof import("../uptime.js");
|
| 18 |
+
}];
|
| 19 |
+
|
| 20 |
+
type Annotations = GetAnnotations<Info & { module: Module, matches: Matches }, false>;
|
| 21 |
+
|
| 22 |
+
export namespace Route {
|
| 23 |
+
// links
|
| 24 |
+
export type LinkDescriptors = Annotations["LinkDescriptors"];
|
| 25 |
+
export type LinksFunction = Annotations["LinksFunction"];
|
| 26 |
+
|
| 27 |
+
// meta
|
| 28 |
+
export type MetaArgs = Annotations["MetaArgs"];
|
| 29 |
+
export type MetaDescriptors = Annotations["MetaDescriptors"];
|
| 30 |
+
export type MetaFunction = Annotations["MetaFunction"];
|
| 31 |
+
|
| 32 |
+
// headers
|
| 33 |
+
export type HeadersArgs = Annotations["HeadersArgs"];
|
| 34 |
+
export type HeadersFunction = Annotations["HeadersFunction"];
|
| 35 |
+
|
| 36 |
+
// middleware
|
| 37 |
+
export type MiddlewareFunction = Annotations["MiddlewareFunction"];
|
| 38 |
+
|
| 39 |
+
// clientMiddleware
|
| 40 |
+
export type ClientMiddlewareFunction = Annotations["ClientMiddlewareFunction"];
|
| 41 |
+
|
| 42 |
+
// loader
|
| 43 |
+
export type LoaderArgs = Annotations["LoaderArgs"];
|
| 44 |
+
|
| 45 |
+
// clientLoader
|
| 46 |
+
export type ClientLoaderArgs = Annotations["ClientLoaderArgs"];
|
| 47 |
+
|
| 48 |
+
// action
|
| 49 |
+
export type ActionArgs = Annotations["ActionArgs"];
|
| 50 |
+
|
| 51 |
+
// clientAction
|
| 52 |
+
export type ClientActionArgs = Annotations["ClientActionArgs"];
|
| 53 |
+
|
| 54 |
+
// HydrateFallback
|
| 55 |
+
export type HydrateFallbackProps = Annotations["HydrateFallbackProps"];
|
| 56 |
+
|
| 57 |
+
// Component
|
| 58 |
+
export type ComponentProps = Annotations["ComponentProps"];
|
| 59 |
+
|
| 60 |
+
// ErrorBoundary
|
| 61 |
+
export type ErrorBoundaryProps = Annotations["ErrorBoundaryProps"];
|
| 62 |
+
}
|
build/client/assets/button-1YLPPCtt.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{r as Ne,j as Te}from"./chunk-OIYGIGL5-O35CAIo3.js";function we(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(r=we(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function ye(){for(var e,t,r=0,o="",a=arguments.length;r<a;r++)(e=arguments[r])&&(t=we(e))&&(o&&(o+=" "),o+=t);return o}const be=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,fe=ye,Ve=(e,t)=>r=>{var o;if(t?.variants==null)return fe(e,r?.class,r?.className);const{variants:a,defaultVariants:c}=t,l=Object.keys(a).map(b=>{const f=r?.[b],k=c?.[b];if(f===null)return null;const z=be(f)||be(k);return a[b][z]}),p=r&&Object.entries(r).reduce((b,f)=>{let[k,z]=f;return z===void 0||(b[k]=z),b},{}),u=t==null||(o=t.compoundVariants)===null||o===void 0?void 0:o.reduce((b,f)=>{let{class:k,className:z,...R}=f;return Object.entries(R).every(w=>{let[y,C]=w;return Array.isArray(C)?C.includes({...c,...p}[y]):{...c,...p}[y]===C})?[...b,k,z]:b},[]);return fe(e,l,u,r?.class,r?.className)},se="-",Ee=e=>{const t=Le(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:l=>{const p=l.split(se);return p[0]===""&&p.length!==1&&p.shift(),ve(p,t)||je(l)},getConflictingClassGroupIds:(l,p)=>{const u=r[l]||[];return p&&o[l]?[...u,...o[l]]:u}}},ve=(e,t)=>{if(e.length===0)return t.classGroupId;const r=e[0],o=t.nextPart.get(r),a=o?ve(e.slice(1),o):void 0;if(a)return a;if(t.validators.length===0)return;const c=e.join(se);return t.validators.find(({validator:l})=>l(c))?.classGroupId},ge=/^\[(.+)\]$/,je=e=>{if(ge.test(e)){const t=ge.exec(e)[1],r=t?.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}},Le=e=>{const{theme:t,classGroups:r}=e,o={nextPart:new Map,validators:[]};for(const a in r)oe(r[a],o,a,t);return o},oe=(e,t,r,o)=>{e.forEach(a=>{if(typeof a=="string"){const c=a===""?t:he(t,a);c.classGroupId=r;return}if(typeof a=="function"){if(Oe(a)){oe(a(o),t,r,o);return}t.validators.push({validator:a,classGroupId:r});return}Object.entries(a).forEach(([c,l])=>{oe(l,he(t,c),r,o)})})},he=(e,t)=>{let r=e;return t.split(se).forEach(o=>{r.nextPart.has(o)||r.nextPart.set(o,{nextPart:new Map,validators:[]}),r=r.nextPart.get(o)}),r},Oe=e=>e.isThemeGetter,Be=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,o=new Map;const a=(c,l)=>{r.set(c,l),t++,t>e&&(t=0,o=r,r=new Map)};return{get(c){let l=r.get(c);if(l!==void 0)return l;if((l=o.get(c))!==void 0)return a(c,l),l},set(c,l){r.has(c)?r.set(c,l):a(c,l)}}},te="!",ne=":",_e=ne.length,Fe=e=>{const{prefix:t,experimentalParseClassName:r}=e;let o=a=>{const c=[];let l=0,p=0,u=0,b;for(let w=0;w<a.length;w++){let y=a[w];if(l===0&&p===0){if(y===ne){c.push(a.slice(u,w)),u=w+_e;continue}if(y==="/"){b=w;continue}}y==="["?l++:y==="]"?l--:y==="("?p++:y===")"&&p--}const f=c.length===0?a:a.substring(u),k=We(f),z=k!==f,R=b&&b>u?b-u:void 0;return{modifiers:c,hasImportantModifier:z,baseClassName:k,maybePostfixModifierPosition:R}};if(t){const a=t+ne,c=o;o=l=>l.startsWith(a)?c(l.substring(a.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:l,maybePostfixModifierPosition:void 0}}if(r){const a=o;o=c=>r({className:c,parseClassName:a})}return o},We=e=>e.endsWith(te)?e.substring(0,e.length-1):e.startsWith(te)?e.substring(1):e,$e=e=>{const t=Object.fromEntries(e.orderSensitiveModifiers.map(o=>[o,!0]));return o=>{if(o.length<=1)return o;const a=[];let c=[];return o.forEach(l=>{l[0]==="["||t[l]?(a.push(...c.sort(),l),c=[]):c.push(l)}),a.push(...c.sort()),a}},Ue=e=>({cache:Be(e.cacheSize),parseClassName:Fe(e),sortModifiers:$e(e),...Ee(e)}),qe=/\s+/,He=(e,t)=>{const{parseClassName:r,getClassGroupId:o,getConflictingClassGroupIds:a,sortModifiers:c}=t,l=[],p=e.trim().split(qe);let u="";for(let b=p.length-1;b>=0;b-=1){const f=p[b],{isExternal:k,modifiers:z,hasImportantModifier:R,baseClassName:w,maybePostfixModifierPosition:y}=r(f);if(k){u=f+(u.length>0?" "+u:u);continue}let C=!!y,I=o(C?w.substring(0,y):w);if(!I){if(!C){u=f+(u.length>0?" "+u:u);continue}if(I=o(w),!I){u=f+(u.length>0?" "+u:u);continue}C=!1}const $=c(z).join(":"),_=R?$+te:$,V=_+I;if(l.includes(V))continue;l.push(V);const E=a(I,C);for(let G=0;G<E.length;++G){const F=E[G];l.push(_+F)}u=f+(u.length>0?" "+u:u)}return u};function Je(){let e=0,t,r,o="";for(;e<arguments.length;)(t=arguments[e++])&&(r=ze(t))&&(o&&(o+=" "),o+=r);return o}const ze=e=>{if(typeof e=="string")return e;let t,r="";for(let o=0;o<e.length;o++)e[o]&&(t=ze(e[o]))&&(r&&(r+=" "),r+=t);return r};function Ke(e,...t){let r,o,a,c=l;function l(u){const b=t.reduce((f,k)=>k(f),e());return r=Ue(b),o=r.cache.get,a=r.cache.set,c=p,p(u)}function p(u){const b=o(u);if(b)return b;const f=He(u,r);return a(u,f),f}return function(){return c(Je.apply(null,arguments))}}const g=e=>{const t=r=>r[e]||[];return t.isThemeGetter=!0,t},Ce=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Ae=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Xe=/^\d+\/\d+$/,De=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Qe=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ye=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Ze=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,er=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,L=e=>Xe.test(e),m=e=>!!e&&!Number.isNaN(Number(e)),P=e=>!!e&&Number.isInteger(Number(e)),ee=e=>e.endsWith("%")&&m(e.slice(0,-1)),S=e=>De.test(e),rr=()=>!0,or=e=>Qe.test(e)&&!Ye.test(e),Me=()=>!1,tr=e=>Ze.test(e),nr=e=>er.test(e),sr=e=>!n(e)&&!s(e),ar=e=>O(e,Re,Me),n=e=>Ce.test(e),T=e=>O(e,Ie,or),re=e=>O(e,mr,m),xe=e=>O(e,Se,Me),ir=e=>O(e,Pe,nr),X=e=>O(e,Ge,tr),s=e=>Ae.test(e),W=e=>B(e,Ie),lr=e=>B(e,ur),ke=e=>B(e,Se),cr=e=>B(e,Re),dr=e=>B(e,Pe),D=e=>B(e,Ge,!0),O=(e,t,r)=>{const o=Ce.exec(e);return o?o[1]?t(o[1]):r(o[2]):!1},B=(e,t,r=!1)=>{const o=Ae.exec(e);return o?o[1]?t(o[1]):r:!1},Se=e=>e==="position"||e==="percentage",Pe=e=>e==="image"||e==="url",Re=e=>e==="length"||e==="size"||e==="bg-size",Ie=e=>e==="length",mr=e=>e==="number",ur=e=>e==="family-name",Ge=e=>e==="shadow",pr=()=>{const e=g("color"),t=g("font"),r=g("text"),o=g("font-weight"),a=g("tracking"),c=g("leading"),l=g("breakpoint"),p=g("container"),u=g("spacing"),b=g("radius"),f=g("shadow"),k=g("inset-shadow"),z=g("text-shadow"),R=g("drop-shadow"),w=g("blur"),y=g("perspective"),C=g("aspect"),I=g("ease"),$=g("animate"),_=()=>["auto","avoid","all","avoid-page","page","left","right","column"],V=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...V(),s,n],G=()=>["auto","hidden","clip","visible","scroll"],F=()=>["auto","contain","none"],d=()=>[s,n,u],A=()=>[L,"full","auto",...d()],ae=()=>[P,"none","subgrid",s,n],ie=()=>["auto",{span:["full",P,s,n]},P,s,n],U=()=>[P,"auto",s,n],le=()=>["auto","min","max","fr",s,n],Q=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],j=()=>["start","end","center","stretch","center-safe","end-safe"],M=()=>["auto",...d()],N=()=>[L,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...d()],i=()=>[e,s,n],ce=()=>[...V(),ke,xe,{position:[s,n]}],de=()=>["no-repeat",{repeat:["","x","y","space","round"]}],me=()=>["auto","cover","contain",cr,ar,{size:[s,n]}],Y=()=>[ee,W,T],x=()=>["","none","full",b,s,n],v=()=>["",m,W,T],q=()=>["solid","dashed","dotted","double"],ue=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],h=()=>[m,ee,ke,xe],pe=()=>["","none",w,s,n],H=()=>["none",m,s,n],J=()=>["none",m,s,n],Z=()=>[m,s,n],K=()=>[L,"full",...d()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[S],breakpoint:[S],color:[rr],container:[S],"drop-shadow":[S],ease:["in","out","in-out"],font:[sr],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[S],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[S],shadow:[S],spacing:["px",m],text:[S],"text-shadow":[S],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",L,n,s,C]}],container:["container"],columns:[{columns:[m,n,s,p]}],"break-after":[{"break-after":_()}],"break-before":[{"break-before":_()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:E()}],overflow:[{overflow:G()}],"overflow-x":[{"overflow-x":G()}],"overflow-y":[{"overflow-y":G()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:A()}],"inset-x":[{"inset-x":A()}],"inset-y":[{"inset-y":A()}],start:[{start:A()}],end:[{end:A()}],top:[{top:A()}],right:[{right:A()}],bottom:[{bottom:A()}],left:[{left:A()}],visibility:["visible","invisible","collapse"],z:[{z:[P,"auto",s,n]}],basis:[{basis:[L,"full","auto",p,...d()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[m,L,"auto","initial","none",n]}],grow:[{grow:["",m,s,n]}],shrink:[{shrink:["",m,s,n]}],order:[{order:[P,"first","last","none",s,n]}],"grid-cols":[{"grid-cols":ae()}],"col-start-end":[{col:ie()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":ae()}],"row-start-end":[{row:ie()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":le()}],"auto-rows":[{"auto-rows":le()}],gap:[{gap:d()}],"gap-x":[{"gap-x":d()}],"gap-y":[{"gap-y":d()}],"justify-content":[{justify:[...Q(),"normal"]}],"justify-items":[{"justify-items":[...j(),"normal"]}],"justify-self":[{"justify-self":["auto",...j()]}],"align-content":[{content:["normal",...Q()]}],"align-items":[{items:[...j(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...j(),{baseline:["","last"]}]}],"place-content":[{"place-content":Q()}],"place-items":[{"place-items":[...j(),"baseline"]}],"place-self":[{"place-self":["auto",...j()]}],p:[{p:d()}],px:[{px:d()}],py:[{py:d()}],ps:[{ps:d()}],pe:[{pe:d()}],pt:[{pt:d()}],pr:[{pr:d()}],pb:[{pb:d()}],pl:[{pl:d()}],m:[{m:M()}],mx:[{mx:M()}],my:[{my:M()}],ms:[{ms:M()}],me:[{me:M()}],mt:[{mt:M()}],mr:[{mr:M()}],mb:[{mb:M()}],ml:[{ml:M()}],"space-x":[{"space-x":d()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":d()}],"space-y-reverse":["space-y-reverse"],size:[{size:N()}],w:[{w:[p,"screen",...N()]}],"min-w":[{"min-w":[p,"screen","none",...N()]}],"max-w":[{"max-w":[p,"screen","none","prose",{screen:[l]},...N()]}],h:[{h:["screen","lh",...N()]}],"min-h":[{"min-h":["screen","lh","none",...N()]}],"max-h":[{"max-h":["screen","lh",...N()]}],"font-size":[{text:["base",r,W,T]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,s,re]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ee,n]}],"font-family":[{font:[lr,n,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[a,s,n]}],"line-clamp":[{"line-clamp":[m,"none",s,re]}],leading:[{leading:[c,...d()]}],"list-image":[{"list-image":["none",s,n]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",s,n]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:i()}],"text-color":[{text:i()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...q(),"wavy"]}],"text-decoration-thickness":[{decoration:[m,"from-font","auto",s,T]}],"text-decoration-color":[{decoration:i()}],"underline-offset":[{"underline-offset":[m,"auto",s,n]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:d()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",s,n]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",s,n]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ce()}],"bg-repeat":[{bg:de()}],"bg-size":[{bg:me()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},P,s,n],radial:["",s,n],conic:[P,s,n]},dr,ir]}],"bg-color":[{bg:i()}],"gradient-from-pos":[{from:Y()}],"gradient-via-pos":[{via:Y()}],"gradient-to-pos":[{to:Y()}],"gradient-from":[{from:i()}],"gradient-via":[{via:i()}],"gradient-to":[{to:i()}],rounded:[{rounded:x()}],"rounded-s":[{"rounded-s":x()}],"rounded-e":[{"rounded-e":x()}],"rounded-t":[{"rounded-t":x()}],"rounded-r":[{"rounded-r":x()}],"rounded-b":[{"rounded-b":x()}],"rounded-l":[{"rounded-l":x()}],"rounded-ss":[{"rounded-ss":x()}],"rounded-se":[{"rounded-se":x()}],"rounded-ee":[{"rounded-ee":x()}],"rounded-es":[{"rounded-es":x()}],"rounded-tl":[{"rounded-tl":x()}],"rounded-tr":[{"rounded-tr":x()}],"rounded-br":[{"rounded-br":x()}],"rounded-bl":[{"rounded-bl":x()}],"border-w":[{border:v()}],"border-w-x":[{"border-x":v()}],"border-w-y":[{"border-y":v()}],"border-w-s":[{"border-s":v()}],"border-w-e":[{"border-e":v()}],"border-w-t":[{"border-t":v()}],"border-w-r":[{"border-r":v()}],"border-w-b":[{"border-b":v()}],"border-w-l":[{"border-l":v()}],"divide-x":[{"divide-x":v()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":v()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...q(),"hidden","none"]}],"divide-style":[{divide:[...q(),"hidden","none"]}],"border-color":[{border:i()}],"border-color-x":[{"border-x":i()}],"border-color-y":[{"border-y":i()}],"border-color-s":[{"border-s":i()}],"border-color-e":[{"border-e":i()}],"border-color-t":[{"border-t":i()}],"border-color-r":[{"border-r":i()}],"border-color-b":[{"border-b":i()}],"border-color-l":[{"border-l":i()}],"divide-color":[{divide:i()}],"outline-style":[{outline:[...q(),"none","hidden"]}],"outline-offset":[{"outline-offset":[m,s,n]}],"outline-w":[{outline:["",m,W,T]}],"outline-color":[{outline:i()}],shadow:[{shadow:["","none",f,D,X]}],"shadow-color":[{shadow:i()}],"inset-shadow":[{"inset-shadow":["none",k,D,X]}],"inset-shadow-color":[{"inset-shadow":i()}],"ring-w":[{ring:v()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:i()}],"ring-offset-w":[{"ring-offset":[m,T]}],"ring-offset-color":[{"ring-offset":i()}],"inset-ring-w":[{"inset-ring":v()}],"inset-ring-color":[{"inset-ring":i()}],"text-shadow":[{"text-shadow":["none",z,D,X]}],"text-shadow-color":[{"text-shadow":i()}],opacity:[{opacity:[m,s,n]}],"mix-blend":[{"mix-blend":[...ue(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ue()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[m]}],"mask-image-linear-from-pos":[{"mask-linear-from":h()}],"mask-image-linear-to-pos":[{"mask-linear-to":h()}],"mask-image-linear-from-color":[{"mask-linear-from":i()}],"mask-image-linear-to-color":[{"mask-linear-to":i()}],"mask-image-t-from-pos":[{"mask-t-from":h()}],"mask-image-t-to-pos":[{"mask-t-to":h()}],"mask-image-t-from-color":[{"mask-t-from":i()}],"mask-image-t-to-color":[{"mask-t-to":i()}],"mask-image-r-from-pos":[{"mask-r-from":h()}],"mask-image-r-to-pos":[{"mask-r-to":h()}],"mask-image-r-from-color":[{"mask-r-from":i()}],"mask-image-r-to-color":[{"mask-r-to":i()}],"mask-image-b-from-pos":[{"mask-b-from":h()}],"mask-image-b-to-pos":[{"mask-b-to":h()}],"mask-image-b-from-color":[{"mask-b-from":i()}],"mask-image-b-to-color":[{"mask-b-to":i()}],"mask-image-l-from-pos":[{"mask-l-from":h()}],"mask-image-l-to-pos":[{"mask-l-to":h()}],"mask-image-l-from-color":[{"mask-l-from":i()}],"mask-image-l-to-color":[{"mask-l-to":i()}],"mask-image-x-from-pos":[{"mask-x-from":h()}],"mask-image-x-to-pos":[{"mask-x-to":h()}],"mask-image-x-from-color":[{"mask-x-from":i()}],"mask-image-x-to-color":[{"mask-x-to":i()}],"mask-image-y-from-pos":[{"mask-y-from":h()}],"mask-image-y-to-pos":[{"mask-y-to":h()}],"mask-image-y-from-color":[{"mask-y-from":i()}],"mask-image-y-to-color":[{"mask-y-to":i()}],"mask-image-radial":[{"mask-radial":[s,n]}],"mask-image-radial-from-pos":[{"mask-radial-from":h()}],"mask-image-radial-to-pos":[{"mask-radial-to":h()}],"mask-image-radial-from-color":[{"mask-radial-from":i()}],"mask-image-radial-to-color":[{"mask-radial-to":i()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":V()}],"mask-image-conic-pos":[{"mask-conic":[m]}],"mask-image-conic-from-pos":[{"mask-conic-from":h()}],"mask-image-conic-to-pos":[{"mask-conic-to":h()}],"mask-image-conic-from-color":[{"mask-conic-from":i()}],"mask-image-conic-to-color":[{"mask-conic-to":i()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ce()}],"mask-repeat":[{mask:de()}],"mask-size":[{mask:me()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",s,n]}],filter:[{filter:["","none",s,n]}],blur:[{blur:pe()}],brightness:[{brightness:[m,s,n]}],contrast:[{contrast:[m,s,n]}],"drop-shadow":[{"drop-shadow":["","none",R,D,X]}],"drop-shadow-color":[{"drop-shadow":i()}],grayscale:[{grayscale:["",m,s,n]}],"hue-rotate":[{"hue-rotate":[m,s,n]}],invert:[{invert:["",m,s,n]}],saturate:[{saturate:[m,s,n]}],sepia:[{sepia:["",m,s,n]}],"backdrop-filter":[{"backdrop-filter":["","none",s,n]}],"backdrop-blur":[{"backdrop-blur":pe()}],"backdrop-brightness":[{"backdrop-brightness":[m,s,n]}],"backdrop-contrast":[{"backdrop-contrast":[m,s,n]}],"backdrop-grayscale":[{"backdrop-grayscale":["",m,s,n]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[m,s,n]}],"backdrop-invert":[{"backdrop-invert":["",m,s,n]}],"backdrop-opacity":[{"backdrop-opacity":[m,s,n]}],"backdrop-saturate":[{"backdrop-saturate":[m,s,n]}],"backdrop-sepia":[{"backdrop-sepia":["",m,s,n]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":d()}],"border-spacing-x":[{"border-spacing-x":d()}],"border-spacing-y":[{"border-spacing-y":d()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",s,n]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[m,"initial",s,n]}],ease:[{ease:["linear","initial",I,s,n]}],delay:[{delay:[m,s,n]}],animate:[{animate:["none",$,s,n]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,s,n]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:H()}],"rotate-x":[{"rotate-x":H()}],"rotate-y":[{"rotate-y":H()}],"rotate-z":[{"rotate-z":H()}],scale:[{scale:J()}],"scale-x":[{"scale-x":J()}],"scale-y":[{"scale-y":J()}],"scale-z":[{"scale-z":J()}],"scale-3d":["scale-3d"],skew:[{skew:Z()}],"skew-x":[{"skew-x":Z()}],"skew-y":[{"skew-y":Z()}],transform:[{transform:[s,n,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:K()}],"translate-x":[{"translate-x":K()}],"translate-y":[{"translate-y":K()}],"translate-z":[{"translate-z":K()}],"translate-none":["translate-none"],accent:[{accent:i()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:i()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",s,n]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":d()}],"scroll-mx":[{"scroll-mx":d()}],"scroll-my":[{"scroll-my":d()}],"scroll-ms":[{"scroll-ms":d()}],"scroll-me":[{"scroll-me":d()}],"scroll-mt":[{"scroll-mt":d()}],"scroll-mr":[{"scroll-mr":d()}],"scroll-mb":[{"scroll-mb":d()}],"scroll-ml":[{"scroll-ml":d()}],"scroll-p":[{"scroll-p":d()}],"scroll-px":[{"scroll-px":d()}],"scroll-py":[{"scroll-py":d()}],"scroll-ps":[{"scroll-ps":d()}],"scroll-pe":[{"scroll-pe":d()}],"scroll-pt":[{"scroll-pt":d()}],"scroll-pr":[{"scroll-pr":d()}],"scroll-pb":[{"scroll-pb":d()}],"scroll-pl":[{"scroll-pl":d()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",s,n]}],fill:[{fill:["none",...i()]}],"stroke-w":[{stroke:[m,W,T,re]}],stroke:[{stroke:["none",...i()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},br=Ke(pr);function fr(...e){return br(ye(e))}const gr=Ve("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-zinc-950 disabled:pointer-events-none disabled:opacity-50 dark:focus-visible:ring-zinc-300",{variants:{variant:{default:"bg-zinc-900 text-zinc-50 shadow hover:bg-zinc-900/90 dark:bg-zinc-50 dark:text-zinc-900 dark:hover:bg-zinc-50/90",destructive:"bg-red-500 text-zinc-50 shadow-sm hover:bg-red-500/90 dark:bg-red-900 dark:text-zinc-50 dark:hover:bg-red-900/90",outline:"border border-zinc-200 bg-white shadow-sm hover:bg-zinc-100 hover:text-zinc-900 dark:border-zinc-800 dark:bg-zinc-950 dark:hover:bg-zinc-800 dark:hover:text-zinc-50",secondary:"bg-zinc-100 text-zinc-900 shadow-sm hover:bg-zinc-100/80 dark:bg-zinc-800 dark:text-zinc-50 dark:hover:bg-zinc-800/80",ghost:"hover:bg-zinc-100 hover:text-zinc-900 dark:hover:bg-zinc-800 dark:hover:text-zinc-50",link:"text-zinc-900 underline-offset-4 hover:underline dark:text-zinc-50"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),hr=Ne.forwardRef(({className:e,variant:t,size:r,...o},a)=>Te.jsx("button",{className:fr(gr({variant:t,size:r,className:e})),ref:a,...o}));hr.displayName="Button";export{hr as B,fr as c};
|
build/client/assets/card-nZ_hrmF6.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{r as s,j as t}from"./chunk-OIYGIGL5-O35CAIo3.js";import{c as d}from"./button-1YLPPCtt.js";const o=s.forwardRef(({className:e,type:a,...r},i)=>t.jsx("input",{type:a,className:d("flex h-9 w-full rounded-md border border-zinc-200 bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-zinc-950 placeholder:text-zinc-500 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-zinc-950 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-800 dark:file:text-zinc-50 dark:placeholder:text-zinc-400 dark:focus-visible:ring-zinc-300",e),ref:i,...r}));o.displayName="Input";const n=s.forwardRef(({className:e,...a},r)=>t.jsx("label",{ref:r,className:d("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",e),...a}));n.displayName="Label";const l=s.forwardRef(({className:e,...a},r)=>t.jsx("div",{ref:r,className:d("rounded-xl border border-zinc-200 bg-white text-zinc-950 shadow dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-50",e),...a}));l.displayName="Card";const c=s.forwardRef(({className:e,...a},r)=>t.jsx("div",{ref:r,className:d("flex flex-col space-y-1.5 p-6",e),...a}));c.displayName="CardHeader";const f=s.forwardRef(({className:e,...a},r)=>t.jsx("h3",{ref:r,className:d("font-semibold leading-none tracking-tight",e),...a}));f.displayName="CardTitle";const p=s.forwardRef(({className:e,...a},r)=>t.jsx("p",{ref:r,className:d("text-sm text-zinc-500 dark:text-zinc-400",e),...a}));p.displayName="CardDescription";const m=s.forwardRef(({className:e,...a},r)=>t.jsx("div",{ref:r,className:d("p-6 pt-0",e),...a}));m.displayName="CardContent";const x=s.forwardRef(({className:e,...a},r)=>t.jsx("div",{ref:r,className:d("flex items-center p-6 pt-0",e),...a}));x.displayName="CardFooter";export{l as C,o as I,n as L,c as a,f as b,p as c,m as d};
|
build/client/assets/chunk-OIYGIGL5-O35CAIo3.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
build/client/assets/entry.client-BqCLKtvt.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
build/client/assets/home-CCZyLKHc.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{w as t,j as e,L as s}from"./chunk-OIYGIGL5-O35CAIo3.js";function i({}){return[{title:"Always Uptime - Home"},{name:"description",content:"Uptime monitoring service"}]}const l=t(function(){return e.jsx("div",{className:"min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800",children:e.jsx("div",{className:"container mx-auto px-4 py-16",children:e.jsxs("div",{className:"max-w-4xl mx-auto text-center",children:[e.jsx("h1",{className:"text-6xl font-bold text-gray-900 dark:text-white mb-6",children:"Always Uptime"}),e.jsx("p",{className:"text-xl text-gray-600 dark:text-gray-300 mb-8",children:"Monitor your services 24/7 with real-time uptime checks every 30 seconds"}),e.jsx("div",{className:"flex justify-center gap-4 mb-16",children:e.jsxs(s,{to:"/login",className:"inline-flex items-center px-8 py-4 bg-indigo-600 hover:bg-indigo-700 text-white font-semibold rounded-lg shadow-lg transition-all transform hover:scale-105",children:["Get Started",e.jsx("svg",{className:"ml-2 w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]})}),e.jsxs("div",{className:"grid md:grid-cols-3 gap-8 mt-16",children:[e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",children:[e.jsx("div",{className:"text-4xl mb-4",children:"⚡"}),e.jsx("h3",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:"Real-time Monitoring"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"Automated checks every 30 seconds to ensure your services are always available"})]}),e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",children:[e.jsx("div",{className:"text-4xl mb-4",children:"📊"}),e.jsx("h3",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:"Detailed Analytics"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"Track uptime percentage, response times, and historical data"})]}),e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",children:[e.jsx("div",{className:"text-4xl mb-4",children:"🚀"}),e.jsx("h3",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:"Simple & Fast"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"Clean dashboard with instant insights into your service health"})]})]})]})})})});export{l as default,i as meta};
|
build/client/assets/login-CtRm5tfE.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{w as a,j as e,L as n}from"./chunk-OIYGIGL5-O35CAIo3.js";import{B as i}from"./button-1YLPPCtt.js";import{C as c,a as l,b as d,c as o,d as m,L as r,I as t}from"./card-nZ_hrmF6.js";function j({}){return[{title:"Login - Always Uptime"},{name:"description",content:"Login to your account"}]}const y=a(function({actionData:s}){return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-zinc-50 dark:bg-zinc-900 px-4",children:e.jsxs(c,{className:"w-full max-w-md",children:[e.jsxs(l,{children:[e.jsx(d,{className:"text-2xl",children:"Welcome back"}),e.jsx(o,{children:"Enter your credentials to access your account"})]}),e.jsxs(m,{children:[e.jsxs("form",{method:"post",className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{htmlFor:"email",children:"Email"}),e.jsx(t,{id:"email",name:"email",type:"email",placeholder:"you@example.com",required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(r,{htmlFor:"password",children:"Password"}),e.jsx(t,{id:"password",name:"password",type:"password",required:!0,minLength:6})]}),s?.error&&e.jsx("p",{className:"text-sm text-red-500 dark:text-red-400",children:s.error}),e.jsx(i,{type:"submit",className:"w-full",children:"Sign in"})]}),e.jsxs("div",{className:"mt-4 text-center text-sm text-zinc-600 dark:text-zinc-400",children:["Don't have an account?"," ",e.jsx(n,{to:"/register",className:"text-zinc-900 dark:text-zinc-50 underline",children:"Sign up"})]})]})]})})});export{y as default,j as meta};
|
build/client/assets/logout-l0sNRNKZ.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
|
build/client/assets/manifest-ceec8a43.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
window.__reactRouterManifest={"entry":{"module":"/assets/entry.client-BqCLKtvt.js","imports":["/assets/chunk-OIYGIGL5-O35CAIo3.js"],"css":[]},"routes":{"root":{"id":"root","path":"","hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":true,"module":"/assets/root-C5Mnt1V9.js","imports":["/assets/chunk-OIYGIGL5-O35CAIo3.js"],"css":["/assets/root-DePtEpHZ.css"]},"routes/home":{"id":"routes/home","parentId":"root","index":true,"hasAction":false,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/home-CCZyLKHc.js","imports":["/assets/chunk-OIYGIGL5-O35CAIo3.js"],"css":[]},"routes/login":{"id":"routes/login","parentId":"root","path":"login","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/login-CtRm5tfE.js","imports":["/assets/chunk-OIYGIGL5-O35CAIo3.js","/assets/button-1YLPPCtt.js","/assets/card-nZ_hrmF6.js"],"css":[]},"routes/register":{"id":"routes/register","parentId":"root","path":"register","hasAction":true,"hasLoader":false,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/register-BLpbiVIx.js","imports":["/assets/chunk-OIYGIGL5-O35CAIo3.js","/assets/button-1YLPPCtt.js","/assets/card-nZ_hrmF6.js"],"css":[]},"routes/logout":{"id":"routes/logout","parentId":"root","path":"logout","hasAction":true,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/logout-l0sNRNKZ.js","imports":[],"css":[]},"routes/uptime":{"id":"routes/uptime","parentId":"root","path":"uptime","hasAction":false,"hasLoader":true,"hasClientAction":false,"hasClientLoader":false,"hasClientMiddleware":false,"hasErrorBoundary":false,"module":"/assets/uptime-BYui58Ub.js","imports":["/assets/chunk-OIYGIGL5-O35CAIo3.js","/assets/button-1YLPPCtt.js"],"css":[]}},"url":"/assets/manifest-ceec8a43.js","version":"ceec8a43"};
|
build/client/assets/register-BLpbiVIx.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{w as r,j as e,L as n}from"./chunk-OIYGIGL5-O35CAIo3.js";import{B as i}from"./button-1YLPPCtt.js";import{C as c,a as l,b as d,c as m,d as o,L as t,I as a}from"./card-nZ_hrmF6.js";function j({}){return[{title:"Register - Always Uptime"},{name:"description",content:"Create a new account"}]}const w=r(function({actionData:s}){return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-zinc-50 dark:bg-zinc-900 px-4",children:e.jsxs(c,{className:"w-full max-w-md",children:[e.jsxs(l,{children:[e.jsx(d,{className:"text-2xl",children:"Create an account"}),e.jsx(m,{children:"Enter your details to get started"})]}),e.jsxs(o,{children:[e.jsxs("form",{method:"post",className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{htmlFor:"email",children:"Email"}),e.jsx(a,{id:"email",name:"email",type:"email",placeholder:"you@example.com",required:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(t,{htmlFor:"password",children:"Password"}),e.jsx(a,{id:"password",name:"password",type:"password",required:!0,minLength:6}),e.jsx("p",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:"Must be at least 6 characters"})]}),s?.error&&e.jsx("p",{className:"text-sm text-red-500 dark:text-red-400",children:s.error}),e.jsx(i,{type:"submit",className:"w-full",children:"Create account"})]}),e.jsxs("div",{className:"mt-4 text-center text-sm text-zinc-600 dark:text-zinc-400",children:["Already have an account?"," ",e.jsx(n,{to:"/login",className:"text-zinc-900 dark:text-zinc-50 underline",children:"Sign in"})]})]})]})})});export{w as default,j as meta};
|
build/client/assets/root-C5Mnt1V9.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{w as a,a as i,j as s,M as c,b as l,S as p,c as u,O as h,i as d}from"./chunk-OIYGIGL5-O35CAIo3.js";const m=()=>[{rel:"preconnect",href:"https://fonts.googleapis.com"},{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"},{rel:"stylesheet",href:"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"}];function f({children:e}){return s.jsxs("html",{lang:"en",children:[s.jsxs("head",{children:[s.jsx("meta",{charSet:"utf-8"}),s.jsx("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),s.jsx(c,{}),s.jsx(l,{})]}),s.jsxs("body",{children:[e,s.jsx(p,{}),s.jsx(u,{})]})]})}const j=a(function(){return s.jsx(h,{})}),g=i(function({error:t}){let n="Oops!",o="An unexpected error occurred.",r;return d(t)&&(n=t.status===404?"404":"Error",o=t.status===404?"The requested page could not be found.":t.statusText||o),s.jsxs("main",{className:"pt-16 p-4 container mx-auto",children:[s.jsx("h1",{children:n}),s.jsx("p",{children:o}),r]})});export{g as ErrorBoundary,f as Layout,j as default,m as links};
|
build/client/assets/root-DePtEpHZ.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:"Inter",ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-50:oklch(97% .014 254.604);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-normal:1.5;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-3xl:1.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-16{margin-top:calc(var(--spacing)*16)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-16{margin-bottom:calc(var(--spacing)*16)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-5{height:calc(var(--spacing)*5)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-16{height:calc(var(--spacing)*16)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-5{width:calc(var(--spacing)*5)}.w-9{width:calc(var(--spacing)*9)}.w-\[500px\]{width:500px}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[100vw\]{max-width:100vw}.max-w-\[300px\]{max-width:300px}.max-w-md{max-width:var(--container-md)}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-8{gap:calc(var(--spacing)*8)}.gap-9{gap:calc(var(--spacing)*9)}.gap-16{gap:calc(var(--spacing)*16)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.border-zinc-200{border-color:var(--color-zinc-200)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from:var(--color-blue-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-100{--tw-gradient-to:var(--color-indigo-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.stroke-gray-600{stroke:var(--color-gray-600)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-16{padding-top:calc(var(--spacing)*16)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.text-blue-700{color:var(--color-blue-700)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-600{color:var(--color-green-600)}.text-green-800{color:var(--color-green-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-zinc-50{color:var(--color-zinc-50)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-900{color:var(--color-zinc-900)}.text-zinc-950{color:var(--color-zinc-950)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.group-hover\:stroke-current:is(:where(.group):hover *){stroke:currentColor}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-zinc-950::file-selector-button{color:var(--color-zinc-950)}.placeholder\:text-zinc-500::placeholder{color:var(--color-zinc-500)}@media(hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-red-500\/90:hover{background-color:#fb2c36e6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/90:hover{background-color:color-mix(in oklab,var(--color-red-500)90%,transparent)}}.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\:bg-zinc-100\/80:hover{background-color:#f4f4f5cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-zinc-100\/80:hover{background-color:color-mix(in oklab,var(--color-zinc-100)80%,transparent)}}.hover\:bg-zinc-900\/90:hover{background-color:#18181be6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-zinc-900\/90:hover{background-color:color-mix(in oklab,var(--color-zinc-900)90%,transparent)}}.hover\:text-zinc-900:hover{color:var(--color-zinc-900)}.hover\:underline:hover{text-decoration-line:underline}}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-zinc-950:focus-visible{--tw-ring-color:var(--color-zinc-950)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:block{display:block}.dark\:hidden{display:none}.dark\:border-gray-700{border-color:var(--color-gray-700)}.dark\:border-zinc-800{border-color:var(--color-zinc-800)}.dark\:bg-gray-700{background-color:var(--color-gray-700)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:bg-green-900{background-color:var(--color-green-900)}.dark\:bg-red-900{background-color:var(--color-red-900)}.dark\:bg-zinc-50{background-color:var(--color-zinc-50)}.dark\:bg-zinc-800{background-color:var(--color-zinc-800)}.dark\:bg-zinc-900{background-color:var(--color-zinc-900)}.dark\:bg-zinc-950{background-color:var(--color-zinc-950)}.dark\:from-gray-900{--tw-gradient-from:var(--color-gray-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:to-gray-800{--tw-gradient-to:var(--color-gray-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:stroke-gray-300{stroke:var(--color-gray-300)}.dark\:text-blue-500{color:var(--color-blue-500)}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-green-200{color:var(--color-green-200)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-red-200{color:var(--color-red-200)}.dark\:text-red-400{color:var(--color-red-400)}.dark\:text-white{color:var(--color-white)}.dark\:text-zinc-50{color:var(--color-zinc-50)}.dark\:text-zinc-400{color:var(--color-zinc-400)}.dark\:text-zinc-900{color:var(--color-zinc-900)}.dark\:file\:text-zinc-50::file-selector-button{color:var(--color-zinc-50)}.dark\:placeholder\:text-zinc-400::placeholder{color:var(--color-zinc-400)}@media(hover:hover){.dark\:hover\:bg-red-900\/90:hover{background-color:#82181ae6}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-red-900\/90:hover{background-color:color-mix(in oklab,var(--color-red-900)90%,transparent)}}.dark\:hover\:bg-zinc-50\/90:hover{background-color:#fafafae6}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-zinc-50\/90:hover{background-color:color-mix(in oklab,var(--color-zinc-50)90%,transparent)}}.dark\:hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.dark\:hover\:bg-zinc-800\/80:hover{background-color:#27272acc}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-zinc-800\/80:hover{background-color:color-mix(in oklab,var(--color-zinc-800)80%,transparent)}}.dark\:hover\:text-zinc-50:hover{color:var(--color-zinc-50)}}.dark\:focus-visible\:ring-zinc-300:focus-visible{--tw-ring-color:var(--color-zinc-300)}}}html,body{background-color:var(--color-white)}@media(prefers-color-scheme:dark){html,body{background-color:var(--color-gray-950);color-scheme:dark}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
build/client/assets/server-build-DePtEpHZ.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:"Inter",ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-50:oklch(97% .014 254.604);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--leading-normal:1.5;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-3xl:1.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-16{margin-top:calc(var(--spacing)*16)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-16{margin-bottom:calc(var(--spacing)*16)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.h-5{height:calc(var(--spacing)*5)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-16{height:calc(var(--spacing)*16)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-5{width:calc(var(--spacing)*5)}.w-9{width:calc(var(--spacing)*9)}.w-\[500px\]{width:500px}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[100vw\]{max-width:100vw}.max-w-\[300px\]{max-width:300px}.max-w-md{max-width:var(--container-md)}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-8{gap:calc(var(--spacing)*8)}.gap-9{gap:calc(var(--spacing)*9)}.gap-16{gap:calc(var(--spacing)*16)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.border-zinc-200{border-color:var(--color-zinc-200)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from:var(--color-blue-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-indigo-100{--tw-gradient-to:var(--color-indigo-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.stroke-gray-600{stroke:var(--color-gray-600)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-16{padding-top:calc(var(--spacing)*16)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-nowrap{white-space:nowrap}.text-blue-700{color:var(--color-blue-700)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-600{color:var(--color-green-600)}.text-green-800{color:var(--color-green-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-zinc-50{color:var(--color-zinc-50)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-900{color:var(--color-zinc-900)}.text-zinc-950{color:var(--color-zinc-950)}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.group-hover\:stroke-current:is(:where(.group):hover *){stroke:currentColor}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-zinc-950::file-selector-button{color:var(--color-zinc-950)}.placeholder\:text-zinc-500::placeholder{color:var(--color-zinc-500)}@media(hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-red-500\/90:hover{background-color:#fb2c36e6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/90:hover{background-color:color-mix(in oklab,var(--color-red-500)90%,transparent)}}.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\:bg-zinc-100\/80:hover{background-color:#f4f4f5cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-zinc-100\/80:hover{background-color:color-mix(in oklab,var(--color-zinc-100)80%,transparent)}}.hover\:bg-zinc-900\/90:hover{background-color:#18181be6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-zinc-900\/90:hover{background-color:color-mix(in oklab,var(--color-zinc-900)90%,transparent)}}.hover\:text-zinc-900:hover{color:var(--color-zinc-900)}.hover\:underline:hover{text-decoration-line:underline}}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-zinc-950:focus-visible{--tw-ring-color:var(--color-zinc-950)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:block{display:block}.dark\:hidden{display:none}.dark\:border-gray-700{border-color:var(--color-gray-700)}.dark\:border-zinc-800{border-color:var(--color-zinc-800)}.dark\:bg-gray-700{background-color:var(--color-gray-700)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:bg-green-900{background-color:var(--color-green-900)}.dark\:bg-red-900{background-color:var(--color-red-900)}.dark\:bg-zinc-50{background-color:var(--color-zinc-50)}.dark\:bg-zinc-800{background-color:var(--color-zinc-800)}.dark\:bg-zinc-900{background-color:var(--color-zinc-900)}.dark\:bg-zinc-950{background-color:var(--color-zinc-950)}.dark\:from-gray-900{--tw-gradient-from:var(--color-gray-900);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:to-gray-800{--tw-gradient-to:var(--color-gray-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.dark\:stroke-gray-300{stroke:var(--color-gray-300)}.dark\:text-blue-500{color:var(--color-blue-500)}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-green-200{color:var(--color-green-200)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-red-200{color:var(--color-red-200)}.dark\:text-red-400{color:var(--color-red-400)}.dark\:text-white{color:var(--color-white)}.dark\:text-zinc-50{color:var(--color-zinc-50)}.dark\:text-zinc-400{color:var(--color-zinc-400)}.dark\:text-zinc-900{color:var(--color-zinc-900)}.dark\:file\:text-zinc-50::file-selector-button{color:var(--color-zinc-50)}.dark\:placeholder\:text-zinc-400::placeholder{color:var(--color-zinc-400)}@media(hover:hover){.dark\:hover\:bg-red-900\/90:hover{background-color:#82181ae6}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-red-900\/90:hover{background-color:color-mix(in oklab,var(--color-red-900)90%,transparent)}}.dark\:hover\:bg-zinc-50\/90:hover{background-color:#fafafae6}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-zinc-50\/90:hover{background-color:color-mix(in oklab,var(--color-zinc-50)90%,transparent)}}.dark\:hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.dark\:hover\:bg-zinc-800\/80:hover{background-color:#27272acc}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-zinc-800\/80:hover{background-color:color-mix(in oklab,var(--color-zinc-800)80%,transparent)}}.dark\:hover\:text-zinc-50:hover{color:var(--color-zinc-50)}}.dark\:focus-visible\:ring-zinc-300:focus-visible{--tw-ring-color:var(--color-zinc-300)}}}html,body{background-color:var(--color-white)}@media(prefers-color-scheme:dark){html,body{background-color:var(--color-gray-950);color-scheme:dark}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
build/client/assets/uptime-BYui58Ub.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
import{w as c,u as n,r as x,j as e,F as m}from"./chunk-OIYGIGL5-O35CAIo3.js";import{B as o}from"./button-1YLPPCtt.js";function p({}){return[{title:"Always Uptime - Monitor Your Services"},{name:"description",content:"Real-time uptime monitoring dashboard"}]}const u=c(function({loaderData:d}){const{stats:r,user:l}=d,a=n();return x.useEffect(()=>{const s=setInterval(()=>{a.revalidate()},3e4);return()=>clearInterval(s)},[a]),e.jsx("div",{className:"min-h-screen bg-gray-50 dark:bg-gray-900",children:e.jsxs("div",{className:"container mx-auto px-4 py-8",children:[e.jsxs("header",{className:"mb-8 flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-4xl font-bold text-gray-900 dark:text-white mb-2",children:"Always Uptime"}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"Monitoring your services every 30 seconds"})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:l.email}),e.jsx(m,{method:"post",action:"/logout",children:e.jsx(o,{variant:"outline",size:"sm",type:"submit",children:"Logout"})})]})]}),r.length===0?e.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow p-8 text-center",children:e.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:"No uptime data available yet. Checks will appear here shortly..."})}):e.jsx("div",{className:"space-y-6",children:r.map(s=>e.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-lg overflow-hidden",children:e.jsxs("div",{className:"p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-1",children:s.url}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:`inline-flex items-center px-3 py-1 rounded-full text-sm font-medium ${s.lastCheck?.status==="up"?"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200":"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"}`,children:s.lastCheck?.status==="up"?"🟢 Online":"🔴 Offline"}),s.lastCheck?.statusCode&&e.jsxs("span",{className:"text-sm text-gray-500 dark:text-gray-400",children:["Status: ",s.lastCheck.statusCode]})]})]}),e.jsxs("div",{className:"text-right",children:[e.jsxs("div",{className:"text-3xl font-bold text-gray-900 dark:text-white",children:[s.uptime.toFixed(2),"%"]}),e.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400",children:"Uptime"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6",children:[e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4",children:[e.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400 mb-1",children:"Total Checks"}),e.jsx("div",{className:"text-2xl font-semibold text-gray-900 dark:text-white",children:s.totalChecks})]}),e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4",children:[e.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400 mb-1",children:"Successful"}),e.jsx("div",{className:"text-2xl font-semibold text-green-600 dark:text-green-400",children:s.successfulChecks})]}),e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4",children:[e.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400 mb-1",children:"Failed"}),e.jsx("div",{className:"text-2xl font-semibold text-red-600 dark:text-red-400",children:s.failedChecks})]}),e.jsxs("div",{className:"bg-gray-50 dark:bg-gray-700 rounded-lg p-4",children:[e.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400 mb-1",children:"Avg Response"}),e.jsxs("div",{className:"text-2xl font-semibold text-gray-900 dark:text-white",children:[Math.round(s.averageResponseTime),"ms"]})]})]}),s.lastCheck&&e.jsxs("div",{className:"border-t border-gray-200 dark:border-gray-700 pt-4",children:[e.jsx("h3",{className:"text-sm font-semibold text-gray-700 dark:text-gray-300 mb-2",children:"Last Check"}),e.jsxs("div",{className:"text-sm text-gray-600 dark:text-gray-400",children:[e.jsxs("p",{children:["Time: ",new Date(s.lastCheck.timestamp).toLocaleString()]}),s.lastCheck.responseTime&&e.jsxs("p",{children:["Response Time: ",s.lastCheck.responseTime,"ms"]}),s.lastCheck.error&&e.jsxs("p",{className:"text-red-600 dark:text-red-400",children:["Error: ",s.lastCheck.error]})]})]}),s.checks.length>0&&e.jsxs("div",{className:"border-t border-gray-200 dark:border-gray-700 pt-4 mt-4",children:[e.jsxs("h3",{className:"text-sm font-semibold text-gray-700 dark:text-gray-300 mb-3",children:["Recent Checks (Last ",Math.min(s.checks.length,20),")"]}),e.jsx("div",{className:"flex gap-1 overflow-x-auto pb-2",children:s.checks.slice(-20).reverse().map((t,i)=>e.jsx("div",{className:`w-3 h-16 rounded ${t.status==="up"?"bg-green-500":"bg-red-500"}`,title:`${new Date(t.timestamp).toLocaleString()} - ${t.status} (${t.responseTime}ms)`},i))})]})]})},s.url))}),e.jsx("footer",{className:"mt-8 text-center text-sm text-gray-500 dark:text-gray-400",children:"Auto-refreshing every 30 seconds"})]})})});export{u as default,p as meta};
|
build/client/favicon.ico
ADDED
|
|
build/server/assets/cron.server-BkSBgtlB.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import cron from "node-cron";
|
| 2 |
+
import { c as checkUptime, s as saveUptimeCheck } from "./server-build-BAW0Iiqy.js";
|
| 3 |
+
import "react/jsx-runtime";
|
| 4 |
+
import "node:stream";
|
| 5 |
+
import "@react-router/node";
|
| 6 |
+
import "react-router";
|
| 7 |
+
import "isbot";
|
| 8 |
+
import "react-dom/server";
|
| 9 |
+
import "lucia";
|
| 10 |
+
import "@lucia-auth/adapter-drizzle";
|
| 11 |
+
import "drizzle-orm/libsql";
|
| 12 |
+
import "@libsql/client";
|
| 13 |
+
import "drizzle-orm/sqlite-core";
|
| 14 |
+
import "drizzle-orm";
|
| 15 |
+
import "@node-rs/argon2";
|
| 16 |
+
import "react";
|
| 17 |
+
import "class-variance-authority";
|
| 18 |
+
import "clsx";
|
| 19 |
+
import "tailwind-merge";
|
| 20 |
+
const monitoredUrls = [
|
| 21 |
+
"https://example.com/"
|
| 22 |
+
];
|
| 23 |
+
let cronJob = null;
|
| 24 |
+
function startCronJob() {
|
| 25 |
+
if (cronJob) {
|
| 26 |
+
console.log("Cron job already running");
|
| 27 |
+
return;
|
| 28 |
+
}
|
| 29 |
+
cronJob = cron.schedule("*/30 * * * * *", async () => {
|
| 30 |
+
console.log("Running uptime checks...");
|
| 31 |
+
for (const url of monitoredUrls) {
|
| 32 |
+
try {
|
| 33 |
+
const result = await checkUptime(url);
|
| 34 |
+
saveUptimeCheck(result);
|
| 35 |
+
console.log(`Checked ${url}: ${result.status} (${result.responseTime}ms)`);
|
| 36 |
+
} catch (error) {
|
| 37 |
+
console.error(`Error checking ${url}:`, error);
|
| 38 |
+
}
|
| 39 |
+
}
|
| 40 |
+
});
|
| 41 |
+
console.log("Cron job started - checking every 30 seconds");
|
| 42 |
+
}
|
| 43 |
+
export {
|
| 44 |
+
startCronJob
|
| 45 |
+
};
|
build/server/assets/server-build-BAW0Iiqy.js
ADDED
|
@@ -0,0 +1,990 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { jsx, jsxs } from "react/jsx-runtime";
|
| 2 |
+
import { PassThrough } from "node:stream";
|
| 3 |
+
import { createReadableStreamFromReadable } from "@react-router/node";
|
| 4 |
+
import { ServerRouter, UNSAFE_withComponentProps, Outlet, UNSAFE_withErrorBoundaryProps, isRouteErrorResponse, Meta, Links, ScrollRestoration, Scripts, Link, data, redirect, useRevalidator, Form } from "react-router";
|
| 5 |
+
import { isbot } from "isbot";
|
| 6 |
+
import { renderToPipeableStream } from "react-dom/server";
|
| 7 |
+
import { Lucia, generateId } from "lucia";
|
| 8 |
+
import { DrizzleSQLiteAdapter } from "@lucia-auth/adapter-drizzle";
|
| 9 |
+
import { drizzle } from "drizzle-orm/libsql";
|
| 10 |
+
import { createClient } from "@libsql/client";
|
| 11 |
+
import { sqliteTable, integer, text } from "drizzle-orm/sqlite-core";
|
| 12 |
+
import { eq } from "drizzle-orm";
|
| 13 |
+
import { verify, hash } from "@node-rs/argon2";
|
| 14 |
+
import * as React from "react";
|
| 15 |
+
import { useEffect } from "react";
|
| 16 |
+
import { cva } from "class-variance-authority";
|
| 17 |
+
import { clsx } from "clsx";
|
| 18 |
+
import { twMerge } from "tailwind-merge";
|
| 19 |
+
const streamTimeout = 5e3;
|
| 20 |
+
function handleRequest(request, responseStatusCode, responseHeaders, routerContext, loadContext) {
|
| 21 |
+
return new Promise((resolve, reject) => {
|
| 22 |
+
let shellRendered = false;
|
| 23 |
+
let userAgent = request.headers.get("user-agent");
|
| 24 |
+
let readyOption = userAgent && isbot(userAgent) || routerContext.isSpaMode ? "onAllReady" : "onShellReady";
|
| 25 |
+
let timeoutId = setTimeout(
|
| 26 |
+
() => abort(),
|
| 27 |
+
streamTimeout + 1e3
|
| 28 |
+
);
|
| 29 |
+
const { pipe, abort } = renderToPipeableStream(
|
| 30 |
+
/* @__PURE__ */ jsx(ServerRouter, { context: routerContext, url: request.url }),
|
| 31 |
+
{
|
| 32 |
+
[readyOption]() {
|
| 33 |
+
shellRendered = true;
|
| 34 |
+
const body = new PassThrough({
|
| 35 |
+
final(callback) {
|
| 36 |
+
clearTimeout(timeoutId);
|
| 37 |
+
timeoutId = void 0;
|
| 38 |
+
callback();
|
| 39 |
+
}
|
| 40 |
+
});
|
| 41 |
+
const stream = createReadableStreamFromReadable(body);
|
| 42 |
+
responseHeaders.set("Content-Type", "text/html");
|
| 43 |
+
pipe(body);
|
| 44 |
+
resolve(
|
| 45 |
+
new Response(stream, {
|
| 46 |
+
headers: responseHeaders,
|
| 47 |
+
status: responseStatusCode
|
| 48 |
+
})
|
| 49 |
+
);
|
| 50 |
+
},
|
| 51 |
+
onShellError(error) {
|
| 52 |
+
reject(error);
|
| 53 |
+
},
|
| 54 |
+
onError(error) {
|
| 55 |
+
responseStatusCode = 500;
|
| 56 |
+
if (shellRendered) {
|
| 57 |
+
console.error(error);
|
| 58 |
+
}
|
| 59 |
+
}
|
| 60 |
+
}
|
| 61 |
+
);
|
| 62 |
+
});
|
| 63 |
+
}
|
| 64 |
+
const entryServer = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
| 65 |
+
__proto__: null,
|
| 66 |
+
default: handleRequest,
|
| 67 |
+
streamTimeout
|
| 68 |
+
}, Symbol.toStringTag, { value: "Module" }));
|
| 69 |
+
const links = () => [{
|
| 70 |
+
rel: "preconnect",
|
| 71 |
+
href: "https://fonts.googleapis.com"
|
| 72 |
+
}, {
|
| 73 |
+
rel: "preconnect",
|
| 74 |
+
href: "https://fonts.gstatic.com",
|
| 75 |
+
crossOrigin: "anonymous"
|
| 76 |
+
}, {
|
| 77 |
+
rel: "stylesheet",
|
| 78 |
+
href: "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap"
|
| 79 |
+
}];
|
| 80 |
+
function Layout({
|
| 81 |
+
children
|
| 82 |
+
}) {
|
| 83 |
+
return /* @__PURE__ */ jsxs("html", {
|
| 84 |
+
lang: "en",
|
| 85 |
+
children: [/* @__PURE__ */ jsxs("head", {
|
| 86 |
+
children: [/* @__PURE__ */ jsx("meta", {
|
| 87 |
+
charSet: "utf-8"
|
| 88 |
+
}), /* @__PURE__ */ jsx("meta", {
|
| 89 |
+
name: "viewport",
|
| 90 |
+
content: "width=device-width, initial-scale=1"
|
| 91 |
+
}), /* @__PURE__ */ jsx(Meta, {}), /* @__PURE__ */ jsx(Links, {})]
|
| 92 |
+
}), /* @__PURE__ */ jsxs("body", {
|
| 93 |
+
children: [children, /* @__PURE__ */ jsx(ScrollRestoration, {}), /* @__PURE__ */ jsx(Scripts, {})]
|
| 94 |
+
})]
|
| 95 |
+
});
|
| 96 |
+
}
|
| 97 |
+
const root = UNSAFE_withComponentProps(function App() {
|
| 98 |
+
return /* @__PURE__ */ jsx(Outlet, {});
|
| 99 |
+
});
|
| 100 |
+
const ErrorBoundary = UNSAFE_withErrorBoundaryProps(function ErrorBoundary2({
|
| 101 |
+
error
|
| 102 |
+
}) {
|
| 103 |
+
let message = "Oops!";
|
| 104 |
+
let details = "An unexpected error occurred.";
|
| 105 |
+
let stack;
|
| 106 |
+
if (isRouteErrorResponse(error)) {
|
| 107 |
+
message = error.status === 404 ? "404" : "Error";
|
| 108 |
+
details = error.status === 404 ? "The requested page could not be found." : error.statusText || details;
|
| 109 |
+
}
|
| 110 |
+
return /* @__PURE__ */ jsxs("main", {
|
| 111 |
+
className: "pt-16 p-4 container mx-auto",
|
| 112 |
+
children: [/* @__PURE__ */ jsx("h1", {
|
| 113 |
+
children: message
|
| 114 |
+
}), /* @__PURE__ */ jsx("p", {
|
| 115 |
+
children: details
|
| 116 |
+
}), stack]
|
| 117 |
+
});
|
| 118 |
+
});
|
| 119 |
+
const route0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
| 120 |
+
__proto__: null,
|
| 121 |
+
ErrorBoundary,
|
| 122 |
+
Layout,
|
| 123 |
+
default: root,
|
| 124 |
+
links
|
| 125 |
+
}, Symbol.toStringTag, { value: "Module" }));
|
| 126 |
+
function meta$3({}) {
|
| 127 |
+
return [{
|
| 128 |
+
title: "Always Uptime - Home"
|
| 129 |
+
}, {
|
| 130 |
+
name: "description",
|
| 131 |
+
content: "Uptime monitoring service"
|
| 132 |
+
}];
|
| 133 |
+
}
|
| 134 |
+
const home = UNSAFE_withComponentProps(function Home() {
|
| 135 |
+
return /* @__PURE__ */ jsx("div", {
|
| 136 |
+
className: "min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800",
|
| 137 |
+
children: /* @__PURE__ */ jsx("div", {
|
| 138 |
+
className: "container mx-auto px-4 py-16",
|
| 139 |
+
children: /* @__PURE__ */ jsxs("div", {
|
| 140 |
+
className: "max-w-4xl mx-auto text-center",
|
| 141 |
+
children: [/* @__PURE__ */ jsx("h1", {
|
| 142 |
+
className: "text-6xl font-bold text-gray-900 dark:text-white mb-6",
|
| 143 |
+
children: "Always Uptime"
|
| 144 |
+
}), /* @__PURE__ */ jsx("p", {
|
| 145 |
+
className: "text-xl text-gray-600 dark:text-gray-300 mb-8",
|
| 146 |
+
children: "Monitor your services 24/7 with real-time uptime checks every 30 seconds"
|
| 147 |
+
}), /* @__PURE__ */ jsx("div", {
|
| 148 |
+
className: "flex justify-center gap-4 mb-16",
|
| 149 |
+
children: /* @__PURE__ */ jsxs(Link, {
|
| 150 |
+
to: "/login",
|
| 151 |
+
className: "inline-flex items-center px-8 py-4 bg-indigo-600 hover:bg-indigo-700 text-white font-semibold rounded-lg shadow-lg transition-all transform hover:scale-105",
|
| 152 |
+
children: ["Get Started", /* @__PURE__ */ jsx("svg", {
|
| 153 |
+
className: "ml-2 w-5 h-5",
|
| 154 |
+
fill: "none",
|
| 155 |
+
stroke: "currentColor",
|
| 156 |
+
viewBox: "0 0 24 24",
|
| 157 |
+
children: /* @__PURE__ */ jsx("path", {
|
| 158 |
+
strokeLinecap: "round",
|
| 159 |
+
strokeLinejoin: "round",
|
| 160 |
+
strokeWidth: 2,
|
| 161 |
+
d: "M9 5l7 7-7 7"
|
| 162 |
+
})
|
| 163 |
+
})]
|
| 164 |
+
})
|
| 165 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 166 |
+
className: "grid md:grid-cols-3 gap-8 mt-16",
|
| 167 |
+
children: [/* @__PURE__ */ jsxs("div", {
|
| 168 |
+
className: "bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",
|
| 169 |
+
children: [/* @__PURE__ */ jsx("div", {
|
| 170 |
+
className: "text-4xl mb-4",
|
| 171 |
+
children: "⚡"
|
| 172 |
+
}), /* @__PURE__ */ jsx("h3", {
|
| 173 |
+
className: "text-xl font-semibold text-gray-900 dark:text-white mb-2",
|
| 174 |
+
children: "Real-time Monitoring"
|
| 175 |
+
}), /* @__PURE__ */ jsx("p", {
|
| 176 |
+
className: "text-gray-600 dark:text-gray-400",
|
| 177 |
+
children: "Automated checks every 30 seconds to ensure your services are always available"
|
| 178 |
+
})]
|
| 179 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 180 |
+
className: "bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",
|
| 181 |
+
children: [/* @__PURE__ */ jsx("div", {
|
| 182 |
+
className: "text-4xl mb-4",
|
| 183 |
+
children: "📊"
|
| 184 |
+
}), /* @__PURE__ */ jsx("h3", {
|
| 185 |
+
className: "text-xl font-semibold text-gray-900 dark:text-white mb-2",
|
| 186 |
+
children: "Detailed Analytics"
|
| 187 |
+
}), /* @__PURE__ */ jsx("p", {
|
| 188 |
+
className: "text-gray-600 dark:text-gray-400",
|
| 189 |
+
children: "Track uptime percentage, response times, and historical data"
|
| 190 |
+
})]
|
| 191 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 192 |
+
className: "bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",
|
| 193 |
+
children: [/* @__PURE__ */ jsx("div", {
|
| 194 |
+
className: "text-4xl mb-4",
|
| 195 |
+
children: "🚀"
|
| 196 |
+
}), /* @__PURE__ */ jsx("h3", {
|
| 197 |
+
className: "text-xl font-semibold text-gray-900 dark:text-white mb-2",
|
| 198 |
+
children: "Simple & Fast"
|
| 199 |
+
}), /* @__PURE__ */ jsx("p", {
|
| 200 |
+
className: "text-gray-600 dark:text-gray-400",
|
| 201 |
+
children: "Clean dashboard with instant insights into your service health"
|
| 202 |
+
})]
|
| 203 |
+
})]
|
| 204 |
+
})]
|
| 205 |
+
})
|
| 206 |
+
})
|
| 207 |
+
});
|
| 208 |
+
});
|
| 209 |
+
const route1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
| 210 |
+
__proto__: null,
|
| 211 |
+
default: home,
|
| 212 |
+
meta: meta$3
|
| 213 |
+
}, Symbol.toStringTag, { value: "Module" }));
|
| 214 |
+
const user = sqliteTable("user", {
|
| 215 |
+
id: text("id").primaryKey(),
|
| 216 |
+
email: text("email").notNull().unique(),
|
| 217 |
+
hashedPassword: text("hashed_password").notNull(),
|
| 218 |
+
createdAt: integer("created_at").notNull()
|
| 219 |
+
});
|
| 220 |
+
const session = sqliteTable("session", {
|
| 221 |
+
id: text("id").primaryKey(),
|
| 222 |
+
userId: text("user_id").notNull().references(() => user.id),
|
| 223 |
+
expiresAt: integer("expires_at").notNull()
|
| 224 |
+
});
|
| 225 |
+
const uptimeMonitor = sqliteTable("uptime_monitor", {
|
| 226 |
+
id: text("id").primaryKey(),
|
| 227 |
+
userId: text("user_id").notNull().references(() => user.id),
|
| 228 |
+
url: text("url").notNull(),
|
| 229 |
+
name: text("name").notNull(),
|
| 230 |
+
interval: integer("interval").notNull().default(30),
|
| 231 |
+
// seconds
|
| 232 |
+
createdAt: integer("created_at").notNull()
|
| 233 |
+
});
|
| 234 |
+
const uptimeCheck = sqliteTable("uptime_check", {
|
| 235 |
+
id: text("id").primaryKey(),
|
| 236 |
+
monitorId: text("monitor_id").notNull().references(() => uptimeMonitor.id),
|
| 237 |
+
status: text("status", { enum: ["up", "down"] }).notNull(),
|
| 238 |
+
statusCode: integer("status_code"),
|
| 239 |
+
responseTime: integer("response_time"),
|
| 240 |
+
error: text("error"),
|
| 241 |
+
timestamp: integer("timestamp").notNull()
|
| 242 |
+
});
|
| 243 |
+
const schema = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
| 244 |
+
__proto__: null,
|
| 245 |
+
session,
|
| 246 |
+
uptimeCheck,
|
| 247 |
+
uptimeMonitor,
|
| 248 |
+
user
|
| 249 |
+
}, Symbol.toStringTag, { value: "Module" }));
|
| 250 |
+
const client = createClient({
|
| 251 |
+
url: process.env.TURSO_DATABASE_URL,
|
| 252 |
+
authToken: process.env.TURSO_AUTH_TOKEN
|
| 253 |
+
});
|
| 254 |
+
const db = drizzle(client, { schema });
|
| 255 |
+
const adapter = new DrizzleSQLiteAdapter(db, session, user);
|
| 256 |
+
const lucia = new Lucia(adapter, {
|
| 257 |
+
sessionCookie: {
|
| 258 |
+
attributes: {
|
| 259 |
+
secure: process.env.NODE_ENV === "production"
|
| 260 |
+
}
|
| 261 |
+
},
|
| 262 |
+
getUserAttributes: (attributes) => {
|
| 263 |
+
return {
|
| 264 |
+
email: attributes.email
|
| 265 |
+
};
|
| 266 |
+
}
|
| 267 |
+
});
|
| 268 |
+
function cn(...inputs) {
|
| 269 |
+
return twMerge(clsx(inputs));
|
| 270 |
+
}
|
| 271 |
+
const buttonVariants = cva(
|
| 272 |
+
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-zinc-950 disabled:pointer-events-none disabled:opacity-50 dark:focus-visible:ring-zinc-300",
|
| 273 |
+
{
|
| 274 |
+
variants: {
|
| 275 |
+
variant: {
|
| 276 |
+
default: "bg-zinc-900 text-zinc-50 shadow hover:bg-zinc-900/90 dark:bg-zinc-50 dark:text-zinc-900 dark:hover:bg-zinc-50/90",
|
| 277 |
+
destructive: "bg-red-500 text-zinc-50 shadow-sm hover:bg-red-500/90 dark:bg-red-900 dark:text-zinc-50 dark:hover:bg-red-900/90",
|
| 278 |
+
outline: "border border-zinc-200 bg-white shadow-sm hover:bg-zinc-100 hover:text-zinc-900 dark:border-zinc-800 dark:bg-zinc-950 dark:hover:bg-zinc-800 dark:hover:text-zinc-50",
|
| 279 |
+
secondary: "bg-zinc-100 text-zinc-900 shadow-sm hover:bg-zinc-100/80 dark:bg-zinc-800 dark:text-zinc-50 dark:hover:bg-zinc-800/80",
|
| 280 |
+
ghost: "hover:bg-zinc-100 hover:text-zinc-900 dark:hover:bg-zinc-800 dark:hover:text-zinc-50",
|
| 281 |
+
link: "text-zinc-900 underline-offset-4 hover:underline dark:text-zinc-50"
|
| 282 |
+
},
|
| 283 |
+
size: {
|
| 284 |
+
default: "h-9 px-4 py-2",
|
| 285 |
+
sm: "h-8 rounded-md px-3 text-xs",
|
| 286 |
+
lg: "h-10 rounded-md px-8",
|
| 287 |
+
icon: "h-9 w-9"
|
| 288 |
+
}
|
| 289 |
+
},
|
| 290 |
+
defaultVariants: {
|
| 291 |
+
variant: "default",
|
| 292 |
+
size: "default"
|
| 293 |
+
}
|
| 294 |
+
}
|
| 295 |
+
);
|
| 296 |
+
const Button = React.forwardRef(
|
| 297 |
+
({ className, variant, size, ...props }, ref) => {
|
| 298 |
+
return /* @__PURE__ */ jsx(
|
| 299 |
+
"button",
|
| 300 |
+
{
|
| 301 |
+
className: cn(buttonVariants({ variant, size, className })),
|
| 302 |
+
ref,
|
| 303 |
+
...props
|
| 304 |
+
}
|
| 305 |
+
);
|
| 306 |
+
}
|
| 307 |
+
);
|
| 308 |
+
Button.displayName = "Button";
|
| 309 |
+
const Input = React.forwardRef(
|
| 310 |
+
({ className, type, ...props }, ref) => {
|
| 311 |
+
return /* @__PURE__ */ jsx(
|
| 312 |
+
"input",
|
| 313 |
+
{
|
| 314 |
+
type,
|
| 315 |
+
className: cn(
|
| 316 |
+
"flex h-9 w-full rounded-md border border-zinc-200 bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-zinc-950 placeholder:text-zinc-500 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-zinc-950 disabled:cursor-not-allowed disabled:opacity-50 dark:border-zinc-800 dark:file:text-zinc-50 dark:placeholder:text-zinc-400 dark:focus-visible:ring-zinc-300",
|
| 317 |
+
className
|
| 318 |
+
),
|
| 319 |
+
ref,
|
| 320 |
+
...props
|
| 321 |
+
}
|
| 322 |
+
);
|
| 323 |
+
}
|
| 324 |
+
);
|
| 325 |
+
Input.displayName = "Input";
|
| 326 |
+
const Label = React.forwardRef(
|
| 327 |
+
({ className, ...props }, ref) => {
|
| 328 |
+
return /* @__PURE__ */ jsx(
|
| 329 |
+
"label",
|
| 330 |
+
{
|
| 331 |
+
ref,
|
| 332 |
+
className: cn(
|
| 333 |
+
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
|
| 334 |
+
className
|
| 335 |
+
),
|
| 336 |
+
...props
|
| 337 |
+
}
|
| 338 |
+
);
|
| 339 |
+
}
|
| 340 |
+
);
|
| 341 |
+
Label.displayName = "Label";
|
| 342 |
+
const Card = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
| 343 |
+
"div",
|
| 344 |
+
{
|
| 345 |
+
ref,
|
| 346 |
+
className: cn(
|
| 347 |
+
"rounded-xl border border-zinc-200 bg-white text-zinc-950 shadow dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-50",
|
| 348 |
+
className
|
| 349 |
+
),
|
| 350 |
+
...props
|
| 351 |
+
}
|
| 352 |
+
));
|
| 353 |
+
Card.displayName = "Card";
|
| 354 |
+
const CardHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
| 355 |
+
"div",
|
| 356 |
+
{
|
| 357 |
+
ref,
|
| 358 |
+
className: cn("flex flex-col space-y-1.5 p-6", className),
|
| 359 |
+
...props
|
| 360 |
+
}
|
| 361 |
+
));
|
| 362 |
+
CardHeader.displayName = "CardHeader";
|
| 363 |
+
const CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
| 364 |
+
"h3",
|
| 365 |
+
{
|
| 366 |
+
ref,
|
| 367 |
+
className: cn("font-semibold leading-none tracking-tight", className),
|
| 368 |
+
...props
|
| 369 |
+
}
|
| 370 |
+
));
|
| 371 |
+
CardTitle.displayName = "CardTitle";
|
| 372 |
+
const CardDescription = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
| 373 |
+
"p",
|
| 374 |
+
{
|
| 375 |
+
ref,
|
| 376 |
+
className: cn("text-sm text-zinc-500 dark:text-zinc-400", className),
|
| 377 |
+
...props
|
| 378 |
+
}
|
| 379 |
+
));
|
| 380 |
+
CardDescription.displayName = "CardDescription";
|
| 381 |
+
const CardContent = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
|
| 382 |
+
CardContent.displayName = "CardContent";
|
| 383 |
+
const CardFooter = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
| 384 |
+
"div",
|
| 385 |
+
{
|
| 386 |
+
ref,
|
| 387 |
+
className: cn("flex items-center p-6 pt-0", className),
|
| 388 |
+
...props
|
| 389 |
+
}
|
| 390 |
+
));
|
| 391 |
+
CardFooter.displayName = "CardFooter";
|
| 392 |
+
async function action$2({
|
| 393 |
+
request
|
| 394 |
+
}) {
|
| 395 |
+
const formData = await request.formData();
|
| 396 |
+
const email = formData.get("email");
|
| 397 |
+
const password = formData.get("password");
|
| 398 |
+
if (!email || typeof email !== "string" || !email.includes("@")) {
|
| 399 |
+
return data({
|
| 400 |
+
error: "Invalid email"
|
| 401 |
+
}, {
|
| 402 |
+
status: 400
|
| 403 |
+
});
|
| 404 |
+
}
|
| 405 |
+
if (!password || typeof password !== "string" || password.length < 6) {
|
| 406 |
+
return data({
|
| 407 |
+
error: "Password must be at least 6 characters"
|
| 408 |
+
}, {
|
| 409 |
+
status: 400
|
| 410 |
+
});
|
| 411 |
+
}
|
| 412 |
+
const existingUser = await db.query.user.findFirst({
|
| 413 |
+
where: eq(user.email, email)
|
| 414 |
+
});
|
| 415 |
+
if (!existingUser) {
|
| 416 |
+
return data({
|
| 417 |
+
error: "Invalid email or password"
|
| 418 |
+
}, {
|
| 419 |
+
status: 400
|
| 420 |
+
});
|
| 421 |
+
}
|
| 422 |
+
const validPassword = await verify(existingUser.hashedPassword, password);
|
| 423 |
+
if (!validPassword) {
|
| 424 |
+
return data({
|
| 425 |
+
error: "Invalid email or password"
|
| 426 |
+
}, {
|
| 427 |
+
status: 400
|
| 428 |
+
});
|
| 429 |
+
}
|
| 430 |
+
const session2 = await lucia.createSession(existingUser.id, {});
|
| 431 |
+
const sessionCookie = lucia.createSessionCookie(session2.id);
|
| 432 |
+
return redirect("/uptime", {
|
| 433 |
+
headers: {
|
| 434 |
+
"Set-Cookie": sessionCookie.serialize()
|
| 435 |
+
}
|
| 436 |
+
});
|
| 437 |
+
}
|
| 438 |
+
function meta$2({}) {
|
| 439 |
+
return [{
|
| 440 |
+
title: "Login - Always Uptime"
|
| 441 |
+
}, {
|
| 442 |
+
name: "description",
|
| 443 |
+
content: "Login to your account"
|
| 444 |
+
}];
|
| 445 |
+
}
|
| 446 |
+
const login = UNSAFE_withComponentProps(function Login({
|
| 447 |
+
actionData
|
| 448 |
+
}) {
|
| 449 |
+
return /* @__PURE__ */ jsx("div", {
|
| 450 |
+
className: "min-h-screen flex items-center justify-center bg-zinc-50 dark:bg-zinc-900 px-4",
|
| 451 |
+
children: /* @__PURE__ */ jsxs(Card, {
|
| 452 |
+
className: "w-full max-w-md",
|
| 453 |
+
children: [/* @__PURE__ */ jsxs(CardHeader, {
|
| 454 |
+
children: [/* @__PURE__ */ jsx(CardTitle, {
|
| 455 |
+
className: "text-2xl",
|
| 456 |
+
children: "Welcome back"
|
| 457 |
+
}), /* @__PURE__ */ jsx(CardDescription, {
|
| 458 |
+
children: "Enter your credentials to access your account"
|
| 459 |
+
})]
|
| 460 |
+
}), /* @__PURE__ */ jsxs(CardContent, {
|
| 461 |
+
children: [/* @__PURE__ */ jsxs("form", {
|
| 462 |
+
method: "post",
|
| 463 |
+
className: "space-y-4",
|
| 464 |
+
children: [/* @__PURE__ */ jsxs("div", {
|
| 465 |
+
className: "space-y-2",
|
| 466 |
+
children: [/* @__PURE__ */ jsx(Label, {
|
| 467 |
+
htmlFor: "email",
|
| 468 |
+
children: "Email"
|
| 469 |
+
}), /* @__PURE__ */ jsx(Input, {
|
| 470 |
+
id: "email",
|
| 471 |
+
name: "email",
|
| 472 |
+
type: "email",
|
| 473 |
+
placeholder: "you@example.com",
|
| 474 |
+
required: true
|
| 475 |
+
})]
|
| 476 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 477 |
+
className: "space-y-2",
|
| 478 |
+
children: [/* @__PURE__ */ jsx(Label, {
|
| 479 |
+
htmlFor: "password",
|
| 480 |
+
children: "Password"
|
| 481 |
+
}), /* @__PURE__ */ jsx(Input, {
|
| 482 |
+
id: "password",
|
| 483 |
+
name: "password",
|
| 484 |
+
type: "password",
|
| 485 |
+
required: true,
|
| 486 |
+
minLength: 6
|
| 487 |
+
})]
|
| 488 |
+
}), actionData?.error && /* @__PURE__ */ jsx("p", {
|
| 489 |
+
className: "text-sm text-red-500 dark:text-red-400",
|
| 490 |
+
children: actionData.error
|
| 491 |
+
}), /* @__PURE__ */ jsx(Button, {
|
| 492 |
+
type: "submit",
|
| 493 |
+
className: "w-full",
|
| 494 |
+
children: "Sign in"
|
| 495 |
+
})]
|
| 496 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 497 |
+
className: "mt-4 text-center text-sm text-zinc-600 dark:text-zinc-400",
|
| 498 |
+
children: ["Don't have an account?", " ", /* @__PURE__ */ jsx(Link, {
|
| 499 |
+
to: "/register",
|
| 500 |
+
className: "text-zinc-900 dark:text-zinc-50 underline",
|
| 501 |
+
children: "Sign up"
|
| 502 |
+
})]
|
| 503 |
+
})]
|
| 504 |
+
})]
|
| 505 |
+
})
|
| 506 |
+
});
|
| 507 |
+
});
|
| 508 |
+
const route2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
| 509 |
+
__proto__: null,
|
| 510 |
+
action: action$2,
|
| 511 |
+
default: login,
|
| 512 |
+
meta: meta$2
|
| 513 |
+
}, Symbol.toStringTag, { value: "Module" }));
|
| 514 |
+
async function action$1({
|
| 515 |
+
request
|
| 516 |
+
}) {
|
| 517 |
+
const formData = await request.formData();
|
| 518 |
+
const email = formData.get("email");
|
| 519 |
+
const password = formData.get("password");
|
| 520 |
+
if (!email || typeof email !== "string" || !email.includes("@")) {
|
| 521 |
+
return data({
|
| 522 |
+
error: "Invalid email"
|
| 523 |
+
}, {
|
| 524 |
+
status: 400
|
| 525 |
+
});
|
| 526 |
+
}
|
| 527 |
+
if (!password || typeof password !== "string" || password.length < 6) {
|
| 528 |
+
return data({
|
| 529 |
+
error: "Password must be at least 6 characters"
|
| 530 |
+
}, {
|
| 531 |
+
status: 400
|
| 532 |
+
});
|
| 533 |
+
}
|
| 534 |
+
const existingUser = await db.query.user.findFirst({
|
| 535 |
+
where: eq(user.email, email)
|
| 536 |
+
});
|
| 537 |
+
if (existingUser) {
|
| 538 |
+
return data({
|
| 539 |
+
error: "Email already in use"
|
| 540 |
+
}, {
|
| 541 |
+
status: 400
|
| 542 |
+
});
|
| 543 |
+
}
|
| 544 |
+
const userId = generateId(15);
|
| 545 |
+
const hashedPassword = await hash(password);
|
| 546 |
+
await db.insert(user).values({
|
| 547 |
+
id: userId,
|
| 548 |
+
email,
|
| 549 |
+
hashedPassword,
|
| 550 |
+
createdAt: Date.now()
|
| 551 |
+
});
|
| 552 |
+
const session2 = await lucia.createSession(userId, {});
|
| 553 |
+
const sessionCookie = lucia.createSessionCookie(session2.id);
|
| 554 |
+
return redirect("/uptime", {
|
| 555 |
+
headers: {
|
| 556 |
+
"Set-Cookie": sessionCookie.serialize()
|
| 557 |
+
}
|
| 558 |
+
});
|
| 559 |
+
}
|
| 560 |
+
function meta$1({}) {
|
| 561 |
+
return [{
|
| 562 |
+
title: "Register - Always Uptime"
|
| 563 |
+
}, {
|
| 564 |
+
name: "description",
|
| 565 |
+
content: "Create a new account"
|
| 566 |
+
}];
|
| 567 |
+
}
|
| 568 |
+
const register = UNSAFE_withComponentProps(function Register({
|
| 569 |
+
actionData
|
| 570 |
+
}) {
|
| 571 |
+
return /* @__PURE__ */ jsx("div", {
|
| 572 |
+
className: "min-h-screen flex items-center justify-center bg-zinc-50 dark:bg-zinc-900 px-4",
|
| 573 |
+
children: /* @__PURE__ */ jsxs(Card, {
|
| 574 |
+
className: "w-full max-w-md",
|
| 575 |
+
children: [/* @__PURE__ */ jsxs(CardHeader, {
|
| 576 |
+
children: [/* @__PURE__ */ jsx(CardTitle, {
|
| 577 |
+
className: "text-2xl",
|
| 578 |
+
children: "Create an account"
|
| 579 |
+
}), /* @__PURE__ */ jsx(CardDescription, {
|
| 580 |
+
children: "Enter your details to get started"
|
| 581 |
+
})]
|
| 582 |
+
}), /* @__PURE__ */ jsxs(CardContent, {
|
| 583 |
+
children: [/* @__PURE__ */ jsxs("form", {
|
| 584 |
+
method: "post",
|
| 585 |
+
className: "space-y-4",
|
| 586 |
+
children: [/* @__PURE__ */ jsxs("div", {
|
| 587 |
+
className: "space-y-2",
|
| 588 |
+
children: [/* @__PURE__ */ jsx(Label, {
|
| 589 |
+
htmlFor: "email",
|
| 590 |
+
children: "Email"
|
| 591 |
+
}), /* @__PURE__ */ jsx(Input, {
|
| 592 |
+
id: "email",
|
| 593 |
+
name: "email",
|
| 594 |
+
type: "email",
|
| 595 |
+
placeholder: "you@example.com",
|
| 596 |
+
required: true
|
| 597 |
+
})]
|
| 598 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 599 |
+
className: "space-y-2",
|
| 600 |
+
children: [/* @__PURE__ */ jsx(Label, {
|
| 601 |
+
htmlFor: "password",
|
| 602 |
+
children: "Password"
|
| 603 |
+
}), /* @__PURE__ */ jsx(Input, {
|
| 604 |
+
id: "password",
|
| 605 |
+
name: "password",
|
| 606 |
+
type: "password",
|
| 607 |
+
required: true,
|
| 608 |
+
minLength: 6
|
| 609 |
+
}), /* @__PURE__ */ jsx("p", {
|
| 610 |
+
className: "text-xs text-zinc-500 dark:text-zinc-400",
|
| 611 |
+
children: "Must be at least 6 characters"
|
| 612 |
+
})]
|
| 613 |
+
}), actionData?.error && /* @__PURE__ */ jsx("p", {
|
| 614 |
+
className: "text-sm text-red-500 dark:text-red-400",
|
| 615 |
+
children: actionData.error
|
| 616 |
+
}), /* @__PURE__ */ jsx(Button, {
|
| 617 |
+
type: "submit",
|
| 618 |
+
className: "w-full",
|
| 619 |
+
children: "Create account"
|
| 620 |
+
})]
|
| 621 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 622 |
+
className: "mt-4 text-center text-sm text-zinc-600 dark:text-zinc-400",
|
| 623 |
+
children: ["Already have an account?", " ", /* @__PURE__ */ jsx(Link, {
|
| 624 |
+
to: "/login",
|
| 625 |
+
className: "text-zinc-900 dark:text-zinc-50 underline",
|
| 626 |
+
children: "Sign in"
|
| 627 |
+
})]
|
| 628 |
+
})]
|
| 629 |
+
})]
|
| 630 |
+
})
|
| 631 |
+
});
|
| 632 |
+
});
|
| 633 |
+
const route3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
| 634 |
+
__proto__: null,
|
| 635 |
+
action: action$1,
|
| 636 |
+
default: register,
|
| 637 |
+
meta: meta$1
|
| 638 |
+
}, Symbol.toStringTag, { value: "Module" }));
|
| 639 |
+
async function action({
|
| 640 |
+
request
|
| 641 |
+
}) {
|
| 642 |
+
const cookie = request.headers.get("Cookie");
|
| 643 |
+
const sessionId = lucia.readSessionCookie(cookie ?? "");
|
| 644 |
+
if (!sessionId) {
|
| 645 |
+
return redirect("/login");
|
| 646 |
+
}
|
| 647 |
+
await lucia.invalidateSession(sessionId);
|
| 648 |
+
const sessionCookie = lucia.createBlankSessionCookie();
|
| 649 |
+
return redirect("/login", {
|
| 650 |
+
headers: {
|
| 651 |
+
"Set-Cookie": sessionCookie.serialize()
|
| 652 |
+
}
|
| 653 |
+
});
|
| 654 |
+
}
|
| 655 |
+
async function loader$1() {
|
| 656 |
+
return redirect("/uptime");
|
| 657 |
+
}
|
| 658 |
+
const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
| 659 |
+
__proto__: null,
|
| 660 |
+
action,
|
| 661 |
+
loader: loader$1
|
| 662 |
+
}, Symbol.toStringTag, { value: "Module" }));
|
| 663 |
+
const uptimeData = /* @__PURE__ */ new Map();
|
| 664 |
+
async function checkUptime(url) {
|
| 665 |
+
const startTime = Date.now();
|
| 666 |
+
try {
|
| 667 |
+
const response = await fetch(url, {
|
| 668 |
+
method: "GET",
|
| 669 |
+
signal: AbortSignal.timeout(1e4)
|
| 670 |
+
// 10s timeout
|
| 671 |
+
});
|
| 672 |
+
const responseTime = Date.now() - startTime;
|
| 673 |
+
return {
|
| 674 |
+
url,
|
| 675 |
+
status: response.ok ? "up" : "down",
|
| 676 |
+
statusCode: response.status,
|
| 677 |
+
responseTime,
|
| 678 |
+
timestamp: Date.now()
|
| 679 |
+
};
|
| 680 |
+
} catch (error) {
|
| 681 |
+
const responseTime = Date.now() - startTime;
|
| 682 |
+
return {
|
| 683 |
+
url,
|
| 684 |
+
status: "down",
|
| 685 |
+
responseTime,
|
| 686 |
+
timestamp: Date.now(),
|
| 687 |
+
error: error instanceof Error ? error.message : "Unknown error"
|
| 688 |
+
};
|
| 689 |
+
}
|
| 690 |
+
}
|
| 691 |
+
function saveUptimeCheck(check) {
|
| 692 |
+
const stats = uptimeData.get(check.url) || {
|
| 693 |
+
url: check.url,
|
| 694 |
+
totalChecks: 0,
|
| 695 |
+
successfulChecks: 0,
|
| 696 |
+
failedChecks: 0,
|
| 697 |
+
uptime: 0,
|
| 698 |
+
averageResponseTime: 0,
|
| 699 |
+
checks: []
|
| 700 |
+
};
|
| 701 |
+
stats.totalChecks++;
|
| 702 |
+
if (check.status === "up") {
|
| 703 |
+
stats.successfulChecks++;
|
| 704 |
+
} else {
|
| 705 |
+
stats.failedChecks++;
|
| 706 |
+
}
|
| 707 |
+
stats.uptime = stats.successfulChecks / stats.totalChecks * 100;
|
| 708 |
+
const totalResponseTime = stats.checks.reduce((sum, c) => sum + (c.responseTime || 0), 0);
|
| 709 |
+
stats.averageResponseTime = (totalResponseTime + (check.responseTime || 0)) / (stats.checks.length + 1);
|
| 710 |
+
stats.lastCheck = check;
|
| 711 |
+
stats.checks = [...stats.checks, check].slice(-100);
|
| 712 |
+
uptimeData.set(check.url, stats);
|
| 713 |
+
}
|
| 714 |
+
function getAllUptimeStats() {
|
| 715 |
+
return Array.from(uptimeData.values());
|
| 716 |
+
}
|
| 717 |
+
async function loader({
|
| 718 |
+
request
|
| 719 |
+
}) {
|
| 720 |
+
const cookie = request.headers.get("Cookie");
|
| 721 |
+
const sessionId = lucia.readSessionCookie(cookie ?? "");
|
| 722 |
+
if (!sessionId) {
|
| 723 |
+
return redirect("/login");
|
| 724 |
+
}
|
| 725 |
+
const {
|
| 726 |
+
session: session2,
|
| 727 |
+
user: user2
|
| 728 |
+
} = await lucia.validateSession(sessionId);
|
| 729 |
+
if (!session2) {
|
| 730 |
+
return redirect("/login");
|
| 731 |
+
}
|
| 732 |
+
const {
|
| 733 |
+
startCronJob
|
| 734 |
+
} = await import("./cron.server-BkSBgtlB.js");
|
| 735 |
+
startCronJob();
|
| 736 |
+
const stats = getAllUptimeStats();
|
| 737 |
+
return {
|
| 738 |
+
stats,
|
| 739 |
+
user: user2
|
| 740 |
+
};
|
| 741 |
+
}
|
| 742 |
+
function meta({}) {
|
| 743 |
+
return [{
|
| 744 |
+
title: "Always Uptime - Monitor Your Services"
|
| 745 |
+
}, {
|
| 746 |
+
name: "description",
|
| 747 |
+
content: "Real-time uptime monitoring dashboard"
|
| 748 |
+
}];
|
| 749 |
+
}
|
| 750 |
+
const uptime = UNSAFE_withComponentProps(function Uptime({
|
| 751 |
+
loaderData
|
| 752 |
+
}) {
|
| 753 |
+
const {
|
| 754 |
+
stats,
|
| 755 |
+
user: user2
|
| 756 |
+
} = loaderData;
|
| 757 |
+
const revalidator = useRevalidator();
|
| 758 |
+
useEffect(() => {
|
| 759 |
+
const interval = setInterval(() => {
|
| 760 |
+
revalidator.revalidate();
|
| 761 |
+
}, 3e4);
|
| 762 |
+
return () => clearInterval(interval);
|
| 763 |
+
}, [revalidator]);
|
| 764 |
+
return /* @__PURE__ */ jsx("div", {
|
| 765 |
+
className: "min-h-screen bg-gray-50 dark:bg-gray-900",
|
| 766 |
+
children: /* @__PURE__ */ jsxs("div", {
|
| 767 |
+
className: "container mx-auto px-4 py-8",
|
| 768 |
+
children: [/* @__PURE__ */ jsxs("header", {
|
| 769 |
+
className: "mb-8 flex items-center justify-between",
|
| 770 |
+
children: [/* @__PURE__ */ jsxs("div", {
|
| 771 |
+
children: [/* @__PURE__ */ jsx("h1", {
|
| 772 |
+
className: "text-4xl font-bold text-gray-900 dark:text-white mb-2",
|
| 773 |
+
children: "Always Uptime"
|
| 774 |
+
}), /* @__PURE__ */ jsx("p", {
|
| 775 |
+
className: "text-gray-600 dark:text-gray-400",
|
| 776 |
+
children: "Monitoring your services every 30 seconds"
|
| 777 |
+
})]
|
| 778 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 779 |
+
className: "flex items-center gap-4",
|
| 780 |
+
children: [/* @__PURE__ */ jsx("span", {
|
| 781 |
+
className: "text-sm text-gray-600 dark:text-gray-400",
|
| 782 |
+
children: user2.email
|
| 783 |
+
}), /* @__PURE__ */ jsx(Form, {
|
| 784 |
+
method: "post",
|
| 785 |
+
action: "/logout",
|
| 786 |
+
children: /* @__PURE__ */ jsx(Button, {
|
| 787 |
+
variant: "outline",
|
| 788 |
+
size: "sm",
|
| 789 |
+
type: "submit",
|
| 790 |
+
children: "Logout"
|
| 791 |
+
})
|
| 792 |
+
})]
|
| 793 |
+
})]
|
| 794 |
+
}), stats.length === 0 ? /* @__PURE__ */ jsx("div", {
|
| 795 |
+
className: "bg-white dark:bg-gray-800 rounded-lg shadow p-8 text-center",
|
| 796 |
+
children: /* @__PURE__ */ jsx("p", {
|
| 797 |
+
className: "text-gray-600 dark:text-gray-400",
|
| 798 |
+
children: "No uptime data available yet. Checks will appear here shortly..."
|
| 799 |
+
})
|
| 800 |
+
}) : /* @__PURE__ */ jsx("div", {
|
| 801 |
+
className: "space-y-6",
|
| 802 |
+
children: stats.map((stat) => /* @__PURE__ */ jsx("div", {
|
| 803 |
+
className: "bg-white dark:bg-gray-800 rounded-lg shadow-lg overflow-hidden",
|
| 804 |
+
children: /* @__PURE__ */ jsxs("div", {
|
| 805 |
+
className: "p-6",
|
| 806 |
+
children: [/* @__PURE__ */ jsxs("div", {
|
| 807 |
+
className: "flex items-center justify-between mb-4",
|
| 808 |
+
children: [/* @__PURE__ */ jsxs("div", {
|
| 809 |
+
className: "flex-1",
|
| 810 |
+
children: [/* @__PURE__ */ jsx("h2", {
|
| 811 |
+
className: "text-xl font-semibold text-gray-900 dark:text-white mb-1",
|
| 812 |
+
children: stat.url
|
| 813 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 814 |
+
className: "flex items-center gap-2",
|
| 815 |
+
children: [/* @__PURE__ */ jsx("span", {
|
| 816 |
+
className: `inline-flex items-center px-3 py-1 rounded-full text-sm font-medium ${stat.lastCheck?.status === "up" ? "bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200" : "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"}`,
|
| 817 |
+
children: stat.lastCheck?.status === "up" ? "🟢 Online" : "🔴 Offline"
|
| 818 |
+
}), stat.lastCheck?.statusCode && /* @__PURE__ */ jsxs("span", {
|
| 819 |
+
className: "text-sm text-gray-500 dark:text-gray-400",
|
| 820 |
+
children: ["Status: ", stat.lastCheck.statusCode]
|
| 821 |
+
})]
|
| 822 |
+
})]
|
| 823 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 824 |
+
className: "text-right",
|
| 825 |
+
children: [/* @__PURE__ */ jsxs("div", {
|
| 826 |
+
className: "text-3xl font-bold text-gray-900 dark:text-white",
|
| 827 |
+
children: [stat.uptime.toFixed(2), "%"]
|
| 828 |
+
}), /* @__PURE__ */ jsx("div", {
|
| 829 |
+
className: "text-sm text-gray-500 dark:text-gray-400",
|
| 830 |
+
children: "Uptime"
|
| 831 |
+
})]
|
| 832 |
+
})]
|
| 833 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 834 |
+
className: "grid grid-cols-2 md:grid-cols-4 gap-4 mb-6",
|
| 835 |
+
children: [/* @__PURE__ */ jsxs("div", {
|
| 836 |
+
className: "bg-gray-50 dark:bg-gray-700 rounded-lg p-4",
|
| 837 |
+
children: [/* @__PURE__ */ jsx("div", {
|
| 838 |
+
className: "text-sm text-gray-500 dark:text-gray-400 mb-1",
|
| 839 |
+
children: "Total Checks"
|
| 840 |
+
}), /* @__PURE__ */ jsx("div", {
|
| 841 |
+
className: "text-2xl font-semibold text-gray-900 dark:text-white",
|
| 842 |
+
children: stat.totalChecks
|
| 843 |
+
})]
|
| 844 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 845 |
+
className: "bg-gray-50 dark:bg-gray-700 rounded-lg p-4",
|
| 846 |
+
children: [/* @__PURE__ */ jsx("div", {
|
| 847 |
+
className: "text-sm text-gray-500 dark:text-gray-400 mb-1",
|
| 848 |
+
children: "Successful"
|
| 849 |
+
}), /* @__PURE__ */ jsx("div", {
|
| 850 |
+
className: "text-2xl font-semibold text-green-600 dark:text-green-400",
|
| 851 |
+
children: stat.successfulChecks
|
| 852 |
+
})]
|
| 853 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 854 |
+
className: "bg-gray-50 dark:bg-gray-700 rounded-lg p-4",
|
| 855 |
+
children: [/* @__PURE__ */ jsx("div", {
|
| 856 |
+
className: "text-sm text-gray-500 dark:text-gray-400 mb-1",
|
| 857 |
+
children: "Failed"
|
| 858 |
+
}), /* @__PURE__ */ jsx("div", {
|
| 859 |
+
className: "text-2xl font-semibold text-red-600 dark:text-red-400",
|
| 860 |
+
children: stat.failedChecks
|
| 861 |
+
})]
|
| 862 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 863 |
+
className: "bg-gray-50 dark:bg-gray-700 rounded-lg p-4",
|
| 864 |
+
children: [/* @__PURE__ */ jsx("div", {
|
| 865 |
+
className: "text-sm text-gray-500 dark:text-gray-400 mb-1",
|
| 866 |
+
children: "Avg Response"
|
| 867 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 868 |
+
className: "text-2xl font-semibold text-gray-900 dark:text-white",
|
| 869 |
+
children: [Math.round(stat.averageResponseTime), "ms"]
|
| 870 |
+
})]
|
| 871 |
+
})]
|
| 872 |
+
}), stat.lastCheck && /* @__PURE__ */ jsxs("div", {
|
| 873 |
+
className: "border-t border-gray-200 dark:border-gray-700 pt-4",
|
| 874 |
+
children: [/* @__PURE__ */ jsx("h3", {
|
| 875 |
+
className: "text-sm font-semibold text-gray-700 dark:text-gray-300 mb-2",
|
| 876 |
+
children: "Last Check"
|
| 877 |
+
}), /* @__PURE__ */ jsxs("div", {
|
| 878 |
+
className: "text-sm text-gray-600 dark:text-gray-400",
|
| 879 |
+
children: [/* @__PURE__ */ jsxs("p", {
|
| 880 |
+
children: ["Time: ", new Date(stat.lastCheck.timestamp).toLocaleString()]
|
| 881 |
+
}), stat.lastCheck.responseTime && /* @__PURE__ */ jsxs("p", {
|
| 882 |
+
children: ["Response Time: ", stat.lastCheck.responseTime, "ms"]
|
| 883 |
+
}), stat.lastCheck.error && /* @__PURE__ */ jsxs("p", {
|
| 884 |
+
className: "text-red-600 dark:text-red-400",
|
| 885 |
+
children: ["Error: ", stat.lastCheck.error]
|
| 886 |
+
})]
|
| 887 |
+
})]
|
| 888 |
+
}), stat.checks.length > 0 && /* @__PURE__ */ jsxs("div", {
|
| 889 |
+
className: "border-t border-gray-200 dark:border-gray-700 pt-4 mt-4",
|
| 890 |
+
children: [/* @__PURE__ */ jsxs("h3", {
|
| 891 |
+
className: "text-sm font-semibold text-gray-700 dark:text-gray-300 mb-3",
|
| 892 |
+
children: ["Recent Checks (Last ", Math.min(stat.checks.length, 20), ")"]
|
| 893 |
+
}), /* @__PURE__ */ jsx("div", {
|
| 894 |
+
className: "flex gap-1 overflow-x-auto pb-2",
|
| 895 |
+
children: stat.checks.slice(-20).reverse().map((check, idx) => /* @__PURE__ */ jsx("div", {
|
| 896 |
+
className: `w-3 h-16 rounded ${check.status === "up" ? "bg-green-500" : "bg-red-500"}`,
|
| 897 |
+
title: `${new Date(check.timestamp).toLocaleString()} - ${check.status} (${check.responseTime}ms)`
|
| 898 |
+
}, idx))
|
| 899 |
+
})]
|
| 900 |
+
})]
|
| 901 |
+
})
|
| 902 |
+
}, stat.url))
|
| 903 |
+
}), /* @__PURE__ */ jsx("footer", {
|
| 904 |
+
className: "mt-8 text-center text-sm text-gray-500 dark:text-gray-400",
|
| 905 |
+
children: "Auto-refreshing every 30 seconds"
|
| 906 |
+
})]
|
| 907 |
+
})
|
| 908 |
+
});
|
| 909 |
+
});
|
| 910 |
+
const route5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
| 911 |
+
__proto__: null,
|
| 912 |
+
default: uptime,
|
| 913 |
+
loader,
|
| 914 |
+
meta
|
| 915 |
+
}, Symbol.toStringTag, { value: "Module" }));
|
| 916 |
+
const serverManifest = { "entry": { "module": "/assets/entry.client-BqCLKtvt.js", "imports": ["/assets/chunk-OIYGIGL5-O35CAIo3.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": true, "module": "/assets/root-C5Mnt1V9.js", "imports": ["/assets/chunk-OIYGIGL5-O35CAIo3.js"], "css": ["/assets/root-DePtEpHZ.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/home-CCZyLKHc.js", "imports": ["/assets/chunk-OIYGIGL5-O35CAIo3.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/login": { "id": "routes/login", "parentId": "root", "path": "login", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/login-CtRm5tfE.js", "imports": ["/assets/chunk-OIYGIGL5-O35CAIo3.js", "/assets/button-1YLPPCtt.js", "/assets/card-nZ_hrmF6.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/register": { "id": "routes/register", "parentId": "root", "path": "register", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/register-BLpbiVIx.js", "imports": ["/assets/chunk-OIYGIGL5-O35CAIo3.js", "/assets/button-1YLPPCtt.js", "/assets/card-nZ_hrmF6.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/logout": { "id": "routes/logout", "parentId": "root", "path": "logout", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/logout-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/uptime": { "id": "routes/uptime", "parentId": "root", "path": "uptime", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasErrorBoundary": false, "module": "/assets/uptime-BYui58Ub.js", "imports": ["/assets/chunk-OIYGIGL5-O35CAIo3.js", "/assets/button-1YLPPCtt.js"], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-ceec8a43.js", "version": "ceec8a43", "sri": void 0 };
|
| 917 |
+
const assetsBuildDirectory = "build/client";
|
| 918 |
+
const basename = "/";
|
| 919 |
+
const future = { "v8_middleware": false, "unstable_optimizeDeps": false, "unstable_splitRouteModules": false, "unstable_subResourceIntegrity": false, "unstable_viteEnvironmentApi": false };
|
| 920 |
+
const ssr = true;
|
| 921 |
+
const isSpaMode = false;
|
| 922 |
+
const prerender = [];
|
| 923 |
+
const routeDiscovery = { "mode": "lazy", "manifestPath": "/__manifest" };
|
| 924 |
+
const publicPath = "/";
|
| 925 |
+
const entry = { module: entryServer };
|
| 926 |
+
const routes = {
|
| 927 |
+
"root": {
|
| 928 |
+
id: "root",
|
| 929 |
+
parentId: void 0,
|
| 930 |
+
path: "",
|
| 931 |
+
index: void 0,
|
| 932 |
+
caseSensitive: void 0,
|
| 933 |
+
module: route0
|
| 934 |
+
},
|
| 935 |
+
"routes/home": {
|
| 936 |
+
id: "routes/home",
|
| 937 |
+
parentId: "root",
|
| 938 |
+
path: void 0,
|
| 939 |
+
index: true,
|
| 940 |
+
caseSensitive: void 0,
|
| 941 |
+
module: route1
|
| 942 |
+
},
|
| 943 |
+
"routes/login": {
|
| 944 |
+
id: "routes/login",
|
| 945 |
+
parentId: "root",
|
| 946 |
+
path: "login",
|
| 947 |
+
index: void 0,
|
| 948 |
+
caseSensitive: void 0,
|
| 949 |
+
module: route2
|
| 950 |
+
},
|
| 951 |
+
"routes/register": {
|
| 952 |
+
id: "routes/register",
|
| 953 |
+
parentId: "root",
|
| 954 |
+
path: "register",
|
| 955 |
+
index: void 0,
|
| 956 |
+
caseSensitive: void 0,
|
| 957 |
+
module: route3
|
| 958 |
+
},
|
| 959 |
+
"routes/logout": {
|
| 960 |
+
id: "routes/logout",
|
| 961 |
+
parentId: "root",
|
| 962 |
+
path: "logout",
|
| 963 |
+
index: void 0,
|
| 964 |
+
caseSensitive: void 0,
|
| 965 |
+
module: route4
|
| 966 |
+
},
|
| 967 |
+
"routes/uptime": {
|
| 968 |
+
id: "routes/uptime",
|
| 969 |
+
parentId: "root",
|
| 970 |
+
path: "uptime",
|
| 971 |
+
index: void 0,
|
| 972 |
+
caseSensitive: void 0,
|
| 973 |
+
module: route5
|
| 974 |
+
}
|
| 975 |
+
};
|
| 976 |
+
export {
|
| 977 |
+
assetsBuildDirectory as a,
|
| 978 |
+
basename as b,
|
| 979 |
+
checkUptime as c,
|
| 980 |
+
ssr as d,
|
| 981 |
+
publicPath as e,
|
| 982 |
+
future as f,
|
| 983 |
+
entry as g,
|
| 984 |
+
routes as h,
|
| 985 |
+
isSpaMode as i,
|
| 986 |
+
serverManifest as j,
|
| 987 |
+
prerender as p,
|
| 988 |
+
routeDiscovery as r,
|
| 989 |
+
saveUptimeCheck as s
|
| 990 |
+
};
|
build/server/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { j, a, b, g, f, i, p, e, r, h, d } from "./assets/server-build-BAW0Iiqy.js";
|
| 2 |
+
import "react/jsx-runtime";
|
| 3 |
+
import "node:stream";
|
| 4 |
+
import "@react-router/node";
|
| 5 |
+
import "react-router";
|
| 6 |
+
import "isbot";
|
| 7 |
+
import "react-dom/server";
|
| 8 |
+
import "lucia";
|
| 9 |
+
import "@lucia-auth/adapter-drizzle";
|
| 10 |
+
import "drizzle-orm/libsql";
|
| 11 |
+
import "@libsql/client";
|
| 12 |
+
import "drizzle-orm/sqlite-core";
|
| 13 |
+
import "drizzle-orm";
|
| 14 |
+
import "@node-rs/argon2";
|
| 15 |
+
import "react";
|
| 16 |
+
import "class-variance-authority";
|
| 17 |
+
import "clsx";
|
| 18 |
+
import "tailwind-merge";
|
| 19 |
+
export {
|
| 20 |
+
j as assets,
|
| 21 |
+
a as assetsBuildDirectory,
|
| 22 |
+
b as basename,
|
| 23 |
+
g as entry,
|
| 24 |
+
f as future,
|
| 25 |
+
i as isSpaMode,
|
| 26 |
+
p as prerender,
|
| 27 |
+
e as publicPath,
|
| 28 |
+
r as routeDiscovery,
|
| 29 |
+
h as routes,
|
| 30 |
+
d as ssr
|
| 31 |
+
};
|