Files

194 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Referencias visuales — WhatsApp iOS + Cloud API
Capturas reales de referencia para ajustar el mockup y la especificación visual que se deriva de ellas.
Recopiladas el 27-09-2026.
**Cómo se obtuvieron.** Casi todas vienen de la documentación oficial de Meta
(`developers.facebook.com/documentation/business-messaging/whatsapp/...`). Esas capturas son de
**WhatsApp iOS** (colita abajo, botones con icono, fuente SF, hoja inferior iOS) y están a ~3x
(1190 px ≈ 393 pt). Meta devuelve error a `curl`, así que la página se renderizó con Playwright y la
imagen se descargó con la misma sesión. Las dos capturas completas del chat vienen de la ficha oficial
de WhatsApp en el App Store (iPhone 6,9").
**Cómo leer los valores.** Los hex están **medidos por muestreo de píxeles** (el color dominante de
una región) sobre estas capturas. Las medidas en pt salen de dividir entre 3. Son aproximaciones:
PNG comprimido, antialiasing y perfil de color. El texto indica la fuente de cada valor: `[medido]`,
`[observado]` (se ve en la captura pero no tiene número exacto) o `[estimado]` (no está confirmado).
## 1. Capturas
| Archivo | Fuente | Qué muestra |
|---|---|---|
| `ios-chat-claro-appstore.png` | https://apps.apple.com/us/app/whatsapp-messenger/id310633997 (captura 6.9" Display 2) | Chat iOS completo en claro: header (chevron negro, avatar, nombre, "online", iconos vídeo y llamada en línea), aviso de cifrado amarillo, nota de voz, burbuja saliente con ticks azules, foto, ubicación en vivo con botón verde dentro de la burbuja |
| `ios-chat-oscuro-appstore.png` | ídem (captura 6.9" Display 4) | Chat iOS en **oscuro**: fondo casi negro con doodle, entrante gris neutro, saliente verde oscuro, ubicación, sticker y composer oscuro (+, píldora, cámara, micro) |
| `ios-composer-ticks-leido.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/mark-message-as-read | Saliente con ✓✓ **azul iOS** y composer iOS: "+", píldora blanca con borde e icono de sticker, cámara y micro, home indicator negro |
| `botones-respuesta-header-imagen.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/interactive-reply-buttons-messages | Reply buttons con header de imagen **inset**, body, footer gris, hora, y 2 botones **dentro de la misma burbuja** con icono ↩ verde |
| `botones-respuesta-tras-pulsar.png` | ídem (2.ª captura) | Estado tras pulsar: el botón usado queda **gris/deshabilitado** y la respuesta saliente **cita** el mensaje original (nombre, miniatura, extracto) |
| `template-imagen-url-llamada-quickreply.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/utility-templates/utility-templates | Plantilla de utilidad: header imagen, body con primera línea en negrita, footer, botones **URL (↗ en caja)**, **llamada (teléfono)** y **quick reply (↩)** apilados dentro de la burbuja |
| `template-ver-todas-opciones-android.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/components | (Android, estructura) Plantilla con más de 3 botones: se ven 2 y luego "See all options" (icono de lista), que abre una hoja "All Options" con todos los botones y sus iconos |
| `lista-burbuja.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/interactive-list-messages | List message: header en negrita, body, footer gris, hora y botón con icono de lista **dentro de la burbuja** |
| `lista-hoja-inferior.png` | ídem (2.ª) | Hoja inferior iOS de la lista: título centrado (= texto del botón), X en círculo gris, títulos de sección en gris y negrita, filas título/descripción **sin chevrons**, separadores con sangría y el pie "Tap an item to select it" |
| `lista-respuesta-cita.png` | ídem (3.ª) | Respuesta a la lista: burbuja saliente con cita del mensaje + título y descripción de la fila elegida |
| `cta-url-header-imagen.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/interactive-cta-url-messages | CTA URL: todo en **una burbuja** (imagen inset, body, footer, hora, separador, botón ↗ "See Dates" verde); **sin fila de dominio** |
| `carrusel-plantilla-media-cards.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/marketing-templates/media-card-carousel-templates | Carrusel de plantilla: burbuja de body con hora y debajo tarjetas horizontales (imagen inset, texto 17 pt, botones ↩ y ↗); la siguiente tarjeta asoma; **sin puntos** |
| `carrusel-interactivo-quick-replies.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/interactive-media-carousel-messages | Carrusel interactivo: 3 tarjetas con título en negrita + descripción y 2 quick replies con icono |
| `carrusel-productos.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/marketing-templates/product-card-carousel-templates | Carrusel de productos: panel gris claro con título y precio, botón "View" |
| `imagen-caption.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/image-messages | Imagen inset con esquinas redondeadas, caption y hora a la derecha, botón de reenviar fuera |
| `video-caption.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/video-messages | Vídeo: play en círculo claro translúcido, icono de cámara con duración abajo a la izquierda, caption |
| `documento.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/document-messages | Documento: panel gris interno con icono de página "PDF", nombre en 2 líneas, "243 KB • html", descarga en círculo verde y caption |
| `audio-nota-voz.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/audio-messages | Nota de voz: triángulo de play gris sin círculo, punto verde de progreso, waveform, avatar con micro verde, duración y transcripción |
| `ubicacion.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/location-messages | Ubicación: mapa inset con pin rojo, nombre en regular 17 pt y dirección gris subrayada |
| `contacto.png` | https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/contacts-messages | Contacto: avatar genérico gris, nombre en negrita y chevron, hora, y dos botones lado a lado "Message" / "Save contact" |
## 2. Especificación visual (iOS 2025–2026)
Valores en pt/CSS px sobre un ancho de 393. Si `#pantalla` está escalada, se escala todo junto.
### 2.1 Paleta
| Token | Claro | Oscuro | Fuente |
|---|---|---|---|
| Fondo del chat (wall) | `#f4f1ec` (App Store `#f6f1ea`) | `#0a0a0a` | [medido] |
| Trazo del doodle | `#e8e0d4` (tostado cálido, opaco) | `#1f2121` | [medido] |
| Burbuja entrante | `#ffffff` | `#232626` (gris neutro, no azulado) | [medido] |
| Burbuja saliente | `#d9fdd3` | `#004f35` (App Store comprimido; revisar a ojo) | [medido] |
| Texto de burbuja | `#000000` | `#ffffff` | [observado] |
| Hora y footer (entrante) | `#7f7f7f` | ≈`#8d9494` | [medido] / [estimado] |
| Hora en saliente | `#6b7d68` (gris verdoso) | ≈`#8fb3a3` | [medido] / [estimado] |
| ✓ / ✓✓ entregado | igual que la hora | igual que la hora | [observado] |
| ✓✓ leído | **`#027bfc`** (≈ azul iOS `#007aff`) | `#0a84ff` [estimado] | [medido] |
| Texto de botones de acción (quick reply, URL, lista, carrusel) | **`#408559`** | ≈`#21c063` [estimado] | [medido] |
| Separador de botones | `#cccccc` (1 px físico ≈ 0,33 pt → CSS `0.5px` o `1px rgba(0,0,0,.2)`) | `rgba(255,255,255,.12)` [estimado] | [medido] |
| Header / barra del composer | `#f4f3f2` (translúcido sobre el wall) | header `#121313`, barra `#232626` | [medido] |
| Campo del composer | `#ffffff` con borde `#d1d1d6` 0,5 pt | `#393c3c` sin borde | [medido] / [observado] |
| Iconos del chrome (chevron, vídeo, llamada, +, cámara, micro) | `#000000` (de línea) | `#ffffff` | [observado] |
| Aviso de cifrado | fondo `#ffefd1`, texto `#1f1f1f`, radio 10 | ≈`#2a2a26` [estimado] | [medido] |
| Hoja de lista: fondo | `#ffffff` | ≈`#1c1c1e` [estimado] | [medido] |
| Hoja: título de sección / descripción | `#757778` | ≈`#8d8d93` [estimado] | [medido] |
| Hoja: separadores | `#c6c6c8` | ≈`#38383a` [estimado] | [medido] |
| Hoja: botón cerrar | círculo `#eeeeef`, X `#838388` | ≈`#2c2c2e` / `#a0a0a5` | [medido] / [estimado] |
| Velo detrás de la hoja | `rgba(0,0,0,.26)` | `rgba(0,0,0,.5)` [estimado] | [medido] |
| Panel interno de documento / producto | `#f6f5f4` | ≈`#1b1d1d` [estimado] | [medido] |
| Home indicator | `#000000` (claro) | `#ffffff` (oscuro) | [observado] |
### 2.2 Burbuja
- Radio **18 pt** en las cuatro esquinas. **La colita va abajo**: la entrante abajo a la izquierda y la saliente abajo a la derecha, como una curva que sale del borde inferior (se ve en todas las capturas de Meta). Solo la lleva la **última** burbuja de un grupo del mismo emisor. La esquina de arriba no se afila. [observado]
- Ancho máximo aproximado de 280–290 pt (~72 % de 393). Las plantillas y las burbujas con media usan ese ancho completo. [medido]
- Padding de texto aproximado: 7 pt arriba, 12 pt a izquierda y derecha, 6 pt abajo. [medido]
- Fuente del body: 17 pt SF Pro, interlineado de ~22 pt, negro. [medido]
- Hora: ~12 pt con números tabulares, abajo a la derecha. Con footer, la hora se alinea con la última línea del footer. Ticks de ~16×11 pt. [medido]
- Separación: ~2 pt entre burbujas del mismo emisor y ~8–10 pt al cambiar de emisor. [observado]
### 2.3 Media dentro de la burbuja (imagen, vídeo, ubicación y header de plantilla o interactivo)
- **Inset**, no a sangre: margen de **4 pt** (arriba y a los lados) entre la media y el borde de la burbuja. Radio interior de **~13–14 pt**. [medido]
- Con caption o body debajo, el texto sigue con el padding normal. Sin caption, la hora va sobre la imagen en blanco con una sombra suave. [observado]
- Proporción del header: en plantillas se recorta a ~**1,91:1** (utility, CTA). En interactivos se mantiene la del archivo, hasta cuadrado (reply buttons). [observado]
- Vídeo: play centrado en un círculo de 50 pt `rgba(230,230,230,.8)` con triángulo gris oscuro. Abajo a la izquierda, icono de cámara y duración en blanco de 13 pt. [observado]
### 2.4 Botones de plantilla y botones interactivos (reply buttons)
En iOS **se pintan igual**: van **dentro de la misma burbuja**, no en una tarjeta aparte.
- Bajo el body/footer/hora va un separador a todo el ancho de la burbuja, de borde a borde y sin sangría. [medido]
- Cada botón ocupa una fila de **~43–44 pt**, con el contenido centrado. Entre botones hay otro separador a todo el ancho. [medido]
- Texto de 17 pt regular en `#408559`, con un icono de ~20 pt a la izquierda y 8 pt de hueco. [medido]
- Quick reply → flecha de responder **↩** en línea (arco curvo).
- URL → **cuadrado redondeado con flecha ↗** dentro.
- Llamada → auricular en línea.
- Lista → icono **≡ con puntos** (tres puntos + tres líneas).
- "Ver todas las opciones" → icono de lista.
- Con más de 3 botones se muestran 2 y una tercera fila "**Ver todas las opciones**" sin contador. Esa fila **abre una hoja** "Todas las opciones" con todos los botones (icono + texto, alineados a la izquierda) y un separador entre URL/llamada y quick replies. No se despliegan en línea. [observado, Android; mismo comportamiento documentado por Meta]
- Tras pulsar un quick reply, esa fila queda en gris (`#b0b0b0`, sin interacción). [observado]
- La respuesta saliente **cita** el mensaje: un bloque interno con radio de 8 pt, fondo `rgba(0,0,0,.04)` sobre verde (`#d5f3cf`), barra izquierda de 4 pt de color, nombre del negocio en semibold 15 pt, extracto de 1–3 líneas en 15 pt gris y miniatura a la derecha si hay media. Debajo va el texto del botón en 17 pt. [medido/observado]
### 2.5 Plantilla (template)
Orden: header → body → footer → hora → separador → botones, en **una sola burbuja** de 18 pt con colita.
- Header de texto: 17 pt semibold, negro.
- Body: 17 pt regular. Admite `*negrita*`.
- Footer: **15 pt** gris `#7f7f7f`, 4 pt por debajo del body.
- Hora a la derecha, en la línea del footer.
- Header de documento: el mismo panel gris interno que el mensaje de documento (§2.9).
### 2.6 Lista
- Burbuja: header 17 pt semibold, body 17 pt, footer 15 pt gris, hora, separador y botón con icono ≡ y el texto `boton` en verde. Todo dentro de la burbuja.
- Hoja inferior:
- Panel blanco, esquinas superiores de ~12 pt y altura según el contenido.
- Cabecera de ~56 pt con el **título centrado = texto del botón**, en 17 pt semibold.
- A la derecha, un **círculo de 30 pt** `#eeeeef` con una X de 13 pt `#838388`.
- Título de sección: 15 pt semibold `#757778`, con 16 pt de sangría y ~24 pt de aire encima.
- Fila: título 17 pt negro y descripción 15 pt `#757778`. Padding vertical de ~12 pt (~76 pt de alto con descripción). **Sin chevron ni radio** en iOS.
- Separador de 0,33 pt `#c6c6c8` con 16 pt de sangría izquierda que llega al borde derecho.
- Pie centrado "Toca un elemento para seleccionarlo" en 15 pt gris, con el home indicator debajo.
- Velo `rgba(0,0,0,.26)`.
### 2.7 CTA URL
- Una sola burbuja: media inset opcional, body, footer, hora, separador y botón ↗ + etiqueta en verde.
- **No hay fila de dominio** ni texto azul.
### 2.8 Carrusel (plantilla media card o interactivo)
- Burbuja de body normal (con hora y colita) y, debajo, tarjetas en scroll horizontal.
- Tarjeta de **~287 pt de ancho (~73 %)**. La primera se alinea con el borde izquierdo de las burbujas, las demás se desbordan hasta el borde de la pantalla y la siguiente asoma. Separación de **~4 pt**. [medido]
- Tarjeta blanca de 18 pt de radio, **sin colita y sin hora**. Imagen inset de 4 pt, radio de ~12 pt y proporción ~1,7:1. [medido]
- Texto de la tarjeta en 17 pt. En interactivo: título semibold 17 pt + descripción 17 pt.
- Botones como en §2.4: separador a todo el ancho, filas de 44 pt con icono ↩/↗ en verde.
- **Sin puntos de paginación.** [observado]
- Producto: panel `#f6f5f4` con título 17 pt semibold y precio 15 pt gris; botón "Ver".
### 2.9 Otros tipos
- **Documento:**
- Panel interno `#f6f5f4` con radio de 10 pt y 4 pt de inset.
- Dentro: icono de página blanca de 30×38 pt con la extensión en gris de 9 pt, nombre de archivo en 17 pt (hasta 2 líneas) y "243 KB • pdf" en 15 pt gris.
- A la derecha, descarga en círculo de 30 pt con **borde verde `#4caf6a`** y flecha verde.
- Debajo, caption de 17 pt con la hora.
- **Nota de voz:**
- Triángulo de play gris `#6b6b6b` de 22 pt **sin círculo**.
- Waveform de barras de 2 pt `#b3b3b3` con un punto verde de progreso de 12 pt al inicio.
- Duración en 13 pt gris debajo de la waveform.
- A la derecha, avatar de 44 pt con **micro verde** en la esquina inferior izquierda.
- Hora abajo a la derecha.
- **Ubicación:**
- Mapa inset de 4 pt, radio de 13 pt y ~155 pt de alto.
- Nombre en 17 pt **regular**.
- Dirección en 15 pt gris **subrayada**.
- Hora en una línea propia a la derecha.
- **Contacto:**
- Avatar genérico de 44 pt (degradado gris con silueta blanca), nombre en 17 pt semibold y chevron `›` gris.
- Hora a la derecha.
- Separador y **dos botones lado a lado** "Mensaje" | "Guardar contacto" (o uno solo, "Invitar a WhatsApp"), en verde, 17 pt y 44 pt de alto, con un separador vertical entre ellos.
- **No** muestra teléfono, email ni empresa dentro de la burbuja: eso aparece al abrir el perfil.
- **Sticker:** sin burbuja. La hora va en una pastilla `rgba(0,0,0,.35)` con texto blanco debajo, a la derecha. [observado en oscuro]
### 2.10 Chrome iOS
- **Header** (~44 pt bajo la status bar):
- Chevron `‹` **negro** de ~22 pt, sin texto.
- Avatar de 36 pt.
- Nombre en 17 pt semibold y subtítulo ("en línea") en 13 pt gris.
- A la derecha, iconos **de línea**: videocámara de 28 pt y teléfono de 24 pt, en negro con ~0,6 de opacidad o gris `#8e8e93`. En oscuro, blancos.
- Fondo `#f4f3f2`, sin borde visible.
- **Verificado:** insignia azul de Meta Verified junto al nombre. Tono `#1d9bf0`–`#0866ff` [estimado, sin captura iOS de negocio verificado].
- **Aviso de cifrado** (primer elemento del chat):
- Tarjeta centrada de ~90 % de ancho, fondo `#ffefd1`, radio de 10 pt y padding de 6×12 pt.
- Texto centrado de 13 pt con candado inicial y "Más información" en negrita.
- En chats de negocio el texto es el de negocio: "Este negocio usa un servicio seguro de Meta…". [observado en Android; en iOS se asume el mismo texto]
- **Separador de fecha "Hoy":** pastilla centrada de 12–13 pt semibold, fondo blanco translúcido (`rgba(255,255,255,.9)`) con sombra de 0,5 pt, y 4×10 pt de padding. [estimado a partir de capturas Android/Web; sin captura iOS]
- **Composer:**
- Barra `#f4f3f2`, con el padding inferior del safe area (**34 pt**) bajo el home indicator.
- "+" negro de 24 pt.
- Píldora blanca de 36 pt de alto y radio de 18 pt, con borde de 0,5 pt `#d1d1d6`, **icono de sticker dentro a la derecha** y sin placeholder visible.
- Después, **cámara** y **micro** en negro, fuera de la píldora.
- El botón de enviar (círculo verde con flecha) **solo aparece al escribir** y sustituye a cámara y micro.
- **Home indicator:** negro en claro y blanco en oscuro, de 134×5 pt, **encima** de la barra del composer.
---
**Antes de reutilizar esto fuera del equipo, valida** que las capturas de Meta y de Apple solo se usan como referencia interna (tienen derechos de sus autores) y revisa a ojo en un iPhone real los hex de modo oscuro marcados como [estimado].