diff --git a/web/src/components/PromptInput.module.css b/web/src/components/PromptInput.module.css index 4cc6023..a1dbaec 100644 --- a/web/src/components/PromptInput.module.css +++ b/web/src/components/PromptInput.module.css @@ -46,6 +46,18 @@ transition: background 0.15s, opacity 0.15s; } +.mentionAudioIcon { + display: inline-block; + margin-right: 3px; + font-size: 13px; + vertical-align: middle; + pointer-events: none; +} + +.mentionAudioIcon::before { + content: '\266B'; /* ♫ rendered via CSS, not textContent — avoids polluting prompt text */ +} + .mentionImg { width: 16px; height: 16px; diff --git a/web/src/components/PromptInput.tsx b/web/src/components/PromptInput.tsx index 21d1ea0..834e016 100644 --- a/web/src/components/PromptInput.tsx +++ b/web/src/components/PromptInput.tsx @@ -88,8 +88,8 @@ export function PromptInput() { const isAudio = opts.refType === 'audio' || opts.assetType === 'Audio'; if (isAudio) { const icon = document.createElement('span'); - icon.textContent = '\u266B'; - icon.style.cssText = 'margin-right:3px;font-size:13px;vertical-align:middle;pointer-events:none'; + icon.className = styles.mentionAudioIcon; + icon.setAttribute('aria-hidden', 'true'); span.appendChild(icon); } else if (opts.thumbUrl) { const img = document.createElement('img');