1import { cn } from '@/lib/cn';23const USE_OFFICIAL = import.meta.env.VITE_USE_OFFICIAL_LOGO === 'true';45/** Fallback logotype (official UQO logo requires authorisation from Service des communications). */6export function Logo({ className, inverted = false, withText = true }: { className?: string; inverted?: boolean; withText?: boolean }) {7 if (USE_OFFICIAL) {8 return <img src={inverted ? '/uqo-logo-white.svg' : '/uqo-logo.svg'} alt="UQO" className={cn('h-8', className)} />;9 }10 const fg = inverted ? '#FFFFFF' : '#00467F';11 return (12 <span className={cn('inline-flex items-center gap-2', className)} aria-label="UQO-Chat">13 <svg width="30" height="30" viewBox="0 0 32 32" aria-hidden="true">14 <rect x="1" y="1" width="30" height="30" rx="8" fill={inverted ? 'rgba(255,255,255,.14)' : '#00467F'} />15 <path d="M8 24V13l8-6 8 6v11h-5v-6h-6v6H8z" fill={inverted ? '#FFFFFF' : '#FFFFFF'} />16 <rect x="21" y="8" width="3" height="4" rx=".6" fill="#78BE20" />17 </svg>18 {withText && (19 <span className="leading-none">20 <span className="block font-bold tracking-tight" style={{ color: fg, fontSize: 17 }}>UQO-Chat</span>21 <span className="block text-[10.5px] font-medium tracking-wide" style={{ color: inverted ? 'rgba(255,255,255,.8)' : '#5B6B7B' }}>22 Tuteur IA — IMM1003 · IMM103323 </span>24 </span>25 )}26 </span>27 );28}29