Refactor/ui components #1

Merged
maxime.daniels merged 3 commits from refactor/ui-components into master 2026-06-25 11:09:11 +02:00
7 changed files with 11 additions and 11 deletions
Showing only changes of commit 2aac1b0775 - Show all commits
+1 -1
View File
@@ -54,7 +54,7 @@ export default function InstanceCard({ service, vpcs, onAssignVpc, onRemoveVpc,
<div className="mt-auto space-y-3"> <div className="mt-auto space-y-3">
<div className="flex items-center justify-between text-sm border-t border-gray-800 pt-3"> <div className="flex items-center justify-between text-sm border-t border-gray-800 pt-3">
<span className="text-gray-500 text-xs">Projet VPC:</span> <span className="text-gray-500 text-xs">Projet VPC:</span>
<select onChange={(e) => { const val = e.target.value; if (val === "free") onRemoveVpc(service.id); else if (val) onAssignVpc(service.id, val); }} className="bg-black border border-gray-700 text-gray-300 rounded px-2 py-1 outline-none focus:border-cyan-400 text-xs w-[130px]" defaultValue={vpcs.find(v => v.services.includes(service.id))?.id || "free"}> <select onChange={(e) => { const val = e.target.value; if (val === "free") onRemoveVpc(service.id); else if (val) onAssignVpc(service.id, val); }} className="bg-black border border-gray-700 text-gray-300 rounded px-2 py-1 outline-none focus:border-cyan-400 text-xs w-32.5" defaultValue={vpcs.find(v => v.services.includes(service.id))?.id || "free"}>
<option value="free">-- Libre --</option> <option value="free">-- Libre --</option>
{vpcs.map(vpc => ( <option key={vpc.id} value={vpc.id}>{vpc.name}</option> ))} {vpcs.map(vpc => ( <option key={vpc.id} value={vpc.id}>{vpc.name}</option> ))}
</select> </select>
+3 -3
View File
@@ -73,7 +73,7 @@ export default function VpsManager({ details, orderId, onRefresh, onAlert }) {
{/* ENCART DES IDENTIFIANTS */} {/* ENCART DES IDENTIFIANTS */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6"> <div className="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6">
<div className="bg-black/60 border border-gray-800 rounded p-3"> <div className="bg-black/60 border border-gray-800 rounded p-3">
<span className="text-gray-500 font-bold uppercase tracking-wider block mb-2 text-[10px] flex items-center gap-1"> <span className="text-gray-500 font-bold uppercase tracking-wider mb-2 text-[10px] flex items-center gap-1">
<Folder className="w-3 h-3" /> Accès Explorateur <Folder className="w-3 h-3" /> Accès Explorateur
</span> </span>
<div className="flex justify-between items-center mb-1"> <div className="flex justify-between items-center mb-1">
@@ -90,7 +90,7 @@ export default function VpsManager({ details, orderId, onRefresh, onAlert }) {
</div> </div>
</div> </div>
<div className="bg-black/60 border border-gray-800 rounded p-3"> <div className="bg-black/60 border border-gray-800 rounded p-3">
<span className="text-gray-500 font-bold uppercase tracking-wider block mb-2 text-[10px] flex items-center gap-1"> <span className="text-gray-500 font-bold uppercase tracking-wider mb-2 text-[10px] flex items-center gap-1">
<Play className="w-3 h-3" /> Accès Console / SSH <Play className="w-3 h-3" /> Accès Console / SSH
</span> </span>
<div className="flex justify-between items-center mb-1"> <div className="flex justify-between items-center mb-1">
@@ -124,7 +124,7 @@ export default function VpsManager({ details, orderId, onRefresh, onAlert }) {
<button onClick={() => setShowTerminal(false)} className="text-xs bg-red-900/30 text-white px-3 py-1 rounded">Fermer</button> <button onClick={() => setShowTerminal(false)} className="text-xs bg-red-900/30 text-white px-3 py-1 rounded">Fermer</button>
</div> </div>
</div> </div>
<div className="bg-black border border-gray-800 rounded h-[400px]"> <div className="bg-black border border-gray-800 rounded h-100">
<iframe src={terminalUrl} className="w-full h-full border-none" title="Terminal" /> <iframe src={terminalUrl} className="w-full h-full border-none" title="Terminal" />
</div> </div>
</div> </div>
+2 -2
View File
@@ -6,7 +6,7 @@ export default function TicketCard({ ticket, onClick }) {
return ( return (
<div <div
onClick={onClick} onClick={onClick}
className="bg-gray-900 border border-gray-800 rounded-xl p-5 hover:border-cyan-400/50 hover:bg-gray-800/50 transition-all cursor-pointer group flex flex-col justify-between min-h-[160px] shadow-lg" className="bg-gray-900 border border-gray-800 rounded-xl p-5 hover:border-cyan-400/50 hover:bg-gray-800/50 transition-all cursor-pointer group flex flex-col justify-between min-h-40 shadow-lg"
> >
<div> <div>
<div className="flex justify-between items-start mb-3"> <div className="flex justify-between items-start mb-3">
@@ -29,7 +29,7 @@ export default function TicketCard({ ticket, onClick }) {
</div> </div>
<div className="flex justify-between items-center text-xs text-gray-500 font-mono border-t border-gray-800 pt-3 mt-4"> <div className="flex justify-between items-center text-xs text-gray-500 font-mono border-t border-gray-800 pt-3 mt-4">
<span>Département: {ticket.department}</span> <span>Département: {ticket.department}</span>
<span className="truncate max-w-[120px]">MàJ: {ticket.lastUpdate}</span> <span className="truncate max-w-30">MàJ: {ticket.lastUpdate}</span>
</div> </div>
</div> </div>
); );
+2 -2
View File
@@ -41,7 +41,7 @@ export default function AppLayout() {
<div className="flex min-h-screen bg-[#050505] text-[#E0E0E0] font-sans"> <div className="flex min-h-screen bg-[#050505] text-[#E0E0E0] font-sans">
{/* SIDEBAR */} {/* SIDEBAR */}
<aside className="w-[260px] bg-[#121212] border-r border-[#222222] h-screen flex flex-col fixed top-0 left-0"> <aside className="w-65 bg-[#121212] border-r border-[#222222] h-screen flex flex-col fixed top-0 left-0">
<div className="px-6 py-8 border-b border-[#222]"> <div className="px-6 py-8 border-b border-[#222]">
<h1 className="text-white m-0 text-3xl font-black tracking-widest flex items-baseline gap-2"> <h1 className="text-white m-0 text-3xl font-black tracking-widest flex items-baseline gap-2">
@@ -95,7 +95,7 @@ export default function AppLayout() {
</aside> </aside>
{/* ZONE DE CONTENU */} {/* ZONE DE CONTENU */}
<main className="ml-[260px] p-10 flex-1 min-h-screen"> <main className="ml-65 p-10 flex-1 min-h-screen">
<Outlet context={{ refreshNavbarTickets: checkUnreadTickets }} /> <Outlet context={{ refreshNavbarTickets: checkUnreadTickets }} />
</main> </main>
+1 -1
View File
@@ -14,7 +14,7 @@ export default function Home() {
Bienvenue dans l'infrastructure Bienvenue dans l'infrastructure
</h2> </h2>
<p className="text-[#A0A0A0] text-lg max-w-[600px] mx-auto leading-relaxed"> <p className="text-[#A0A0A0] text-lg max-w-150 mx-auto leading-relaxed">
Hébergement web, instances VPS et Stockage Cloud en Belgique. Hébergement web, instances VPS et Stockage Cloud en Belgique.
<br />Propulsé par une architecture bare-metal locale. <br />Propulsé par une architecture bare-metal locale.
</p> </p>
+1 -1
View File
@@ -27,7 +27,7 @@ export default function Login() {
return ( return (
<div className="flex justify-center mt-[10vh] px-5"> <div className="flex justify-center mt-[10vh] px-5">
<div className="w-full max-w-[400px] bg-[#242424] p-8 border-t-4 border-cyan-400 shadow-[0_10px_30px_rgba(0,0,0,0.5)]"> <div className="w-full max-w-100 bg-[#242424] p-8 border-t-4 border-cyan-400 shadow-[0_10px_30px_rgba(0,0,0,0.5)]">
<h2 className="text-white uppercase mb-1 text-2xl text-center font-sans font-bold"> <h2 className="text-white uppercase mb-1 text-2xl text-center font-sans font-bold">
Connexion au Nexus Connexion au Nexus
</h2> </h2>
+1 -1
View File
@@ -51,7 +51,7 @@ export default function Register() {
return ( return (
<div className="flex justify-center mt-[5vh] px-5"> <div className="flex justify-center mt-[5vh] px-5">
<div className="w-full max-w-[500px] bg-[#242424] p-8 border-t-4 border-cyan-400 shadow-[0_10px_30px_rgba(0,0,0,0.5)]"> <div className="w-full max-w-125 bg-[#242424] p-8 border-t-4 border-cyan-400 shadow-[0_10px_30px_rgba(0,0,0,0.5)]">
<h2 className="text-white uppercase mb-1 text-2xl font-sans font-bold"> <h2 className="text-white uppercase mb-1 text-2xl font-sans font-bold">
Créer un accès réseau Créer un accès réseau
</h2> </h2>