Saltar al contenido principal

Hooks Internos

Solo lectura

Esta página documenta hooks internos usados por el widget. Estos hooks NO son accesibles desde la API pública NeuroonWidget. La información aquí es solo para referencia y entender cómo funciona el widget internamente.

Arquitectura de Hooks

El widget usa hooks de Preact internamente para gestionar:

HookPropósito
useSearchEstado de búsqueda y resultados
useComparisonComparación de productos
useKeyboardShortcutsAtajos de teclado (Cmd+K, Escape)
useSwipeGestureGestos táctiles en móvil
useChatPersistencePersistencia de historial en localStorage
useReducedMotionDetección de preferencia de movimiento reducido
useResponsiveDetección de breakpoints (mobile/tablet/desktop)
useFocusTrapAtrapamiento de foco en modales

¿Por qué no son públicos?

El widget se carga como un script que solo expone window.NeuroonWidget:

// ESTO es lo único que puedes usar:
NeuroonWidget.init({ ... })
NeuroonWidget.getInstance()
NeuroonWidget.destroy()

// ESTO no funciona (hooks son internos):
// import { useKeyboardShortcuts } from '@neuroon/widget' ❌

Atajos de teclado disponibles

Aunque no puedes usar el hook directamente, el widget incluye estos atajos:

AtajoAcción
Cmd+K / Ctrl+KAbrir/cerrar widget
/Abrir widget (fuera de inputs)
EscapeCerrar widget
TabAceptar autocompletado ghost text
Arrow Up/DownNavegar sugerencias
EnterEjecutar búsqueda

Gestos táctiles incluidos

El widget incluye soporte para gestos en móvil:

GestoAcción
Swipe izquierdaQuitar filtro/producto de comparación
Swipe derechaAplicar sugerencia
Long pressAñadir producto a comparación

Personalización

Para personalizar el comportamiento del widget, usa las opciones de configuración:

NeuroonWidget.init({
container: '#neuroon-search',
token: 'YOUR_TOKEN',

// Usa callbacks para responder a eventos
callbacks: {
onSearch: (query) => { ... },
onResultClick: (product) => { ... },
onFilterChange: (filters) => { ... },
},

// Personaliza traducciones
translations: {
search: { placeholder: 'Buscar...' },
},

// Personaliza estilos
styles: {
primary: '#6366f1',
},
});

Próximos pasos