Ir al contenido

Componentes Vue

@askdialog/dialog-vue provee componentes listos para usar sobre @askdialog/dialog-sdk. Úsalo cuando quieras una UI rápida y temática en una app Vue 3 sin construirla desde cero.

Requiere Vue 3.

Ventana de terminal
npm install @askdialog/dialog-sdk @askdialog/dialog-vue

Importa la stylesheet una vez en la entrada de tu app:

import '@askdialog/dialog-vue/style.css'

Instancia el SDK una vez (típicamente en un componente top-level o un composable), luego pásalo a cada componente.

<script setup lang="ts">
import { Dialog, type SimplifiedProduct } from '@askdialog/dialog-sdk'
const client = new Dialog({
apiKey: 'YOUR_PUBLIC_API_KEY',
locale: 'es',
callbacks: {
addToCart: async ({ productId, quantity, variantId }) => {
// Llama a tu API de carrito, refresca tu UI
},
getProduct: async (productId, variantId): Promise<SimplifiedProduct> => {
// Devuelve tu producto con el formato SimplifiedProduct
},
},
})
</script>

Ver la Referencia del SDK para todas las opciones del constructor.

El componente principal. Colócalo en una página de producto para renderizar sugerencias de preguntas generadas por IA y el punto de entrada al asistente.

<script setup lang="ts">
import { DialogProductBlock } from '@askdialog/dialog-vue'
defineProps<{ product: { id: string; title: string; currentVariantId?: string } }>()
</script>
<template>
<DialogProductBlock
:client="client"
:product-id="product.id"
:product-title="product.title"
:selected-variant-id="product.currentVariantId"
/>
</template>
PropTipoRequeridoDefaultDescripción
clientDialogInstancia SDK desde new Dialog(...).
productIdstringEl ID del producto mostrado. Debe matchear el ID en tu catálogo.
productTitlestringNombre mostrado del producto.
selectedVariantIdstringNoLa variante seleccionada actualmente. Pásala cada vez que el usuario cambia de variante para que el asistente tenga el contexto.
enableInputbooleanNotrueMuestra el campo input bajo las sugerencias. Pon false si quieres solo las sugerencias.

Un campo input autónomo para hacer una pregunta libre. Útil como punto de entrada en páginas sin contexto único de producto (homepage, blog, colección).

<template>
<DialogInput
:client="client"
product-id="homepage"
product-title="Homepage"
/>
</template>
PropTipoRequeridoDescripción
clientDialogInstancia SDK.
productIdstringIdentificador estable del contexto (ej. "homepage", "collection-verano").
productTitlestringEtiqueta legible del contexto.

Un setup común:

  • <DialogInput> en la homepage como punto de entrada discovery.
  • <DialogProductBlock> en cada PDP, entre la galería y la descripción.
  • Un watcher sobre el selector de variantes que actualiza la prop selectedVariantId.

Los componentes heredan el theme pasado al constructor del SDK. Actualiza colores de marca, fuentes, forma de los CTA y tamaños de fuente específicos de los componentes:

const client = new Dialog({
apiKey: 'YOUR_PUBLIC_API_KEY',
locale: 'es',
theme: {
backgroundColor: '#ffffff',
primaryColor: '#000000',
ctaTextColor: '#ffffff',
ctaBorderType: 'rounded',
capitalizeCtas: false,
fontFamily: 'Inter, sans-serif',
title: { fontSize: '18px', color: '#1a1a1a' },
description: { fontSize: '14px', color: '#666666' },
content: { fontSize: '14px', color: '#333333' },
},
callbacks: { /* ... */ },
})