Saltar al contenido principal

Configuración del widget

El widget acepta configuración por dos vías:

  1. Atributos data-* en el <script> cuando se usa auto-init — la forma soportada en plantillas server-rendered (WordPress, ASP.NET, PHP, etc.).
  2. NeuroonWidgetConfig vía la API JavaScript window.NeuroonWidget.init(config) cuando necesitas callbacks, cart integration o control programático.

Ambas vías producen la misma instancia. Si pasas ambas, lo que llega vía init(config) tiene prioridad sobre los data-*.

Atributos data-*

AtributoRequeridoDefaultNotas
data-tokenWidget Token de 24 h firmado por tu servidor con la Shop API Key (HMAC).
data-containerno#neuroon-searchSelector CSS o id del contenedor.
data-themenoautoauto | light | dark. Si es auto, se evalúa prefers-color-scheme y se actualiza al cambiar.
data-localenoautodetect (fallback es)Códigos válidos: es, en, fr, de, it, pt, ca, eu, gl.
data-api-urlnohttps://api.neuroon.aiOverride del API base URL. Conmuta a Development con https://dev-api.neuroon.ai.
data-placeholderno(string i18n)Texto del input vacío.
data-suggestionsnotruefalse deshabilita el dropdown de sugerencias.
data-filtersnotruefalse deshabilita filtros y el drawer.
data-primary-colorno(theme default)Hex/rgb del color primario (legacy; preferir StyleOverrides).

El parser ignora silenciosamente cualquier atributo data-* no listado arriba.

NeuroonWidgetConfig

interface NeuroonWidgetConfig {
container: string | HTMLElement
token: string
apiUrl?: string
theme?: 'auto' | 'light' | 'dark'
locale?: 'es' | 'en' | 'fr' | 'de' | 'it' | 'pt' | 'ca' | 'eu' | 'gl'
translations?: Partial<Translations>
styles?: StyleOverrides | { light?: StyleOverrides; dark?: StyleOverrides }
features?: FeatureFlags
ui?: UIOptions
tracking?: TrackingConfig
callbacks?: Callbacks
monitoring?: MonitoringConfig
cart?: CartConfig
}

callbacks

interface Callbacks {
onTokenExpiring?: () => Promise<string>
onTokenRefreshed?: (newToken: string) => void
}

Sólo hay callbacks para gestión del Widget Token. No hay callbacks públicos para search, result-click, filter-change, conversion ni error. Para reaccionar a actividad del widget, suscríbete a los CustomEvents del DOM — ver Events.

cart

Cuando cart.enabled = true, el widget se integra con el carrito del host (WooCommerce, custom). El host implementa todas las callbacks; el widget las invoca con la firma agnóstica de plataforma:

interface CartConfig {
enabled: boolean
initialCount?: number
onGetCart: () => Promise<CartState>
onAddToCart: (productId: string, quantity: number, externalProductId?: string) => Promise<CartOperationResult>
onRemoveFromCart: (itemKey: string) => Promise<CartOperationResult>
onUpdateQuantity: (itemKey: string, quantity: number) => Promise<CartOperationResult>
onCheckout: () => void
canAddToCart?: (product: Product) => boolean
externalUpdateEvent?: string // default 'neuroon:cart-update'
onSetDestinationCountry?: (countryCode: string) => Promise<CartOperationResult | void>
}

Patrón completo end-to-end en Recipe · Custom cart bridge.

monitoring (opcional)

interface MonitoringConfig {
applicationId: string
clientToken: string
// …SDK options
}

Solo lo activan clientes "managed" por Neuroon. Si lo configuras, el bundle inicializa @datadog/browser-rum de forma asíncrona.

styles

Acepta un objeto plano (mismos valores en ambos temas) o uno por tema ({ light: {...}, dark: {...} }). Ver theming.md para la lista de variables --nrn-* y los casts a triplete RGB.

Validación

ReglaMensaje
token ausente[NeuroonWidget] token is required
container ausente[NeuroonWidget] container is required
apiUrl no es URL válida[NeuroonWidget] Invalid apiUrl: …
theme no soportadowarning, fallback a auto
locale no soportadowarning, fallback a es
resultsPerPage <= 0[NeuroonWidget] resultsPerPage must be greater than 0

Próximas lecturas