Saltar al contenido
MarcianobyhostarysDescargar stickers
Referencia

Props y API

Todas las props son opcionales. En React y Vue van en camelCase; en HTML, como atributos en kebab-case.

01

Props y atributos

La columna «HTML» indica el atributo cuando cambia de nombre (sleepAfter → sleep-after).

PropHTMLTipoPor defectoDescripción
moodigual"dots" | "hearts" | "spiral" | "sleepy" | "cross" | "angry" | "surprised" | "happy" | "sad" | "wink" | "thinking""dots"Expresión base, a la que vuelve tras cada animación.
colorigual"hostarys" | "lavanda" | "noche" | "negro" | "ember" | "cyan" | "lime" | "violet" | string"negro"Preset de marca o cualquier color CSS. En la web de Hostarys, usa "hostarys".
eyeigualstring"#f0ebe4"Color de los ojos.
bgigualstring"transparent"Fondo del lienzo.
glowigualboolean | numberfalseResplandor del color de la llama; un número ajusta la intensidad (p. ej. 1.5).
accessoryigualAccessoryName | AccessoryName[]—Uno o varios: glasses, sunglasses, bowtie, crown, santa, headphones, witch, pumpkin, scarf, party, flowers, heart, beach, viking, axe, astronaut, backpack, pirate, eyepatch, wizard, wand, chef, spoon, samurai, katana, cape, mask, deerstalker, magnifier, guitar, goggles, flask, knight, shield, cap, vinyl, star, robot, wrench, ghost, headset, gamepad, laptop, firefighter, extinguisher, surfboard, lei, antlers, rednose, horns, wings, explorer, binoculars, tophat, carrot, broom, beanie, skigoggles, skis, elfhat, elfears, candycane, magi, chest, earmuffs, skates, cocoa, sack, startrail. Dos de la misma zona (cabeza, cara, cuello, mano, orejas) chocan: gana el primero.
seasonigual"auto" | "halloween" | "christmas" | "newyear" | "valentine" | "spring" | "summer"—Accesorios de temporada. "auto" los elige por la fecha en España (calendario en el kit de marca). Los accesorios explícitos ganan si ocupan la misma zona.
pausedigualbooleanfalseFotograma fijo y determinista, sin animación ni interacción: miniaturas, rejillas y capturas.
statusigual"online" | "busy" | "degraded" | "down" | "maintenance"—Estado de servidor: fija la expresión base y evita que se duerma.
soundigualbooleanfalseSonidos sintetizados (necesitan un clic previo del usuario).
sleepAftersleep-afternumber20Segundos sin actividad hasta dormirse. 0 = nunca.
dragigualbooleanfalseSe puede arrastrar y lanzar. Vuelve con resetPosition().
reactToPagereactbooleanfalseReacciona a la página: scroll rápido, formularios, copiar, conexión.
socialigualbooleantrueMira y reacciona a otros Marcianos de la página.
liteigualboolean | "auto"falseModo ligero (menos efectos). "auto": solo en equipos modestos.
hiddenStarthidden-startbooleanfalseEmpieza apagado; aparece con enter().
interactiveigualbooleantrueRatón, toques, teclado (Intro / espacio = toque) y sueño automático. Interactivo, es un botón enfocable.
labeligualstring"Marciano"Nombre accesible para lectores de pantalla.
decorativeigualbooleanfalseSolo decoración: oculto a lectores de pantalla y sin foco. Úsalo en rejillas e ilustraciones.
motionigual"reduce" | "full"—"reduce" fuerza el movimiento reducido; "full" ignora prefers-reduced-motion. Por defecto respeta la preferencia del sistema.
sizeigualnumber | string240Solo React y Vue. Ancho (número = px). El alto se ajusta solo. En HTML, usa CSS (width).
onMoodChangemoodchange (evento)(detail, event) => void—Cada cambio real de expresión. detail: { mood, previous, queue, running }.
onQueueChangequeuechange (evento)(detail, event) => void—Cambio de la cola pendiente (o de si está reproduciendo). detail: { queue, running }.
onReady, onPoke, onSleep, onWake…ready, poke, sleep, wake… (eventos)(detail, event) => void—Un prop por evento: onReady, onPoke ({ count }), onSleep, onWake, onDragStart / onDragEnd ({ x, y }), onSayStart / onSayEnd ({ text }). Ver la tabla de eventos.
className, style, …igualHTMLAttributes—Cualquier atributo HTML (aria-*, id, data-*…) pasa al elemento.
02

Métodos y eventos

Disponibles en el elemento (ref.current en React). Los marcados con ✓ también están en los controles de useMarciano().

NombreTipoDevuelveDescripciónHook
play(mood)métodoPromise<void>Interrumpe lo que hace y reproduce esa expresión ya.✓
queue(...moods)métodoPromise<void>Añade expresiones a la cola; se reproducen en orden.✓
clearQueue()métodovoidVacía la cola pendiente.✓
stop()métodovoidVacía la cola y vuelve ya a la expresión base.✓
say(text?, { ms })métodoPromise<void>Bocadillo con texto y boca animada. ms = duración (por defecto según la longitud). Sin texto muestra el contenido hijo del elemento.✓
enter()métodoPromise<void>Aparece encendiéndose desde chispas (ideal con hiddenStart).✓
exit()métodoPromise<void>Se apaga en una nube de humo.✓
lipSync(media)métodovoidMueve la boca siguiendo el volumen de un <audio> o <video>.✓
stopLipSync()métodovoidDeja de seguir el audio.✓
resetPosition()métodovoidVuelve a su sitio tras arrastrarlo.✓
moodpropiedadMoodNameExpresión actual (solo lectura).✓
pendingpropiedadMoodName[]Cola de expresiones pendientes (solo lectura).—
readyeventoCustomEventPrimer fotograma pintado.—
moodchangeeventoCustomEventCambio real de expresión. detail: { mood, previous, queue, running }.—
queuechangeeventoCustomEventCambio de la cola. detail: { queue, running }.—
pokeeventoCustomEventLe han tocado (clic, toque o teclado). detail: { count } (3 = mareo, 6 = KO).—
sleep / wakeeventoCustomEventSe duerme por inactividad / se despierta.—
dragstart / dragendeventoCustomEventArrastre con drag. detail: { x, y } (y cancelled en dragend).—
saystart / sayendeventoCustomEventEmpieza y acaba un bocadillo. detail: { text }.—
Ref y eventos
"use client";
import { useRef } from "react";
import { Marciano, type MarcianoFlameElement } from "@hostarys/marciano";

export function ConEventos() {
  const ref = useRef<MarcianoFlameElement>(null);
  return (
    <Marciano
      ref={ref}                                  // el ref es el propio elemento
      onMoodChange={({ mood, previous }) => console.log(previous, "→", mood)}
      onQueueChange={({ queue }) => console.log("cola:", queue)}
      onClick={() => console.log(ref.current?.pending)}
    />
  );
}

// Sin React: el mismo evento en el DOM
document.querySelector("marciano-flame")
  .addEventListener("moodchange", e => console.log(e.detail.mood));
En vivo
Pulsa un botón para ver los eventos moodchange y queuechange