SPB Git

spb/uqo-chat

Public
2.2 KB · 43 lines tsx
1import { Calculator, FileSpreadsheet, ListChecks, Sparkles } from 'lucide-react';2import type { Course } from '@/lib/types';3import { Logo } from '@/components/ui/logo';45const ICONS = [Sparkles, Calculator, ListChecks, FileSpreadsheet, Sparkles];67export function EmptyState({ course, onPick, term }: { course?: Course; onPick: (t: string) => void; term: string }) {8  return (9    <div className="mx-auto max-w-[760px] px-4 pt-8 sm:pt-16 pb-6 text-center animate-fadein">10      <Logo className="justify-center" withText={false} />11      <h1 className="mt-4 text-xl sm:text-2xl font-bold text-uqo-blue-dark">Bonjour ! Sur quoi travaille-t-on aujourd'hui ?</h1>12      <p className="mt-2 text-sm sm:text-base text-neutral-muted">13        {course ? <><b className="text-uqo-blue">{course.code}</b> — {course.title}</> : 'Tuteur IA en évaluation immobilière'} · {term}14      </p>15      {course?.announcement && (16        <div className="mt-4 rounded-xl border border-uqo-gold/50 bg-[#fff8dc] text-left px-4 py-3 text-sm">17          <b className="text-[#7a6300]">Annonce du professeur</b>18          <p className="mt-0.5">{course.announcement}</p>19        </div>20      )}21      <div className="mt-6 grid gap-2 sm:grid-cols-2">22        {(course?.suggestions || []).map((s, i) => {23          const Icon = ICONS[i % ICONS.length];24          return (25            <button key={s} onClick={() => onPick(s)} className="flex items-center gap-3 rounded-xl border border-neutral-line bg-white px-4 py-3 text-left text-sm hover:border-uqo-blue hover:bg-uqo-blue-light/40 min-h-[56px] shadow-card">26              <Icon size={18} className="text-uqo-blue shrink-0" />27              <span>{s}</span>28            </button>29          );30        })}31      </div>32      {course?.deadlines?.length ? (33        <div className="mt-6 text-left">34          <div className="text-xs font-semibold text-neutral-muted uppercase tracking-wide">Échéances</div>35          <ul className="mt-1 text-sm space-y-1">36            {course.deadlines.map((d) => <li key={d.label} className="flex justify-between border-b border-neutral-line/70 py-1"><span>{d.label}</span><span className="text-neutral-muted">{d.date}</span></li>)}37          </ul>38        </div>39      ) : null}40    </div>41  );42}43
Files · cd08d441f7c277e8fedd6f3d3be82f02b44553ba
Menu

Theme