Upload folder using huggingface_hub
Browse files
client/src/components/Refinity.tsx
CHANGED
|
@@ -50,6 +50,7 @@ const Refinity: React.FC = () => {
|
|
| 50 |
const [newTaskSource, setNewTaskSource] = React.useState<string>('');
|
| 51 |
const addTaskFileRef = React.useRef<HTMLInputElement | null>(null);
|
| 52 |
const [addingSourceUploading, setAddingSourceUploading] = React.useState<boolean>(false);
|
|
|
|
| 53 |
|
| 54 |
const task = React.useMemo(() => tasks.find(t => t.id === selectedTaskId) || tasks[0], [tasks, selectedTaskId]);
|
| 55 |
const taskVersions = React.useMemo(() => versions.filter(v => v.taskId === (task?.id || '')), [versions, task?.id]);
|
|
@@ -194,15 +195,28 @@ const Refinity: React.FC = () => {
|
|
| 194 |
<div className="md:col-span-1">
|
| 195 |
<label className="block text-sm text-gray-700 mb-1">Task</label>
|
| 196 |
<div className="relative">
|
| 197 |
-
<
|
| 198 |
-
|
| 199 |
-
<
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 206 |
</div>
|
| 207 |
</div>
|
| 208 |
<div className="md:col-span-2">
|
|
|
|
| 50 |
const [newTaskSource, setNewTaskSource] = React.useState<string>('');
|
| 51 |
const addTaskFileRef = React.useRef<HTMLInputElement | null>(null);
|
| 52 |
const [addingSourceUploading, setAddingSourceUploading] = React.useState<boolean>(false);
|
| 53 |
+
const [taskMenuOpen, setTaskMenuOpen] = React.useState<boolean>(false);
|
| 54 |
|
| 55 |
const task = React.useMemo(() => tasks.find(t => t.id === selectedTaskId) || tasks[0], [tasks, selectedTaskId]);
|
| 56 |
const taskVersions = React.useMemo(() => versions.filter(v => v.taskId === (task?.id || '')), [versions, task?.id]);
|
|
|
|
| 195 |
<div className="md:col-span-1">
|
| 196 |
<label className="block text-sm text-gray-700 mb-1">Task</label>
|
| 197 |
<div className="relative">
|
| 198 |
+
<button type="button" onClick={()=>setTaskMenuOpen(o=>!o)} className="relative w-full text-left inline-flex items-center justify-between px-4 py-2 rounded-2xl ring-1 ring-inset ring-white/50 backdrop-blur-md bg-white/30">
|
| 199 |
+
<span className="truncate text-gray-900">{tasks.find(t=>t.id===selectedTaskId)?.title || 'Select a task'}</span>
|
| 200 |
+
<span className="ml-3 text-gray-700">▾</span>
|
| 201 |
+
</button>
|
| 202 |
+
{taskMenuOpen && (
|
| 203 |
+
<div className="absolute z-20 mt-2 w-full">
|
| 204 |
+
<div className="relative rounded-2xl bg-white/10 backdrop-blur-md ring-1 ring-inset ring-white/30 shadow-lg overflow-hidden">
|
| 205 |
+
<div className="pointer-events-none absolute inset-0 rounded-2xl opacity-50 [background:linear-gradient(to_bottom,rgba(255,255,255,0.3),rgba(255,255,255,0)_28%),linear-gradient(to_right,rgba(255,255,255,0.28),rgba(255,255,255,0)_28%)]" />
|
| 206 |
+
<div className="pointer-events-none absolute inset-0 rounded-2xl bg-gradient-to-tr from-white/30 via-white/10 to-transparent opacity-45" />
|
| 207 |
+
<ul className="relative max-h-64 overflow-auto">
|
| 208 |
+
{tasks.map(t => (
|
| 209 |
+
<li key={t.id}>
|
| 210 |
+
<button type="button" onClick={()=>{ setSelectedTaskId(t.id); setTaskMenuOpen(false); }} className={`w-full text-left px-4 py-2 text-gray-900 hover:bg-white/30 ${selectedTaskId===t.id ? 'bg-indigo-600/20' : ''}`}>{t.title}</button>
|
| 211 |
+
</li>
|
| 212 |
+
))}
|
| 213 |
+
{tasks.length===0 && (
|
| 214 |
+
<li className="px-4 py-3 text-sm text-gray-600">No tasks yet</li>
|
| 215 |
+
)}
|
| 216 |
+
</ul>
|
| 217 |
+
</div>
|
| 218 |
+
</div>
|
| 219 |
+
)}
|
| 220 |
</div>
|
| 221 |
</div>
|
| 222 |
<div className="md:col-span-2">
|