+
+
+ setUrl(e.target.value)}
+ onKeyDown={e => { if (e.key === 'Enter' && valid) submit(); }}
+ placeholder="https://www.youtube.com/watch?v=… or https://youtu.be/…"
+ style={{ flex: 1 }}
+ autoFocus
+ />
+
+
+ {url && !valid && (
+
+ That doesn't look like a YouTube URL.
+
+ )}
+
+ Only import videos you have rights to use. Private, age-gated, and members-only videos are not supported.
+
+
+
+ Queue {queue.length}
+
+
+
+
+ {queue.map(r => {
+ const statusColor =
+ r.status === 'done' ? 'var(--success)' :
+ r.status === 'error' ? 'var(--danger)' : 'var(--text-3)';
+ return (
+
+
+
+
+
+ {r.title || r.url}
+
+
+ {r.title && (
+
+ {r.url}
+
+ )}
+
+ {r.error && (
+
{r.error}
+ )}
+
+
+ {r.status === 'done' ? '✓ done'
+ : r.status === 'error' ? '✗ failed'
+ : r.status === 'processing'? 'processing'
+ : r.status === 'downloading' ? 'downloading'
+ : 'queued'}
+
+
+ );
+ })}
+
+