import React from 'react' // Inline SVG icons (kept minimal for clarity) const IconChat = ({ size = 20 }: { size?: number }) => ( ) const IconInfo = ({ size = 20 }: { size?: number }) => ( ) const IconClock = ({ size = 20 }: { size?: number }) => ( ) const IconUsers = ({ size = 20 }: { size?: number }) => ( ) import { useAssets } from '../../hooks/useAssets' import { usePeople } from '../../hooks/usePeople' import { useStyle } from '../../hooks/useStyle' import { useChat } from '../../hooks/useChat' type SidebarItem = { id: string label: string icon: React.ReactNode } type Props = { activeTab: string | null onSelectTab: (id: string | null) => void } const RightSidebar: React.FC = ({ activeTab, onSelectTab }) => { const { assets } = useAssets() const { people } = usePeople() const { style, update } = useStyle() const { messages, send } = useChat() const items: SidebarItem[] = [ { id: 'comments', label: 'Comentarios', icon: }, { id: 'style', label: 'Estilo', icon: }, { id: 'banners', label: 'Banners', icon: }, { id: 'media', label: 'Archivos multimedia', icon: }, { id: 'people', label: 'Personas', icon: }, { id: 'private-chat', label: 'Chat privado', icon: }, { id: 'notes', label: 'Notas', icon: }, ] return ( {/* Panel: positioned to the left of tabs and slides with transform */} {activeTab ? ( {activeTab === 'media' && ( Archivos multimedia {assets.map((a) => ( {a.name} ))} )} {activeTab === 'people' && ( Personas {people.map((p) => ( {p.name} {p.role} ))} )} {activeTab === 'style' && ( Estilo Color primario: {style.themeColor} update({ showLogo: !style.showLogo })} > Alternar logo ({style.showLogo ? 'ON' : 'OFF'}) )} {activeTab === 'private-chat' && ( Chat privado {messages.map((m) => ( {m.user} {m.text} ))} { if (e.key === 'Enter') { const val = (e.currentTarget as HTMLInputElement).value.trim() if (val) { send('Host', val) ;(e.currentTarget as HTMLInputElement).value = '' } } }} /> )} {activeTab === 'comments' && ( Comentarios Panel de comentarios en tiempo real. )} {activeTab === 'banners' && ( Banners Gestión de banners y overlays. )} {activeTab === 'notes' && ( Notas Notas y recordatorios del stream. )} ) : ( Seleccione una pestaña para ver opciones )} {/* Tabs aside: always visible on the right */} ) } export default RightSidebar
Panel de comentarios en tiempo real.
Gestión de banners y overlays.
Notas y recordatorios del stream.