diff --git a/app/cuadros.js b/app/cuadros.js index 0a971b1..c07aaeb 100644 --- a/app/cuadros.js +++ b/app/cuadros.js @@ -1,12 +1,57 @@ -const Cuadrado =({valor, alHcerClick})=> { - return( - - ) -} +import { useState } from "react"; -export default Cuadrado \ No newline at end of file +const Cuadrado = ({ valor, alHcerClick }) => { + const [showMenu, setShowMenu] = useState(false); + + const handleMouseEnter = () => { + setShowMenu(true); + }; + + const handleMouseLeave = () => { + + setTimeout(() => { + if (!document.querySelector('.menu')?.contains(document.activeElement)) { + setShowMenu(false); + } + }, 100); + }; + + const handleSelect = (valor) => { + alHcerClick(valor); + setShowMenu(false); + }; + + return ( +
+ + {showMenu && ( +
+ + +
+ )} +
+ ); +}; + +export default Cuadrado; diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..13d40b8 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,27 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/app/layout.js b/app/layout.js index e7dbb01..645b929 100644 --- a/app/layout.js +++ b/app/layout.js @@ -1,3 +1,4 @@ +import './globals.css' export const metadata={ title: 'Totito', description:'generado con next.js' diff --git a/app/index.jsx b/app/page.jsx similarity index 100% rename from app/index.jsx rename to app/page.jsx diff --git a/app/tablero.js b/app/tablero.js index fa99432..2c0ed0e 100644 --- a/app/tablero.js +++ b/app/tablero.js @@ -1,35 +1,39 @@ -import{ usiState } from "react" -import Cuadrado from "./cuadros" -const Tablero =()=>{ - const [cuadros, setCuadros]= usiState(Array(9).fill('')) - const [turno, setTuerno]=usiState('X') - - const pintaFigura=(indexItem)=>{ - - const misCuadros= cuadros.slice() - setCuadros(misCuadros) - if(turno==='X'){ // Verifica los turnos - setTuerno('O') - } - else{ - setTuerno('X') - } - } - return( -

totito

,// Titulo -
- { //cuerpo e interactividad - cuadros.map((items, indexItem)=>{ - return pintaFigura(indexItem)} - /> - }) - } -
- ) -} +'use client'; -export default Tablero +import { useState } from "react"; +import Cuadrado from "./cuadros"; + +const Tablero = () => { + const [cuadros, setCuadros] = useState(Array(9).fill('')); + const [turno, setTurno] = useState('X'); + + const pintaFigura = (indexItem, valor) => { + if (cuadros[indexItem] === '') { // Solo actualiza si el cuadro está vacío + const misCuadros = cuadros.slice(); + misCuadros[indexItem] = valor; // Coloca el valor ('X' o 'O') en el cuadro + setCuadros(misCuadros); + + // Alterna el turno + setTurno(turno === 'X' ? 'O' : 'X'); + } + }; + + return ( + <> +

Totito

{/* Titulo */} +
+ { + cuadros.map((items, indexItem) => ( + pintaFigura(indexItem, valor)} + /> + ))} +
+ + ); +}; + +export default Tablero;