@fluencypassdevs/cycle 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/player-i18n.ts"],"names":[],"mappings":"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","file":"chunk-C6BQAAHX.js","sourcesContent":["import type { DefaultLayoutTranslations } from \"@vidstack/react/player/layouts/default\"\n\n/* ─── Supported locales ─── */\n\nexport type PlayerLocale =\n | \"pt-BR\"\n | \"en-US\"\n | \"en-GB\"\n | \"es-MX\"\n | \"es-ES\"\n | \"fr-FR\"\n | \"fr-CA\"\n | \"zh-CN\"\n | \"zh-TW\"\n | \"de-DE\"\n | \"it-IT\"\n | \"ja-JP\"\n | \"ko-KR\"\n\n/* ─── Desktop control labels (used by VideoPlayer custom controls) ─── */\n\nexport interface VideoDesktopLabels {\n play: string\n pause: string\n seekBackward: string\n seekForward: string\n mute: string\n unmute: string\n captionsOn: string\n captionsOff: string\n captions: string\n pip: string\n pipExit: string\n speed: string\n speedNormal: string\n quality: string\n qualityMenu: string\n fullscreen: string\n fullscreenExit: string\n live: string\n}\n\n/* ─── Complete locale bundle ─── */\n\nexport interface PlayerLocaleData {\n desktop: VideoDesktopLabels\n vidstack: DefaultLayoutTranslations\n}\n\n/* ─── Locale data ─── */\n\nconst ptBR: PlayerLocaleData = {\n desktop: {\n play: \"Reproduzir\",\n pause: \"Pausar\",\n seekBackward: \"Retroceder 10s\",\n seekForward: \"Avançar 10s\",\n mute: \"Silenciar\",\n unmute: \"Ativar som\",\n captionsOn: \"Desativar legendas\",\n captionsOff: \"Ativar legendas\",\n captions: \"Legendas\",\n pip: \"Picture-in-Picture\",\n pipExit: \"Sair do PiP\",\n speed: \"Velocidade\",\n speedNormal: \"Normal\",\n quality: \"Qualidade\",\n qualityMenu: \"Qualidade\",\n fullscreen: \"Tela cheia\",\n fullscreenExit: \"Sair da tela cheia\",\n live: \"Ao vivo\",\n },\n vidstack: {\n Announcements: \"Avisos\",\n Accessibility: \"Acessibilidade\",\n AirPlay: \"AirPlay\",\n Audio: \"Áudio\",\n Auto: \"Automático\",\n Boost: \"Amplificar\",\n Captions: \"Legendas\",\n \"Caption Styles\": \"Estilos de legenda\",\n \"Captions look like this\": \"Legendas ficam assim\",\n Chapters: \"Capítulos\",\n \"Closed-Captions Off\": \"Ativar legendas\",\n \"Closed-Captions On\": \"Desativar legendas\",\n Connected: \"Conectado\",\n Continue: \"Continuar\",\n Connecting: \"Conectando\",\n Default: \"Padrão\",\n Disabled: \"Desativado\",\n Disconnected: \"Desconectado\",\n \"Display Background\": \"Fundo da tela\",\n Download: \"Baixar\",\n \"Enter Fullscreen\": \"Tela cheia\",\n \"Enter PiP\": \"Picture-in-Picture\",\n \"Exit Fullscreen\": \"Sair da tela cheia\",\n \"Exit PiP\": \"Sair do PiP\",\n Font: \"Fonte\",\n Family: \"Família\",\n Fullscreen: \"Tela cheia\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"Animações de teclado\",\n LIVE: \"AO VIVO\",\n Loop: \"Repetir\",\n Mute: \"Silenciar\",\n Normal: \"Normal\",\n Off: \"Desligado\",\n Pause: \"Pausar\",\n Play: \"Reproduzir\",\n Playback: \"Reprodução\",\n PiP: \"PiP\",\n Quality: \"Qualidade\",\n Replay: \"Repetir\",\n Reset: \"Redefinir\",\n \"Seek Backward\": \"Retroceder\",\n \"Seek Forward\": \"Avançar\",\n Seek: \"Buscar\",\n Settings: \"Configurações\",\n \"Skip To Live\": \"Ir para ao vivo\",\n Speed: \"Velocidade\",\n Size: \"Tamanho\",\n Color: \"Cor\",\n Opacity: \"Opacidade\",\n Shadow: \"Sombra\",\n Text: \"Texto\",\n \"Text Background\": \"Fundo do texto\",\n Track: \"Faixa\",\n Unmute: \"Ativar som\",\n Volume: \"Volume\",\n },\n}\n\nconst enUS: PlayerLocaleData = {\n desktop: {\n play: \"Play\",\n pause: \"Pause\",\n seekBackward: \"Rewind 10s\",\n seekForward: \"Forward 10s\",\n mute: \"Mute\",\n unmute: \"Unmute\",\n captionsOn: \"Disable captions\",\n captionsOff: \"Enable captions\",\n captions: \"Captions\",\n pip: \"Picture-in-Picture\",\n pipExit: \"Exit PiP\",\n speed: \"Speed\",\n speedNormal: \"Normal\",\n quality: \"Quality\",\n qualityMenu: \"Quality\",\n fullscreen: \"Fullscreen\",\n fullscreenExit: \"Exit fullscreen\",\n live: \"Live\",\n },\n vidstack: {\n Announcements: \"Announcements\",\n Accessibility: \"Accessibility\",\n AirPlay: \"AirPlay\",\n Audio: \"Audio\",\n Auto: \"Auto\",\n Boost: \"Boost\",\n Captions: \"Captions\",\n \"Caption Styles\": \"Caption Styles\",\n \"Captions look like this\": \"Captions look like this\",\n Chapters: \"Chapters\",\n \"Closed-Captions Off\": \"Closed-Captions Off\",\n \"Closed-Captions On\": \"Closed-Captions On\",\n Connected: \"Connected\",\n Continue: \"Continue\",\n Connecting: \"Connecting\",\n Default: \"Default\",\n Disabled: \"Disabled\",\n Disconnected: \"Disconnected\",\n \"Display Background\": \"Display Background\",\n Download: \"Download\",\n \"Enter Fullscreen\": \"Enter Fullscreen\",\n \"Enter PiP\": \"Enter PiP\",\n \"Exit Fullscreen\": \"Exit Fullscreen\",\n \"Exit PiP\": \"Exit PiP\",\n Font: \"Font\",\n Family: \"Family\",\n Fullscreen: \"Fullscreen\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"Keyboard Animations\",\n LIVE: \"LIVE\",\n Loop: \"Loop\",\n Mute: \"Mute\",\n Normal: \"Normal\",\n Off: \"Off\",\n Pause: \"Pause\",\n Play: \"Play\",\n Playback: \"Playback\",\n PiP: \"PiP\",\n Quality: \"Quality\",\n Replay: \"Replay\",\n Reset: \"Reset\",\n \"Seek Backward\": \"Seek Backward\",\n \"Seek Forward\": \"Seek Forward\",\n Seek: \"Seek\",\n Settings: \"Settings\",\n \"Skip To Live\": \"Skip To Live\",\n Speed: \"Speed\",\n Size: \"Size\",\n Color: \"Color\",\n Opacity: \"Opacity\",\n Shadow: \"Shadow\",\n Text: \"Text\",\n \"Text Background\": \"Text Background\",\n Track: \"Track\",\n Unmute: \"Unmute\",\n Volume: \"Volume\",\n },\n}\n\nconst enGB: PlayerLocaleData = {\n desktop: { ...enUS.desktop },\n vidstack: { ...enUS.vidstack },\n}\n\nconst esMX: PlayerLocaleData = {\n desktop: {\n play: \"Reproducir\",\n pause: \"Pausar\",\n seekBackward: \"Retroceder 10s\",\n seekForward: \"Adelantar 10s\",\n mute: \"Silenciar\",\n unmute: \"Activar sonido\",\n captionsOn: \"Desactivar subtítulos\",\n captionsOff: \"Activar subtítulos\",\n captions: \"Subtítulos\",\n pip: \"Picture-in-Picture\",\n pipExit: \"Salir de PiP\",\n speed: \"Velocidad\",\n speedNormal: \"Normal\",\n quality: \"Calidad\",\n qualityMenu: \"Calidad\",\n fullscreen: \"Pantalla completa\",\n fullscreenExit: \"Salir de pantalla completa\",\n live: \"En vivo\",\n },\n vidstack: {\n Announcements: \"Anuncios\",\n Accessibility: \"Accesibilidad\",\n AirPlay: \"AirPlay\",\n Audio: \"Audio\",\n Auto: \"Automático\",\n Boost: \"Amplificar\",\n Captions: \"Subtítulos\",\n \"Caption Styles\": \"Estilos de subtítulos\",\n \"Captions look like this\": \"Los subtítulos se ven así\",\n Chapters: \"Capítulos\",\n \"Closed-Captions Off\": \"Activar subtítulos\",\n \"Closed-Captions On\": \"Desactivar subtítulos\",\n Connected: \"Conectado\",\n Continue: \"Continuar\",\n Connecting: \"Conectando\",\n Default: \"Predeterminado\",\n Disabled: \"Desactivado\",\n Disconnected: \"Desconectado\",\n \"Display Background\": \"Fondo de pantalla\",\n Download: \"Descargar\",\n \"Enter Fullscreen\": \"Pantalla completa\",\n \"Enter PiP\": \"Picture-in-Picture\",\n \"Exit Fullscreen\": \"Salir de pantalla completa\",\n \"Exit PiP\": \"Salir de PiP\",\n Font: \"Fuente\",\n Family: \"Familia\",\n Fullscreen: \"Pantalla completa\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"Animaciones de teclado\",\n LIVE: \"EN VIVO\",\n Loop: \"Repetir\",\n Mute: \"Silenciar\",\n Normal: \"Normal\",\n Off: \"Desactivado\",\n Pause: \"Pausar\",\n Play: \"Reproducir\",\n Playback: \"Reproducción\",\n PiP: \"PiP\",\n Quality: \"Calidad\",\n Replay: \"Repetir\",\n Reset: \"Restablecer\",\n \"Seek Backward\": \"Retroceder\",\n \"Seek Forward\": \"Adelantar\",\n Seek: \"Buscar\",\n Settings: \"Configuración\",\n \"Skip To Live\": \"Ir a en vivo\",\n Speed: \"Velocidad\",\n Size: \"Tamaño\",\n Color: \"Color\",\n Opacity: \"Opacidad\",\n Shadow: \"Sombra\",\n Text: \"Texto\",\n \"Text Background\": \"Fondo del texto\",\n Track: \"Pista\",\n Unmute: \"Activar sonido\",\n Volume: \"Volumen\",\n },\n}\n\nconst esES: PlayerLocaleData = {\n desktop: { ...esMX.desktop },\n vidstack: { ...esMX.vidstack },\n}\n\nconst frFR: PlayerLocaleData = {\n desktop: {\n play: \"Lecture\",\n pause: \"Pause\",\n seekBackward: \"Reculer de 10s\",\n seekForward: \"Avancer de 10s\",\n mute: \"Couper le son\",\n unmute: \"Activer le son\",\n captionsOn: \"Désactiver les sous-titres\",\n captionsOff: \"Activer les sous-titres\",\n captions: \"Sous-titres\",\n pip: \"Picture-in-Picture\",\n pipExit: \"Quitter PiP\",\n speed: \"Vitesse\",\n speedNormal: \"Normal\",\n quality: \"Qualité\",\n qualityMenu: \"Qualité\",\n fullscreen: \"Plein écran\",\n fullscreenExit: \"Quitter le plein écran\",\n live: \"En direct\",\n },\n vidstack: {\n Announcements: \"Annonces\",\n Accessibility: \"Accessibilité\",\n AirPlay: \"AirPlay\",\n Audio: \"Audio\",\n Auto: \"Automatique\",\n Boost: \"Amplifier\",\n Captions: \"Sous-titres\",\n \"Caption Styles\": \"Styles des sous-titres\",\n \"Captions look like this\": \"Les sous-titres ressemblent à ceci\",\n Chapters: \"Chapitres\",\n \"Closed-Captions Off\": \"Activer les sous-titres\",\n \"Closed-Captions On\": \"Désactiver les sous-titres\",\n Connected: \"Connecté\",\n Continue: \"Continuer\",\n Connecting: \"Connexion\",\n Default: \"Par défaut\",\n Disabled: \"Désactivé\",\n Disconnected: \"Déconnecté\",\n \"Display Background\": \"Arrière-plan\",\n Download: \"Télécharger\",\n \"Enter Fullscreen\": \"Plein écran\",\n \"Enter PiP\": \"Picture-in-Picture\",\n \"Exit Fullscreen\": \"Quitter le plein écran\",\n \"Exit PiP\": \"Quitter PiP\",\n Font: \"Police\",\n Family: \"Famille\",\n Fullscreen: \"Plein écran\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"Animations du clavier\",\n LIVE: \"EN DIRECT\",\n Loop: \"Boucle\",\n Mute: \"Couper le son\",\n Normal: \"Normal\",\n Off: \"Désactivé\",\n Pause: \"Pause\",\n Play: \"Lecture\",\n Playback: \"Lecture\",\n PiP: \"PiP\",\n Quality: \"Qualité\",\n Replay: \"Rejouer\",\n Reset: \"Réinitialiser\",\n \"Seek Backward\": \"Reculer\",\n \"Seek Forward\": \"Avancer\",\n Seek: \"Rechercher\",\n Settings: \"Paramètres\",\n \"Skip To Live\": \"Aller au direct\",\n Speed: \"Vitesse\",\n Size: \"Taille\",\n Color: \"Couleur\",\n Opacity: \"Opacité\",\n Shadow: \"Ombre\",\n Text: \"Texte\",\n \"Text Background\": \"Arrière-plan du texte\",\n Track: \"Piste\",\n Unmute: \"Activer le son\",\n Volume: \"Volume\",\n },\n}\n\nconst frCA: PlayerLocaleData = {\n desktop: { ...frFR.desktop },\n vidstack: { ...frFR.vidstack },\n}\n\nconst zhCN: PlayerLocaleData = {\n desktop: {\n play: \"播放\",\n pause: \"暂停\",\n seekBackward: \"后退10秒\",\n seekForward: \"前进10秒\",\n mute: \"静音\",\n unmute: \"取消静音\",\n captionsOn: \"关闭字幕\",\n captionsOff: \"开启字幕\",\n captions: \"字幕\",\n pip: \"画中画\",\n pipExit: \"退出画中画\",\n speed: \"播放速度\",\n speedNormal: \"正常\",\n quality: \"画质\",\n qualityMenu: \"画质\",\n fullscreen: \"全屏\",\n fullscreenExit: \"退出全屏\",\n live: \"直播\",\n },\n vidstack: {\n Announcements: \"公告\",\n Accessibility: \"无障碍\",\n AirPlay: \"AirPlay\",\n Audio: \"音频\",\n Auto: \"自动\",\n Boost: \"增强\",\n Captions: \"字幕\",\n \"Caption Styles\": \"字幕样式\",\n \"Captions look like this\": \"字幕效果预览\",\n Chapters: \"章节\",\n \"Closed-Captions Off\": \"开启字幕\",\n \"Closed-Captions On\": \"关闭字幕\",\n Connected: \"已连接\",\n Continue: \"继续\",\n Connecting: \"连接中\",\n Default: \"默认\",\n Disabled: \"已禁用\",\n Disconnected: \"已断开\",\n \"Display Background\": \"显示背景\",\n Download: \"下载\",\n \"Enter Fullscreen\": \"全屏\",\n \"Enter PiP\": \"画中画\",\n \"Exit Fullscreen\": \"退出全屏\",\n \"Exit PiP\": \"退出画中画\",\n Font: \"字体\",\n Family: \"字体族\",\n Fullscreen: \"全屏\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"键盘动画\",\n LIVE: \"直播\",\n Loop: \"循环\",\n Mute: \"静音\",\n Normal: \"正常\",\n Off: \"关闭\",\n Pause: \"暂停\",\n Play: \"播放\",\n Playback: \"播放\",\n PiP: \"画中画\",\n Quality: \"画质\",\n Replay: \"重播\",\n Reset: \"重置\",\n \"Seek Backward\": \"后退\",\n \"Seek Forward\": \"前进\",\n Seek: \"跳转\",\n Settings: \"设置\",\n \"Skip To Live\": \"跳转到直播\",\n Speed: \"播放速度\",\n Size: \"大小\",\n Color: \"颜色\",\n Opacity: \"透明度\",\n Shadow: \"阴影\",\n Text: \"文字\",\n \"Text Background\": \"文字背景\",\n Track: \"轨道\",\n Unmute: \"取消静音\",\n Volume: \"音量\",\n },\n}\n\nconst zhTW: PlayerLocaleData = {\n desktop: {\n play: \"播放\",\n pause: \"暫停\",\n seekBackward: \"倒退10秒\",\n seekForward: \"快進10秒\",\n mute: \"靜音\",\n unmute: \"取消靜音\",\n captionsOn: \"關閉字幕\",\n captionsOff: \"開啟字幕\",\n captions: \"字幕\",\n pip: \"子母畫面\",\n pipExit: \"退出子母畫面\",\n speed: \"播放速度\",\n speedNormal: \"正常\",\n quality: \"畫質\",\n qualityMenu: \"畫質\",\n fullscreen: \"全螢幕\",\n fullscreenExit: \"退出全螢幕\",\n live: \"直播\",\n },\n vidstack: {\n Announcements: \"公告\",\n Accessibility: \"無障礙\",\n AirPlay: \"AirPlay\",\n Audio: \"音訊\",\n Auto: \"自動\",\n Boost: \"增強\",\n Captions: \"字幕\",\n \"Caption Styles\": \"字幕樣式\",\n \"Captions look like this\": \"字幕效果預覽\",\n Chapters: \"章節\",\n \"Closed-Captions Off\": \"開啟字幕\",\n \"Closed-Captions On\": \"關閉字幕\",\n Connected: \"已連線\",\n Continue: \"繼續\",\n Connecting: \"連線中\",\n Default: \"預設\",\n Disabled: \"已停用\",\n Disconnected: \"已中斷\",\n \"Display Background\": \"顯示背景\",\n Download: \"下載\",\n \"Enter Fullscreen\": \"全螢幕\",\n \"Enter PiP\": \"子母畫面\",\n \"Exit Fullscreen\": \"退出全螢幕\",\n \"Exit PiP\": \"退出子母畫面\",\n Font: \"字型\",\n Family: \"字型族\",\n Fullscreen: \"全螢幕\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"鍵盤動畫\",\n LIVE: \"直播\",\n Loop: \"循環\",\n Mute: \"靜音\",\n Normal: \"正常\",\n Off: \"關閉\",\n Pause: \"暫停\",\n Play: \"播放\",\n Playback: \"播放\",\n PiP: \"子母畫面\",\n Quality: \"畫質\",\n Replay: \"重播\",\n Reset: \"重設\",\n \"Seek Backward\": \"倒退\",\n \"Seek Forward\": \"快進\",\n Seek: \"跳轉\",\n Settings: \"設定\",\n \"Skip To Live\": \"跳至直播\",\n Speed: \"播放速度\",\n Size: \"大小\",\n Color: \"顏色\",\n Opacity: \"透明度\",\n Shadow: \"陰影\",\n Text: \"文字\",\n \"Text Background\": \"文字背景\",\n Track: \"軌道\",\n Unmute: \"取消靜音\",\n Volume: \"音量\",\n },\n}\n\nconst deDE: PlayerLocaleData = {\n desktop: {\n play: \"Wiedergabe\",\n pause: \"Pause\",\n seekBackward: \"10s zurück\",\n seekForward: \"10s vor\",\n mute: \"Stummschalten\",\n unmute: \"Ton einschalten\",\n captionsOn: \"Untertitel deaktivieren\",\n captionsOff: \"Untertitel aktivieren\",\n captions: \"Untertitel\",\n pip: \"Bild-in-Bild\",\n pipExit: \"Bild-in-Bild beenden\",\n speed: \"Geschwindigkeit\",\n speedNormal: \"Normal\",\n quality: \"Qualität\",\n qualityMenu: \"Qualität\",\n fullscreen: \"Vollbild\",\n fullscreenExit: \"Vollbild beenden\",\n live: \"Live\",\n },\n vidstack: {\n Announcements: \"Ankündigungen\",\n Accessibility: \"Barrierefreiheit\",\n AirPlay: \"AirPlay\",\n Audio: \"Audio\",\n Auto: \"Automatisch\",\n Boost: \"Verstärken\",\n Captions: \"Untertitel\",\n \"Caption Styles\": \"Untertitelstile\",\n \"Captions look like this\": \"Untertitel sehen so aus\",\n Chapters: \"Kapitel\",\n \"Closed-Captions Off\": \"Untertitel aktivieren\",\n \"Closed-Captions On\": \"Untertitel deaktivieren\",\n Connected: \"Verbunden\",\n Continue: \"Weiter\",\n Connecting: \"Verbindung wird hergestellt\",\n Default: \"Standard\",\n Disabled: \"Deaktiviert\",\n Disconnected: \"Getrennt\",\n \"Display Background\": \"Hintergrund\",\n Download: \"Herunterladen\",\n \"Enter Fullscreen\": \"Vollbild\",\n \"Enter PiP\": \"Bild-in-Bild\",\n \"Exit Fullscreen\": \"Vollbild beenden\",\n \"Exit PiP\": \"Bild-in-Bild beenden\",\n Font: \"Schriftart\",\n Family: \"Familie\",\n Fullscreen: \"Vollbild\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"Tastaturanimationen\",\n LIVE: \"LIVE\",\n Loop: \"Wiederholen\",\n Mute: \"Stummschalten\",\n Normal: \"Normal\",\n Off: \"Aus\",\n Pause: \"Pause\",\n Play: \"Wiedergabe\",\n Playback: \"Wiedergabe\",\n PiP: \"BiB\",\n Quality: \"Qualität\",\n Replay: \"Erneut abspielen\",\n Reset: \"Zurücksetzen\",\n \"Seek Backward\": \"Zurückspulen\",\n \"Seek Forward\": \"Vorspulen\",\n Seek: \"Suchen\",\n Settings: \"Einstellungen\",\n \"Skip To Live\": \"Zum Livestream\",\n Speed: \"Geschwindigkeit\",\n Size: \"Größe\",\n Color: \"Farbe\",\n Opacity: \"Deckkraft\",\n Shadow: \"Schatten\",\n Text: \"Text\",\n \"Text Background\": \"Texthintergrund\",\n Track: \"Spur\",\n Unmute: \"Ton einschalten\",\n Volume: \"Lautstärke\",\n },\n}\n\nconst itIT: PlayerLocaleData = {\n desktop: {\n play: \"Riproduci\",\n pause: \"Pausa\",\n seekBackward: \"Indietro 10s\",\n seekForward: \"Avanti 10s\",\n mute: \"Disattiva audio\",\n unmute: \"Attiva audio\",\n captionsOn: \"Disattiva sottotitoli\",\n captionsOff: \"Attiva sottotitoli\",\n captions: \"Sottotitoli\",\n pip: \"Picture-in-Picture\",\n pipExit: \"Esci da PiP\",\n speed: \"Velocità\",\n speedNormal: \"Normale\",\n quality: \"Qualità\",\n qualityMenu: \"Qualità\",\n fullscreen: \"Schermo intero\",\n fullscreenExit: \"Esci da schermo intero\",\n live: \"In diretta\",\n },\n vidstack: {\n Announcements: \"Annunci\",\n Accessibility: \"Accessibilità\",\n AirPlay: \"AirPlay\",\n Audio: \"Audio\",\n Auto: \"Automatico\",\n Boost: \"Amplifica\",\n Captions: \"Sottotitoli\",\n \"Caption Styles\": \"Stili sottotitoli\",\n \"Captions look like this\": \"I sottotitoli appaiono così\",\n Chapters: \"Capitoli\",\n \"Closed-Captions Off\": \"Attiva sottotitoli\",\n \"Closed-Captions On\": \"Disattiva sottotitoli\",\n Connected: \"Connesso\",\n Continue: \"Continua\",\n Connecting: \"Connessione\",\n Default: \"Predefinito\",\n Disabled: \"Disattivato\",\n Disconnected: \"Disconnesso\",\n \"Display Background\": \"Sfondo\",\n Download: \"Scarica\",\n \"Enter Fullscreen\": \"Schermo intero\",\n \"Enter PiP\": \"Picture-in-Picture\",\n \"Exit Fullscreen\": \"Esci da schermo intero\",\n \"Exit PiP\": \"Esci da PiP\",\n Font: \"Carattere\",\n Family: \"Famiglia\",\n Fullscreen: \"Schermo intero\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"Animazioni tastiera\",\n LIVE: \"IN DIRETTA\",\n Loop: \"Ripeti\",\n Mute: \"Disattiva audio\",\n Normal: \"Normale\",\n Off: \"Disattivato\",\n Pause: \"Pausa\",\n Play: \"Riproduci\",\n Playback: \"Riproduzione\",\n PiP: \"PiP\",\n Quality: \"Qualità\",\n Replay: \"Riproduci di nuovo\",\n Reset: \"Ripristina\",\n \"Seek Backward\": \"Indietro\",\n \"Seek Forward\": \"Avanti\",\n Seek: \"Cerca\",\n Settings: \"Impostazioni\",\n \"Skip To Live\": \"Vai alla diretta\",\n Speed: \"Velocità\",\n Size: \"Dimensione\",\n Color: \"Colore\",\n Opacity: \"Opacità\",\n Shadow: \"Ombra\",\n Text: \"Testo\",\n \"Text Background\": \"Sfondo del testo\",\n Track: \"Traccia\",\n Unmute: \"Attiva audio\",\n Volume: \"Volume\",\n },\n}\n\nconst jaJP: PlayerLocaleData = {\n desktop: {\n play: \"再生\",\n pause: \"一時停止\",\n seekBackward: \"10秒戻る\",\n seekForward: \"10秒進む\",\n mute: \"ミュート\",\n unmute: \"ミュート解除\",\n captionsOn: \"字幕をオフ\",\n captionsOff: \"字幕をオン\",\n captions: \"字幕\",\n pip: \"ピクチャーインピクチャー\",\n pipExit: \"PiPを終了\",\n speed: \"再生速度\",\n speedNormal: \"標準\",\n quality: \"画質\",\n qualityMenu: \"画質\",\n fullscreen: \"全画面\",\n fullscreenExit: \"全画面を終了\",\n live: \"ライブ\",\n },\n vidstack: {\n Announcements: \"お知らせ\",\n Accessibility: \"アクセシビリティ\",\n AirPlay: \"AirPlay\",\n Audio: \"音声\",\n Auto: \"自動\",\n Boost: \"ブースト\",\n Captions: \"字幕\",\n \"Caption Styles\": \"字幕スタイル\",\n \"Captions look like this\": \"字幕のプレビュー\",\n Chapters: \"チャプター\",\n \"Closed-Captions Off\": \"字幕をオン\",\n \"Closed-Captions On\": \"字幕をオフ\",\n Connected: \"接続済み\",\n Continue: \"続ける\",\n Connecting: \"接続中\",\n Default: \"デフォルト\",\n Disabled: \"無効\",\n Disconnected: \"切断済み\",\n \"Display Background\": \"表示背景\",\n Download: \"ダウンロード\",\n \"Enter Fullscreen\": \"全画面\",\n \"Enter PiP\": \"ピクチャーインピクチャー\",\n \"Exit Fullscreen\": \"全画面を終了\",\n \"Exit PiP\": \"PiPを終了\",\n Font: \"フォント\",\n Family: \"フォントファミリー\",\n Fullscreen: \"全画面\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"キーボードアニメーション\",\n LIVE: \"ライブ\",\n Loop: \"ループ\",\n Mute: \"ミュート\",\n Normal: \"標準\",\n Off: \"オフ\",\n Pause: \"一時停止\",\n Play: \"再生\",\n Playback: \"再生\",\n PiP: \"PiP\",\n Quality: \"画質\",\n Replay: \"もう一度再生\",\n Reset: \"リセット\",\n \"Seek Backward\": \"巻き戻し\",\n \"Seek Forward\": \"早送り\",\n Seek: \"シーク\",\n Settings: \"設定\",\n \"Skip To Live\": \"ライブへ移動\",\n Speed: \"再生速度\",\n Size: \"サイズ\",\n Color: \"色\",\n Opacity: \"不透明度\",\n Shadow: \"影\",\n Text: \"テキスト\",\n \"Text Background\": \"テキスト背景\",\n Track: \"トラック\",\n Unmute: \"ミュート解除\",\n Volume: \"音量\",\n },\n}\n\nconst koKR: PlayerLocaleData = {\n desktop: {\n play: \"재생\",\n pause: \"일시정지\",\n seekBackward: \"10초 뒤로\",\n seekForward: \"10초 앞으로\",\n mute: \"음소거\",\n unmute: \"음소거 해제\",\n captionsOn: \"자막 끄기\",\n captionsOff: \"자막 켜기\",\n captions: \"자막\",\n pip: \"화면 속 화면\",\n pipExit: \"PiP 종료\",\n speed: \"재생 속도\",\n speedNormal: \"보통\",\n quality: \"화질\",\n qualityMenu: \"화질\",\n fullscreen: \"전체 화면\",\n fullscreenExit: \"전체 화면 종료\",\n live: \"라이브\",\n },\n vidstack: {\n Announcements: \"공지\",\n Accessibility: \"접근성\",\n AirPlay: \"AirPlay\",\n Audio: \"오디오\",\n Auto: \"자동\",\n Boost: \"부스트\",\n Captions: \"자막\",\n \"Caption Styles\": \"자막 스타일\",\n \"Captions look like this\": \"자막 미리보기\",\n Chapters: \"챕터\",\n \"Closed-Captions Off\": \"자막 켜기\",\n \"Closed-Captions On\": \"자막 끄기\",\n Connected: \"연결됨\",\n Continue: \"계속\",\n Connecting: \"연결 중\",\n Default: \"기본값\",\n Disabled: \"비활성화\",\n Disconnected: \"연결 끊김\",\n \"Display Background\": \"배경 표시\",\n Download: \"다운로드\",\n \"Enter Fullscreen\": \"전체 화면\",\n \"Enter PiP\": \"화면 속 화면\",\n \"Exit Fullscreen\": \"전체 화면 종료\",\n \"Exit PiP\": \"PiP 종료\",\n Font: \"글꼴\",\n Family: \"글꼴 패밀리\",\n Fullscreen: \"전체 화면\",\n \"Google Cast\": \"Google Cast\",\n \"Keyboard Animations\": \"키보드 애니메이션\",\n LIVE: \"라이브\",\n Loop: \"반복\",\n Mute: \"음소거\",\n Normal: \"보통\",\n Off: \"끄기\",\n Pause: \"일시정지\",\n Play: \"재생\",\n Playback: \"재생\",\n PiP: \"PiP\",\n Quality: \"화질\",\n Replay: \"다시 재생\",\n Reset: \"초기화\",\n \"Seek Backward\": \"뒤로\",\n \"Seek Forward\": \"앞으로\",\n Seek: \"탐색\",\n Settings: \"설정\",\n \"Skip To Live\": \"라이브로 이동\",\n Speed: \"재생 속도\",\n Size: \"크기\",\n Color: \"색상\",\n Opacity: \"불투명도\",\n Shadow: \"그림자\",\n Text: \"텍스트\",\n \"Text Background\": \"텍스트 배경\",\n Track: \"트랙\",\n Unmute: \"음소거 해제\",\n Volume: \"볼륨\",\n },\n}\n\n/* ─── Locale registry ─── */\n\nexport const playerLocales: Record<PlayerLocale, PlayerLocaleData> = {\n \"pt-BR\": ptBR,\n \"en-US\": enUS,\n \"en-GB\": enGB,\n \"es-MX\": esMX,\n \"es-ES\": esES,\n \"fr-FR\": frFR,\n \"fr-CA\": frCA,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhTW,\n \"de-DE\": deDE,\n \"it-IT\": itIT,\n \"ja-JP\": jaJP,\n \"ko-KR\": koKR,\n}\n\n/* ─── Resolver functions ─── */\n\n/** Desktop label keys that map to Vidstack translation keys */\nconst desktopToVidstack: Record<keyof VideoDesktopLabels, (keyof DefaultLayoutTranslations)[]> = {\n play: [\"Play\"],\n pause: [\"Pause\"],\n seekBackward: [\"Seek Backward\"],\n seekForward: [\"Seek Forward\"],\n mute: [\"Mute\"],\n unmute: [\"Unmute\"],\n captionsOn: [\"Closed-Captions On\"],\n captionsOff: [\"Closed-Captions Off\"],\n captions: [\"Captions\"],\n pip: [\"PiP\", \"Enter PiP\"],\n pipExit: [\"Exit PiP\"],\n speed: [\"Speed\"],\n speedNormal: [\"Normal\"],\n quality: [\"Quality\"],\n qualityMenu: [],\n fullscreen: [\"Fullscreen\", \"Enter Fullscreen\"],\n fullscreenExit: [\"Exit Fullscreen\"],\n live: [\"LIVE\", \"Skip To Live\"],\n}\n\n/** Resolve VideoPlayer desktop labels: locale defaults + optional overrides */\nexport function resolveVideoLabels(\n locale: PlayerLocale,\n overrides?: Partial<VideoDesktopLabels>\n): VideoDesktopLabels {\n return { ...playerLocales[locale].desktop, ...overrides }\n}\n\n/** Resolve Vidstack translations: locale defaults + cascade from desktop label overrides */\nexport function resolveVidstackTranslations(\n locale: PlayerLocale,\n desktopOverrides?: Partial<VideoDesktopLabels>\n): DefaultLayoutTranslations {\n const base = { ...playerLocales[locale].vidstack }\n\n if (desktopOverrides) {\n for (const [key, value] of Object.entries(desktopOverrides) as [keyof VideoDesktopLabels, string][]) {\n if (value === undefined) continue\n const vidstackKeys = desktopToVidstack[key]\n for (const vk of vidstackKeys) {\n base[vk] = value\n }\n }\n }\n\n return base\n}\n\n/** Resolve AudioPlayer label: locale default + optional override */\nexport function resolveAudioSpeedNormal(\n locale: PlayerLocale,\n override?: string\n): string {\n return override ?? playerLocales[locale].desktop.speedNormal\n}\n"]}
@@ -0,0 +1,303 @@
1
+ import { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from './chunk-IGMII4BK.js';
2
+ import { CycleIcon } from './chunk-V7M2NHUO.js';
3
+ import { toggleVariants } from './chunk-CIM6KJH5.js';
4
+ import { cn } from './chunk-TYCPXAXF.js';
5
+ import { __spreadValues } from './chunk-YINJ5YZ5.js';
6
+ import * as React from 'react';
7
+ import { useEditor, EditorContent } from '@tiptap/react';
8
+ import StarterKit from '@tiptap/starter-kit';
9
+ import Underline from '@tiptap/extension-underline';
10
+ import Placeholder from '@tiptap/extension-placeholder';
11
+ import { Undo2, Redo2, Bold, Italic, Underline as Underline$1, Strikethrough, Heading2, List, ListOrdered } from 'lucide-react';
12
+ import { jsxs, jsx } from 'react/jsx-runtime';
13
+
14
+ function ToolbarDivider() {
15
+ return /* @__PURE__ */ jsx("div", { className: "mx-1 h-5 w-px bg-neutral-border", "aria-hidden": "true" });
16
+ }
17
+ function ToolbarToggle({ pressed, onToggle, icon, label, disabled }) {
18
+ return /* @__PURE__ */ jsxs(Tooltip, { children: [
19
+ /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
20
+ "button",
21
+ {
22
+ type: "button",
23
+ className: cn(
24
+ toggleVariants({ variant: "default", size: "icon-sm" }),
25
+ pressed && "bg-accent text-accent-foreground"
26
+ ),
27
+ onClick: onToggle,
28
+ "aria-pressed": pressed,
29
+ "aria-label": label,
30
+ disabled,
31
+ "data-state": pressed ? "on" : "off",
32
+ children: /* @__PURE__ */ jsx(CycleIcon, { icon, size: "xs", decorative: true })
33
+ }
34
+ ) }),
35
+ /* @__PURE__ */ jsx(TooltipContent, { children: label })
36
+ ] });
37
+ }
38
+ function getToolbarState(editor) {
39
+ return {
40
+ isBold: editor.isActive("bold"),
41
+ isItalic: editor.isActive("italic"),
42
+ isUnderline: editor.isActive("underline"),
43
+ isStrike: editor.isActive("strike"),
44
+ isH2: editor.isActive("heading", { level: 2 }),
45
+ isBulletList: editor.isActive("bulletList"),
46
+ isOrderedList: editor.isActive("orderedList"),
47
+ canUndo: editor.can().undo(),
48
+ canRedo: editor.can().redo()
49
+ };
50
+ }
51
+ function EditorToolbar({ editor, state, theme }) {
52
+ const {
53
+ isBold,
54
+ isItalic,
55
+ isUnderline,
56
+ isStrike,
57
+ isH2,
58
+ isBulletList,
59
+ isOrderedList,
60
+ canUndo,
61
+ canRedo
62
+ } = state;
63
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(
64
+ "div",
65
+ {
66
+ className: cn(
67
+ "flex items-center gap-0.5 overflow-x-auto border-b border-neutral-border px-2 py-1.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
68
+ theme
69
+ ),
70
+ role: "toolbar",
71
+ "aria-label": "Formatting options",
72
+ children: [
73
+ /* @__PURE__ */ jsx(
74
+ ToolbarToggle,
75
+ {
76
+ pressed: false,
77
+ onToggle: () => editor.chain().focus().undo().run(),
78
+ icon: Undo2,
79
+ label: "Undo",
80
+ disabled: !canUndo
81
+ }
82
+ ),
83
+ /* @__PURE__ */ jsx(
84
+ ToolbarToggle,
85
+ {
86
+ pressed: false,
87
+ onToggle: () => editor.chain().focus().redo().run(),
88
+ icon: Redo2,
89
+ label: "Redo",
90
+ disabled: !canRedo
91
+ }
92
+ ),
93
+ /* @__PURE__ */ jsx(ToolbarDivider, {}),
94
+ /* @__PURE__ */ jsx(
95
+ ToolbarToggle,
96
+ {
97
+ pressed: isBold,
98
+ onToggle: () => editor.chain().focus().toggleBold().run(),
99
+ icon: Bold,
100
+ label: "Bold"
101
+ }
102
+ ),
103
+ /* @__PURE__ */ jsx(
104
+ ToolbarToggle,
105
+ {
106
+ pressed: isItalic,
107
+ onToggle: () => editor.chain().focus().toggleItalic().run(),
108
+ icon: Italic,
109
+ label: "Italic"
110
+ }
111
+ ),
112
+ /* @__PURE__ */ jsx(
113
+ ToolbarToggle,
114
+ {
115
+ pressed: isUnderline,
116
+ onToggle: () => editor.chain().focus().toggleUnderline().run(),
117
+ icon: Underline$1,
118
+ label: "Underline"
119
+ }
120
+ ),
121
+ /* @__PURE__ */ jsx(
122
+ ToolbarToggle,
123
+ {
124
+ pressed: isStrike,
125
+ onToggle: () => editor.chain().focus().toggleStrike().run(),
126
+ icon: Strikethrough,
127
+ label: "Strikethrough"
128
+ }
129
+ ),
130
+ /* @__PURE__ */ jsx(ToolbarDivider, {}),
131
+ /* @__PURE__ */ jsx(
132
+ ToolbarToggle,
133
+ {
134
+ pressed: isH2,
135
+ onToggle: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),
136
+ icon: Heading2,
137
+ label: "Heading 2"
138
+ }
139
+ ),
140
+ /* @__PURE__ */ jsx(ToolbarDivider, {}),
141
+ /* @__PURE__ */ jsx(
142
+ ToolbarToggle,
143
+ {
144
+ pressed: isBulletList,
145
+ onToggle: () => editor.chain().focus().toggleBulletList().run(),
146
+ icon: List,
147
+ label: "Bullet list"
148
+ }
149
+ ),
150
+ /* @__PURE__ */ jsx(
151
+ ToolbarToggle,
152
+ {
153
+ pressed: isOrderedList,
154
+ onToggle: () => editor.chain().focus().toggleOrderedList().run(),
155
+ icon: ListOrdered,
156
+ label: "Ordered list"
157
+ }
158
+ )
159
+ ]
160
+ }
161
+ ) });
162
+ }
163
+ var Editor = React.forwardRef(
164
+ function Editor2({
165
+ content,
166
+ defaultContent,
167
+ onChange,
168
+ placeholder = "Type something...",
169
+ editable = true,
170
+ className,
171
+ autoFocus = false,
172
+ maxHeight,
173
+ minHeight = "120px",
174
+ resizable = false,
175
+ toolbarTheme
176
+ }, ref) {
177
+ var _a;
178
+ const [toolbarState, setToolbarState] = React.useState({
179
+ isBold: false,
180
+ isItalic: false,
181
+ isUnderline: false,
182
+ isStrike: false,
183
+ isH2: false,
184
+ isBulletList: false,
185
+ isOrderedList: false,
186
+ canUndo: false,
187
+ canRedo: false
188
+ });
189
+ const onChangeRef = React.useRef(onChange);
190
+ onChangeRef.current = onChange;
191
+ const editor = useEditor({
192
+ immediatelyRender: false,
193
+ extensions: [
194
+ StarterKit.configure({
195
+ heading: { levels: [2] }
196
+ }),
197
+ Underline,
198
+ Placeholder.configure({ placeholder })
199
+ ],
200
+ content: (_a = defaultContent != null ? defaultContent : content) != null ? _a : "",
201
+ editable,
202
+ autofocus: autoFocus,
203
+ onUpdate: ({ editor: e }) => {
204
+ var _a2;
205
+ (_a2 = onChangeRef.current) == null ? void 0 : _a2.call(onChangeRef, e.getHTML());
206
+ }
207
+ });
208
+ React.useEffect(() => {
209
+ if (!editor) return;
210
+ const sync = () => setToolbarState(getToolbarState(editor));
211
+ sync();
212
+ editor.on("transaction", sync);
213
+ return () => {
214
+ editor.off("transaction", sync);
215
+ };
216
+ }, [editor]);
217
+ React.useEffect(() => {
218
+ if (content !== void 0 && editor && editor.getHTML() !== content) {
219
+ editor.commands.setContent(content, { emitUpdate: false });
220
+ }
221
+ }, [content, editor]);
222
+ React.useEffect(() => {
223
+ editor == null ? void 0 : editor.setEditable(editable);
224
+ }, [editable, editor]);
225
+ React.useImperativeHandle(ref, () => ({
226
+ editor,
227
+ getHTML: () => {
228
+ var _a2;
229
+ return (_a2 = editor == null ? void 0 : editor.getHTML()) != null ? _a2 : "";
230
+ },
231
+ getText: () => {
232
+ var _a2;
233
+ return (_a2 = editor == null ? void 0 : editor.getText()) != null ? _a2 : "";
234
+ },
235
+ clear: () => {
236
+ editor == null ? void 0 : editor.commands.clearContent();
237
+ },
238
+ focus: () => {
239
+ editor == null ? void 0 : editor.commands.focus();
240
+ }
241
+ }), [editor]);
242
+ if (!editor) return null;
243
+ return /* @__PURE__ */ jsxs(
244
+ "div",
245
+ {
246
+ "data-editor-wrapper": true,
247
+ className: cn(
248
+ // Base — same tokens as Textarea (outline variant)
249
+ "w-full rounded-lg border border-neutral-border bg-transparent text-neutral-foreground shadow-xs dark:shadow-none",
250
+ "transition-[color,border-color,box-shadow,background-color] outline-none",
251
+ // Hover
252
+ "hover:border-ring hover:bg-ring/5",
253
+ // Focus-within (focus is on nested contenteditable, not the wrapper)
254
+ "focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 focus-within:bg-ring/5",
255
+ // Error
256
+ "aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:hover:border-destructive dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/40",
257
+ // Disabled
258
+ !editable && "opacity-50 cursor-not-allowed pointer-events-none",
259
+ className
260
+ ),
261
+ children: [
262
+ /* @__PURE__ */ jsx("style", { children: `
263
+ [data-editor-wrapper] .tiptap {
264
+ min-height: var(--editor-min-h, 120px);
265
+ max-height: var(--editor-max-h, none);
266
+ }
267
+ [data-editor-wrapper] .tiptap p.is-editor-empty:first-child::before {
268
+ color: var(--color-neutral-muted-foreground);
269
+ content: attr(data-placeholder);
270
+ float: left;
271
+ height: 0;
272
+ pointer-events: none;
273
+ }
274
+ ` }),
275
+ /* @__PURE__ */ jsx(EditorToolbar, { editor, state: toolbarState, theme: toolbarTheme }),
276
+ /* @__PURE__ */ jsx(
277
+ EditorContent,
278
+ {
279
+ editor,
280
+ className: cn(
281
+ "text-sm text-foreground",
282
+ "selection:bg-primary selection:text-primary-foreground",
283
+ resizable && "resize-y",
284
+ // Scroll on .tiptap directly — Tiptap auto-scrolls to keep cursor in view
285
+ "[&_.tiptap]:outline-none [&_.tiptap]:overflow-y-auto [&_.tiptap]:px-4 [&_.tiptap]:py-2",
286
+ "[&_.tiptap_p]:my-1.5 [&_.tiptap_p]:leading-relaxed",
287
+ "[&_.tiptap_h2]:my-2 [&_.tiptap_h2]:text-lg [&_.tiptap_h2]:font-semibold",
288
+ "[&_.tiptap_ul]:my-1.5 [&_.tiptap_ul]:list-disc [&_.tiptap_ul]:pl-6",
289
+ "[&_.tiptap_ol]:my-1.5 [&_.tiptap_ol]:list-decimal [&_.tiptap_ol]:pl-6",
290
+ "[&_.tiptap_li]:my-0.5"
291
+ ),
292
+ style: __spreadValues(__spreadValues({}, minHeight && { ["--editor-min-h"]: minHeight }), maxHeight && { ["--editor-max-h"]: maxHeight })
293
+ }
294
+ )
295
+ ]
296
+ }
297
+ );
298
+ }
299
+ );
300
+
301
+ export { Editor };
302
+ //# sourceMappingURL=chunk-D4UH2HJQ.js.map
303
+ //# sourceMappingURL=chunk-D4UH2HJQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/editor.tsx"],"names":["UnderlineIcon","Editor","_a"],"mappings":"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","file":"chunk-D4UH2HJQ.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { useEditor, EditorContent, type Editor as TiptapEditor } from \"@tiptap/react\"\nimport StarterKit from \"@tiptap/starter-kit\"\nimport Underline from \"@tiptap/extension-underline\"\nimport Placeholder from \"@tiptap/extension-placeholder\"\nimport {\n Bold,\n Italic,\n Underline as UnderlineIcon,\n Strikethrough,\n Heading2,\n List,\n ListOrdered,\n Undo2,\n Redo2,\n type LucideIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\nimport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n} from \"@/components/ui/tooltip\"\nimport { CycleIcon } from \"@/components/icons\"\n\n// ── Types ────────────────────────────────────────────────────────────\n\nexport interface EditorRef {\n /** The Tiptap editor instance */\n editor: TiptapEditor | null\n /** Get current HTML content */\n getHTML: () => string\n /** Get current plain-text content */\n getText: () => string\n /** Clear the editor */\n clear: () => void\n /** Focus the editor */\n focus: () => void\n}\n\nexport interface EditorProps {\n /** HTML content (controlled) */\n content?: string\n /** Default HTML content (uncontrolled) */\n defaultContent?: string\n /** Called when content changes with the HTML string */\n onChange?: (html: string) => void\n /** Placeholder text shown when the editor is empty */\n placeholder?: string\n /** Whether the editor is editable */\n editable?: boolean\n /** Additional class for the outer wrapper */\n className?: string\n /** Auto-focus the editor on mount */\n autoFocus?: boolean\n /** Max height of the content area — scrolls when exceeded (e.g. \"300px\", \"50vh\") */\n maxHeight?: string\n /** Min height of the content area (default: \"120px\") */\n minHeight?: string\n /** Allow the user to resize the editor vertically */\n resizable?: boolean\n /** Theme class for the toolbar pressed state (e.g. \"theme-class\", \"theme-brand\") */\n toolbarTheme?: string\n}\n\n// ── Toolbar internals ────────────────────────────────────────────────\n\nfunction ToolbarDivider() {\n return <div className=\"mx-1 h-5 w-px bg-neutral-border\" aria-hidden=\"true\" />\n}\n\ninterface ToolbarToggleProps {\n pressed: boolean\n onToggle: () => void\n icon: LucideIcon\n label: string\n disabled?: boolean\n}\n\nfunction ToolbarToggle({ pressed, onToggle, icon, label, disabled }: ToolbarToggleProps) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n className={cn(\n toggleVariants({ variant: \"default\", size: \"icon-sm\" }),\n pressed && \"bg-accent text-accent-foreground\"\n )}\n onClick={onToggle}\n aria-pressed={pressed}\n aria-label={label}\n disabled={disabled}\n data-state={pressed ? \"on\" : \"off\"}\n >\n <CycleIcon icon={icon} size=\"xs\" decorative />\n </button>\n </TooltipTrigger>\n <TooltipContent>{label}</TooltipContent>\n </Tooltip>\n )\n}\n\ninterface ToolbarState {\n isBold: boolean\n isItalic: boolean\n isUnderline: boolean\n isStrike: boolean\n isH2: boolean\n isBulletList: boolean\n isOrderedList: boolean\n canUndo: boolean\n canRedo: boolean\n}\n\nfunction getToolbarState(editor: TiptapEditor): ToolbarState {\n return {\n isBold: editor.isActive(\"bold\"),\n isItalic: editor.isActive(\"italic\"),\n isUnderline: editor.isActive(\"underline\"),\n isStrike: editor.isActive(\"strike\"),\n isH2: editor.isActive(\"heading\", { level: 2 }),\n isBulletList: editor.isActive(\"bulletList\"),\n isOrderedList: editor.isActive(\"orderedList\"),\n canUndo: editor.can().undo(),\n canRedo: editor.can().redo(),\n }\n}\n\nfunction EditorToolbar({ editor, state, theme }: { editor: TiptapEditor; state: ToolbarState; theme?: string }) {\n const {\n isBold, isItalic, isUnderline, isStrike, isH2,\n isBulletList, isOrderedList, canUndo, canRedo,\n } = state\n\n return (\n <TooltipProvider>\n <div\n className={cn(\n \"flex items-center gap-0.5 overflow-x-auto border-b border-neutral-border px-2 py-1.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n theme\n )}\n role=\"toolbar\"\n aria-label=\"Formatting options\"\n >\n {/* History */}\n <ToolbarToggle\n pressed={false}\n onToggle={() => editor.chain().focus().undo().run()}\n icon={Undo2}\n label=\"Undo\"\n disabled={!canUndo}\n />\n <ToolbarToggle\n pressed={false}\n onToggle={() => editor.chain().focus().redo().run()}\n icon={Redo2}\n label=\"Redo\"\n disabled={!canRedo}\n />\n\n <ToolbarDivider />\n\n {/* Text formatting */}\n <ToolbarToggle\n pressed={isBold}\n onToggle={() => editor.chain().focus().toggleBold().run()}\n icon={Bold}\n label=\"Bold\"\n />\n <ToolbarToggle\n pressed={isItalic}\n onToggle={() => editor.chain().focus().toggleItalic().run()}\n icon={Italic}\n label=\"Italic\"\n />\n <ToolbarToggle\n pressed={isUnderline}\n onToggle={() => editor.chain().focus().toggleUnderline().run()}\n icon={UnderlineIcon}\n label=\"Underline\"\n />\n <ToolbarToggle\n pressed={isStrike}\n onToggle={() => editor.chain().focus().toggleStrike().run()}\n icon={Strikethrough}\n label=\"Strikethrough\"\n />\n\n <ToolbarDivider />\n\n {/* Heading */}\n <ToolbarToggle\n pressed={isH2}\n onToggle={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}\n icon={Heading2}\n label=\"Heading 2\"\n />\n\n <ToolbarDivider />\n\n {/* Lists */}\n <ToolbarToggle\n pressed={isBulletList}\n onToggle={() => editor.chain().focus().toggleBulletList().run()}\n icon={List}\n label=\"Bullet list\"\n />\n <ToolbarToggle\n pressed={isOrderedList}\n onToggle={() => editor.chain().focus().toggleOrderedList().run()}\n icon={ListOrdered}\n label=\"Ordered list\"\n />\n </div>\n </TooltipProvider>\n )\n}\n\n// ── Editor ───────────────────────────────────────────────────────────\n\nconst Editor = React.forwardRef<EditorRef, EditorProps>(\n function Editor(\n {\n content,\n defaultContent,\n onChange,\n placeholder = \"Type something...\",\n editable = true,\n className,\n autoFocus = false,\n maxHeight,\n minHeight = \"120px\",\n resizable = false,\n toolbarTheme,\n },\n ref\n ) {\n const [toolbarState, setToolbarState] = React.useState<ToolbarState>({\n isBold: false, isItalic: false, isUnderline: false, isStrike: false,\n isH2: false, isBulletList: false, isOrderedList: false,\n canUndo: false, canRedo: false,\n })\n\n const onChangeRef = React.useRef(onChange)\n onChangeRef.current = onChange\n\n const editor = useEditor({\n immediatelyRender: false,\n extensions: [\n StarterKit.configure({\n heading: { levels: [2] },\n }),\n Underline,\n Placeholder.configure({ placeholder }),\n ],\n content: defaultContent ?? content ?? \"\",\n editable,\n autofocus: autoFocus,\n onUpdate: ({ editor: e }) => {\n onChangeRef.current?.(e.getHTML())\n },\n })\n\n // Subscribe to editor events directly — avoids stale closure issues\n // with useEditor callbacks on React 19\n React.useEffect(() => {\n if (!editor) return\n const sync = () => setToolbarState(getToolbarState(editor))\n sync()\n editor.on(\"transaction\", sync)\n return () => { editor.off(\"transaction\", sync) }\n }, [editor])\n\n // Sync controlled content\n React.useEffect(() => {\n if (content !== undefined && editor && editor.getHTML() !== content) {\n editor.commands.setContent(content, { emitUpdate: false })\n }\n }, [content, editor])\n\n // Sync editable\n React.useEffect(() => {\n editor?.setEditable(editable)\n }, [editable, editor])\n\n // Expose ref\n React.useImperativeHandle(ref, () => ({\n editor,\n getHTML: () => editor?.getHTML() ?? \"\",\n getText: () => editor?.getText() ?? \"\",\n clear: () => { editor?.commands.clearContent() },\n focus: () => { editor?.commands.focus() },\n }), [editor])\n\n if (!editor) return null\n\n return (\n <div\n data-editor-wrapper\n className={cn(\n // Base — same tokens as Textarea (outline variant)\n \"w-full rounded-lg border border-neutral-border bg-transparent text-neutral-foreground shadow-xs dark:shadow-none\",\n \"transition-[color,border-color,box-shadow,background-color] outline-none\",\n // Hover\n \"hover:border-ring hover:bg-ring/5\",\n // Focus-within (focus is on nested contenteditable, not the wrapper)\n \"focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 focus-within:bg-ring/5\",\n // Error\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:hover:border-destructive dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/40\",\n // Disabled\n !editable && \"opacity-50 cursor-not-allowed pointer-events-none\",\n className\n )}\n >\n {/* Scoped styles: placeholder + Tiptap scroll/sizing */}\n <style>{`\n [data-editor-wrapper] .tiptap {\n min-height: var(--editor-min-h, 120px);\n max-height: var(--editor-max-h, none);\n }\n [data-editor-wrapper] .tiptap p.is-editor-empty:first-child::before {\n color: var(--color-neutral-muted-foreground);\n content: attr(data-placeholder);\n float: left;\n height: 0;\n pointer-events: none;\n }\n `}</style>\n\n <EditorToolbar editor={editor} state={toolbarState} theme={toolbarTheme} />\n\n <EditorContent\n editor={editor}\n className={cn(\n \"text-sm text-foreground\",\n \"selection:bg-primary selection:text-primary-foreground\",\n resizable && \"resize-y\",\n // Scroll on .tiptap directly — Tiptap auto-scrolls to keep cursor in view\n \"[&_.tiptap]:outline-none [&_.tiptap]:overflow-y-auto [&_.tiptap]:px-4 [&_.tiptap]:py-2\",\n \"[&_.tiptap_p]:my-1.5 [&_.tiptap_p]:leading-relaxed\",\n \"[&_.tiptap_h2]:my-2 [&_.tiptap_h2]:text-lg [&_.tiptap_h2]:font-semibold\",\n \"[&_.tiptap_ul]:my-1.5 [&_.tiptap_ul]:list-disc [&_.tiptap_ul]:pl-6\",\n \"[&_.tiptap_ol]:my-1.5 [&_.tiptap_ol]:list-decimal [&_.tiptap_ol]:pl-6\",\n \"[&_.tiptap_li]:my-0.5\",\n )}\n style={{\n ...(minHeight && { [\"--editor-min-h\" as string]: minHeight }),\n ...(maxHeight && { [\"--editor-max-h\" as string]: maxHeight }),\n }}\n />\n </div>\n )\n }\n)\n\nexport { Editor }\n"]}
@@ -1,3 +1,4 @@
1
+ import { resolveAudioSpeedNormal } from './chunk-C6BQAAHX.js';
1
2
  import { CycleIcon } from './chunk-V7M2NHUO.js';
