|
|
@@ -59,12 +59,23 @@ export function PredictiveSearch() {
|
|
|
|
anulaba de forma confiable via tailwind-merge dentro de este
|
|
|
|
anulaba de forma confiable via tailwind-merge dentro de este
|
|
|
|
contenedor compuesto (input + boton circular), causando un
|
|
|
|
contenedor compuesto (input + boton circular), causando un
|
|
|
|
segundo ring visible al hacer foco. Mas simple y robusto no
|
|
|
|
segundo ring visible al hacer foco. Mas simple y robusto no
|
|
|
|
heredar clases de foco que hay que pelear despues. */}
|
|
|
|
heredar clases de foco que hay que pelear despues.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
focus-visible:outline-none (no outline-none a secas): globals.css
|
|
|
|
|
|
|
|
define un outline de accesibilidad global por teclado
|
|
|
|
|
|
|
|
(input:focus-visible, azul de marca) que le gana en
|
|
|
|
|
|
|
|
especificidad a un outline-none plano. El wrapper de este
|
|
|
|
|
|
|
|
componente ya tiene su propio indicador de foco visible
|
|
|
|
|
|
|
|
(focus-within:border-ari-marino + ring amarillo, mismo patron
|
|
|
|
|
|
|
|
que button.tsx) que cumple el mismo proposito de accesibilidad
|
|
|
|
|
|
|
|
sin duplicarlo -- variante focus-visible: en vez de la base
|
|
|
|
|
|
|
|
iguala la especificidad de la regla global (mismo truco que ya
|
|
|
|
|
|
|
|
usa button.tsx) y evita el doble indicador de foco. */}
|
|
|
|
<input
|
|
|
|
<input
|
|
|
|
value={query}
|
|
|
|
value={query}
|
|
|
|
onChange={(event) => setQuery(event.target.value)}
|
|
|
|
onChange={(event) => setQuery(event.target.value)}
|
|
|
|
placeholder="Busca juguetes, mochilas, personajes…"
|
|
|
|
placeholder="Busca juguetes, mochilas, personajes…"
|
|
|
|
className="h-[48px] w-full border-0 bg-transparent p-0 text-sm text-slate-950 outline-none"
|
|
|
|
className="h-[48px] w-full border-0 bg-transparent p-0 text-sm text-slate-950 focus-visible:outline-none"
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
{query && <button type="button" aria-label="Limpiar búsqueda" className="mr-1 shrink-0 rounded-full p-1.5 text-slate-400 hover:bg-slate-100" onClick={() => setQuery("")}><X className="size-4" /></button>}
|
|
|
|
{query && <button type="button" aria-label="Limpiar búsqueda" className="mr-1 shrink-0 rounded-full p-1.5 text-slate-400 hover:bg-slate-100" onClick={() => setQuery("")}><X className="size-4" /></button>}
|
|
|
|
<button type="submit" aria-label="Buscar" className="grid size-10 shrink-0 place-items-center rounded-full bg-ari-marino text-white transition hover:brightness-110">
|
|
|
|
<button type="submit" aria-label="Buscar" className="grid size-10 shrink-0 place-items-center rounded-full bg-ari-marino text-white transition hover:brightness-110">
|
|
|
|