Menu
Public repository / 439f0dcabf5cdf2b120c7724be895cf1df30507f
AkurAI-Framework / site/frontend/ai/components/media/audio.js
Latest change 36f53e8d189d0609aaabc65e705cf9db9d497d14 - Port Media components as vanilla ES modules by Ólafur Búi Ólafsson
// Audio component — renders a native <audio controls> card with title.
export const def = {
name: "audio",
category: "Media",
title: "Audio",
match(payload) {
return typeof payload?.src === "string";
},
render(payload, ctx) {
const { src, title = "" } = payload;
const card = document.createElement("div");
card.className = "card";
if (title) {
const titleEl = document.createElement("p");
titleEl.style.margin = "0 0 12px 0";
titleEl.style.fontSize = "14px";
titleEl.style.fontWeight = "600";
titleEl.style.color = "var(--fg)";
titleEl.textContent = title;
card.appendChild(titleEl);
}
// XSS safety: only set src from payload, never innerHTML
const audio = document.createElement("audio");
audio.src = src;
audio.controls = true;
audio.style.width = "100%";
audio.style.display = "block";
card.appendChild(audio);
return card;
},
example: {
src: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
title: "Sample audio track"
}
};