chore(fmt): aplicar oxlint
This commit is contained in:
parent
fab315eece
commit
e393e7d95d
18 changed files with 113 additions and 159 deletions
|
|
@ -7,14 +7,10 @@
|
||||||
"env": {
|
"env": {
|
||||||
"builtin": true
|
"builtin": true
|
||||||
},
|
},
|
||||||
"ignorePatterns": [
|
"ignorePatterns": ["dist"],
|
||||||
"dist"
|
|
||||||
],
|
|
||||||
"overrides": [
|
"overrides": [
|
||||||
{
|
{
|
||||||
"files": [
|
"files": ["**/*.{js,jsx}"],
|
||||||
"**/*.{js,jsx}"
|
|
||||||
],
|
|
||||||
"rules": {
|
"rules": {
|
||||||
"constructor-super": "error",
|
"constructor-super": "error",
|
||||||
"for-direction": "error",
|
"for-direction": "error",
|
||||||
|
|
@ -88,9 +84,7 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": ["react"],
|
||||||
"react"
|
|
||||||
],
|
|
||||||
"env": {
|
"env": {
|
||||||
"es2020": true,
|
"es2020": true,
|
||||||
"browser": true
|
"browser": true
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,7 @@ const login = async (req, res) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (password.length < 6) {
|
if (password.length < 6) {
|
||||||
return res
|
return res.status(400).json({ error: "Password must be at least 6 characters" });
|
||||||
.status(400)
|
|
||||||
.json({ error: "Password must be at least 6 characters" });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = await authModel.getUserByEmail(email);
|
const user = await authModel.getUserByEmail(email);
|
||||||
|
|
@ -55,9 +53,7 @@ const register = async (req, res) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (password.length < 6) {
|
if (password.length < 6) {
|
||||||
return res
|
return res.status(400).json({ error: "Password must be at least 6 characters" });
|
||||||
.status(400)
|
|
||||||
.json({ error: "Password must be at least 6 characters" });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = await authModel.getUserByEmail(email);
|
const user = await authModel.getUserByEmail(email);
|
||||||
|
|
|
||||||
|
|
@ -1,50 +1,50 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"desc": "La pizza napolitana, de masa tierna y delgada pero bordes altos, es la versión propia de la cocina napolitana de la pizza redonda. El término pizza napoletana, por su importancia histórica o regional, se emplea en algunas zonas como sinónimo de pizza tonda.",
|
"desc": "La pizza napolitana, de masa tierna y delgada pero bordes altos, es la versión propia de la cocina napolitana de la pizza redonda. El término pizza napoletana, por su importancia histórica o regional, se emplea en algunas zonas como sinónimo de pizza tonda.",
|
||||||
"id": "p001",
|
"id": "p001",
|
||||||
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-1239077_640_cl.jpg?alt=media&token=6a9a33da-5c00-49d4-9080-784dcc87ec2c",
|
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-1239077_640_cl.jpg?alt=media&token=6a9a33da-5c00-49d4-9080-784dcc87ec2c",
|
||||||
"ingredients": ["mozzarella", "tomates", "jamón", "orégano"],
|
"ingredients": ["mozzarella", "tomates", "jamón", "orégano"],
|
||||||
"name": "napolitana",
|
"name": "napolitana",
|
||||||
"price": 5950
|
"price": 5950
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
||||||
"id": "p002",
|
"id": "p002",
|
||||||
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fcheese-164872_640_com.jpg?alt=media&token=18b2b821-4d0d-43f2-a1c6-8c57bc388fab",
|
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fcheese-164872_640_com.jpg?alt=media&token=18b2b821-4d0d-43f2-a1c6-8c57bc388fab",
|
||||||
"ingredients": ["mozzarella", "tomates", "jamón", "choricillo"],
|
"ingredients": ["mozzarella", "tomates", "jamón", "choricillo"],
|
||||||
"name": "española",
|
"name": "española",
|
||||||
"price": 7250
|
"price": 7250
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
||||||
"id": "p003",
|
"id": "p003",
|
||||||
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-1239077_640_com.jpg?alt=media&token=e7cde87a-08d5-4040-ac54-90f6c31eb3e3",
|
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-1239077_640_com.jpg?alt=media&token=e7cde87a-08d5-4040-ac54-90f6c31eb3e3",
|
||||||
"ingredients": ["mozzarella", "tomates", "salame", "orégano"],
|
"ingredients": ["mozzarella", "tomates", "salame", "orégano"],
|
||||||
"name": "salame",
|
"name": "salame",
|
||||||
"price": 5990
|
"price": 5990
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
||||||
"id": "p004",
|
"id": "p004",
|
||||||
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-2000595_640_c.jpg?alt=media&token=61325b6e-a1e0-441e-b3b5-7335ba13e8be",
|
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-2000595_640_c.jpg?alt=media&token=61325b6e-a1e0-441e-b3b5-7335ba13e8be",
|
||||||
"ingredients": ["mozzarella", "salame", "aceitunas", "champiñones"],
|
"ingredients": ["mozzarella", "salame", "aceitunas", "champiñones"],
|
||||||
"name": "cuatro estaciones",
|
"name": "cuatro estaciones",
|
||||||
"price": 9590
|
"price": 9590
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
||||||
"id": "p005",
|
"id": "p005",
|
||||||
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-salame.jpg?alt=media&token=ab3d4bf8-01f2-4810-982b-bd7fb6b517b2",
|
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-salame.jpg?alt=media&token=ab3d4bf8-01f2-4810-982b-bd7fb6b517b2",
|
||||||
"ingredients": ["mozzarella", "tomates cherry", "bacon", "orégano"],
|
"ingredients": ["mozzarella", "tomates cherry", "bacon", "orégano"],
|
||||||
"name": "bacon",
|
"name": "bacon",
|
||||||
"price": 6450
|
"price": 6450
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
"desc": "La pizza es una preparación culinaria que consiste en un pan plano, habitualmente de forma circular, elaborado con harina de trigo, levadura, agua y sal (a veces aceite de oliva) que comúnmente se cubre con salsa de tomate, queso y otros muchos ingredientes, y que se hornea a alta temperatura, tradicionalmente en un horno de leña.",
|
||||||
"id": "p006",
|
"id": "p006",
|
||||||
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-2000595_640_c.jpg?alt=media&token=61325b6e-a1e0-441e-b3b5-7335ba13e8be",
|
"img": "https://firebasestorage.googleapis.com/v0/b/apis-varias-mias.appspot.com/o/pizzeria%2Fpizza-2000595_640_c.jpg?alt=media&token=61325b6e-a1e0-441e-b3b5-7335ba13e8be",
|
||||||
"ingredients": ["mozzarella", "pimientos", "pollo grillé", "orégano"],
|
"ingredients": ["mozzarella", "pimientos", "pollo grillé", "orégano"],
|
||||||
"name": "pollo picante",
|
"name": "pollo picante",
|
||||||
"price": 8500
|
"price": 8500
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"email": "test@test.com",
|
"email": "test@test.com",
|
||||||
"password": "123123",
|
"password": "123123",
|
||||||
"id": "UYz_2Vy9rNw7uELQ7AZ8D"
|
"id": "UYz_2Vy9rNw7uELQ7AZ8D"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,24 @@
|
||||||
{
|
{
|
||||||
"name": "simple-api-jwt",
|
"name": "simple-api-jwt",
|
||||||
"type": "module",
|
"version": "1.0.0",
|
||||||
"version": "1.0.0",
|
"description": "",
|
||||||
"description": "",
|
"keywords": [],
|
||||||
"main": "index.js",
|
"license": "ISC",
|
||||||
"scripts": {
|
"author": "bluuweb",
|
||||||
"start": "node index.js",
|
"type": "module",
|
||||||
"dev": "nodemon index.js"
|
"main": "index.js",
|
||||||
},
|
"scripts": {
|
||||||
"keywords": [],
|
"start": "node index.js",
|
||||||
"author": "bluuweb",
|
"dev": "nodemon index.js"
|
||||||
"license": "ISC",
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"express": "^4.19.2",
|
"express": "^4.19.2",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"nanoid": "^5.0.6"
|
"nanoid": "^5.0.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"nodemon": "^3.1.0"
|
"nodemon": "^3.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
15
src/App.jsx
15
src/App.jsx
|
|
@ -21,20 +21,11 @@ function App() {
|
||||||
<main className="pb-4">
|
<main className="pb-4">
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/" element={<Home />} />
|
<Route path="/" element={<Home />} />
|
||||||
<Route
|
<Route path="/login" element={token ? <Navigate to="/" /> : <Login />} />
|
||||||
path="/login"
|
<Route path="/register" element={token ? <Navigate to="/" /> : <Register />} />
|
||||||
element={token ? <Navigate to="/" /> : <Login />}
|
|
||||||
/>
|
|
||||||
<Route
|
|
||||||
path="/register"
|
|
||||||
element={token ? <Navigate to="/" /> : <Register />}
|
|
||||||
/>
|
|
||||||
<Route path="/pizza/:id" element={<Pizza />} />
|
<Route path="/pizza/:id" element={<Pizza />} />
|
||||||
<Route path="/cart" element={<Cart />} />
|
<Route path="/cart" element={<Cart />} />
|
||||||
<Route
|
<Route path="/profile" element={token ? <Profile /> : <Navigate to="/login" />} />
|
||||||
path="/profile"
|
|
||||||
element={token ? <Profile /> : <Navigate to="/login" />}
|
|
||||||
/>
|
|
||||||
<Route path="*" element={<NotFound />} />
|
<Route path="*" element={<NotFound />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
</main>
|
</main>
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
nav {
|
nav {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav button,
|
nav button,
|
||||||
a {
|
a {
|
||||||
--uno: "bg-none border-none hover:bg-white/20 rounded-md p-2";
|
--uno: "bg-none border-none hover:bg-white/20 rounded-md p-2";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
.card-pizza {
|
.card-pizza {
|
||||||
--uno: "rounded-md shadow-sm bg-gray-200 flex flex-col w-128 h-fit pb-2";
|
--uno: "rounded-md shadow-sm bg-gray-200 flex flex-col w-128 h-fit pb-2";
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,20 +24,12 @@ const CardPizza = (props) => {
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<p className="font-bold text-green-700">
|
<p className="font-bold text-green-700">${props.price.toLocaleString("es-CL")}</p>
|
||||||
${props.price.toLocaleString("es-CL")}
|
|
||||||
</p>
|
|
||||||
<div className="flex gap-4">
|
<div className="flex gap-4">
|
||||||
<Link
|
<Link to={`/pizza/${props.id}`} className="border-black border-2 rounded-md px-4">
|
||||||
to={`/pizza/${props.id}`}
|
|
||||||
className="border-black border-2 rounded-md px-4"
|
|
||||||
>
|
|
||||||
Ver más
|
Ver más
|
||||||
</Link>
|
</Link>
|
||||||
<button
|
<button onClick={() => addToCart(props)} className="bg-black text-white rounded-md px-4">
|
||||||
onClick={() => addToCart(props)}
|
|
||||||
className="bg-black text-white rounded-md px-4"
|
|
||||||
>
|
|
||||||
Añadir
|
Añadir
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,7 @@ const CartProvider = ({ children }) => {
|
||||||
setCart((cart) => {
|
setCart((cart) => {
|
||||||
const pizza = cart.find((p) => p.id === pizzaToAdd.id);
|
const pizza = cart.find((p) => p.id === pizzaToAdd.id);
|
||||||
if (pizza) {
|
if (pizza) {
|
||||||
return cart.map((p) =>
|
return cart.map((p) => (p.id === pizzaToAdd.id ? { ...p, count: p.count + 1 } : p));
|
||||||
p.id === pizzaToAdd.id ? { ...p, count: p.count + 1 } : p,
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
return [...cart, { ...R.omit(pizzaToAdd, ["key"]), count: 1 }];
|
return [...cart, { ...R.omit(pizzaToAdd, ["key"]), count: 1 }];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,9 +41,7 @@ const UserProvider = ({ children }) => {
|
||||||
setEmail(null);
|
setEmail(null);
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<UserContext.Provider
|
<UserContext.Provider value={{ token, setToken, email, setEmail, login, register, logout }}>
|
||||||
value={{ token, setToken, email, setEmail, login, register, logout }}
|
|
||||||
>
|
|
||||||
{children}
|
{children}
|
||||||
</UserContext.Provider>
|
</UserContext.Provider>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#root {
|
#root {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
grid-template-rows: 2rem 1fr 2rem;
|
grid-template-rows: 2rem 1fr 2rem;
|
||||||
min-height: 100dvh;
|
min-height: 100dvh;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,7 @@ const Cart = () => {
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setCart((cart) =>
|
setCart((cart) =>
|
||||||
cart.map((p) =>
|
cart.map((p) => (p.id === pizza.id ? { ...p, count: p.count + 1 } : p)),
|
||||||
p.id === pizza.id ? { ...p, count: p.count + 1 } : p,
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
className="bg-blue-500 px-4 text-white rounded-md"
|
className="bg-blue-500 px-4 text-white rounded-md"
|
||||||
|
|
@ -36,9 +34,7 @@ const Cart = () => {
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setCart((cart) =>
|
setCart((cart) =>
|
||||||
cart
|
cart
|
||||||
.map((p) =>
|
.map((p) => (p.id === pizza.id ? { ...p, count: p.count - 1 } : p))
|
||||||
p.id === pizza.id ? { ...p, count: p.count - 1 } : p,
|
|
||||||
)
|
|
||||||
.filter((p) => p.count > 0),
|
.filter((p) => p.count > 0),
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,8 @@ import { useNavigate } from "react-router-dom";
|
||||||
|
|
||||||
// Esquema de validación de login
|
// Esquema de validación de login
|
||||||
const loginSchema = z.object({
|
const loginSchema = z.object({
|
||||||
user: z
|
user: z.email({ error: "Email inválido" }).nonempty({ error: "Se requiere un email" }),
|
||||||
.email({ error: "Email inválido" })
|
password: z.string().min(6, { error: "La contraseña debe tener al menos 6 caracteres" }),
|
||||||
.nonempty({ error: "Se requiere un email" }),
|
|
||||||
password: z
|
|
||||||
.string()
|
|
||||||
.min(6, { error: "La contraseña debe tener al menos 6 caracteres" }),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const Login = () => {
|
const Login = () => {
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ const NotFound = () => {
|
||||||
<section className="flex gap-4 flex-col w-fit">
|
<section className="flex gap-4 flex-col w-fit">
|
||||||
<h1 className="text-4xl">Error 404</h1>
|
<h1 className="text-4xl">Error 404</h1>
|
||||||
<p>
|
<p>
|
||||||
¿No sabes qué es eso? Significa que esta página no existe. Vamos,
|
¿No sabes qué es eso? Significa que esta página no existe. Vamos, volvamos a la página
|
||||||
volvamos a la página principal
|
principal
|
||||||
</p>
|
</p>
|
||||||
<Link
|
<Link
|
||||||
to="/"
|
to="/"
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,7 @@ const Pizza = () => {
|
||||||
return pizza && !error ? (
|
return pizza && !error ? (
|
||||||
<section id="pizza">
|
<section id="pizza">
|
||||||
<h1 className="text-4xl font-bold">Pizza {pizza.name}</h1>
|
<h1 className="text-4xl font-bold">Pizza {pizza.name}</h1>
|
||||||
<p className="text-green-700 font-bold text-2xl">
|
<p className="text-green-700 font-bold text-2xl">${pizza.price.toLocaleString("es-CL")}</p>
|
||||||
${pizza.price.toLocaleString("es-CL")}
|
|
||||||
</p>
|
|
||||||
<img src={pizza.img} className="rounded-md" />
|
<img src={pizza.img} className="rounded-md" />
|
||||||
<p>{pizza.desc}</p>
|
<p>{pizza.desc}</p>
|
||||||
<h2 className="text-3xl">Ingredientes</h2>
|
<h2 className="text-3xl">Ingredientes</h2>
|
||||||
|
|
@ -30,10 +28,7 @@ const Pizza = () => {
|
||||||
<li key={index}>- {i}</li>
|
<li key={index}>- {i}</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
<button
|
<button onClick={() => addToCart(pizza)} className="text-white bg-black p-2 rounded-md">
|
||||||
onClick={() => addToCart(pizza)}
|
|
||||||
className="text-white bg-black p-2 rounded-md"
|
|
||||||
>
|
|
||||||
Añadir al carrito
|
Añadir al carrito
|
||||||
</button>
|
</button>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,7 @@ import { UserContext } from "../context/UserContext";
|
||||||
const registerSchema = z
|
const registerSchema = z
|
||||||
.object({
|
.object({
|
||||||
user: z.email().nonempty({ error: "Se requiere un email" }),
|
user: z.email().nonempty({ error: "Se requiere un email" }),
|
||||||
password: z
|
password: z.string().min(6, { error: "la contraseña debe ser de al menos 6 caracteres" }),
|
||||||
.string()
|
|
||||||
.min(6, { error: "la contraseña debe ser de al menos 6 caracteres" }),
|
|
||||||
confirmPassword: z.string(),
|
confirmPassword: z.string(),
|
||||||
})
|
})
|
||||||
.refine((data) => data.password === data.confirmPassword, {
|
.refine((data) => data.password === data.confirmPassword, {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { defineConfig, presetWind3, transformerDirectives } from "unocss";
|
import { defineConfig, presetWind3, transformerDirectives } from "unocss";
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
presets: [presetWind3()],
|
presets: [presetWind3()],
|
||||||
transformers: [transformerDirectives()],
|
transformers: [transformerDirectives()],
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue