35 lines
1010 B
TypeScript
35 lines
1010 B
TypeScript
import './style.css';
|
|
|
|
// Copy functionality
|
|
const commandBox = document.getElementById('commandBox') as HTMLDivElement;
|
|
const copyBtn = document.getElementById('copyBtn') as HTMLButtonElement;
|
|
const tooltip = document.getElementById('tooltip') as HTMLDivElement;
|
|
const COMMAND = 'ssh portfolio@keshavanand.net';
|
|
|
|
async function copyToClipboard() {
|
|
try {
|
|
await navigator.clipboard.writeText(COMMAND);
|
|
copyBtn.classList.add('copied');
|
|
tooltip.classList.add('show');
|
|
setTimeout(() => {
|
|
copyBtn.classList.remove('copied');
|
|
tooltip.classList.remove('show');
|
|
}, 2000);
|
|
} catch (err) {
|
|
console.error('Failed to copy:', err);
|
|
}
|
|
}
|
|
|
|
copyBtn.addEventListener('click', (e) => {
|
|
e.stopPropagation();
|
|
copyToClipboard();
|
|
});
|
|
|
|
commandBox.addEventListener('click', (e) => {
|
|
if (!(e.target as HTMLElement).closest('.copy-btn')) copyToClipboard();
|
|
});
|
|
|
|
// Fade in docs link after 2 seconds
|
|
setTimeout(() => {
|
|
document.getElementById('docsLink')?.classList.add('show');
|
|
}, 2000); |