-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathWelcome.tsx
More file actions
54 lines (49 loc) · 1.5 KB
/
Welcome.tsx
File metadata and controls
54 lines (49 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import { MouseEvent, useEffect } from 'react'
import { useConfig } from '../hooks/useConfig.js'
import { cn } from '../lib/utils.js'
import styles from '../styles/Welcome.module.css'
interface WelcomePopupProps {
onClose: () => void
}
/**
* Welcome popup component shown to first-time users.
* Clicking outside the popup or pressing Escape will dismiss it.
*/
export default function Welcome({ onClose }: WelcomePopupProps) {
const { customClass } = useConfig()
// Close popup when clicking outside
function handleBackdropClick(e: MouseEvent) {
if (e.target === e.currentTarget) {
onClose()
}
}
// Close popup when pressing Escape key
useEffect(() => {
function handleEscKey(e: KeyboardEvent) {
if (e.key === 'Escape') {
onClose()
}
}
window.addEventListener('keydown', handleEscKey)
return () => { window.removeEventListener('keydown', handleEscKey) }
}, [onClose])
return (
<div className={cn(styles.welcome, customClass?.welcome)} onClick={handleBackdropClick}>
<div>
<h2>npx hyperparam</h2>
<p>
This is the <a href="https://hyperparam.app">Hyperparam</a> cli for local data viewing.
</p>
<p>
This tool lets you browse and explore large datasets particularly in parquet format.
</p>
<p>
Supported file types include Parquet, CSV, JSON, Markdown, and Text.
</p>
<button onClick={onClose}>
Got it
</button>
</div>
</div>
)
}