import React, { useState } from "react"
import { useMutation } from "@tanstack/react-query"
import { Button } from "@workspace/ui/components/button"
import { Input } from "@workspace/ui/components/input"
import { EyeIcon, EyeOffIcon } from "@workspace/ui/components/icon"
import { cn } from "@workspace/ui/lib/utils"
import { ThemeToggleButton } from "@workspace/blocks/blocks/appearance"
import { Logo } from "@/components/logo"
export function LoginPage() {
return (
欢迎回来 👋🏻
让商品、订单与运营管理更简单高效。
)
}
const features = [
{
label: "Jwt",
img: "https://pub-c5e31b5cdafb419fb247a8ac2e78df7a.r2.dev/public/assets/icons/platforms/ic-jwt.svg",
},
{
label: "Firebase",
img: "https://pub-c5e31b5cdafb419fb247a8ac2e78df7a.r2.dev/public/assets/icons/platforms/ic-firebase.svg",
},
{
label: "Amplify",
img: "https://pub-c5e31b5cdafb419fb247a8ac2e78df7a.r2.dev/public/assets/icons/platforms/ic-amplify.svg",
},
{
label: "Auth0",
img: "https://pub-c5e31b5cdafb419fb247a8ac2e78df7a.r2.dev/public/assets/icons/platforms/ic-auth0.svg",
},
{
label: "Supabase",
img: "https://pub-c5e31b5cdafb419fb247a8ac2e78df7a.r2.dev/public/assets/icons/platforms/ic-supabase.svg",
},
]
function Features() {
const [index, setIndex] = React.useState(0)
React.useEffect(() => {
const timerId = setInterval(() => {
setIndex((currentIndex) => (currentIndex + 1) % features.length)
}, 1000)
return () => {
clearInterval(timerId)
}
}, [])
return (
{features.map((f, i) => (
-
))}
)
}
function LoginForm() {
// const navigate = useNavigate()
const [username, setUsername] = useState("")
const [password, setPassword] = useState("")
const mutation = useMutation({
// mutationFn: () => {
// return api.post("/api/v1/admin/auth/login", {
// username,
// password,
// })
// },
// onSuccess: () => {
// login()
// Toast("登录成功", "success")
// navigate("/", { replace: true })
// },
// onError: (err: Error) => toast(err.message || "登录失败", "error"),
})
return (
)
}
type FieldInputProps = {
inputId: string
className?: string
value: string
setValue: React.Dispatch>
}
type FieldInputComponent = React.ComponentType
function Field({
label,
Component,
...props
}: Omit & {
label: string
Component: FieldInputComponent
}) {
return (
)
}
function UsernameInput({
inputId,
className,
value,
setValue,
}: FieldInputProps) {
return (
setValue(e.target.value)}
placeholder="请输入用户名"
required
/>
)
}
function PasswordInput({
inputId,
className,
value,
setValue,
}: FieldInputProps) {
const [isVisible, setVisile] = React.useState(false)
return (
<>
setValue(e.target.value)}
placeholder="请输入登录密码"
required
/>
>
)
}