Add design improvements
This commit is contained in:
parent
67b11504a7
commit
c817b09c9f
|
|
@ -70,7 +70,7 @@ public class InvoiceController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/generatePDFById/{id}")
|
@GetMapping("/generatePDFById/{id}")
|
||||||
@Operation(summary = "Generar y descargar factura en PDF")
|
@Operation(summary = "Generate PDF for invoice by ID")
|
||||||
public ResponseEntity<byte[]> downloadInvoicePdf(@PathVariable Integer id) throws EntityNotFoundException {
|
public ResponseEntity<byte[]> downloadInvoicePdf(@PathVariable Integer id) throws EntityNotFoundException {
|
||||||
Invoice invoice = invoiceService.findById(id);
|
Invoice invoice = invoiceService.findById(id);
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -24,7 +24,7 @@ const LoginForm = ({ onLoginSuccess }) => {
|
||||||
onLoginSuccess();
|
onLoginSuccess();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Error al iniciar sesión:", err);
|
console.error("Error al iniciar sesión:", err);
|
||||||
setError('Email o contraseña incorrectos');
|
setError('Correo electrónico o Contraseña son incorrectos');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -32,18 +32,21 @@ const LoginForm = ({ onLoginSuccess }) => {
|
||||||
<div className="login-wrapper">
|
<div className="login-wrapper">
|
||||||
<div className="login-card">
|
<div className="login-card">
|
||||||
<h1>MemberFlow</h1>
|
<h1>MemberFlow</h1>
|
||||||
|
<h2>Accede con tus credenciales</h2>
|
||||||
<form onSubmit={handleLogin}>
|
<form onSubmit={handleLogin}>
|
||||||
<input
|
<input
|
||||||
type="email"
|
type="email"
|
||||||
placeholder="Email"
|
placeholder="Correo electrónico"
|
||||||
value={email}
|
value={email}
|
||||||
|
autoComplete="email"
|
||||||
onChange={(e) => setEmail(e.target.value)}
|
onChange={(e) => setEmail(e.target.value)}
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
<input
|
<input
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="Password"
|
placeholder="Contraseña"
|
||||||
value={password}
|
value={password}
|
||||||
|
autoComplete="current-password"
|
||||||
onChange={(e) => setPassword(e.target.value)}
|
onChange={(e) => setPassword(e.target.value)}
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,49 @@
|
||||||
|
/* Tipografía general */
|
||||||
|
body {
|
||||||
|
font-family: 'Segoe UI', 'Roboto', sans-serif;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #2d3436;
|
||||||
|
background-color: #f5f6fa;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Títulos */
|
||||||
|
h1 {
|
||||||
|
font-size: 2rem;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #0984e3;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
color: #2d3436;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 1.2rem;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
color: #2d3436;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Párrafos */
|
||||||
|
p {
|
||||||
|
font-size: 1rem;
|
||||||
|
color: #444;
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Etiquetas en formularios */
|
||||||
|
label {
|
||||||
|
font-weight: 600;
|
||||||
|
color: #2d3436;
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
.content-area {
|
.content-area {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
|
|
@ -22,17 +68,6 @@
|
||||||
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background-color: #ffffff;
|
|
||||||
border-radius: 20px;
|
|
||||||
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
|
|
||||||
padding: 30px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
transition: box-shadow 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
.card:hover {
|
||||||
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
||||||
}
|
}
|
||||||
|
|
@ -82,6 +117,7 @@ h2, h3 {
|
||||||
|
|
||||||
.profile-section {
|
.profile-section {
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-section h3 {
|
.profile-section h3 {
|
||||||
|
|
|
||||||
|
|
@ -38,11 +38,12 @@
|
||||||
form input {
|
form input {
|
||||||
width: 80%;
|
width: 80%;
|
||||||
padding: 14px 16px;
|
padding: 14px 16px;
|
||||||
margin-bottom: 20px;
|
margin: 0 auto 20px auto;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
border: 1px solid #dcdde1;
|
border: 1px solid #dcdde1;
|
||||||
outline: none;
|
outline: none;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
|
display: block;
|
||||||
transition: border-color 0.3s;
|
transition: border-color 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue