This commit is contained in:
@ -12,20 +12,20 @@
|
||||
"@astrojs/mdx": "^4.3.0",
|
||||
"@astrojs/node": "^9.2.2",
|
||||
"@astrojs/preact": "^4.1.0",
|
||||
"@astrojs/rss": "^4.0.11",
|
||||
"@astrojs/rss": "^4.0.12",
|
||||
"@preact/signals": "^2.2.0",
|
||||
"@tailwindcss/typography": "^0.5.16",
|
||||
"@tailwindcss/vite": "^4.1.8",
|
||||
"astro": "^5.8.1",
|
||||
"astro": "^5.9.2",
|
||||
"astro-icon": "^1.1.5",
|
||||
"lucide-preact": "^0.511.0",
|
||||
"lucide-preact": "^0.513.0",
|
||||
"preact": "^10.26.8",
|
||||
"sharp": "^0.34.2",
|
||||
"tailwindcss": "^4.1.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@iconify-json/mdi": "^1.2.3",
|
||||
"@iconify-json/simple-icons": "^1.2.37",
|
||||
"@iconify-json/simple-icons": "^1.2.38",
|
||||
"daisyui": "^5.0.43"
|
||||
},
|
||||
"pnpm": {
|
||||
|
546
pnpm-lock.yaml
generated
546
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -28,6 +28,7 @@ interface Command {
|
||||
input: string;
|
||||
output: string;
|
||||
timestamp: Date;
|
||||
path: string;
|
||||
}
|
||||
|
||||
const Terminal = () => {
|
||||
@ -36,7 +37,8 @@ const Terminal = () => {
|
||||
{
|
||||
input: '',
|
||||
output: 'Welcome to Atridad\'s Shell!\nType "help" to see available commands.\n',
|
||||
timestamp: new Date()
|
||||
timestamp: new Date(),
|
||||
path: '/'
|
||||
}
|
||||
]);
|
||||
const [currentInput, setCurrentInput] = useState('');
|
||||
@ -202,7 +204,7 @@ ${post.content}`;
|
||||
'about.txt': {
|
||||
type: 'file',
|
||||
name: 'about.txt',
|
||||
content: `${resumeData.basics.name}\nResearcher, Full-Stack Developer, and IT Professional.\n\nA passionate technologist who loves building things and solving problems.\n\nVisit other sections to learn more about my work and experience.`
|
||||
content: `${resumeData.basics.name}\nResearcher, Full-Stack Developer, and IT Professional.\n\nVisit other sections to learn more about my work and experience.`
|
||||
},
|
||||
'resume': {
|
||||
type: 'directory',
|
||||
@ -551,7 +553,8 @@ ${post.content}`;
|
||||
const newCommand: Command = {
|
||||
input: currentInput,
|
||||
output,
|
||||
timestamp: new Date()
|
||||
timestamp: new Date(),
|
||||
path: currentPath
|
||||
};
|
||||
|
||||
// Save command to persistent history
|
||||
@ -620,7 +623,7 @@ ${post.content}`;
|
||||
|
||||
<div
|
||||
ref={terminalRef}
|
||||
className="flex-1 p-4 overflow-hidden scrollbar-thin scrollbar-thumb-base-300 scrollbar-track-base-100 relative"
|
||||
className="flex-1 p-4 overflow-y-auto scrollbar-thin scrollbar-thumb-base-300 scrollbar-track-base-100 relative"
|
||||
onClick={() => inputRef.current?.focus()}
|
||||
>
|
||||
{isTrainRunning && (
|
||||
@ -645,28 +648,28 @@ __/ =| o |=-O=====O=====O=====O \\ ____Y___________|__|_________________________
|
||||
</div>
|
||||
)}
|
||||
|
||||
{!isTrainRunning && (
|
||||
<div className="overflow-y-auto h-full">
|
||||
{commandHistory.map((command: Command, index: number) => (
|
||||
<div key={index} className="mb-2">
|
||||
{command.input && (
|
||||
<div className="flex items-center">
|
||||
<span className="text-primary font-semibold">guest@atri.dad</span>
|
||||
<span className="text-base-content">:</span>
|
||||
<span className="text-secondary font-semibold">{currentPath}</span>
|
||||
<span className="text-base-content">$ </span>
|
||||
<span className="text-accent">{command.input}</span>
|
||||
</div>
|
||||
)}
|
||||
{command.output && (
|
||||
<div
|
||||
className="whitespace-pre-wrap text-base-content/80 mt-1"
|
||||
dangerouslySetInnerHTML={{ __html: formatOutput(command.output) }}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
<div className="min-h-full">
|
||||
{commandHistory.map((command: Command, index: number) => (
|
||||
<div key={index} className="mb-2">
|
||||
{command.input && (
|
||||
<div className="flex items-center">
|
||||
<span className="text-primary font-semibold">guest@atri.dad</span>
|
||||
<span className="text-base-content">:</span>
|
||||
<span className="text-secondary font-semibold">{command.path}</span>
|
||||
<span className="text-base-content">$ </span>
|
||||
<span className="text-accent">{command.input}</span>
|
||||
</div>
|
||||
)}
|
||||
{command.output && (
|
||||
<div
|
||||
className="whitespace-pre-wrap text-base-content/80 mt-1"
|
||||
dangerouslySetInnerHTML={{ __html: formatOutput(command.output) }}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
|
||||
{!isTrainRunning && (
|
||||
<form onSubmit={handleSubmit} className="flex items-center">
|
||||
<span className="text-primary font-semibold">guest@atri.dad</span>
|
||||
<span className="text-base-content">:</span>
|
||||
@ -683,8 +686,8 @@ __/ =| o |=-O=====O=====O=====O \\ ____Y___________|__|_________________________
|
||||
spellcheck={false}
|
||||
/>
|
||||
</form>
|
||||
</div>
|
||||
)}
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
Reference in New Issue
Block a user