2
3
  import { cn } from './chunk-TYCPXAXF.js';
3
4
  import { __spreadValues, __spreadProps } from './chunk-YINJ5YZ5.js';
@@ -7,10 +8,7 @@ import '@vidstack/react/player/styles/base.css';
7
8
  import { RotateCcw, Play, Pause, RotateCw, Gauge, Check, VolumeX, Volume1, Volume2 } from 'lucide-react';
8
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
10
 
10
- var defaultAudioLabels = {
11
- speedNormal: "Normal"
12
- };
13
- var AudioLabelsContext = React.createContext(defaultAudioLabels);
11
+ var AudioLabelsContext = React.createContext({ speedNormal: "Normal" });
14
12
  function useAudioLabels() {
15
13
  return React.useContext(AudioLabelsContext);
16
14
  }
@@ -113,14 +111,15 @@ var AudioPlayer = React.forwardRef(
113
111
  loop = false,
114
112
  showSpeed = true,
115
113
  startTime,
114
+ locale = "pt-BR",
116
115
  labels,
117
116
  onTimeUpdate,
118
117
  onEnded,
119
118
  className
120
119
  }, ref) {
121
120
  const resolvedLabels = React.useMemo(
122
- () => __spreadValues(__spreadValues({}, defaultAudioLabels), labels),
123
- [labels]
121
+ () => ({ speedNormal: resolveAudioSpeedNormal(locale, labels == null ? void 0 : labels.speedNormal) }),
122
+ [locale, labels]
124
123
  );
125
124
  const player = React.useRef(null);
126
125
  React.useImperativeHandle(ref, () => ({
@@ -258,5 +257,5 @@ var AudioPlayer = React.forwardRef(
258
257
  );
259
258
 
260
259
  export { AudioPlayer };
261
- //# sourceMappingURL=chunk-QVOHJ6UN.js.map
262
- //# sourceMappingURL=chunk-QVOHJ6UN.js.map
260
+ //# sourceMappingURL=chunk-DCNZ2DRR.js.map
261
+ //# sourceMappingURL=chunk-DCNZ2DRR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/audio-player.tsx"],"names":["AudioPlayer"],"mappings":"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","file":"chunk-DCNZ2DRR.js","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n MediaPlayer,\n MediaProvider,\n TimeSlider,\n VolumeSlider,\n Time,\n PlayButton,\n MuteButton,\n SeekButton,\n useMediaState,\n useMediaRemote,\n type MediaPlayerInstance,\n} from \"@vidstack/react\"\nimport \"@vidstack/react/player/styles/base.css\"\nimport {\n Play,\n Pause,\n Volume2,\n VolumeX,\n Volume1,\n RotateCcw,\n RotateCw,\n Gauge,\n Check,\n} from \"lucide-react\"\nimport { CycleIcon } from \"@/components/icons\"\nimport { cn } from \"@/lib/utils\"\nimport { type PlayerLocale, resolveAudioSpeedNormal } from \"@/components/ui/player-i18n\"\n\n/* ─── Types ─── */\n\nexport interface AudioPlayerRef {\n play(): void\n pause(): void\n readonly currentTime: number\n readonly duration: number\n}\n\nexport interface AudioPlayerLabels {\n /** Label da velocidade normal no menu (default depende do locale) */\n speedNormal?: string\n}\n\nexport interface AudioPlayerProps {\n /** URL do audio (mp3, ogg, m3u8) */\n src: string\n /** Nome da track/aula */\n title: string\n /** Subtitulo / nome do curso */\n subtitle?: string\n /** URL da imagem de capa (variante card) */\n coverArt?: string\n /** Alt text da imagem de capa */\n coverArtAlt?: string\n /** Variante de layout */\n variant?: \"default\" | \"card\"\n /** Icones, textos e sliders em primary-foreground — usar com .theme-* */\n filled?: boolean\n /** Iniciar automaticamente */\n autoPlay?: boolean\n /** Iniciar mutado */\n muted?: boolean\n /** Repetir ao terminar */\n loop?: boolean\n /** Exibir controle de velocidade (default: true — EdTech) */\n showSpeed?: boolean\n /** Tempo inicial em segundos — usado para retomar de onde o usuario parou (resume position) */\n startTime?: number\n /** Idioma dos controles (default: \"pt-BR\"). 13 locales pre-configurados. */\n locale?: PlayerLocale\n /** Overrides pontuais de labels — aplicados em cima do locale selecionado */\n labels?: AudioPlayerLabels\n /** Callback com progresso do audio (currentTime em segundos, duration em segundos) */\n onTimeUpdate?: (currentTime: number, duration: number) => void\n /** Callback disparado quando o audio termina */\n onEnded?: () => void\n className?: string\n}\n\n/* ─── Labels context ─── */\n\nconst AudioLabelsContext = React.createContext<{ speedNormal: string }>({ speedNormal: \"Normal\" })\nfunction useAudioLabels() {\n return React.useContext(AudioLabelsContext)\n}\n\n/* ─── Shared styles ─── */\n\nconst controlBtnClass =\n \"group/btn inline-flex size-9 cursor-pointer items-center justify-center rounded-md text-foreground outline-none transition-colors hover:bg-accent focus-visible:ring-2 focus-visible:ring-ring group-data-[filled]:text-primary-foreground group-data-[filled]:hover:bg-primary-foreground/10\"\n\n/** Play, Pause e Volume usam icones filled (solid) — igual YouTube */\nconst filledIconClass =\n \"fill-current !stroke-transparent text-foreground group-data-[filled]:text-primary-foreground\"\n\nconst outlineIconClass =\n \"text-foreground group-data-[filled]:text-primary-foreground\"\n\n/* ─── Sub-components ─── */\n\nfunction AudioPlayControl() {\n const isPaused = useMediaState(\"paused\")\n return (\n <PlayButton className={controlBtnClass}>\n {isPaused ? (\n <CycleIcon icon={Play} size=\"sm\" decorative className={filledIconClass} />\n ) : (\n <CycleIcon icon={Pause} size=\"sm\" decorative className={filledIconClass} />\n )}\n </PlayButton>\n )\n}\n\nfunction AudioSeekBackwardControl() {\n return (\n <SeekButton className={controlBtnClass} seconds={-10}>\n <CycleIcon icon={RotateCcw} size=\"sm\" decorative className={outlineIconClass} />\n </SeekButton>\n )\n}\n\nfunction AudioSeekForwardControl() {\n return (\n <SeekButton className={controlBtnClass} seconds={10}>\n <CycleIcon icon={RotateCw} size=\"sm\" decorative className={outlineIconClass} />\n </SeekButton>\n )\n}\n\nfunction AudioMuteControl() {\n const volume = useMediaState(\"volume\")\n const isMuted = useMediaState(\"muted\")\n\n const Icon = isMuted || volume === 0 ? VolumeX : volume < 0.5 ? Volume1 : Volume2\n\n return (\n <MuteButton className={controlBtnClass}>\n <CycleIcon icon={Icon} size=\"sm\" decorative className={filledIconClass} />\n </MuteButton>\n )\n}\n\nfunction AudioVolumeControl() {\n return (\n <VolumeSlider.Root className=\"group relative hidden h-9 w-20 cursor-pointer touch-none select-none items-center outline-none sm:inline-flex\">\n <VolumeSlider.Track className=\"relative h-[4px] w-full rounded-full bg-accent group-data-[filled]/root:bg-primary-foreground/30\">\n <VolumeSlider.TrackFill className=\"absolute h-full w-[var(--slider-fill)] rounded-full bg-primary group-data-[filled]/root:bg-primary-foreground\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"absolute left-[var(--slider-fill)] top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100 group-data-[filled]/root:bg-primary-foreground\" />\n </VolumeSlider.Root>\n )\n}\n\nfunction AudioSeekBar() {\n return (\n <TimeSlider.Root className=\"group relative inline-flex h-9 w-full cursor-pointer touch-none select-none items-center outline-none\">\n <TimeSlider.Track className=\"relative h-[4px] w-full rounded-full bg-accent group-data-[filled]/root:bg-primary-foreground/30\">\n <TimeSlider.Progress className=\"absolute h-full w-[var(--slider-progress)] rounded-full bg-accent-foreground/20 group-data-[filled]/root:bg-primary-foreground/20\" />\n <TimeSlider.TrackFill className=\"absolute h-full w-[var(--slider-fill)] rounded-full bg-primary group-data-[filled]/root:bg-primary-foreground\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"absolute left-[var(--slider-fill)] top-1/2 size-3 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary opacity-0 transition-opacity group-data-[active]:opacity-100 group-data-[dragging]:opacity-100 group-data-[filled]/root:bg-primary-foreground\" />\n\n {/* Time preview on hover */}\n <TimeSlider.Preview className=\"pointer-events-none flex flex-col items-center opacity-0 transition-opacity duration-200 data-[visible]:opacity-100\">\n <TimeSlider.Value className=\"rounded bg-popover px-1.5 py-0.5 text-[11px] font-mono text-popover-foreground border border-border shadow-sm\" />\n </TimeSlider.Preview>\n </TimeSlider.Root>\n )\n}\n\nfunction AudioTimeDisplay() {\n return (\n <div className=\"flex items-center gap-1 text-xs font-mono text-muted-foreground tabular-nums group-data-[filled]:text-primary-foreground/80\">\n <Time type=\"current\" />\n <span>/</span>\n <Time type=\"duration\" />\n </div>\n )\n}\n\nfunction AudioSpeedControl() {\n const playbackRate = useMediaState(\"playbackRate\")\n const remote = useMediaRemote()\n const [open, setOpen] = React.useState(false)\n const l = useAudioLabels()\n\n const rates = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]\n\n return (\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={() => setOpen(!open)}\n className={controlBtnClass}\n >\n {playbackRate === 1 ? (\n <CycleIcon icon={Gauge} size=\"sm\" decorative className={outlineIconClass} />\n ) : (\n <span className=\"text-xs font-mono font-semibold text-foreground group-data-[filled]:text-primary-foreground\">{playbackRate}x</span>\n )}\n </button>\n\n {open && (\n <>\n {/* Backdrop to close */}\n <div className=\"fixed inset-0 z-40\" onClick={() => setOpen(false)} />\n\n <div className=\"absolute bottom-full right-0 z-50 mb-2 min-w-[120px] rounded-lg border border-border bg-popover p-1 shadow-lg\">\n {rates.map((rate) => (\n <button\n key={rate}\n type=\"button\"\n onClick={() => {\n remote.changePlaybackRate(rate)\n setOpen(false)\n }}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-3 py-1.5 text-sm text-popover-foreground/80 transition-colors hover:bg-accent hover:text-popover-foreground\",\n playbackRate === rate && \"text-popover-foreground font-medium\"\n )}\n >\n <span className=\"size-4 flex items-center justify-center\">\n {playbackRate === rate && <CycleIcon icon={Check} size=\"2xs\" decorative className=\"text-popover-foreground\" />}\n </span>\n <span className=\"font-mono\">{rate === 1 ? l.speedNormal : `${rate}x`}</span>\n </button>\n ))}\n </div>\n </>\n )}\n </div>\n )\n}\n\n/* ─── Main component ─── */\n\nexport const AudioPlayer = React.forwardRef<AudioPlayerRef, AudioPlayerProps>(\n function AudioPlayer(\n {\n src,\n title,\n subtitle,\n coverArt,\n coverArtAlt = \"\",\n variant = \"default\",\n filled = false,\n autoPlay = false,\n muted = false,\n loop = false,\n showSpeed = true,\n startTime,\n locale = \"pt-BR\",\n labels,\n onTimeUpdate,\n onEnded,\n className,\n },\n ref\n ) {\n const resolvedLabels = React.useMemo(\n () => ({ speedNormal: resolveAudioSpeedNormal(locale, labels?.speedNormal) }),\n [locale, labels]\n )\n const player = React.useRef<MediaPlayerInstance>(null)\n\n React.useImperativeHandle(ref, () => ({\n play() {\n player.current?.play()\n },\n pause() {\n player.current?.pause()\n },\n get currentTime() {\n return player.current?.currentTime ?? 0\n },\n get duration() {\n return player.current?.duration ?? 0\n },\n }))\n\n const handleTimeUpdate = React.useCallback(\n (detail: { currentTime: number }) => {\n if (onTimeUpdate && player.current) {\n onTimeUpdate(detail.currentTime, player.current.duration)\n }\n },\n [onTimeUpdate]\n )\n\n const handleEnded = React.useCallback(() => {\n onEnded?.()\n }, [onEnded])\n\n // Resume position: seek to startTime once the player is ready\n const hasAppliedStartTime = React.useRef(false)\n const handleCanPlay = React.useCallback(() => {\n if (startTime && startTime > 0 && !hasAppliedStartTime.current && player.current) {\n player.current.currentTime = startTime\n hasAppliedStartTime.current = true\n }\n }, [startTime])\n\n const playerEvents = {\n onCanPlay: handleCanPlay,\n ...(onTimeUpdate ? { onTimeUpdate: handleTimeUpdate } : {}),\n ...(onEnded ? { onEnded: handleEnded } : {}),\n }\n\n if (variant === \"card\") {\n return (\n <AudioLabelsContext.Provider value={resolvedLabels}>\n <MediaPlayer\n ref={player}\n src={src}\n autoPlay={autoPlay}\n muted={muted}\n loop={loop}\n viewType=\"audio\"\n data-filled={filled ? \"\" : undefined}\n style={filled ? { '--primary-foreground': 'var(--secondary-foreground)' } as Record<string, string> : undefined}\n className={cn(\n \"group/root group !block w-full rounded-xl border border-border bg-card p-4 shadow-sm md:p-6\",\n className\n )}\n {...playerEvents}\n >\n <MediaProvider className=\"!hidden\" />\n\n {/* Top: cover art + text */}\n <div className=\"flex gap-4 mb-4 md:gap-5 md:mb-6\">\n {coverArt && (\n <img\n src={coverArt}\n alt={coverArtAlt}\n className=\"size-16 shrink-0 rounded-lg object-cover bg-muted md:size-24 md:rounded-xl\"\n />\n )}\n <div className=\"flex min-w-0 flex-col justify-center\">\n <p className={cn(\n \"truncate heading-md md:heading-xl\",\n filled ? \"text-primary-foreground\" : \"text-card-foreground\"\n )}>{title}</p>\n {subtitle && (\n <p className={cn(\n \"truncate body-md md:body-lg\",\n filled ? \"text-primary-foreground/70\" : \"text-muted-foreground\"\n )}>{subtitle}</p>\n )}\n </div>\n </div>\n\n {/* Seek bar */}\n <div className=\"flex w-full items-center\">\n <AudioSeekBar />\n </div>\n\n {/* Time */}\n <div className=\"flex items-center justify-between px-0.5 -mt-1 mb-1 md:mb-2\">\n <div className={cn(\n \"text-[11px] font-mono tabular-nums md:text-xs\",\n filled ? \"text-primary-foreground/80\" : \"text-muted-foreground\"\n )}>\n <Time type=\"current\" />\n </div>\n <div className={cn(\n \"text-[11px] font-mono tabular-nums md:text-xs\",\n filled ? \"text-primary-foreground/80\" : \"text-muted-foreground\"\n )}>\n <Time type=\"duration\" />\n </div>\n </div>\n\n {/* Controls */}\n <div className=\"flex items-center gap-1 md:gap-2\">\n <AudioSeekBackwardControl />\n <AudioPlayControl />\n <AudioSeekForwardControl />\n\n <div className=\"flex-1\" />\n\n {showSpeed && <AudioSpeedControl />}\n <AudioMuteControl />\n <AudioVolumeControl />\n </div>\n </MediaPlayer>\n </AudioLabelsContext.Provider>\n )\n }\n\n // Default variant (compact bar)\n return (\n <AudioLabelsContext.Provider value={resolvedLabels}>\n <MediaPlayer\n ref={player}\n src={src}\n autoPlay={autoPlay}\n muted={muted}\n loop={loop}\n viewType=\"audio\"\n data-filled={filled ? \"\" : undefined}\n style={filled ? { '--primary-foreground': 'var(--secondary-foreground)' } as Record<string, string> : undefined}\n className={cn(\n \"group/root group !flex w-full items-center gap-1.5 rounded-xl border border-border bg-card px-2 py-1.5 shadow-sm\",\n className\n )}\n {...playerEvents}\n >\n <MediaProvider className=\"!hidden\" />\n\n {/* Left controls */}\n <AudioSeekBackwardControl />\n <AudioPlayControl />\n <AudioSeekForwardControl />\n\n {/* Seek bar */}\n <div className=\"flex-1 px-1\">\n <AudioSeekBar />\n </div>\n\n {/* Time */}\n <AudioTimeDisplay />\n\n {/* Right controls */}\n {showSpeed && <AudioSpeedControl />}\n <AudioMuteControl />\n <AudioVolumeControl />\n </MediaPlayer>\n </AudioLabelsContext.Provider>\n )\n }\n)\n"]}