import React, { useState } from 'react'; import { Terminal, Copy, Check } from 'lucide-react'; // Import all required icons from react-icons import { FaDebian, FaFedora } from 'react-icons/fa6'; import { SiGentoo, SiNixos, SiArchlinux } from 'react-icons/si'; // Component for multi-line command sequences const CommandSequence = ({ commands, description, shell = "bash" }) => { const [copied, setCopied] = useState(false); // Join the commands with newlines for copying const fullCommandText = Array.isArray(commands) ? commands.join('\n') : commands; const copyToClipboard = () => { navigator.clipboard.writeText(fullCommandText) .then(() => { setCopied(true); setTimeout(() => setCopied(false), 2000); }) .catch(err => { console.error('Failed to copy: ', err); }); }; return (
{/* Header with Terminal Icon and Copy Button */}
{description || "Terminal Commands"}
{/* Command Display */}
{Array.isArray(commands) ? commands.map((cmd, index) => (
$ {cmd}
)) : (
$ {commands}
) }
); }; // Original Commands component with tabs for different distros const Commands = ({ commandId, description, archCommand, debianCommand, fedoraCommand, gentooCommand, nixCommand }) => { const [activeTab, setActiveTab] = useState('arch'); const [copied, setCopied] = useState(false); const distros = [ { id: 'arch', name: 'Arch', icon: SiArchlinux, command: archCommand || 'echo "No command specified for Arch"' }, { id: 'debian', name: 'Debian/Ubuntu', icon: FaDebian, command: debianCommand || 'echo "No command specified for Debian/Ubuntu"' }, { id: 'fedora', name: 'Fedora', icon: FaFedora, command: fedoraCommand || 'echo "No command specified for Fedora"' }, { id: 'gentoo', name: 'Gentoo', icon: SiGentoo, command: gentooCommand || 'echo "No command specified for Gentoo"' }, { id: 'nix', name: 'NixOS', icon: SiNixos, command: nixCommand || 'echo "No command specified for NixOS"' } ]; const copyToClipboard = (text) => { navigator.clipboard.writeText(text) .then(() => { setCopied(true); setTimeout(() => setCopied(false), 2000); }) .catch(err => { console.error('Failed to copy: ', err); }); }; return (
{/* Header with Terminal Icon and Copy Button */}
{description || "Terminal Command"}
{/* Tabs */}
{distros.map((distro) => { const IconComponent = distro.icon; return ( ); })}
{/* Command Display with Horizontal Scrolling */}
$ {distros.find(d => d.id === activeTab).command}
); }; // Single command component const Command = ({ command, description, shell = "bash" }) => { const [copied, setCopied] = useState(false); const copyToClipboard = () => { navigator.clipboard.writeText(command) .then(() => { setCopied(true); setTimeout(() => setCopied(false), 2000); }) .catch(err => { console.error('Failed to copy: ', err); }); }; return (
{/* Header with Terminal Icon and Copy Button */}
{description || "Terminal Command"}
{/* Command Display with Horizontal Scrolling */}
$ {command}
); }; export { Commands, Command, CommandSequence };