diff --git a/src/pages/users/admin/codigos.jsx b/src/pages/users/admin/codigos.jsx
index 2301c7f..240debd 100644
--- a/src/pages/users/admin/codigos.jsx
+++ b/src/pages/users/admin/codigos.jsx
@@ -17,7 +17,7 @@ const ComponenteCodigos = () => {
const [fechaInicio, setFechaInicio] = useState(''); // Estado para fecha de inicio
const [fechaFin, setFechaFin] = useState(''); // Estado para fecha de fin
const [planesSeleccionados, setPlanesSeleccionados] = useState([]);
-
+ const [comunasSeleccionadas, setComunasSeleccionadas] = useState([]); // Estado para comunas seleccionadas
// Lista de comunas y categorías
const comunas = [
@@ -46,10 +46,10 @@ const ComponenteCodigos = () => {
];
const planes = [
- "Mensual",
- "Trimestral",
- "Semestral",
- "Anual"
+ "Mes",
+ "Trimestre",
+ "Semestre",
+ "Año"
]
const handlePlanChange = (plan) => {
@@ -133,36 +133,26 @@ const ComponenteCodigos = () => {
Generador de Códigos
-
-
Duración del código:
-
- setDuracion(e.target.value)}
- placeholder="Duración"
- className="codigo-input"
- />
- setTipoDuracion(e.target.value)}
- className="codigo-select"
- >
- Horas
- Días
-
-
-
+
Usos permitidos:
setUsos(e.target.value)}
- placeholder="Número de usos"
- className="codigo-input"
- />
+ type="number"
+ value={usos}
+ onChange={(e) => {
+ const valor = parseInt(e.target.value, 10);
+ if (!isNaN(valor) && valor >= 1) {
+ setUsos(valor); // Actualiza si es válido
+ } else {
+ setUsos(''); // Vacía el campo si no es válido
+ }
+ }}
+ min="1" // Establece el mínimo permitido en el atributo HTML
+ placeholder="Número de usos"
+ className="codigo-input"
+ />
+
@@ -177,25 +167,58 @@ const ComponenteCodigos = () => {
Georreferenciado
-
{tipoCodigo === "Georreferenciado" && (
-
- Seleccione la comuna
- setComuna(e.target.value)}
- className="codigo-select"
- >
- Seleccione una comuna
- {comunas.map((comuna) => (
-
- {comuna}
-
- ))}
-
-
- )}
+
+ {/* Contenedor de etiquetas de comunas seleccionadas */}
+
+ {comunasSeleccionadas.map((comuna) => (
+
+ {comuna}
+ setComunasSeleccionadas(
+ comunasSeleccionadas.filter((item) => item !== comuna)
+ )}
+ className="tag-remove"
+ >
+ ×
+
+
+ ))}
+
+
+ {/* Selector para agregar nuevas comunas */}
+
{
+ const selectedComuna = e.target.value;
+ if (
+ selectedComuna &&
+ !comunasSeleccionadas.includes(selectedComuna)
+ ) {
+ setComunasSeleccionadas([...comunasSeleccionadas, selectedComuna]);
+ }
+ }}
+ className="comuna-select"
+ >
+
+ Seleccione una comuna
+ {comunas
+ .filter((comuna) => !comunasSeleccionadas.includes(comuna))
+ .map((comuna) => (
+
+ {comuna}
+
+ ))}
+
+
+
+)}
+
+
+
+
Aplicar código sobre:
diff --git a/src/pages/users/admin/precios.jsx b/src/pages/users/admin/precios.jsx
index 2f92e62..7824c53 100644
--- a/src/pages/users/admin/precios.jsx
+++ b/src/pages/users/admin/precios.jsx
@@ -165,6 +165,13 @@ function GestionPreciosTabla() {
),
});
+ const handleSave = () => {
+ const isConfirmed = window.confirm("¿Está seguro de que desea guardar los cambios?");
+ if (isConfirmed) {
+ formik.handleSubmit(); // Llama a la función de submit de Formik
+ }
+ };
+
const formik = useFormik({
initialValues,
validationSchema,
@@ -185,9 +192,18 @@ function GestionPreciosTabla() {
return (
+
+
Gestión de Precios
+
+ Guardar
+
+
+
+
+
-
Gestión de Precios
-
1. Ingresa el precio normal y precio promocional de tu plan.
+
+
1. Ingresa el precio normal (IVA incluído) y precio promocional de tu plan.
2. Escoge cuál de los dos se mostrará al usuario (si el precio normal o el precio en promoción).
@@ -212,6 +228,7 @@ function GestionPreciosTabla() {
Servicios y Oficios
+
@@ -325,9 +347,7 @@ function GestionPreciosTabla() {
))}
-
- Guardar
-
+
diff --git a/src/pages/users/notificacion.jsx b/src/pages/users/notificacion.jsx
index 33b55f2..4a5d71b 100644
--- a/src/pages/users/notificacion.jsx
+++ b/src/pages/users/notificacion.jsx
@@ -30,7 +30,12 @@ const Notification = () => {
const [url, setUrl] = useState('');
const [comunaInput, setComunaInput] = useState(''); // Input del usuario
const comunas = ['Santiago', 'Providencia', 'Ñuñoa', 'La Florida', 'Las Condes']; // Lista fija de comunas
- const preferencias = ['Deportes', 'Cultura', 'Educación', 'Salud', 'Tecnología'];
+ const preferencias = [
+ 'Salud y Belleza', 'Arte y Cultura', 'Cine, Teatro y Espectáculos',
+ 'Comida y Restaurantes', 'Hobbies', 'Música', 'Deportes y Actividad Física',
+ 'Mascotas', 'Hogar', 'Ciencia y Tecnología', 'Educación', 'Mundo Automotor',
+ 'Mundo Niños', 'Viajes y Turismo'
+ ];
const [seleccionadas, setSeleccionadas] = useState([]);
const [filteredComunas, setFilteredComunas] = useState([]);
const [showDays, setShowDays] = useState(false);
@@ -441,45 +446,44 @@ const Notification = () => {
{repeat && (
-
- {/* Input y dropdown en la misma fila */}
-
- Repetir cada
-
-
- día
- semana
- mes
- año
-
-
-
- {/* Mostrar los días de la semana si "semana" está seleccionado */}
- {showDays && (
-
- {['D', 'L', 'M', 'X', 'J', 'V', 'S'].map((day) => (
-
- {day}
-
- ))}
+ <>
+
+ {/* Input y dropdown en la misma fila */}
+
+ Repetir cada
+
+
+ día
+ semana
+ mes
+ año
+
+
- )}
-
-)}
-{/* Mostrar opciones adicionales si "mes" está seleccionado */}
-{unit === 'mes' && (
+
+ {/* Mostrar los días de la semana si "semana" está seleccionado */}
+ {showDays && (
+
+ {['D', 'L', 'M', 'X', 'J', 'V', 'S'].map((day) => (
+
+ {day}
+
+ ))}
+
+ )}
+ {unit === 'mes' && (
{
)}
- {/* Opciones adicionales si "día" o "año" están seleccionados */}
- {(unit === 'día' || unit === 'año') && (
-
-
Termina
-
-
-
- Nunca
-
-
-
- {/* Opción "El" */}
-
-
-
- El
-
-
-
- {/* Opción "Después de" */}
-
-
-
- Después de
-
-
+
+ {/* Mostrar la sección "Termina" solo cuando `repeat` está activado */}
+
-
-
-
-
- )}
+ >
+)}
+
+
diff --git a/src/styles/users/admin/codigos.css b/src/styles/users/admin/codigos.css
index fadcdd4..7568ce3 100644
--- a/src/styles/users/admin/codigos.css
+++ b/src/styles/users/admin/codigos.css
@@ -1,5 +1,4 @@
-
.codigo-container {
max-width: 1000px;
margin: 50px auto;
@@ -108,11 +107,40 @@
.checkbox-container {
display: grid;
grid-template-columns: repeat(2, 1fr); /* 2 columnas del mismo tamaño */
- gap: 10px; /* Espacio entre filas y columnas */
+ gap: 0px; /* Espacio entre filas y columnas */
}
.checkbox-item {
display: flex;
align-items: center;
}
-
\ No newline at end of file
+
+ .comuna-select {
+ width: 70%; /* Ocupa todo el ancho disponible */
+ padding: 10px; /* Espaciado interno */
+ font-size: 14px; /* Tamaño de fuente */
+ border: 1px solid #ccc; /* Borde gris */
+ border-radius: 5px; /* Bordes redondeados */
+ background-color: #fff; /* Fondo blanco */
+ color: #333; /* Color del texto */
+ transition: border-color 0.3s ease, box-shadow 0.3s ease;
+ appearance: none; /* Elimina el estilo predeterminado del navegador */
+ background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='%23333' d='M7 10l5 5 5-5H7z'/%3E%3C/svg%3E"); /* Icono de flecha */
+ background-repeat: no-repeat;
+ background-position: right 10px center;
+ background-size: 12px;
+ cursor: pointer; /* Cambia el cursor a una mano */
+ margin-left: 0;
+ text-align: left;
+ }
+
+ .comuna-select:focus {
+ border-color: #007bff; /* Cambia el borde a azul al enfocar */
+ outline: none; /* Elimina el contorno predeterminado */
+ box-shadow: 0 0 5px rgba(0, 123, 255, 0.5); /* Sombra azul */
+ }
+
+ .comuna-select-container {
+ display: flex;
+ justify-content: flex-start; /* Alinea los elementos hacia la izquierda */
+ }
\ No newline at end of file
diff --git a/src/styles/users/admin/precios.css b/src/styles/users/admin/precios.css
index 882d6c1..c698807 100644
--- a/src/styles/users/admin/precios.css
+++ b/src/styles/users/admin/precios.css
@@ -4,11 +4,8 @@
}
/* Title */
- .gestion-precios-title {
- font-size: 24px;
- font-weight: bold;
- margin-bottom: 20px;
- }
+
+
/* Filter container */
.filtro-categoria-container {
@@ -29,19 +26,8 @@
}
- /* Table */
- .gestion-precios-table {
- width: 100%;
- border-collapse: collapse;
- margin-bottom: 20px;
- }
-
- .gestion-precios-th,
- .gestion-precios-td {
- border: 1px solid #ccc;
- padding: 10px;
- }
+
.error-message {
color: #d93025; /* Rojo elegante */
@@ -66,56 +52,152 @@
}
-
- /* Estilo para eliminar las flechas de incremento en el input number */
+ /* Tabla general */
+.gestion-precios-table {
+ width: 100%;
+ border-collapse: collapse; /* Elimina espacios entre bordes */
+ margin-bottom: 20px;
+ background-color: #f9f9f9; /* Fondo claro para la tabla */
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Sombra para resaltar */
+ border-radius: 8px; /* Bordes redondeados */
+ overflow: hidden; /* Asegura que los bordes sean visibles */
+}
+
+/* Estilo de los encabezados de tabla */
+.gestion-precios-th {
+ background-color: #fc7b03; /* Fondo naranja */
+ color: white; /* Texto blanco */
+ font-size: 16px;
+ font-weight: bold;
+ text-align: center; /* Texto centrado */
+ padding: 12px; /* Espaciado interno */
+ border: 1px solid #ddd; /* Bordes claros */
+}
+
+/* Estilo para celdas */
+.gestion-precios-td {
+ padding: 12px; /* Espaciado interno */
+ text-align: center; /* Texto centrado */
+ border: 1px solid #ddd; /* Bordes claros */
+ font-size: 14px;
+ color: #333; /* Texto oscuro */
+ background-color: #fff; /* Fondo blanco */
+}
+
+/* Resaltado en filas al pasar el cursor */
+.gestion-precios-td:hover {
+ background-color: #f0f0f0; /* Fondo gris claro */
+}
+
+/* Inputs dentro de las celdas */
.gestion-precios-input {
- -moz-appearance: textfield; /* Firefox */
- -webkit-appearance: none; /* Chrome, Safari */
- appearance: none; /* Otros navegadores */
- /* O el valor que desees en píxeles */
- /* O puedes usar otras unidades como %, em, rem, etc. */
+ width: 100%; /* Ocupa todo el ancho de la celda */
+ padding: 8px;
+ font-size: 14px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ box-sizing: border-box; /* Asegura que el padding no desborde */
+}
+/* Inputs enfocados */
+.gestion-precios-input:focus {
+ border-color: #007bff; /* Azul para el borde al enfocar */
+ outline: none; /* Elimina el contorno predeterminado */
+ box-shadow: 0 0 5px rgba(0, 123, 255, 0.3); /* Sombra azul clara */
}
-/* Para asegurar que los estilos se apliquen correctamente */
-.gestion-precios-input::-webkit-outer-spin-button,
-.gestion-precios-input::-webkit-inner-spin-button {
- -webkit-appearance: none;
- margin: 0;
+/* Estilo para selects dentro de la tabla */
+.gestion-precios-input select {
+ width: 100%;
+ padding: 8px;
+ font-size: 14px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+
+/* Fila de la tabla */
+.gestion-precios-row {
+ transition: background-color 0.3s ease; /* Transición suave para el hover */
+}
+
+/* Placeholder para fechas */
+.date-input-container .placeholder {
+
+ top: 50%;
+ left: 10px;
+ transform: translateY(-50%);
+ color: #aaa;
+ pointer-events: none; /* Evita interferencia con clics */
+
}
+/* Sombra al hacer hover sobre los campos */
+.date-input-container input:focus {
+ box-shadow: 0 0 5px rgba(0, 123, 255, 0.5);
+}
+
+
+
- /* Button */
- .gestion-precios-button {
- background-color: #fc7b03 !important; /* Color de fondo naranja */
- color: white;
- font-weight: bold !important; /* Texto en negrita */
- border-radius: 20px; /* Bordes redondeados */
- padding: 10px 20px; /* Tamaño del botón */
- cursor: pointer; /* Icono de mano al pasar el mouse */
- transition: background-color 0.3s; /* Transición suave */
- border: none; /* Sin borde */
+
+
+
+ .gestion-precios-container-button {
+ text-align: right; /* Alinea el texto y los elementos inline a la derecha */
+ padding: 10px; /* Espaciado opcional */
+
}
.date-input-container {
- position: relative;
+ width: 100%; /* Asegúrate de que ocupe todo el ancho disponible de la celda */
+ max-width: 300px; /* Ajusta este valor según el tamaño deseado */
display: flex;
+ flex-direction: column; /* Para organizar los elementos verticalmente */
+ gap: 20px;
+
}
- .date-placeholder {
- color: transparent;
+
+
+
+
+
+ .date-input-container input[type="date"] {
+ width: 100%; /* Ocupa todo el ancho del contenedor */
+ padding: 8px; /* Espaciado interno */
+ font-size: 14px; /* Tamaño de fuente */
+ border: 1px solid #ccc; /* Bordes suaves */
+ border-radius: 4px; /* Bordes redondeados */
+
}
- .date-input-container .placeholder {
- position: absolute;
- top: 50%;
- left: 10px;
- transform: translateY(-50%);
- color: #aaa;
- pointer-events: none; /* Para que no interfiera con los clics */
+
+ .gestion-precios-header {
+ display: flex; /* Activa Flexbox */
+ justify-content: space-between; /* Título a la izquierda, botón a la derecha */
+ align-items: center; /* Alinea verticalmente ambos elementos */
+ margin-bottom: 20px; /* Espacio debajo del encabezado */
+ padding: 15px;
+ margin-left: 10px;
+ margin-top: 20px;
+ margin-bottom: 0;
}
- input[type="date"]:focus + .placeholder {
- display: none;
+ .gestion-precios-title {
+ font-size: 24px; /* Tamaño del título */
+ font-weight: bold; /* Negrita */
+ margin: 0; /* Elimina márgenes extra */
+ }
+
+ .gestion-precios-button {
+ background-color: #fc7b03; /* Color de fondo */
+ color: white; /* Color del texto */
+ font-weight: bold; /* Negrita */
+ border-radius: 20px; /* Bordes redondeados */
+ padding: 10px 20px; /* Tamaño del botón */
+ cursor: pointer; /* Cursor de mano al pasar */
+ transition: background-color 0.3s; /* Transición suave */
+ border: none; /* Sin borde */
+ font-size: 16px; /* Ajusta el tamaño del texto del botón */
}
diff --git a/src/styles/users/notification.css b/src/styles/users/notification.css
index 279cf90..47ebbe6 100644
--- a/src/styles/users/notification.css
+++ b/src/styles/users/notification.css
@@ -333,6 +333,7 @@ body {
gap: 10px; /* Espaciado entre los días */
margin-top: 10px; /* Espaciado superior respecto al input y select */
flex-wrap: wrap; /* Permitir que los días se acomoden en varias filas si es necesario */
+
}
@@ -396,35 +397,29 @@ body {
/* Quitar estilos predeterminados de focus */
.repeat-number:focus,
.repeat-select:focus {
- border-color: #8c52ff; /* Color del borde al enfocar */
+ border-color: #ffa426; /* Color del borde al enfocar */
outline: none; /* Eliminar contorno predeterminado */
}
/* Contenedor del dropdown adicional */
.month-options-container {
display: flex; /* Usa flexbox */
- justify-content: center; /* Centra horizontalmente */
- margin-top: 15px; /* Espaciado superior */
+
+
+ padding: 30px;
}
/* Dropdown adicional */
.month-options-dropdown {
- width: 60%; /* Ancho ajustado al contenido */
- padding: 10px;
+ width: 100%; /* Ancho ajustado al contenido */
font-size: 14px;
border: 1px solid #ccc;
border-radius: 5px;
background-color: #fff;
}
-/* Aumentar el tamaño del radio button */
-/* Contenedor principal */
-.termination-options {
- margin-top: 20px;
-}
-
-/* Estilo de cada opción */
+/* Estilo del contenedor para las opciones de "Termina" */
.termination-item {
display: flex;
align-items: center;
@@ -437,7 +432,29 @@ body {
width: 18px;
height: 18px;
margin-right: 10px;
- vertical-align: middle;
+ border: 1px solid #ccc;
+ border-radius: 5px;
+ background-color: #fff;
+ appearance: none; /* Elimina el diseño predeterminado */
+ cursor: pointer;
+}
+
+/* Radio Buttons activos */
+.termination-item input[type="radio"]:checked {
+ background-color: #ffa920;
+ border-color: #000000;
+}
+
+/* Inputs adicionales (deshabilitados) */
+.termination-date,
+.termination-number {
+ height: 40px; /* Coincide con el height del dropdown y input number */
+ padding: 5px 10px;
+ font-size: 14px;
+ border: 1px solid #ccc;
+ border-radius: 5px;
+ box-sizing: border-box;
+ width: auto; /* Ajusta según el contenido */
}
/* Inputs deshabilitados */
@@ -449,10 +466,37 @@ body {
cursor: not-allowed;
}
+/* Inputs habilitados */
+.termination-date:enabled,
+.termination-number:enabled {
+ border-color: #000000;
+}
-/* Título de la sección "Termina" */
+/* Opciones de repetición */
+.repetition-container {
+ display: flex;
+ align-items: center;
+ gap: 5px;
+}
+
+/* Etiqueta de repetición */
+.repetition-label {
+ font-size: 14px;
+ color: #333;
+}
+.termination-options {
+ display: flex;
+ flex-direction: column;
+ gap: 15px; /* Espaciado entre opciones */
+ padding: 10px;
+ border: 1px solid #ccc;
+ border-radius: 5px;
+ background-color: #fff;
+ width: 100%;
+}
.termination-title {
font-size: 16px;
- font-weight: bold;
+ font-weight: 500;
+ color: #333;
margin-bottom: 10px;
}