aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mirum-server/web/components/pages/login.tsx')
-rw-r--r--cmd/mirum-server/web/components/pages/login.tsx107+0 −107
1 files changed, 0 insertions, 107 deletions
diff --git a/cmd/mirum-server/web/components/pages/login.tsx b/cmd/mirum-server/web/components/pages/login.tsx
deleted file mode 100644
--- a/cmd/mirum-server/web/components/pages/login.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-// SPDX-FileCopyrightText: 2026 Nikolay Govorov
-// SPDX-License-Identifier: AGPL-3.0-or-later
-
-import { useState } from "react";
-import { GalleryVerticalEnd, AlertCircle } from "lucide-react";
-import { Button } from "@/components/ui/button";
-import { Input } from "@/components/ui/input";
-import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
-import {
- Field,
- FieldDescription,
- FieldGroup,
- FieldLabel,
-} from "@/components/ui/field";
-import { ErrorReason } from "@/gen/api_pb";
-import { textForReason } from "@/lib/errors";
-
-export interface LoginFormProps {
- csrf: string;
- errorReason?: ErrorReason;
-}
-
-export function Page({ csrf, errorReason }: LoginFormProps) {
- const [error, setError] = useState(
- errorReason !== undefined ? textForReason(errorReason) : undefined,
- );
- const dismissError = () => setError(undefined);
-
- return (
- <div className="flex min-h-svh flex-col items-center justify-center gap-6 bg-muted p-6 md:p-10">
- <div className="flex w-full max-w-sm flex-col gap-6">
- <div className="flex items-center gap-2 self-center font-medium">
- <div className="flex size-6 items-center justify-center rounded-md bg-primary text-primary-foreground">
- <GalleryVerticalEnd className="size-4" />
- </div>
- Dimidium Labs Limited
- </div>
-
- <div className={"flex flex-col gap-6"}>
- <Card>
- <CardHeader className="text-center">
- <CardTitle className="text-xl">Sign In to Mirum</CardTitle>
- </CardHeader>
-
- <CardContent>
- <form method="POST" action="/auth/login">
- <input type="hidden" name="csrf" value={csrf} />
-
- <FieldGroup>
- {error && (
- <Field>
- <div
- role="alert"
- className="flex items-center gap-2 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-sm text-destructive"
- >
- <AlertCircle className="size-4 shrink-0" aria-hidden />
- <span>{error}</span>
- </div>
- </Field>
- )}
-
- <Field>
- <FieldLabel htmlFor="email">Email</FieldLabel>
- <Input
- id="email"
- name="email"
- type="email"
- placeholder="hey@mirum.dev"
- required
- autoFocus
- onInput={dismissError}
- />
- </Field>
-
- <Field>
- <FieldLabel htmlFor="password">Password</FieldLabel>
- <Input
- id="password"
- name="password"
- type="password"
- autoComplete="current-password"
- required
- onInput={dismissError}
- />
- </Field>
-
- <Field>
- <Button type="submit">Login</Button>
-
- <FieldDescription className="text-center">
- Contact your administrator to sign up.
- </FieldDescription>
- </Field>
- </FieldGroup>
- </form>
- </CardContent>
- </Card>
-
- <FieldDescription className="px-6 text-center">
- By clicking continue, you agree to our{" "}
- <a href="#">Terms of Service</a> and <a href="#">Privacy Policy</a>.
- </FieldDescription>
- </div>
- </div>
- </div>
- );
-}