(null);
+
+ const toggleMenu = () => setOpenMenu(!openMenu);
+ const toggleSubMenu = (index: number) => {
+ setOpenSubMenu(openSubMenu === index ? null : index);
+ };
+ return (
+
+
+
+
+ toggleSubMenu(0)}>
+ Inscripciones
+
+
+ Alta
+
+
+ Agregar Tiempo
+
+
+ Inscripciones
+
+
+
+
+ toggleSubMenu(1)}>
+ Servicios
+
+
+
+ Impresiones y Ploteo
+
+
+
+
+ Asignacion de Mesas
+
+
+
+
+ Asignacion de Equipos
+
+
+
+
+ Monitor
+
+
+
+
+
+ toggleSubMenu(2)}>
+ Equipo
+
+
+ Informacion de Equipos
+
+
+ Activos y en Mantenimiento
+
+
+ Mensajes
+
+
+ Programas
+
+
+
+
+ Reportes
+ Quitar sancion
+ Cambiar contraseña
+
+
+ );
+}
+
+export default BarNavigation;
diff --git a/app/Components/Footer/Footer.tsx b/app/Components/Footer/Footer.tsx
new file mode 100644
index 0000000..9fd3865
--- /dev/null
+++ b/app/Components/Footer/Footer.tsx
@@ -0,0 +1,12 @@
+
+function Footer() {
+ return (
+
+ Hecho en México. Todos los derechos reservados 2025.
+ Esta página puede ser reproducida con fines no lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica. De otra forma, requiere permiso previo por escrito de la institución.
+
+ )
+}
+
+export default Footer;
+//IO
\ No newline at end of file
diff --git a/app/Components/Header/Header.css b/app/Components/Header/Header.css
new file mode 100644
index 0000000..86d608c
--- /dev/null
+++ b/app/Components/Header/Header.css
@@ -0,0 +1,34 @@
+.logo {
+ position: relative;
+ filter: invert(1);
+ z-index: 3;
+}
+
+.cedetecContainer {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 300px;
+ height: 100%;
+ z-index: -1;
+}
+
+.cedetecContainer::after {
+ content: '';
+ position: absolute;
+ inset: 0;
+ background: linear-gradient(to right, #f9f9f9, rgba(128, 128, 128, 0));
+}
+
+.yellowPart {
+ position: absolute;
+ content: "";
+ top: 0;
+ left: -20px;
+ width: 30%;
+ height: 50%;
+ min-width: 300px;
+ background-color: #d59f0f;
+ transform: skew(-45deg);
+ z-index: 0;
+}
diff --git a/app/Components/Header/Header.tsx b/app/Components/Header/Header.tsx
new file mode 100644
index 0000000..1d5f8f7
--- /dev/null
+++ b/app/Components/Header/Header.tsx
@@ -0,0 +1,31 @@
+import Image from "next/image";
+import "./Header.css";
+import Link from "next/link";
+
+function Header() {
+ return (
+
+ );
+}
+
+export default Header;
+//IO
\ No newline at end of file
diff --git a/app/Components/Impressions/Impressions.css b/app/Components/Impressions/Impressions.css
new file mode 100644
index 0000000..fd07ab9
--- /dev/null
+++ b/app/Components/Impressions/Impressions.css
@@ -0,0 +1,6 @@
+.impressions {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+ padding: 1rem;
+}
\ No newline at end of file
diff --git a/app/Components/Impressions/impressions.tsx b/app/Components/Impressions/impressions.tsx
new file mode 100644
index 0000000..040e10d
--- /dev/null
+++ b/app/Components/Impressions/impressions.tsx
@@ -0,0 +1,103 @@
+'use client'
+import { useState } from "react";
+import './Impressions.css'
+function Impressions() {
+ const [pages, setPages] = useState('');
+
+ const [error, setError] = useState('');
+ const [alert, setAlert] = useState('');
+ const [showError, setShowError] = useState(false);
+ const [showAlert, setShowAlert] = useState(false);
+
+ // const handlePayment = async () => {
+ // setAlert('')
+ // setError('')
+ // if (!studentData) {
+ // setError('Error busca denuevo al estudiante');
+ // return;
+ // }
+ // if (!pages) {
+ // setError('Ingresa el numero de hojas a imprimir')
+ // return;
+ // }
+ // try {
+ // await axios.post(
+ // `${url}/impressions`,
+ // {
+ // numAccount: numAccount,
+ // pages: parseInt(pages),
+ // cost: parseInt(pages),
+ // },
+ // { headers }
+ // );
+ // handleSearch()
+ // setAlert('Cobro realizado correctamente');
+ // setPages('')
+ // } catch (error) {
+ // const errorMessage = error.response?.data?.error || 'No se encontró el estudiante';
+
+ // if (errorMessage === 'Token inválido') {
+ // handleLogout();
+ // }
+
+ // setError(errorMessage);
+ // }
+ // };
+
+ return (
+
+ )
+}
+
+export default Impressions
\ No newline at end of file
diff --git a/app/Components/Login/Login.css b/app/Components/Login/Login.css
new file mode 100644
index 0000000..68ed2d6
--- /dev/null
+++ b/app/Components/Login/Login.css
@@ -0,0 +1,19 @@
+.login {
+ width: 300px;
+}
+
+.relative {
+ position: relative;
+}
+
+.eyeClose,
+.eyeOpen {
+ position: absolute;
+ right: 10px;
+ bottom: -1px;
+ transform: translateY(-50%);
+ width: 20px;
+ height: 20px;
+ background-size: cover;
+ cursor: pointer;
+}
diff --git a/app/Components/Login/Login.tsx b/app/Components/Login/Login.tsx
new file mode 100644
index 0000000..b0d2bcb
--- /dev/null
+++ b/app/Components/Login/Login.tsx
@@ -0,0 +1,59 @@
+import "./Login.css";
+
+function Login() {
+ return (
+ }}
+ >
+ Inicio de sesión
+
+
+ Usuario
+ setUser(e.target.value)}
+ placeholder='Coloca tu usuario...'
+ />
+
+
+
+ Contraseña
+ setPassword(e.target.value)}
+ placeholder='Coloca tu contraseña...'
+ />
+ setShowPassword(!showPassword)}
+ //className={showPassword ? 'eyeOpen' : 'eyeClose'}
+ />
+
+
+ Iniciar sesión
+
+
+ {/*message &&
+
+ {message}
+
+ */}
+
+ );
+}
+
+export default Login;
\ No newline at end of file
diff --git a/app/Components/Receipt/Receipt.css b/app/Components/Receipt/Receipt.css
new file mode 100644
index 0000000..e69de29
diff --git a/app/Components/Receipt/Receipt.tsx b/app/Components/Receipt/Receipt.tsx
new file mode 100644
index 0000000..bcaf967
--- /dev/null
+++ b/app/Components/Receipt/Receipt.tsx
@@ -0,0 +1,128 @@
+'use client'
+import { useEffect, useState } from "react";
+import "./Receipt.css"
+import Selection from "../Selection/Selection";
+
+function Receipt() {
+ const [folio, setFolio] = useState('');
+ const [amount, setAmount] = useState('');
+ const [date, setDate] = useState('');
+
+ const [error, setError] = useState('');
+ const [alert, setAlert] = useState('');
+ const [showError, setShowError] = useState(false);
+ const [showAlert, setShowAlert] = useState(false);
+
+ //restrict this month//
+ const day = new Date();
+ const year = day.getFullYear();
+ const month = day.getMonth();
+ const today = day.getDate();
+
+ const minFecha = new Date(year, month, 1).toISOString().split('T')[0];
+ const maxFecha = new Date(year, month, today).toISOString().split('T')[0];
+ //restrict this month//
+
+ //fadeOut alert and error
+ useEffect(() => {
+ if (alert) {
+ setShowAlert(true);
+ const timeout = setTimeout(() => {
+ setShowAlert(false);
+ setTimeout(() => setAlert(''), 500);
+ }, 6000);
+ return () => clearTimeout(timeout);
+ }
+ }, [alert]);
+
+ useEffect(() => {
+ if (error) {
+ setShowError(true);
+ const timeout = setTimeout(() => {
+ setShowError(false);
+ setTimeout(() => setError(''), 500);
+ }, 6000);
+ return () => clearTimeout(timeout);
+ }
+ }, [error]);
+ //fadeOut alert and error//
+
+ return (
+
+ )
+}
+
+export default Receipt
+//IO
\ No newline at end of file
diff --git a/app/Components/SearchUser/searchUser.css b/app/Components/SearchUser/searchUser.css
new file mode 100644
index 0000000..e69de29
diff --git a/app/Components/SearchUser/searchUser.tsx b/app/Components/SearchUser/searchUser.tsx
new file mode 100644
index 0000000..ca07352
--- /dev/null
+++ b/app/Components/SearchUser/searchUser.tsx
@@ -0,0 +1,42 @@
+'use client'
+import { useState } from "react";
+
+function SearchUser() {
+ const [numAccount, setNumAccount] = useState('');
+ return (
+ <>
+
+
+
+ No.Cuenta: id_cuenta
+ Nombre: nombre
+ Carrera: carrera
+ Crédito: credito
+
+ >
+ )
+}
+
+export default SearchUser
\ No newline at end of file
diff --git a/app/Components/Selection/Selection.css b/app/Components/Selection/Selection.css
new file mode 100644
index 0000000..9f84044
--- /dev/null
+++ b/app/Components/Selection/Selection.css
@@ -0,0 +1,41 @@
+.selection {
+ display: flex;
+ gap: 1rem;
+ justify-content: center;
+ align-items: center;
+ margin: 10px;
+ flex-wrap: wrap;
+}
+
+.selectionItem {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ cursor: pointer;
+}
+
+.buttonSelection {
+ width: 50px;
+ height: 50px;
+ border-radius: 100%;
+ border: 2px solid #5b8cc9;
+ background-color: #f0f0f0;
+ transition: all 0.3s ease;
+}
+
+.buttonSelection:hover {
+ transform: scale(1.1);
+ background-color: #d0e1ff;
+}
+
+.buttonSelection.active {
+ background-color: #5b8cc9;
+ box-shadow: 0 0 10px #5b8cc9;
+}
+
+.buttonLabel {
+ margin-top: 8px;
+ font-weight: bold;
+ color: #333;
+ text-align: center;
+}
diff --git a/app/Components/Selection/Selection.tsx b/app/Components/Selection/Selection.tsx
new file mode 100644
index 0000000..0ab749e
--- /dev/null
+++ b/app/Components/Selection/Selection.tsx
@@ -0,0 +1,57 @@
+'use client';
+
+import { useState } from "react";
+import "./Selection.css";
+
+function Selection() {
+ const [selected, setSelected] = useState(null);
+
+ const options = [
+ {
+ name: "WINDOWS",
+ img: "https://images.icon-icons.com/2235/PNG/512/windows_os_logo_icon_134678.png",
+ },
+ {
+ name: "MACINTOSH",
+ img: "https://upload.wikimedia.org/wikipedia/commons/f/fa/Apple_logo_black.svg",
+ },
+ {
+ name: "LINUX",
+ img: "https://upload.wikimedia.org/wikipedia/commons/3/35/Tux.svg",
+ },
+ {
+ name: "PROFESORES",
+ img: "https://cdn-icons-png.flaticon.com/512/3135/3135715.png",
+ },
+ ];
+
+ const handleSelect = (optionName: string) => {
+ setSelected(selected === optionName ? null : optionName);
+ };
+
+ return (
+
+ {options.map((option, index) => (
+ handleSelect(option.name)}
+ >
+
+
+
+
{option.name}
+
+ ))}
+
+ );
+}
+
+export default Selection;
diff --git a/app/Components/StepNavigator/StepNavigator.css b/app/Components/StepNavigator/StepNavigator.css
new file mode 100644
index 0000000..fae51a9
--- /dev/null
+++ b/app/Components/StepNavigator/StepNavigator.css
@@ -0,0 +1,10 @@
+.receipt {
+ max-width: 600px;
+ margin-top: 1rem;
+ border: 1px solid #e5e7eb;
+ border-radius: 4px;
+ background-color: #f9fafb;
+ padding: 1rem;
+ display: flex;
+ flex-direction: column;
+}
\ No newline at end of file
diff --git a/app/Components/StepNavigator/StepNavigator.tsx b/app/Components/StepNavigator/StepNavigator.tsx
new file mode 100644
index 0000000..9197eca
--- /dev/null
+++ b/app/Components/StepNavigator/StepNavigator.tsx
@@ -0,0 +1,48 @@
+'use client'
+
+import { useState, ReactNode } from "react";
+import "./StepNavigator.css"
+
+interface StepNavigatorProps {
+ totalSteps: number;
+ children: ReactNode[];
+ onFinish?: () => void;
+}
+
+export default function StepNavigator({ totalSteps, children, onFinish }: StepNavigatorProps) {
+ const [step, setStep] = useState(1);
+
+ const handleNext = (e: React.MouseEvent) => {
+ e.preventDefault();
+ if (step < totalSteps) setStep(step + 1);
+ else if (onFinish) onFinish();
+ };
+
+ const handlePrev = (e: React.MouseEvent) => {
+ e.preventDefault();
+ if (step > 1) setStep(step - 1);
+ };
+
+ return (
+
+ {children[step - 1]}
+
+
+ {step > 1 && (
+
+ Atrás
+
+ )}
+
+
+ {step === totalSteps ? "Inscribir" : "Siguiente"}
+
+
+
+ );
+}
diff --git a/app/Impresiones/page.tsx b/app/Impresiones/page.tsx
new file mode 100644
index 0000000..9ab2463
--- /dev/null
+++ b/app/Impresiones/page.tsx
@@ -0,0 +1,52 @@
+'use client'
+
+import { useState } from "react";
+import Receipt from "../Components/Receipt/Receipt";
+import SearchUser from "../Components/SearchUser/searchUser";
+import "@/app/globals.css"
+import Impressions from "../Components/Impressions/impressions";
+
+export default function Page() {
+ const [view, setView] = useState('impresiones');
+
+ return (
+
+ IMPRESIONES Y PLOTEO
+
+
+
+
+ setView('impresiones')}
+ >
+ Impresiones
+
+ setView('recibo')}
+ >
+ Recibo
+
+
+
+ {view === 'impresiones' && (
+
+ )}
+
+ {view === 'recibo' && (
+ <>
+
+
+ Buscar
+
+ >
+
+ )}
+
+
+
+ );
+}
+//IO
\ No newline at end of file
diff --git a/app/InformacionEquipo/page.tsx b/app/InformacionEquipo/page.tsx
new file mode 100644
index 0000000..875e864
--- /dev/null
+++ b/app/InformacionEquipo/page.tsx
@@ -0,0 +1,13 @@
+import SearchUser from "../Components/SearchUser/searchUser";
+
+export default function Page() {
+ return (
+
+ INFORMACION DE EQUIPOS
+
+
+
+
+ );
+}
+//IO
\ No newline at end of file
diff --git a/app/Inscripciones/inscriptions.css b/app/Inscripciones/inscriptions.css
new file mode 100644
index 0000000..e69de29
diff --git a/app/Inscripciones/page.tsx b/app/Inscripciones/page.tsx
new file mode 100644
index 0000000..1541352
--- /dev/null
+++ b/app/Inscripciones/page.tsx
@@ -0,0 +1,24 @@
+'use client';
+
+import Receipt from "../Components/Receipt/Receipt";
+import SearchUser from "../Components/SearchUser/searchUser";
+import Selection from "../Components/Selection/Selection";
+import StepNavigator from "../Components/StepNavigator/StepNavigator";
+import "./inscriptions.css"
+
+export default function Page() {
+ return (
+
+ INSCRIPCION
+
+
+ console.log()}>
+
+
+
+
+
+
+ );
+}
+//IO
\ No newline at end of file
diff --git a/app/Mensajes/page.tsx b/app/Mensajes/page.tsx
new file mode 100644
index 0000000..5edf534
--- /dev/null
+++ b/app/Mensajes/page.tsx
@@ -0,0 +1,13 @@
+import SearchUser from "../Components/SearchUser/searchUser";
+
+export default function Page() {
+ return (
+
+
+ );
+}
+//IO
\ No newline at end of file
diff --git a/app/Monitor/page.tsx b/app/Monitor/page.tsx
new file mode 100644
index 0000000..0dcd0f9
--- /dev/null
+++ b/app/Monitor/page.tsx
@@ -0,0 +1,13 @@
+import SearchUser from "../Components/SearchUser/searchUser";
+
+export default function Page() {
+ return (
+
+ MONITOR DE MAQUINAS DISPONIBLES
+
+
+
+
+ );
+}
+//IO
\ No newline at end of file
diff --git a/app/Programas/page.tsx b/app/Programas/page.tsx
new file mode 100644
index 0000000..3ffe784
--- /dev/null
+++ b/app/Programas/page.tsx
@@ -0,0 +1,13 @@
+import SearchUser from "../Components/SearchUser/searchUser";
+
+export default function Page() {
+ return (
+
+
+ );
+}
+//IO
\ No newline at end of file
diff --git a/app/globals.css b/app/globals.css
index e3734be..317347b 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -1,42 +1,316 @@
-:root {
- --background: #ffffff;
- --foreground: #171717;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --background: #0a0a0a;
- --foreground: #ededed;
- }
-}
-
-html,
-body {
- max-width: 100vw;
- overflow-x: hidden;
-}
-
-body {
- color: var(--foreground);
- background: var(--background);
- font-family: Arial, Helvetica, sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
* {
- box-sizing: border-box;
padding: 0;
margin: 0;
+ color: #333333;
+}
+
+body {
+ font-family: var(--font-poppins), sans-serif;
+ display: grid;
+ grid-template-rows: auto auto 1fr auto;
+ min-height: 100dvh;
+ width: 100dvw;
+}
+
+header {
+ padding: 5px 40px;
+ position: relative;
+ overflow: hidden;
+ background-color: #f9f9f9;
+ z-index: 1;
+ height: 57px;
+}
+
+header::after {
+ content: "";
+ top: 0;
+ left: -40px;
+ position: absolute;
+ background-color: rgba(0, 61, 121, 1);
+ height: 100%;
+ width: 30%;
+ min-width: 300px;
+ transform: skew(45deg);
+ z-index: 1;
+}
+
+header::before {
+ content: "";
+ top: 0;
+ left: -20px;
+ position: absolute;
+ background-color: rgb(1, 92, 184);
+ height: 100%;
+ width: 30%;
+ min-width: 300px;
+ transform: skew(45deg);
+ z-index: 1;
+}
+
+main {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+footer {
+ text-align: center;
+ padding: 10px;
+ background-color: rgba(0, 61, 121, 1);
+ color: white;
+}
+
+.container {
+ display: grid;
+ grid-template-columns: 1fr 400px;
+ align-items: center;
+ justify-items: center;
+ position: relative;
+ padding: 1.5rem;
+ margin: 1.5rem auto;
+ border: 1px solid #d1d5db;
+ border-radius: 4px;
+ width: 90%;
+ max-width: 1100px;
+ height: 520px;
+ min-height: 520px;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+ background-color: #f9f9f9;
+ z-index: 0;
+}
+
+.containerSection {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ max-width: 500px;
+ height: 400px;
+ border-radius: 4px;
+ padding: 1.5rem;
+}
+
+
+.img {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 400px;
+ height: 615px;
+ background-image: url('/rock.jpg');
+ background-size: cover;
+ background-position: center;
+ overflow: hidden;
+ z-index: -1;
+ opacity: 0.5;
+}
+
+.img::after {
+ content: '';
+ position: absolute;
+ inset: 0;
+ background: linear-gradient(to right, #f9f9f9, rgba(128, 128, 128, 0));
+}
+
+input {
+ flex: 1;
+ min-width: 200px;
+ padding: 0.5rem;
+ border: 1px solid #cfcfcf;
+ border-radius: 4px;
+ font-size: 1rem;
+ color: black;
+}
+
+select {
+ padding: 0.5rem;
+ border-radius: 4px;
+ border: 1px solid #cfcfcf;
+ background-color: white;
+}
+
+.groupInput {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 10px;
+ align-items: center;
+ justify-content: space-between;
+}
+
+
+.button {
+ padding: 0.5rem 1.25rem;
+ font-size: 1rem;
+ font-weight: bold;
+ border: none;
+ color: #ffffff;
+ border-radius: 4px;
+ cursor: pointer;
+ transition: background-color 0.2s ease;
+ max-width: 240px;
+}
+
+.buttonSearch {
+ background-color: #2563eb;
+}
+
+.buttonSearch:hover {
+ background-color: #1d4ed8;
+}
+
+.buttonCharge {
+ background-color: #16a34a;
+}
+
+.buttonCharge:hover {
+ background-color: #15803d;
+}
+
+
+.buttonContainer {
+ display: flex;
+ gap: 1rem;
+}
+
+ul {
+ list-style: none;
+}
+
+.containerInput {
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 10px;
+}
+
+.label {
+ font-size: 1rem;
+ font-weight: bold;
+ display: block;
}
a {
- color: inherit;
text-decoration: none;
}
-@media (prefers-color-scheme: dark) {
- html {
- color-scheme: dark;
+.information {
+ display: flex;
+ flex-direction: column;
+ border: 1px solid #e5e7eb;
+ padding: 1rem;
+ border-radius: 4px;
+ background-color: #f3f4f6;
+ margin-top: 1rem;
+}
+
+.containerForm {
+ position: relative;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ flex-direction: column;
+}
+
+.title {
+ top: 0;
+ left: 0;
+ width: 100%;
+ font-size: 1.75rem;
+ font-weight: bold;
+ text-align: start;
+ border-bottom: 1px solid #cfcfcf;
+ margin-bottom: 10px;
+}
+
+form {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ gap: 1rem;
+}
+
+.toggleSection {
+ max-width: 600px;
+ margin-top: 1rem;
+ border: 1px solid #e5e7eb;
+ border-radius: 4px;
+ background-color: #f9fafb;
+}
+
+.toggleGroup {
+ display: flex;
+ gap: 10px;
+ background-color: #f3f4f6;
+ border-radius: 6px;
+}
+
+.toggleButton {
+ flex: 1;
+ padding: 0.5rem 1rem;
+ background-color: transparent;
+ border: none;
+ cursor: pointer;
+ border-radius: 4px;
+ transition: background-color 0.3s, color 0.3s;
+ font-weight: 500;
+}
+
+.toggleButton.active {
+ background-color: #e5e7eb;
+}
+
+.toggleButton.active {
+ background-color: #f9fafb;
+}
+
+@media(max-width:800px) {
+ header {
+ padding: 7px;
+ }
+
+ .container {
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ align-items: center;
+ width: 100%;
+ height: 600px;
+ max-height: 600px;
+ border-radius: 0;
+ }
+
+ .img {
+ right: 50%;
+ transform: translateX(50%);
+ width: 600px;
+ opacity: 1;
+ height: 650px;
+ }
+
+ .img::before,
+ .img::after {
+ content: '';
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ width: 100%;
+ z-index: 1;
+ }
+
+ .img::before {
+ left: 0;
+ background: linear-gradient(to right, #f9f9f9, rgba(128, 128, 128, 0));
+ }
+
+ .img::after {
+ right: 0;
+ background: linear-gradient(to left, #f9f9f9, rgba(128, 128, 128, 0));
}
}
+
+@media(max-height:960px) {
+ .container {
+ margin: 0
+ }
+}
\ No newline at end of file
diff --git a/app/layout.tsx b/app/layout.tsx
index 42fc323..2f07190 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,20 +1,19 @@
import type { Metadata } from "next";
-import { Geist, Geist_Mono } from "next/font/google";
+import { Poppins } from "next/font/google";
+import Header from "./Components/Header/Header";
+import Footer from "./Components/Footer/Footer";
+import BarNavigation from "./Components/BarNavigation/BarNavigation";
import "./globals.css";
-const geistSans = Geist({
- variable: "--font-geist-sans",
- subsets: ["latin"],
-});
-
-const geistMono = Geist_Mono({
- variable: "--font-geist-mono",
+const poppins = Poppins({
+ variable: "--font-poppins", // nombre de la variable CSS
subsets: ["latin"],
+ weight: ["400", "600", "700"], // pesos que quieras usar
});
export const metadata: Metadata = {
- title: "Create Next App",
- description: "Generated by create next app",
+ title: "Nexus CEDETEC",
+ description: "Nexus CEDETEC - Frontend",
};
export default function RootLayout({
@@ -23,10 +22,19 @@ export default function RootLayout({
children: React.ReactNode;
}>) {
return (
-
-
- {children}
+
+
+
+
+
+
+
+
);
}
+//IO
\ No newline at end of file
diff --git a/app/not-found.tsx b/app/not-found.tsx
new file mode 100644
index 0000000..a326aa0
--- /dev/null
+++ b/app/not-found.tsx
@@ -0,0 +1,10 @@
+export default function NotFound() {
+ return(
+
+ 404 - Página no encontrada
+ Lo sentimos, la página que buscas no existe.
+ Por favor, verifica la URL o regresa a la página principal.
+
+ )
+}
+//IO
\ No newline at end of file
diff --git a/app/page.module.css b/app/page.module.css
deleted file mode 100644
index 58c71af..0000000
--- a/app/page.module.css
+++ /dev/null
@@ -1,167 +0,0 @@
-.page {
- --gray-rgb: 0, 0, 0;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.08);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.05);
-
- --button-primary-hover: #383838;
- --button-secondary-hover: #f2f2f2;
-
- display: grid;
- grid-template-rows: 20px 1fr 20px;
- align-items: center;
- justify-items: center;
- min-height: 100svh;
- padding: 80px;
- gap: 64px;
- font-family: var(--font-geist-sans);
-}
-
-@media (prefers-color-scheme: dark) {
- .page {
- --gray-rgb: 255, 255, 255;
- --gray-alpha-200: rgba(var(--gray-rgb), 0.145);
- --gray-alpha-100: rgba(var(--gray-rgb), 0.06);
-
- --button-primary-hover: #ccc;
- --button-secondary-hover: #1a1a1a;
- }
-}
-
-.main {
- display: flex;
- flex-direction: column;
- gap: 32px;
- grid-row-start: 2;
-}
-
-.main ol {
- font-family: var(--font-geist-mono);
- padding-left: 0;
- margin: 0;
- font-size: 14px;
- line-height: 24px;
- letter-spacing: -0.01em;
- list-style-position: inside;
-}
-
-.main li:not(:last-of-type) {
- margin-bottom: 8px;
-}
-
-.main code {
- font-family: inherit;
- background: var(--gray-alpha-100);
- padding: 2px 4px;
- border-radius: 4px;
- font-weight: 600;
-}
-
-.ctas {
- display: flex;
- gap: 16px;
-}
-
-.ctas a {
- appearance: none;
- border-radius: 128px;
- height: 48px;
- padding: 0 20px;
- border: 1px solid transparent;
- transition:
- background 0.2s,
- color 0.2s,
- border-color 0.2s;
- cursor: pointer;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 16px;
- line-height: 20px;
- font-weight: 500;
-}
-
-a.primary {
- background: var(--foreground);
- color: var(--background);
- gap: 8px;
-}
-
-a.secondary {
- border-color: var(--gray-alpha-200);
- min-width: 158px;
-}
-
-.footer {
- grid-row-start: 3;
- display: flex;
- gap: 24px;
-}
-
-.footer a {
- display: flex;
- align-items: center;
- gap: 8px;
-}
-
-.footer img {
- flex-shrink: 0;
-}
-
-/* Enable hover only on non-touch devices */
-@media (hover: hover) and (pointer: fine) {
- a.primary:hover {
- background: var(--button-primary-hover);
- border-color: transparent;
- }
-
- a.secondary:hover {
- background: var(--button-secondary-hover);
- border-color: transparent;
- }
-
- .footer a:hover {
- text-decoration: underline;
- text-underline-offset: 4px;
- }
-}
-
-@media (max-width: 600px) {
- .page {
- padding: 32px;
- padding-bottom: 80px;
- }
-
- .main {
- align-items: center;
- }
-
- .main ol {
- text-align: center;
- }
-
- .ctas {
- flex-direction: column;
- }
-
- .ctas a {
- font-size: 14px;
- height: 40px;
- padding: 0 16px;
- }
-
- a.secondary {
- min-width: auto;
- }
-
- .footer {
- flex-wrap: wrap;
- align-items: center;
- justify-content: center;
- }
-}
-
-@media (prefers-color-scheme: dark) {
- .logo {
- filter: invert();
- }
-}
diff --git a/app/page.tsx b/app/page.tsx
index 52bd15e..56ef55c 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -1,95 +1,8 @@
-import Image from "next/image";
-import styles from "./page.module.css";
+import Login from "./Components/Login/Login";
export default function Home() {
return (
-
-
-
-
-
- Get started by editing app/page.tsx.
-
- Save and see your changes instantly.
-
-
-
-
-
-
+
);
}
+//IO
\ No newline at end of file
diff --git a/public/cedetec.jpg b/public/cedetec.jpg
new file mode 100644
index 0000000..41667aa
Binary files /dev/null and b/public/cedetec.jpg differ
diff --git a/public/logo_fes.png b/public/logo_fes.png
new file mode 100644
index 0000000..ac3aec2
Binary files /dev/null and b/public/logo_fes.png differ
diff --git a/public/rock.jpg b/public/rock.jpg
new file mode 100644
index 0000000..9f3ea8e
Binary files /dev/null and b/public/rock.jpg differ