SPB Git forge

spb/uqo-chat

Public
14commits 1branches 0releases
1.4 MBsize
maindefault branch
17 days agolast push
Python 64.6% TypeScript 33.7% CSS 0.8%
1.2 KB · 21 lines tsx
Raw Blame History
1import { cn } from '@/lib/cn';23/**4 * Official UQO wordmark (PNG @2x, recoloured) + product name.5 * `inverted` for the blue header; `withText=false` for compact spots.6 */7export function Logo({ className, inverted = false, withText = true, size = 'md' }: { className?: string; inverted?: boolean; withText?: boolean; size?: 'sm' | 'md' | 'lg' }) {8  const h = size === 'lg' ? 'h-12' : size === 'sm' ? 'h-6' : 'h-8';9  return (10    <span className={cn('inline-flex items-center gap-2.5', className)} aria-label="UQO-Chat">11      <img src={inverted ? '/uqo-logo-white.png' : '/uqo-logo.png'} alt="UQO" className={cn(h, 'w-auto select-none')} draggable={false} />12      {withText && (13        <span className={cn('leading-none border-l pl-2.5', inverted ? 'border-white/30' : 'border-neutral-line')}>14          <span className={cn('block font-bold tracking-tight', size === 'lg' ? 'text-[22px]' : 'text-[16px]', inverted ? 'text-white' : 'text-uqo-blue-dark')}>UQO-Chat</span>15          <span className={cn('block font-medium tracking-wide whitespace-nowrap', size === 'lg' ? 'text-[12px]' : 'text-[10.5px]', inverted ? 'text-white/75' : 'text-neutral-muted')}>Tuteur IA · IMM1003 · IMM1033</span>16        </span>17      )}18    </span>19  );20}21