|
|
<!DOCTYPE html> |
|
|
<html lang="de"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>NODeSIM - App Prototyp & Pitch Deck</title> |
|
|
|
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script> |
|
|
|
|
|
<script src="https://unpkg.com/@phosphor-icons/web@2.1.1/dist/p.js"></script> |
|
|
|
|
|
<link href="https://fonts.googleapis.com/css2?family=VT323&family=Inter:wght@400;600;800&display=swap" rel="stylesheet"> |
|
|
|
|
|
<style> |
|
|
|
|
|
:root { |
|
|
--neon-green: #39FF14; |
|
|
--dark-bg: #0C0C0C; |
|
|
--dark-card: #181818; |
|
|
--glass-bg: rgba(24, 24, 24, 0.7); |
|
|
} |
|
|
body { |
|
|
background-color: var(--dark-bg); |
|
|
color: #F0F0F0; |
|
|
font-family: 'Inter', sans-serif; |
|
|
display: flex; |
|
|
justify-content: center; |
|
|
align-items: center; |
|
|
min-height: 100vh; |
|
|
} |
|
|
|
|
|
|
|
|
.smartphone-container { |
|
|
width: 375px; |
|
|
height: 667px; |
|
|
background-color: var(--dark-bg); |
|
|
box-shadow: 0 0 60px rgba(57, 255, 20, 0.5), 0 0 20px rgba(0, 0, 0, 0.8) inset; |
|
|
border: 10px solid #000; |
|
|
border-radius: 40px; |
|
|
overflow: hidden; |
|
|
position: relative; |
|
|
transition: transform 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; |
|
|
transform-origin: center center; |
|
|
} |
|
|
|
|
|
|
|
|
.smartphone-container.landscape-mode { |
|
|
width: 667px; |
|
|
height: 375px; |
|
|
transform: rotate(90deg) translate(146px, -146px); |
|
|
box-shadow: 0 0 80px rgba(57, 255, 20, 0.7), 0 0 30px rgba(0, 0, 0, 0.9) inset; |
|
|
} |
|
|
|
|
|
|
|
|
.glass-card { |
|
|
background-color: var(--glass-bg); |
|
|
backdrop-filter: blur(8px); |
|
|
border: 1px solid rgba(57, 255, 20, 0.3); |
|
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08); |
|
|
} |
|
|
|
|
|
|
|
|
.text-neon { color: var(--neon-green); } |
|
|
.border-neon { border-color: var(--neon-green); } |
|
|
.bg-neon { background-color: var(--neon-green); } |
|
|
.shadow-neon { box-shadow: 0 0 15px rgba(57, 255, 20, 0.8); } |
|
|
|
|
|
|
|
|
.app-screen { |
|
|
height: calc(100% - 104px); |
|
|
overflow-y: auto; |
|
|
padding: 1rem; |
|
|
display: none; |
|
|
scrollbar-width: none; |
|
|
} |
|
|
.app-screen::-webkit-scrollbar { |
|
|
display: none; |
|
|
} |
|
|
|
|
|
|
|
|
#pitch-deck-menu { |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: 0; |
|
|
width: 80%; |
|
|
height: 100%; |
|
|
background-color: var(--dark-bg); |
|
|
transform: translateX(-100%); |
|
|
transition: transform 0.3s ease-in-out; |
|
|
z-index: 50; |
|
|
padding: 1rem; |
|
|
border-right: 1px solid var(--neon-green); |
|
|
} |
|
|
#pitch-deck-menu.open { |
|
|
transform: translateX(0); |
|
|
} |
|
|
|
|
|
|
|
|
.nav-button.active { |
|
|
color: var(--neon-green); |
|
|
transform: translateY(-2px); |
|
|
text-shadow: 0 0 8px rgba(57, 255, 20, 0.8); |
|
|
} |
|
|
|
|
|
|
|
|
.modal { |
|
|
position: fixed; |
|
|
top: 0; |
|
|
left: 0; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
background-color: rgba(0, 0, 0, 0.95); |
|
|
z-index: 100; |
|
|
display: none; |
|
|
justify-content: center; |
|
|
align-items: center; |
|
|
padding: 1rem; |
|
|
} |
|
|
|
|
|
|
|
|
#fullscreen-image-modal { |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: 0; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
background-color: var(--dark-bg); |
|
|
z-index: 60; |
|
|
display: none; |
|
|
} |
|
|
|
|
|
|
|
|
.btn-futuristic { |
|
|
transition: all 0.2s; |
|
|
} |
|
|
.btn-futuristic:hover { |
|
|
box-shadow: 0 0 10px rgba(57, 255, 20, 0.6); |
|
|
transform: translateY(-1px); |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="p-4 md:p-8"> |
|
|
|
|
|
<div id="smartphone-container" class="smartphone-container"> |
|
|
|
|
|
|
|
|
<div class="h-10 px-4 flex items-center justify-between bg-black/50 border-b border-neon"> |
|
|
<button id="menu-btn" class="text-neon p-1 hover:text-white transition"> |
|
|
<ph-list-bold size="24" weight="bold"></ph-list-bold> |
|
|
</button> |
|
|
<span class="text-xs text-white">14:30</span> |
|
|
<span class="text-neon text-xs flex items-center"><ph-wifi-high-bold size="18"></ph-wifi-high-bold> noDeSIM</span> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="pitch-deck-menu" class="overflow-y-auto"> |
|
|
<h2 class="text-xl text-neon mb-4 border-b border-neon pb-2">NODeSIM Pitch Deck</h2> |
|
|
<div id="pitch-deck-content" class="space-y-4"> |
|
|
|
|
|
</div> |
|
|
<button id="close-menu-btn" class="mt-8 px-4 py-2 bg-neon text-black rounded-xl font-bold w-full btn-futuristic">SCHLIESSEN</button> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="fullscreen-image-modal" class="hidden justify-center items-center"> |
|
|
<button id="close-image-modal-btn" class="absolute top-2 right-4 text-neon text-3xl font-bold z-10 p-2 glass-card rounded-full hover:shadow-neon transition duration-300"> |
|
|
<ph-x-bold size="24"></ph-x-bold> |
|
|
</button> |
|
|
<img id="fullscreen-image" src="" alt="NODeSIM Utility Chart" class="max-w-full max-h-full object-contain"> |
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div id="home-screen" class="app-screen block space-y-4"> |
|
|
<h1 class="text-3xl font-extrabold text-neon pt-2 mb-4">Dashboard</h1> |
|
|
|
|
|
|
|
|
<div class="glass-card p-4 rounded-xl shadow-neon/30"> |
|
|
<div class="flex justify-between items-center"> |
|
|
<p class="text-lg text-white/70">SIMCoin Balance</p> |
|
|
<ph-wallet-bold size="28" class="text-neon"></ph-wallet-bold> |
|
|
</div> |
|
|
<p class="text-4xl font-mono text-neon mt-1">1,250.84 <span class="text-xl">SIMC</span></p> |
|
|
<p class="text-sm text-white/50">~ $ 125.08 USD</p> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="glass-card p-4 rounded-xl border-l-4 border-neon shadow-neon/30"> |
|
|
<p class="text-lg font-bold text-neon mb-2 flex items-center"> |
|
|
<ph-globe-stand-bold size="24" class="mr-2"></ph-globe-stand-bold> Ihr NFT: Schlüssel zum dezentralen Netz |
|
|
</p> |
|
|
<p class="text-sm text-white/80"> |
|
|
Ihr eSIM-NFT ist Ihr Eigentumsnachweis für dezentrale Konnektivität. Monetarisieren Sie Ihr Smartphone, indem Sie als "letzte Meile" für nahegelegene IoT-Geräte fungieren und dafür SIMCoins verdienen. Dieses Projekt wird durch den Launch von nur 10.000 NFTs finanziert – ein exklusiver Start in einem Markt von 6 Milliarden Nutzern. |
|
|
</p> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="glass-card p-4 rounded-xl h-48 shadow-neon/30"> |
|
|
<p class="text-sm font-semibold text-white/70 mb-2">Earnings & Data Usage (Letzte 7 Tage)</p> |
|
|
<canvas id="simcoin-chart"></canvas> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="grid grid-cols-4 gap-3 pt-2"> |
|
|
<button data-screen="wallet" class="quick-action-btn bg-black/50 text-white p-3 rounded-xl flex flex-col items-center btn-futuristic border border-neon/50 hover:bg-neon/10"> |
|
|
<ph-currency-eth-bold size="28" class="text-neon"></ph-currency-eth-bold> |
|
|
<span class="text-xs mt-1">Wallet</span> |
|
|
</button> |
|
|
<button data-screen="nfts" class="quick-action-btn bg-black/50 text-white p-3 rounded-xl flex flex-col items-center btn-futuristic border border-neon/50 hover:bg-neon/10"> |
|
|
<ph-cards-bold size="28" class="text-neon"></ph-cards-bold> |
|
|
<span class="text-xs mt-1">eSIM-NFTs</span> |
|
|
</button> |
|
|
<button data-screen="dao" class="quick-action-btn bg-black/50 text-white p-3 rounded-xl flex flex-col items-center btn-futuristic border border-neon/50 hover:bg-neon/10"> |
|
|
<ph-seal-check-bold size="28" class="text-neon"></ph-seal-check-bold> |
|
|
<span class="text-xs mt-1">DAO Voting</span> |
|
|
</button> |
|
|
<button data-screen="connectivity" class="quick-action-btn bg-black/50 text-white p-3 rounded-xl flex flex-col items-center btn-futuristic border border-neon/50 hover:bg-neon/10"> |
|
|
<ph-link-bold size="28" class="text-neon"></ph-link-bold> |
|
|
<span class="text-xs mt-1">Connectivity</span> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="wallet-screen" class="app-screen space-y-4"> |
|
|
<h1 class="text-3xl font-extrabold text-neon pt-2 mb-4">SIMCoin Wallet</h1> |
|
|
|
|
|
|
|
|
<div class="glass-card p-4 rounded-xl text-center shadow-neon/30"> |
|
|
<p class="text-lg text-white/70">Aktuelles Guthaben</p> |
|
|
<p class="text-5xl font-mono text-neon mt-1 font-bold">1,250.84</p> |
|
|
<span class="text-xl text-white">SIMC</span> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="grid grid-cols-3 gap-3"> |
|
|
<button class="bg-neon text-black p-3 rounded-xl flex flex-col items-center font-bold text-sm btn-futuristic"> |
|
|
<ph-arrow-square-out-bold size="24"></ph-arrow-square-out-bold> Senden |
|
|
</button> |
|
|
<button class="bg-black/50 text-neon p-3 rounded-xl flex flex-col items-center font-bold text-sm btn-futuristic border border-neon/50 hover:bg-neon/10"> |
|
|
<ph-arrow-square-in-bold size="24"></ph-arrow-square-in-bold> Empfangen |
|
|
</button> |
|
|
<button class="bg-black/50 text-neon p-3 rounded-xl flex flex-col items-center font-bold text-sm btn-futuristic border border-neon/50 hover:bg-neon/10"> |
|
|
<ph-link-simple-bold size="24"></ph-link-simple-bold> Redeem |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
|
|
|
<h2 class="text-xl text-neon border-b border-neon/50 pb-1 mt-6">Transaktionen</h2> |
|
|
<div class="space-y-2 text-sm"> |
|
|
|
|
|
<div class="glass-card p-3 rounded-lg flex justify-between items-center"> |
|
|
<span class="text-white/80">Netzwerk Belohnung</span> |
|
|
<span class="text-neon font-mono">+ 50.00 SIMC</span> |
|
|
</div> |
|
|
<div class="glass-card p-3 rounded-lg flex justify-between items-center"> |
|
|
<span class="text-white/80">Data-Abo gekauft</span> |
|
|
<span class="text-red-500 font-mono">- 300.00 SIMC</span> |
|
|
</div> |
|
|
<div class="glass-card p-3 rounded-lg flex justify-between items-center"> |
|
|
<span class="text-white/80">Überweisung an NodeRunner</span> |
|
|
<span class="text-red-500 font-mono">- 10.00 SIMC</span> |
|
|
</div> |
|
|
<div class="glass-card p-3 rounded-lg flex justify-between items-center"> |
|
|
<span class="text-white/80">Netzwerk Belohnung</span> |
|
|
<span class="text-neon font-mono">+ 12.84 SIMC</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="nfts-screen" class="app-screen space-y-4"> |
|
|
<h1 class="text-3xl font-extrabold text-neon pt-2 mb-4">Meine eSIM-NFTs</h1> |
|
|
|
|
|
|
|
|
<div id="nft-gallery" class="grid grid-cols-2 gap-4"> |
|
|
|
|
|
</div> |
|
|
|
|
|
<button class="bg-neon text-black p-3 rounded-xl font-bold w-full btn-futuristic"> |
|
|
<ph-plus-circle-bold size="20" class="inline-block mr-1"></ph-plus-circle-bold> NEUES NFT MINTEN |
|
|
</button> |
|
|
|
|
|
|
|
|
<h2 class="text-xl text-neon border-b border-neon/50 pb-1 mt-6">NFT Utility Schema</h2> |
|
|
<div class="glass-card p-2 rounded-xl cursor-pointer hover:shadow-neon/50 transition duration-300" id="utility-chart-preview"> |
|
|
|
|
|
<img src="https://huggingface.co/spaces/Uschi1000/nodesim-nft-gallery-fixer/resolve/main/images/NODeSIM%20eSIM-NFT%20Utility.png" |
|
|
alt="Klicken zum Vergrößern" |
|
|
data-full-src="https://huggingface.co/spaces/Uschi1000/nodesim-nft-gallery-fixer/resolve/main/images/NODeSIM%20eSIM-NFT%20Utility.png" |
|
|
class="w-full h-auto rounded-lg object-cover"> |
|
|
<p class="text-xs text-white/50 text-center mt-1">Klicken für Querformat-Ansicht / Detaillierte Utility</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="dao-screen" class="app-screen space-y-4"> |
|
|
<h1 class="text-3xl font-extrabold text-neon pt-2 mb-4">DAO Governance</h1> |
|
|
<p class="text-sm text-white/70">Nehmen Sie an Entscheidungen über die NODeSIM-Netzwerkentwicklung teil. Ihre eSIM-NFTs geben Ihnen Stimmrechte.</p> |
|
|
|
|
|
|
|
|
<h2 class="text-xl text-neon border-b border-neon/50 pb-1 mt-6">Aktive Vorschläge</h2> |
|
|
<div class="space-y-3"> |
|
|
<div class="glass-card p-3 rounded-xl border-l-4 border-neon"> |
|
|
<p class="font-bold">PIP-005: Erhöhung der SIMCoin-Belohnung</p> |
|
|
<div class="flex justify-between text-xs mt-1 text-white/70"> |
|
|
<span>Status: <span class="text-neon">Abstimmung läuft</span></span> |
|
|
<span>Stimmen: 85% JA</span> |
|
|
</div> |
|
|
<button class="mt-2 w-full text-center text-sm py-1 bg-neon/10 text-neon rounded btn-futuristic hover:bg-neon/20">Abstimmen</button> |
|
|
</div> |
|
|
<div class="glass-card p-3 rounded-xl border-l-4 border-gray-500"> |
|
|
<p class="font-bold">PIP-006: Neue Layer-2-Integration</p> |
|
|
<div class="flex justify-between text-xs mt-1 text-white/70"> |
|
|
<span>Status: <span class="text-gray-400">Diskussion</span></span> |
|
|
<span>Stimmen: N/A</span> |
|
|
</div> |
|
|
<button class="mt-2 w-full text-center text-sm py-1 bg-white/10 text-white/50 rounded cursor-not-allowed">Details Ansehen</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<h2 class="text-xl text-neon border-b border-neon/50 pb-1 mt-6">Abgeschlossen</h2> |
|
|
<div class="space-y-3"> |
|
|
<div class="glass-card p-3 rounded-xl border-l-4 border-green-500"> |
|
|
<p class="font-bold">PIP-004: Mobile Roaming-Partnerschaft</p> |
|
|
<div class="flex justify-between text-xs mt-1 text-white/70"> |
|
|
<span>Status: <span class="text-green-500">Angenommen</span></span> |
|
|
<span>Stimmen: 92% JA</span> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="settings-screen" class="app-screen space-y-4"> |
|
|
<h1 class="text-3xl font-extrabold text-neon pt-2 mb-4">Einstellungen & Info</h1> |
|
|
|
|
|
|
|
|
<div class="glass-card p-4 rounded-xl space-y-2"> |
|
|
<h2 class="text-lg font-bold text-neon mb-2">Mein Konto</h2> |
|
|
<p class="text-sm text-white/80">Wallet Adresse: 0x39F...F14</p> |
|
|
<button class="text-sm text-neon underline hover:text-white transition">Konto verwalten</button> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="glass-card p-4 rounded-xl space-y-2"> |
|
|
<h2 class="text-lg font-bold text-neon mb-2">Links & Community</h2> |
|
|
<a href="https://de.linkedin.com/company/nodesim" target="_blank" class="flex items-center text-white/80 hover:text-neon transition text-sm"> |
|
|
<ph-linkedin-logo-bold size="20" class="mr-2 text-neon"></ph-linkedin-logo-bold> NODeSIM auf LinkedIn |
|
|
</a> |
|
|
<a href="https://x.com/NodesimApp" target="_blank" class="flex items-center text-white/80 hover:text-neon transition text-sm"> |
|
|
<ph-x-logo-bold size="20" class="mr-2 text-neon"></ph-x-logo-bold> NodesimApp (X/Twitter) |
|
|
</a> |
|
|
<a href="https://og.rarible.com/NODeSIM" target="_blank" class="flex items-center text-white/80 hover:text-neon transition text-sm"> |
|
|
<ph-storefront-bold size="20" class="mr-2 text-neon"></ph-storefront-bold> Rarible NFT Collection |
|
|
</a> |
|
|
<a href="https://nodesim.app" target="_blank" class="flex items-center text-white/80 hover:text-neon transition text-sm"> |
|
|
<ph-globe-bold size="20" class="mr-2 text-neon"></ph-globe-bold> Offizielle Website (UC) |
|
|
</a> |
|
|
<a href="https://x.com/i/status/1726728649280487909" target="_blank" class="flex items-center text-white/80 hover:text-neon transition text-sm"> |
|
|
<ph-video-bold size="20" class="mr-2 text-neon"></ph-video-bold> Video-Trailer (X) |
|
|
</a> |
|
|
</div> |
|
|
|
|
|
<button class="bg-black/50 text-white/70 p-3 rounded-xl font-bold w-full btn-futuristic border border-neon/50 hover:bg-neon/10"> |
|
|
<ph-sign-out-bold size="20" class="inline-block mr-1"></ph-sign-out-bold> Ausloggen |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div id="connectivity-screen" class="app-screen space-y-4"> |
|
|
<h1 class="text-3xl font-extrabold text-neon pt-2 mb-4">Konnektivitätsstatus</h1> |
|
|
<p class="text-sm text-white/70">Echtzeit-Analyse Ihrer dezentralen Netzwerkverbindung.</p> |
|
|
|
|
|
<div class="glass-card p-4 rounded-xl mt-6 space-y-4"> |
|
|
<div class="flex justify-between items-center"> |
|
|
<span class="text-white/80">Netzwerk-Status:</span> |
|
|
<span class="text-neon font-bold flex items-center"><ph-check-circle-bold size="20" class="mr-1"></ph-check-circle-bold> Verbunden</span> |
|
|
</div> |
|
|
<div class="flex justify-between items-center"> |
|
|
<span class="text-white/80">Aktives Protokoll:</span> |
|
|
<span class="text-white font-mono">PoD v1.2</span> |
|
|
</div> |
|
|
<div class="flex justify-between items-center"> |
|
|
<span class="text-white/80">Signalstärke:</span> |
|
|
<span class="text-white font-bold">-75 dBm (Exzellent)</span> |
|
|
</div> |
|
|
<div class="flex justify-between items-center"> |
|
|
<span class="text-white/80">Latenz:</span> |
|
|
<span class="text-white font-bold">25 ms</span> |
|
|
</div> |
|
|
<div class="flex justify-between items-center"> |
|
|
<span class="text-white/80">Verbundene Peers:</span> |
|
|
<span class="text-white font-bold">128</span> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="glass-card p-4 rounded-xl mt-4"> |
|
|
<h2 class="text-lg font-bold text-neon mb-2">Globale Abdeckung</h2> |
|
|
<p class="text-sm text-white/80">Dank des dezentralen Netzwerks haben Sie potenziell in über 150 Ländern Zugang zu Konnektivitätspunkten.</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div id="nft-detail-modal" class="modal fixed inset-0 flex-col"> |
|
|
<div class="glass-card p-6 rounded-xl w-11/12 max-w-md mx-auto relative"> |
|
|
<button id="close-nft-modal-btn" class="absolute top-3 right-3 text-neon hover:text-white transition"> |
|
|
<ph-x-circle-bold size="28"></ph-x-circle-bold> |
|
|
</button> |
|
|
<h2 id="nft-modal-title" class="text-2xl font-bold text-neon border-b border-neon/50 pb-2 mb-4"></h2> |
|
|
|
|
|
<p id="nft-modal-eSim" class="text-lg font-mono text-white/80 mb-3"></p> |
|
|
|
|
|
<div id="nft-modal-chart-container" class="h-32 mb-4"> |
|
|
<canvas id="nft-modal-chart"></canvas> |
|
|
</div> |
|
|
|
|
|
<div class="space-y-3"> |
|
|
<h3 class="text-xl font-semibold text-white">Einzigartigkeit:</h3> |
|
|
<p id="nft-modal-description" class="text-sm text-white/70"></p> |
|
|
<ul id="nft-modal-features" class="list-disc list-inside text-sm text-white/80 ml-2 space-y-1"> |
|
|
|
|
|
</ul> |
|
|
</div> |
|
|
<button class="mt-4 w-full py-3 bg-neon text-black font-bold rounded-xl btn-futuristic hover:shadow-neon"> |
|
|
<ph-arrow-left-bold size="20" class="inline-block mr-1"></ph-arrow-left-bold> ZURÜCK |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<nav class="h-16 flex justify-around items-center bg-black/80 border-t border-neon/50 backdrop-blur-sm"> |
|
|
<button data-screen="home" class="nav-button active flex flex-col items-center text-white/70 hover:text-neon transition text-xs"> |
|
|
<ph-house-bold size="24"></ph-house-bold> Home |
|
|
</button> |
|
|
<button data-screen="wallet" class="nav-button flex flex-col items-center text-white/70 hover:text-neon transition text-xs"> |
|
|
<ph-wallet-bold size="24"></ph-wallet-bold> Wallet |
|
|
</button> |
|
|
<button data-screen="nfts" class="nav-button flex flex-col items-center text-white/70 hover:text-neon transition text-xs"> |
|
|
<ph-cards-bold size="24"></ph-cards-bold> NFTs |
|
|
</button> |
|
|
<button data-screen="dao" class="nav-button flex flex-col items-center text-white/70 hover:text-neon transition text-xs"> |
|
|
<ph-seal-check-bold size="24"></ph-seal-check-bold> DAO |
|
|
</button> |
|
|
<button data-screen="settings" class="nav-button flex flex-col items-center text-white/70 hover:text-neon transition text-xs"> |
|
|
<ph-gear-six-bold size="24"></ph-gear-six-bold> Settings |
|
|
</button> |
|
|
</nav> |
|
|
|
|
|
</div> |
|
|
|
|
|
<script type="module"> |
|
|
|
|
|
const appId = typeof __app_id !== 'undefined' ? __app_id : 'default-app-id'; |
|
|
const firebaseConfig = typeof __firebase_config !== 'undefined' ? JSON.parse(__firebase_config) : {}; |
|
|
|
|
|
|
|
|
const mockData = { |
|
|
SIMCoinBalance: 1250.84, |
|
|
pitchDeck: [ |
|
|
{ |
|
|
title: "1. Finanzierung durch exklusiven NFT-Launch", |
|
|
content: "Die Finanzierung des Projekts erfolgt durch den Verkauf der ersten Kollektion von **10.000 eSIM-NFTs**, die voraussichtlich über **1.600 ETH** generieren werden. Im Vergleich zu 6 Milliarden Smartphone-Nutzern weltweit ist dies ein extrem exklusiver Start, der das enorme Skalierungspotenzial aufzeigt. Die NFTs sind der Schlüssel zur Teilnahme und Monetarisierung im Netzwerk.", |
|
|
icon: "rocket-launch-bold" |
|
|
}, |
|
|
{ |
|
|
title: "2. Technologischer Vorreiter: eSIM & Blockchain", |
|
|
content: "NODeSIM kombiniert eSIM-Technologie mit einem dezentralen Netzwerk (Proof-of-Diversity/PoD-Konsens). Dies gewährleistet höchste Sicherheit, Zensurresistenz und schafft ein Self-Sustainable, **Future-Proof** mobiles Ökosystem.", |
|
|
icon: "cpu-bold" |
|
|
}, |
|
|
{ |
|
|
title: "3. Dezentrale Monetarisierung", |
|
|
content: "Nutzer verdienen **SIMCoins** durch die Bereitstellung von Netzwerkressourcen (z.B. IoT-Zugang). SIMCoins können gegen mobile Credits eingetauscht oder gehandelt werden. Sie sind aktiv Teil des Telekommunikations-Netzwerks.", |
|
|
icon: "currency-circle-dollar-bold" |
|
|
}, |
|
|
{ |
|
|
title: "4. Community-Governance (DAO)", |
|
|
content: "Jeder eSIM-NFT-Besitzer erhält Stimmrechte in der **DAO**. Entscheidungen über Netzwerkausbau, Gebühren und Tokenomics werden dezentral und transparent von der Community getroffen. Dies fördert eine gerechte und diverse Teilnahme.", |
|
|
icon: "users-three-bold" |
|
|
}, |
|
|
{ |
|
|
title: "5. Multiple-Income-Streams", |
|
|
content: "NODeSIM generiert Einnahmen durch diverse Kanäle: Initialer NFT-Verkauf (Primary Sale), Gebühren auf NFT-Zweitverkäufe (Royalty), Transaktionsgebühren im SIMCoin-Netzwerk und zukünftige Partnerschaften mit IoT- und Mobilfunkunternehmen.", |
|
|
icon: "chart-line-up-bold" |
|
|
}, |
|
|
{ |
|
|
title: "6. Real-World-Problem & Win-Win-Lösung", |
|
|
content: "Wir lösen das Problem überhöhter Roaming-Gebühren und der zentralisierten Kontrolle über mobile Daten. **Vorteil für Nutzer**: Globale, günstige Konnektivität und Monetarisierung der eigenen Ressourcen. **Vorteil für das Ökosystem**: Ein stabiles, resilientes und schnell wachsendes dezentrales IoT-Netzwerk.", |
|
|
icon: "check-circle-bold" |
|
|
} |
|
|
], |
|
|
NFTs: [ |
|
|
{ |
|
|
name: "Common", |
|
|
eSimId: "eSIM C-Class", |
|
|
rarity: "Common", |
|
|
image: "https://placehold.co/150x150/A0A0A0/0C0C0C?text=COMMON", |
|
|
description: "Der Standard-NFT für den Einstieg in das NODeSIM-Ökosystem. Bietet grundlegenden Netzwerkzugang und Belohnungen.", |
|
|
chart: { |
|
|
labels: ['DAO Power', 'SIMC Boost', 'Treasure Hunt'], |
|
|
data: [25, 42, 20], |
|
|
label: 'Common Utility Index' |
|
|
}, |
|
|
features: [ |
|
|
"Inklusive Mobilfunknummer", |
|
|
"SIMCoins in Credits umwandelbar", |
|
|
"DAO-Stimmrecht (1x Stärke)", |
|
|
"SIMCoin-Booster (1.5x)", |
|
|
"Schatzsuche (2x Multiplikator)", |
|
|
"Zugang zum privaten Discord" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
name: "Uncommon", |
|
|
eSimId: "eSIM UC-Class", |
|
|
rarity: "Uncommon", |
|
|
image: "https://placehold.co/150x150/66C2A5/0C0C0C?text=UNCOMMON", |
|
|
description: "Ein seltenerer NFT mit verbesserten Belohnungen für engagierte Netzwerkteilnehmer.", |
|
|
chart: { |
|
|
labels: ['DAO Power', 'SIMC Boost', 'Treasure Hunt'], |
|
|
data: [25, 57, 40], |
|
|
label: 'Uncommon Utility Index' |
|
|
}, |
|
|
features: [ |
|
|
"Inklusive Mobilfunknummer", |
|
|
"SIMCoins in Credits umwandelbar", |
|
|
"DAO-Stimmrecht (1x Stärke)", |
|
|
"SIMCoin-Booster (2x)", |
|
|
"Schatzsuche (4x Multiplikator)", |
|
|
"Zugang zum privaten Discord" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
name: "Rare", |
|
|
eSimId: "eSIM R-Class", |
|
|
rarity: "Rare", |
|
|
image: "https://placehold.co/150x150/8DA0CB/0C0C0C?text=RARE", |
|
|
description: "Dieser NFT bietet erhöhte Stimmkraft und Zugang zu exklusiven Events für Community-orientierte Nutzer.", |
|
|
chart: { |
|
|
labels: ['DAO Power', 'SIMC Boost', 'Treasure Hunt'], |
|
|
data: [50, 64, 45], |
|
|
label: 'Rare Utility Index' |
|
|
}, |
|
|
features: [ |
|
|
"Inklusive Mobilfunknummer", |
|
|
"SIMCoins in Credits umwandelbar", |
|
|
"DAO-Stimmrecht (2x Stärke)", |
|
|
"SIMCoin-Booster (2.25x)", |
|
|
"Schatzsuche (4.5x Multiplikator)", |
|
|
"Zugang zum privaten Discord", |
|
|
"Exklusiver Zugang zu Events" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
name: "Epic", |
|
|
eSimId: "eSIM E-Class", |
|
|
rarity: "Epic", |
|
|
image: "https://placehold.co/150x150/E78AC3/0C0C0C?text=EPIC", |
|
|
description: "Ein leistungsstarker NFT für Power-User mit signifikant verbesserten Boostern und Multiplikatoren.", |
|
|
chart: { |
|
|
labels: ['DAO Power', 'SIMC Boost', 'Treasure Hunt'], |
|
|
data: [50, 71, 50], |
|
|
label: 'Epic Utility Index' |
|
|
}, |
|
|
features: [ |
|
|
"Inklusive Mobilfunknummer", |
|
|
"SIMCoins in Credits umwandelbar", |
|
|
"DAO-Stimmrecht (2x Stärke)", |
|
|
"SIMCoin-Booster (2.5x)", |
|
|
"Schatzsuche (5x Multiplikator)", |
|
|
"Zugang zum privaten Discord", |
|
|
"Exklusiver Zugang zu Events" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
name: "Legendary", |
|
|
eSimId: "eSIM L-Class", |
|
|
rarity: "Legendary", |
|
|
image: "https://placehold.co/150x150/FFD92F/0C0C0C?text=LEGEND", |
|
|
description: "Verleiht hohe Stimmkraft in der DAO und exzellente Netzwerk-Belohnungen für treue Unterstützer.", |
|
|
chart: { |
|
|
labels: ['DAO Power', 'SIMC Boost', 'Treasure Hunt'], |
|
|
data: [75, 78, 55], |
|
|
label: 'Legendary Utility Index' |
|
|
}, |
|
|
features: [ |
|
|
"Inklusive Mobilfunknummer", |
|
|
"SIMCoins in Credits umwandelbar", |
|
|
"DAO-Stimmrecht (3x Stärke)", |
|
|
"SIMCoin-Booster (2.75x)", |
|
|
"Schatzsuche (5.5x Multiplikator)", |
|
|
"Zugang zum privaten Discord", |
|
|
"Exklusiver Zugang zu Events" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
name: "Mythic", |
|
|
eSimId: "eSIM M-Class", |
|
|
rarity: "Mythic", |
|
|
image: "https://placehold.co/150x150/E5C494/0C0C0C?text=MYTHIC", |
|
|
description: "Ein mythischer NFT, der lebenslang kostenlose mobile Credits und starken Einfluss auf das Netzwerk gewährt.", |
|
|
chart: { |
|
|
labels: ['DAO Power', 'SIMC Boost', 'Treasure Hunt'], |
|
|
data: [75, 85, 80], |
|
|
label: 'Mythic Utility Index' |
|
|
}, |
|
|
features: [ |
|
|
"Inklusive Mobilfunknummer", |
|
|
"SIMCoins in Credits umwandelbar", |
|
|
"DAO-Stimmrecht (3x Stärke)", |
|
|
"SIMCoin-Booster (3x)", |
|
|
"Schatzsuche (8x Multiplikator)", |
|
|
"Zugang zum privaten Discord", |
|
|
"Exklusiver Zugang zu Events", |
|
|
"Lebenslang kostenlose Credits" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
name: "Ultra", |
|
|
eSimId: "eSIM U-Class", |
|
|
rarity: "Ultra", |
|
|
image: "https://placehold.co/150x150/FC8D62/0C0C0C?text=ULTRA", |
|
|
description: "Repräsentiert die höchste Stufe der Beteiligung mit maximaler Stimmkraft und Belohnungen.", |
|
|
chart: { |
|
|
labels: ['DAO Power', 'SIMC Boost', 'Treasure Hunt'], |
|
|
data: [100, 100, 100], |
|
|
label: 'Ultra Utility Index' |
|
|
}, |
|
|
features: [ |
|
|
"Inklusive Mobilfunknummer", |
|
|
"SIMCoins in Credits umwandelbar", |
|
|
"DAO-Stimmrecht (4x Stärke)", |
|
|
"SIMCoin-Booster (3.5x)", |
|
|
"Schatzsuche (10x Multiplikator)", |
|
|
"Zugang zum privaten Discord", |
|
|
"Exklusiver Zugang zu Events", |
|
|
"Lebenslang kostenlose Credits" |
|
|
] |
|
|
}, |
|
|
{ |
|
|
name: "Ultra Rare", |
|
|
eSimId: "eSIM UR-Class", |
|
|
rarity: "Ultra Rare", |
|
|
image: "https://placehold.co/150x150/A6D854/0C0C0C?text=ULTRA+RARE", |
|
|
description: "Identisch zum Ultra NFT, aber mit extrem limitierter Auflage, was ihn zu einem begehrten Sammlerstück macht.", |
|
|
chart: { |
|
|
labels: ['DAO Power', 'SIMC Boost', 'Treasure Hunt'], |
|
|
data: [100, 100, 100], |
|
|
label: 'Ultra Rare Utility Index' |
|
|
}, |
|
|
features: [ |
|
|
"Inklusive Mobilfunknummer", |
|
|
"SIMCoins in Credits umwandelbar", |
|
|
"DAO-Stimmrecht (4x Stärke)", |
|
|
"SIMCoin-Booster (3.5x)", |
|
|
"Schatzsuche (10x Multiplikator)", |
|
|
"Zugang zum privaten Discord", |
|
|
"Exklusiver Zugang zu Events", |
|
|
"Lebenslang kostenlose Credits" |
|
|
] |
|
|
} |
|
|
] |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
import { initializeApp } from "https://www.gstatic.com/firebasejs/11.6.1/firebase-app.js"; |
|
|
import { getAuth, signInAnonymously, signInWithCustomToken } from "https://www.gstatic.com/firebasejs/11.6.1/firebase-auth.js"; |
|
|
import { getFirestore } from "https://www.gstatic.com/firebasejs/11.6.1/firebase-firestore.js"; |
|
|
|
|
|
const app = Object.keys(firebaseConfig).length > 0 ? initializeApp(firebaseConfig) : null; |
|
|
const db = app ? getFirestore(app) : null; |
|
|
const auth = app ? getAuth(app) : null; |
|
|
|
|
|
if (auth) { |
|
|
const initialAuthToken = typeof __initial_auth_token !== 'undefined' ? __initial_auth_token : null; |
|
|
if (initialAuthToken) { |
|
|
signInWithCustomToken(auth, initialAuthToken).catch(console.error); |
|
|
} else { |
|
|
signInAnonymously(auth).catch(console.error); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
let simcoinChartInstance = null; |
|
|
let nftChartInstance = null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function showScreen(screenId) { |
|
|
const screens = document.querySelectorAll('.app-screen'); |
|
|
screens.forEach(screen => { |
|
|
screen.style.display = 'none'; |
|
|
}); |
|
|
document.getElementById(`${screenId}-screen`).style.display = 'block'; |
|
|
|
|
|
|
|
|
document.querySelectorAll('.nav-button').forEach(btn => { |
|
|
btn.classList.remove('active'); |
|
|
if (btn.getAttribute('data-screen') === screenId) { |
|
|
btn.classList.add('active'); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
if (screenId === 'home') { |
|
|
if (!simcoinChartInstance) { |
|
|
initializeHomeChart(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
document.getElementById('pitch-deck-menu').classList.remove('open'); |
|
|
} |
|
|
|
|
|
|
|
|
function initializeHomeChart() { |
|
|
const ctx = document.getElementById('simcoin-chart').getContext('2d'); |
|
|
|
|
|
simcoinChartInstance = new Chart(ctx, { |
|
|
type: 'line', |
|
|
data: { |
|
|
labels: ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'], |
|
|
datasets: [ |
|
|
{ |
|
|
label: 'SIMC Verdient', |
|
|
data: [50, 75, 60, 90, 80, 110, 100], |
|
|
borderColor: 'var(--neon-green)', |
|
|
backgroundColor: 'rgba(57, 255, 20, 0.1)', |
|
|
borderWidth: 2, |
|
|
tension: 0.4, |
|
|
fill: true, |
|
|
pointBackgroundColor: 'var(--neon-green)' |
|
|
}, |
|
|
{ |
|
|
label: 'Datenverbrauch (GB)', |
|
|
data: [1.2, 0.9, 1.5, 1.1, 1.3, 0.8, 1.0], |
|
|
borderColor: '#00FFFF', |
|
|
backgroundColor: 'rgba(0, 255, 255, 0.1)', |
|
|
borderWidth: 2, |
|
|
tension: 0.4, |
|
|
fill: false, |
|
|
yAxisID: 'y1', |
|
|
pointBackgroundColor: '#00FFFF' |
|
|
} |
|
|
] |
|
|
}, |
|
|
options: { |
|
|
responsive: true, |
|
|
maintainAspectRatio: false, |
|
|
scales: { |
|
|
y: { |
|
|
beginAtZero: true, |
|
|
title: { display: false, text: 'SIMC' }, |
|
|
ticks: { color: 'var(--neon-green)' }, |
|
|
grid: { color: 'rgba(57, 255, 20, 0.1)' } |
|
|
}, |
|
|
y1: { |
|
|
position: 'right', |
|
|
title: { display: false, text: 'GB' }, |
|
|
ticks: { color: '#00FFFF' }, |
|
|
grid: { drawOnChartArea: false } |
|
|
}, |
|
|
x: { |
|
|
ticks: { color: 'white' }, |
|
|
grid: { color: 'rgba(57, 255, 20, 0.1)' } |
|
|
} |
|
|
}, |
|
|
plugins: { |
|
|
legend: { |
|
|
display: true, |
|
|
labels: { color: 'white', boxWidth: 10 } |
|
|
}, |
|
|
tooltip: { |
|
|
backgroundColor: 'rgba(0, 0, 0, 0.8)', |
|
|
titleColor: 'var(--neon-green)', |
|
|
bodyColor: 'white', |
|
|
borderColor: 'var(--neon-green)', |
|
|
borderWidth: 1 |
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
} |
|
|
|
|
|
|
|
|
function renderNfts() { |
|
|
const gallery = document.getElementById('nft-gallery'); |
|
|
gallery.innerHTML = ''; |
|
|
|
|
|
mockData.NFTs.forEach((nft, index) => { |
|
|
const card = document.createElement('div'); |
|
|
card.className = 'glass-card p-3 rounded-xl flex flex-col items-center text-center cursor-pointer border-l-4 border-neon/70 hover:shadow-neon/50 transition duration-300'; |
|
|
card.innerHTML = ` |
|
|
<img src="${nft.image}" alt="${nft.name}" class="w-20 h-20 rounded-lg mb-2 object-cover border border-neon"> |
|
|
<p class="text-lg font-bold text-neon">${nft.name}</p> |
|
|
<p class="text-sm text-white/70">${nft.rarity}</p> |
|
|
<p class="text-xs font-mono text-white/50 mt-1">${nft.eSimId}</p> |
|
|
`; |
|
|
|
|
|
|
|
|
card.addEventListener('click', () => showNftDetailModal(index)); |
|
|
gallery.appendChild(card); |
|
|
}); |
|
|
} |
|
|
|
|
|
|
|
|
function showNftDetailModal(index) { |
|
|
const nft = mockData.NFTs[index]; |
|
|
document.getElementById('nft-modal-title').textContent = nft.name; |
|
|
document.getElementById('nft-modal-eSim').textContent = `eSIM ID: ${nft.eSimId}`; |
|
|
document.getElementById('nft-modal-description').textContent = nft.description; |
|
|
|
|
|
|
|
|
const featuresList = document.getElementById('nft-modal-features'); |
|
|
featuresList.innerHTML = nft.features.map(f => `<li class="text-white/80"><ph-check-square-bold size="16" class="inline-block text-neon mr-1"></ph-check-square-bold> ${f}</li>`).join(''); |
|
|
|
|
|
|
|
|
if (nftChartInstance) { |
|
|
nftChartInstance.destroy(); |
|
|
} |
|
|
|
|
|
|
|
|
const ctx = document.getElementById('nft-modal-chart').getContext('2d'); |
|
|
nftChartInstance = new Chart(ctx, { |
|
|
type: 'radar', |
|
|
data: { |
|
|
labels: nft.chart.labels, |
|
|
datasets: [{ |
|
|
label: nft.chart.label, |
|
|
data: nft.chart.data, |
|
|
backgroundColor: 'rgba(57, 255, 20, 0.2)', |
|
|
borderColor: 'var(--neon-green)', |
|
|
pointBackgroundColor: 'var(--neon-green)', |
|
|
pointBorderColor: '#fff', |
|
|
pointHoverBackgroundColor: '#fff', |
|
|
pointHoverBorderColor: 'var(--neon-green)' |
|
|
}] |
|
|
}, |
|
|
options: { |
|
|
responsive: true, |
|
|
maintainAspectRatio: false, |
|
|
scales: { |
|
|
r: { |
|
|
angleLines: { color: 'rgba(57, 255, 20, 0.3)' }, |
|
|
grid: { color: 'rgba(57, 255, 20, 0.3)' }, |
|
|
pointLabels: { color: 'white' }, |
|
|
ticks: { display: false, backdropColor: 'var(--glass-bg)' }, |
|
|
suggestedMin: 0, |
|
|
suggestedMax: 100 |
|
|
} |
|
|
}, |
|
|
plugins: { |
|
|
legend: { display: false } |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
document.getElementById('nft-detail-modal').style.display = 'flex'; |
|
|
} |
|
|
|
|
|
|
|
|
function renderPitchDeck() { |
|
|
const contentDiv = document.getElementById('pitch-deck-content'); |
|
|
contentDiv.innerHTML = mockData.pitchDeck.map(item => ` |
|
|
<div class="glass-card p-3 rounded-xl border-l-4 border-neon/70"> |
|
|
<h3 class="text-md font-bold text-neon flex items-center mb-1"> |
|
|
<ph-${item.icon} size="20" class="mr-2"></ph-${item.icon}> ${item.title} |
|
|
</h3> |
|
|
<p class="text-xs text-white/80">${item.content}</p> |
|
|
</div> |
|
|
`).join(''); |
|
|
} |
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', () => { |
|
|
|
|
|
showScreen('home'); |
|
|
renderNfts(); |
|
|
renderPitchDeck(); |
|
|
|
|
|
|
|
|
document.querySelectorAll('.nav-button').forEach(button => { |
|
|
button.addEventListener('click', (e) => { |
|
|
const screen = e.currentTarget.getAttribute('data-screen'); |
|
|
showScreen(screen); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
document.querySelectorAll('.quick-action-btn').forEach(button => { |
|
|
button.addEventListener('click', (e) => { |
|
|
const screen = e.currentTarget.getAttribute('data-screen'); |
|
|
showScreen(screen); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const menuBtn = document.getElementById('menu-btn'); |
|
|
const closeMenuBtn = document.getElementById('close-menu-btn'); |
|
|
const pitchDeckMenu = document.getElementById('pitch-deck-menu'); |
|
|
|
|
|
menuBtn.addEventListener('click', () => { |
|
|
pitchDeckMenu.classList.toggle('open'); |
|
|
}); |
|
|
closeMenuBtn.addEventListener('click', () => { |
|
|
pitchDeckMenu.classList.remove('open'); |
|
|
}); |
|
|
|
|
|
document.getElementById('close-nft-modal-btn').addEventListener('click', () => { |
|
|
document.getElementById('nft-detail-modal').style.display = 'none'; |
|
|
}); |
|
|
|
|
|
|
|
|
document.querySelector('#nft-detail-modal .modal button').addEventListener('click', () => { |
|
|
document.getElementById('nft-detail-modal').style.display = 'none'; |
|
|
}); |
|
|
|
|
|
const smartphoneContainer = document.getElementById('smartphone-container'); |
|
|
const utilityChartPreview = document.getElementById('utility-chart-preview'); |
|
|
const fullscreenImageModal = document.getElementById('fullscreen-image-modal'); |
|
|
const fullscreenImage = document.getElementById('fullscreen-image'); |
|
|
const closeImageModalBtn = document.getElementById('close-image-modal-btn'); |
|
|
|
|
|
utilityChartPreview.addEventListener('click', () => { |
|
|
const imgSrc = utilityChartPreview.querySelector('img').getAttribute('data-full-src'); |
|
|
fullscreenImage.src = imgSrc; |
|
|
|
|
|
|
|
|
smartphoneContainer.classList.add('landscape-mode'); |
|
|
|
|
|
|
|
|
fullscreenImageModal.style.display = 'flex'; |
|
|
|
|
|
|
|
|
document.querySelectorAll('.app-screen').forEach(screen => screen.style.display = 'none'); |
|
|
|
|
|
|
|
|
document.querySelector('nav').style.display = 'none'; |
|
|
document.querySelector('.h-10').style.display = 'none'; |
|
|
}); |
|
|
|
|
|
closeImageModalBtn.addEventListener('click', () => { |
|
|
|
|
|
fullscreenImageModal.style.display = 'none'; |
|
|
|
|
|
|
|
|
smartphoneContainer.classList.remove('landscape-mode'); |
|
|
|
|
|
|
|
|
document.querySelector('nav').style.display = 'flex'; |
|
|
document.querySelector('.h-10').style.display = 'flex'; |
|
|
|
|
|
|
|
|
showScreen('nfts'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
</script> |
|
|
</body> |
|
|
</html> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|