Files
StevenandGitHub 4466ba436b chore(examples): use default prettier for examples/templates (#60530)
## Description
This PR ensures that the default prettier config is used for examples
and templates.

This config is compatible with `prettier@3` as well (upgrading prettier
is bigger change that can be a future PR).

## Changes
- Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will
be needed upgrading to prettier@3)
- Added `examples/.prettierrc.json` with default config (this will
change every example)
- Added `packages/create-next-app/templates/.prettierrc.json` with
default config (this will change every template)

## Related

- Fixes #54402
- Closes #54409
2024-01-11 16:01:44 -07:00

86 lines
2.4 KiB
TypeScript

import { useState } from "react";
import { useForm } from "react-hook-form";
interface User {
name: string;
}
interface LoginFormValues {
username: string;
password: string;
remember: boolean;
}
const IndexPage = () => {
const [user, setUser] = useState<User>();
const {
register,
formState: { errors },
handleSubmit,
} = useForm<LoginFormValues>();
const onSubmit = handleSubmit(({ username, password, remember }) => {
// You should handle login logic with username, password and remember form data
setUser({ name: username });
});
return (
<div className="container">
{user ? (
<span className="hello-user">Hello, {user.name}!</span>
) : (
<form onSubmit={onSubmit}>
<div className="row">
<h3 className="form-header">LOGIN</h3>
</div>
<div className="row">
<input
type="text"
placeholder="user name"
{...register("username", {
required: { value: true, message: "User name is required" },
minLength: {
value: 3,
message: "User name cannot be less than 3 character",
},
})}
className={"form-field" + (errors.username ? " has-error" : "")}
/>
{errors.username && (
<span className="error-label">{errors.username.message}</span>
)}
</div>
<div className="row">
<input
type="password"
placeholder="password"
{...register("password", {
required: {
value: true,
message: "Please enter your password",
},
})}
className={"form-field" + (errors.password ? " has-error" : "")}
/>
{errors.password && (
<span className="error-label">{errors.password.message}</span>
)}
</div>
<div className="row row-remember">
<input type="checkbox" id="remember" {...register("remember")} />
<label htmlFor="remember" className="remember-label">
Remember me
</label>
</div>
<div className="row">
<button type="submit" className="btn login-btn">
Login
</button>
</div>
</form>
)}
</div>
);
};
export default IndexPage;