Saltar al contenido principal

Referencia de tipos

Referencia exhaustiva de todas las interfaces y tipos públicos del SDK. Los tipos se exportan desde @vto/core.


InitOptions

Parámetros de OBVto.init().

campotipodefaultdescripción
modulesstring[]Módulos a activar, p.ej. ['hair-color']. Requerido.
licenseKeystring?undefinedClave de licencia para modo prod. Sin ella el SDK corre en modo dev permisivo.
configEndpointstring?undefinedURL del endpoint que devuelve LicenseConfig (GET ?key=).
licenseProviderLicenseProvider?undefinedProvider explícito (mockeable); tiene prioridad sobre configEndpoint.
containerstring | HTMLElement | undefinedundefinedSelector CSS o elemento donde montar el visor. Sin él se usa overlay.
moduleConfigRecord<string, Record<string, unknown>>?undefinedOpciones por módulo, pasadas a la factory de cada uno.
experienceExperienceConfig?undefinedConfig de la pantalla de inicio (selector de experiencias, HU7). Sin este campo init es headless.
startStartOptions?undefinedOpciones de arranque automático al elegir modo en el selector de inicio.

StartOptions

Parámetros de OBVto.start() (o del campo start en InitOptions).

campotipodefaultdescripción
modulestringMódulo a arrancar, p.ej. 'hair-color'. Requerido.
colorsColor[]Paleta de tonos disponibles. Requerido.
source'camera' | 'photo''camera'Fuente de imagen: cámara en vivo o foto subida.
imageHTMLImageElement?undefinedImagen requerida cuando source === 'photo'.
defaultIntensitynumber?0.7Intensidad inicial del efecto (0–1).
uiViewerUIConfig?undefinedSi está presente, el SDK monta el chrome del visor. Sin él el modo es headless.
npsNpsConfig?undefinedSi está, el cierre muestra el formulario NPS antes del mensaje de gracias.
thanksThanksConfig | false | undefinedundefinedMensaje de gracias al cerrar. false cierra de inmediato sin overlay.
productsRecord<string, Product>?undefinedMapa estático { [colorId]: Product } para la card por tono.
resolveProduct(color: Color) => Product | null | undefined | Promise<...>?undefinedResolución dinámica del producto por tono (prioridad sobre products y color.product).
paletteShadeGroup[]?undefinedFamilias de tonos en 2 niveles (nivel 1 = grupo, nivel 2 = shades). Si está, el SDK monta el selector acordeón.
resolveShades(group: ShadeGroup) => Color[] | Promise<Color[]>?undefinedCarga on-demand de sub-tonos de un grupo (API del cliente).
favoritesStorageKeystring?'vto:favorites'Clave de localStorage para persistir favoritos. Cadena vacía o null desactiva la persistencia.
initialFavoritesProduct[]?undefinedSemilla de favoritos desde la API del cliente, usada si localStorage está vacío.
onReady() => void?undefinedEl visor está listo y procesando frames.
onError(err: Error) => void?undefinedError durante el arranque o el procesamiento.
onCapture(dataUrl: string) => void?undefinedEl usuario capturó una foto; recibe el data URL en base64.
onAddToCart(color: Color) => void?undefinedEl usuario pulsó "Añadir al carrito".
onClose() => void?undefinedEl usuario cerró el visor (botón ✕ o flujo de cierre completo).
onHome() => void?undefinedEl usuario pulsó el botón de inicio (HU6).
onProductClick(p: Product) => void?undefinedEl usuario pulsó "VER EL PRODUCTO" en la card.
onFavorite(p: Product) => void?undefinedEl usuario añadió un producto a favoritos.
onUnfavorite(p: Product) => void?undefinedEl usuario quitó un producto de favoritos.
onNps(result: NpsResult) => void?undefinedReporte de NPS al enviar el formulario (no al omitir).

ViewerUIConfig

Config de la capa de UI del visor (barra, card, favoritos, ayuda, NPS).

campotipodefaultdescripción
brandingViewerBranding?undefinedMarca y colores del visor.
productProduct?undefinedProducto del tono inicial (antes de que el usuario elija).
controlsViewerControls?undefinedVisibilidad de controles de la barra. Sin este campo todos son visibles.

ViewerBranding

Personalización visual del SDK. Aplica a la pantalla de inicio y al visor.

campotipodefaultdescripción
namestring?'VTO'Nombre de marca mostrado.
logoSvgstring?undefinedMarkup SVG del logo (pantalla de inicio, HU7).
primaryColorstring?undefinedColor de CTAs y acentos (variable CSS --vto-primary).

ViewerControls

Visibilidad de cada botón de la barra del visor. Omitir un campo o pasar true lo muestra; false lo oculta.

campotipodefaultdescripción
homeboolean?trueBotón de inicio (volver al selector de experiencias).
helpboolean?trueBotón de ayuda.
compareboolean?trueBotón de comparación antes/después.
downloadboolean?trueBotón de descarga de captura.
favoritesboolean?trueBotón de favoritos.
closeboolean?trueBotón de cierre (✕).

