as400-retro-interface / index.html
nitrolex's picture
change it to AS400 image
37197e2 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AS400 Retro Interface</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
'as400-primary': '#008000',
'as400-secondary': '#000080',
'as400-bg': '#000000',
'as400-text': '#00ff00',
'as400-panel': '#1a1a1a',
'as400-border': '#333333'
}
}
}
}
</script>
<style>
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap');
body {
font-family: 'IBM Plex Mono', monospace;
background-color: #000;
color: #00ff00;
}
.terminal-effect {
background-color: #000;
border: 1px solid #008000;
box-shadow: 0 0 10px rgba(0, 128, 0, 0.5);
}
.scan-line {
position: relative;
overflow: hidden;
}
.scan-line::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 5px;
background: rgba(0, 255, 0, 0.2);
animation: scan 5s linear infinite;
}
@keyframes scan {
0% { top: 0; }
100% { top: 100%; }
}
.blink {
animation: blink 1s step-end infinite;
}
@keyframes blink {
50% { opacity: 0; }
}
.button-3d {
background: linear-gradient(to bottom, #008000, #004d00);
border: 1px solid #00cc00;
box-shadow: 0 4px 0 #003300;
transition: all 0.1s ease;
}
.button-3d:active {
transform: translateY(4px);
box-shadow: 0 0 0 #003300;
}
.status-light {
display: inline-block;
width: 12px;
height: 12px;
border-radius: 50%;
margin-right: 8px;
}
.status-running {
background-color: #00ff00;
box-shadow: 0 0 8px #00ff00;
}
.status-stopped {
background-color: #ff0000;
}
.status-warning {
background-color: #ffff00;
}
</style>
</head>
<body class="bg-as400-bg text-as400-text min-h-screen">
<!-- Header -->
<header class="border-b border-as400-border py-4 px-6">
<div class="container mx-auto flex justify-between items-center">
<div class="flex items-center space-x-4">
<img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" alt="Hugging Face Logo" class="h-8">
<nav class="flex space-x-4">
<a href="#" class="text-as400-text hover:text-green-300">Spaces</a>
</nav>
</div>
<div class="flex items-center space-x-4">
<img src="http://static.photos/technology/320x240/123" alt="AS400 System" class="h-8 w-8 rounded-full">
<span>nitrolex</span>
</div>
</div>
</header>
<!-- Main Content -->
<main class="container mx-auto py-8 px-4">
<div class="flex flex-col md:flex-row gap-8">
<!-- Left Panel - System Info -->
<div class="md:w-1/4">
<div class="terminal-effect rounded-lg p-6 mb-6">
<h2 class="text-xl font-bold mb-4 flex items-center">
<span class="status-light status-running mr-2"></span>
AS/400 System
</h2>
<div class="space-y-3 text-sm">
<div class="flex justify-between">
<span>Model:</span>
<span class="font-mono">AS/400 Model 150</span>
</div>
<div class="flex justify-between">
<span>Serial:</span>
<span class="font-mono">1234567890</span>
</div>
<div class="flex justify-between">
<span>Status:</span>
<span class="font-mono">RUNNING</span>
</div>
<div class="flex justify-between">
<span>CPU:</span>
<span class="font-mono">PowerPC 604</span>
</div>
<div class="flex justify-between">
<span>Memory:</span>
<span class="font-mono">128 MB</span>
</div>
</div>
</div>
<div class="terminal-effect rounded-lg p-6">
<h3 class="text-lg font-bold mb-4">System Tasks</h3>
<ul class="space-y-2 text-sm">
<li class="flex items-center">
<span class="status-light status-running mr-2"></span>
<span>QSYSWRK</span>
</li>
<li class="flex items-center">
<span class="status-light status-running mr-2"></span>
<span>QUSRWRK</span>
</li>
<li class="flex items-center">
<span class="status-light status-running mr-2"></span>
<span>QBATCH</span>
</li>
<li class="flex items-center">
<span class="status-light status-warning mr-2"></span>
<span>QSPL</span>
</li>
</ul>
</div>
</div>
<!-- Center Panel - Terminal -->
<div class="md:w-1/2">
<div class="terminal-effect rounded-lg p-6 mb-6 scan-line">
<div class="flex justify-between items-center mb-4">
<h2 class="text-xl font-bold">AS/400 Terminal</h2>
<div class="flex items-center space-x-2">
<span class="status-light status-running mr-2"></span>
<span class="text-sm">ACTIVE</span>
<button id="minimize-terminal" class="text-as400-text hover:text-green-300">
<i data-feather="minus-square"></i>
</button>
</div>
</div>
<div class="bg-black p-4 rounded font-mono text-sm h-96 overflow-y-auto">
<div class="mb-2">===> AS/400 System Ready</div>
<div class="mb-2">===> Welcome to AS/400 Emulator</div>
<div class="mb-2">===> System Time: 14:25:33</div>
<div class="mb-2">===> Date: 2023-06-15</div>
<div class="mb-2">===> User: QSECOFR</div>
<div class="mb-2">===> Library List: QGPL, QTEMP, QSYS</div>
<div class="mb-2">===> Current Library: QGPL</div>
<div class="mb-2">===> System Status: OPERATIONAL</div>
<div class="mb-2">===> Jobs Active: 12</div>
<div class="mb-2">===> Jobs Waiting: 3</div>
<div class="mb-2">===> Jobs Held: 0</div>
<div class="mb-2">===> System ASP: 45% used</div>
<div class="mb-2">===> Main Storage: 78% used</div>
<div class="mb-2">===> Processor: 12% used</div>
<div class="mb-2">===> System ASP: 45% used</div>
<div class="mb-2">===> Main Storage: 78% used</div>
<div class="mb-2">===> Processor: 12% used</div>
<div class="mb-2">===> System ASP: 45% used</div>
<div class="mb-2">===> Main Storage: 78% used</div>
<div class="mb-2">===> Processor: 12% used</div>
<div class="mb-2">===> System ASP: 45% used</div>
<div class="mb-2">===> Main Storage: 78% used</div>
<div class="mb-2">===> Processor: 12% used</div>
<div class="mb-2">===> System ASP: 45% used</div>
<div class="mb-2">===> Main Storage: 78% used</div>
<div class="mb-2">===> Processor: 12% used</div>
<div class="mb-2">===> System ASP: 45% used</div>
<div class="mb-2">===> Main Storage: 78% used</div>
<div class="mb-2">===> Processor: 12% used</div>
<div class="mb-2">===> System ASP: 45% used</div>
<div class="mb-2">===> Main Storage: 78% used</div>
<div class="mb-2">===> Processor: 12% used</div>
<div class="mb-2">===> System ASP: 45% used</div>
<div class="mb-2">===> Main Storage: 78% used</div>
<div class="mb-2">===> Processor: 12% used</div>
<div class="mb-......</div>
</div>
</div>
<div class="terminal-effect rounded-lg p-6" id="command-panel">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-bold">Command Input</h3>
<button id="minimize-command" class="text-as400-text hover:text-green-300">
<i data-feather="minus-square"></i>
</button>
</div>
<div class="flex">
<input type="text" class="flex-grow bg-black border border-as400-border p-2 font-mono text-sm focus:outline-none focus:border-green-500" placeholder="Enter AS/400 command...">
<button class="ml-2 button-3d px-4 py-2 font-bold">Enter</button>
</div>
<div class="mt-4 text-sm">
<p>Common Commands:</p>
<ul class="list-disc list-inside mt-2 grid grid-cols-2 gap-1">
<li>WRKACTJOB</li>
<li>WRKSYSSTS</li>
<li>DSPLIBL</li>
<li>WRKJOBQ</li>
<li>STRPCCMD</li>
<li>ENDJOB</li>
</ul>
</div>
</div>
</div>
<!-- Right Panel - Navigation -->
<div class="md:w-1/4">
<div class="terminal-effect rounded-lg p-6 mb-6" id="navigation-panel">
<div class="flex justify-between items-center mb-4">
<h2 class="text-xl font-bold">Navigation</h2>
<button id="minimize-nav" class="text-as400-text hover:text-green-300">
<i data-feather="minus-square"></i>
</button>
</div>
<nav class="space-y-3">
<a href="#" class="block p-3 bg-as400-panel rounded hover:bg-green-900 transition">App</a>
<a href="#" class="block p-3 bg-as400-panel rounded hover:bg-green-900 transition">Files</a>
<a href="#" class="block p-3 bg-as400-panel rounded hover:bg-green-900 transition">Community</a>
<a href="#" class="block p-3 bg-as400-panel rounded hover:bg-green-900 transition">Documentation</a>
<a href="#" class="block p-3 bg-as400-panel rounded hover:bg-green-900 transition">Settings</a>
</nav>
</div>
<div class="terminal-effect rounded-lg p-6" id="status-panel">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-bold">System Status</h3>
<button id="minimize-status" class="text-as400-text hover:text-green-300">
<i data-feather="minus-square"></i>
</button>
</div>
<div class="space-y-4">
<div>
<div class="flex justify-between mb-1">
<span>CPU Usage</span>
<span>12%</span>
</div>
<div class="w-full bg-as400-panel rounded-full h-2">
<div class="bg-as400-primary h-2 rounded-full" style="width: 12%"></div>
</div>
</div>
<div>
<div class="flex justify-between mb-1">
<span>Memory</span>
<span>78%</span>
</div>
<div class="w-full bg-as400-panel rounded-full h-2">
<div class="bg-as400-primary h-2 rounded-full" style="width: 78%"></div>
</div>
</div>
<div>
<div class="flex justify-between mb-1">
<span>Disk Usage</span>
<span>45%</span>
</div>
<div class="w-full bg-as400-panel rounded-full h-2">
<div class="bg-as400-primary h-2 rounded-full" style="width: 45%"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- Footer -->
<footer class="border-t border-as400-border py-6 px-4 mt-8">
<div class="container mx-auto text-center text-sm">
<p>AS/400 Emulator Interface - Hugging Face Space by <a href="https://huggingface.co/nitrolex" class="text-as400-text hover:text-green-300">nitrolex</a></p>
<p class="mt-2">Running on IBM Power Systems Architecture</p>
</div>
</footer>
<script>
feather.replace();
// Minimize functionality
document.getElementById('minimize-terminal').addEventListener('click', function() {
const terminalContent = document.querySelector('.overflow-y-auto');
terminalContent.classList.toggle('hidden');
const icon = this.querySelector('i');
if (terminalContent.classList.contains('hidden')) {
icon.setAttribute('data-feather', 'plus-square');
} else {
icon.setAttribute('data-feather', 'minus-square');
}
feather.replace();
});
document.getElementById('minimize-command').addEventListener('click', function() {
const commandContent = document.querySelector('#command-panel .flex');
const commandList = document.querySelector('#command-panel ul');
commandContent.classList.toggle('hidden');
commandList.classList.toggle('hidden');
const icon = this.querySelector('i');
if (commandContent.classList.contains('hidden')) {
icon.setAttribute('data-feather', 'plus-square');
} else {
icon.setAttribute('data-feather', 'minus-square');
}
feather.replace();
});
document.getElementById('minimize-nav').addEventListener('click', function() {
const navContent = document.querySelector('#navigation-panel nav');
navContent.classList.toggle('hidden');
const icon = this.querySelector('i');
if (navContent.classList.contains('hidden')) {
icon.setAttribute('data-feather', 'plus-square');
} else {
icon.setAttribute('data-feather', 'minus-square');
}
feather.replace();
});
document.getElementById('minimize-status').addEventListener('click', function() {
const statusContent = document.querySelector('#status-panel .space-y-4');
statusContent.classList.toggle('hidden');
const icon = this.querySelector('i');
if (statusContent.classList.contains('hidden')) {
icon.setAttribute('data-feather', 'plus-square');
} else {
icon.setAttribute('data-feather', 'minus-square');
}
feather.replace();
});
// Simulate terminal output
setInterval(() => {
const terminal = document.querySelector('.overflow-y-auto');
const lines = terminal.querySelectorAll('div');
if (lines.length > 20) {
terminal.removeChild(lines[0]);
}
const newLine = document.createElement('div');
newLine.className = 'mb-2';
newLine.textContent = `===> System Check: ${Math.floor(Math.random() * 100)}% OK`;
terminal.appendChild(newLine);
terminal.scrollTop = terminal.scrollHeight;
}, 3000);
</script>
</body>
</html>