ExperienceConfig

Config de la pantalla de inicio (selector de experiencias). Pasada en InitOptions.experience.

campotipodefaultdescripción
brandingViewerBranding?undefinedLogo, marca y color primario del selector de inicio.
taglinestring?'Prueba tu color'Subtítulo mostrado bajo el logo.
modesExperienceMode[]?['selfie', 'photo']Modos visibles en el selector.

ExperienceMode

type ExperienceMode = 'selfie' | 'photo'
valordescripción
'selfie'Usa la cámara del dispositivo en tiempo real.
'photo'El usuario sube o elige una foto.

Color

Un tono de la paleta de colores.

Nota sobre HSL: el campo h usa el rango CSS estándar 0–360 (no 0–100 como indica el comentario en el código fuente, que es un bug pre-existente). Los campos s y l usan 0–100.

campotipodefaultdescripción
idstringIdentificador único del tono. Requerido.
namestringNombre legible del tono. Requerido.
hnumberMatiz HSL, rango 0–360. Requerido.
snumberSaturación HSL, rango 0–100. Requerido.
lnumberLuminosidad HSL, rango 0–100. Requerido.
skustring?undefinedSKU del producto asociado (clave de favorito).
productProduct?undefinedProducto asociado a este tono (card + favoritos). Menor prioridad que products[id] y resolveProduct.
swatchImageUrlstring?undefinedURL de imagen para el swatch. Si falta, se dibuja un círculo con el color HSL.

Product

Producto asociado a un tono activo (card del visor + favoritos).

campotipodefaultdescripción
namestringNombre del producto, p.ej. 'NUTRISSE COLORISSIMO'. Requerido.
tonestring?undefinedDescripción del tono, p.ej. '6646 Cobrizo Rubí'.
imageUrlstring?undefinedURL de la miniatura del producto.
urlstring?undefinedURL de destino del enlace "VER EL PRODUCTO".
skustring?undefinedSKU del producto.

ShadeGroup

Grupo de tonos en 2 niveles (estilo Garnier). El nivel 1 es el grupo (familia); el nivel 2 son los sub-tonos (shades).

campotipodefaultdescripción
idstringIdentificador único del grupo. Requerido.
namestringNombre del grupo, p.ej. 'Rubio'. Requerido.
swatch{ h: number; s: number; l: number }?undefinedColor raíz del grupo. Si falta, se usa el primer shade.
swatchImageUrlstring?undefinedImagen raíz del grupo (tiene prioridad visual sobre swatch).
shadesColor[]?undefinedSub-tonos del grupo. Puede omitirse si se cargan por API con resolveShades.
productProduct?undefinedProducto del color principal (para grupos sin sub-tonos: el color se aplica y favorita directo).
skustring?undefinedSKU del color principal (clave de favorito para grupos sin sub-tonos).

NpsConfig

Config del formulario NPS que se muestra al cerrar el visor (si se pasa nps en StartOptions).

campotipodefaultdescripción
questionstring?'¿Qué tan probable es que nos recomiendes?'Pregunta principal del formulario.
minnumber?0Valor mínimo de la escala.
maxnumber?10Valor máximo de la escala.
minLabelstring?''Etiqueta del extremo bajo. Cadena vacía = no se muestra.
maxLabelstring?''Etiqueta del extremo alto. Cadena vacía = no se muestra.
commentboolean?falseSi true, muestra un campo de comentario opcional.
commentLabelstring?'Cuéntanos más (opcional)'Placeholder del campo de comentario.
submitLabelstring?'Enviar'Etiqueta del botón de envío.
skipLabelstring?'Omitir'Etiqueta del botón de omitir.

NpsResult

Resultado del formulario NPS reportado vía onNps. Solo se emite cuando el usuario pulsa "Enviar" (no al omitir).

campotipodefaultdescripción
scorenumberPuntuación elegida por el usuario. Requerido.
commentstring?undefinedComentario del usuario. Presente solo si NpsConfig.comment es true y el usuario escribió algo.

ThanksConfig

Mensaje de gracias mostrado al finalizar el flujo de cierre.

campotipodefaultdescripción
titlestring?'Gracias'Título del overlay de gracias.
messagestring?'Gracias por probar tu color.'Cuerpo del mensaje.
doneLabelstring?'Listo'Etiqueta del botón de confirmación.

LicenseConfig

Configuración resuelta a partir de la licencia (devuelta por el endpoint o el licenseProvider).

campotipodefaultdescripción
enabledModulesstring[]Módulos habilitados. ['*'] habilita todos. Requerido.
watermarkboolean?undefinedSi true, capture() estampa una marca de agua en la imagen capturada.
branding{ name?: string; logoUrl?: string }?undefinedBranding forzado por la licencia: nombre y URL de logo.
colorsColor[]?undefinedPaleta cerrada de tonos impuesta por la licencia.