Spaces:
Running
Running
Build a modern responsive web app frontend for a "Cryptocurrency Address Collection and Categorization System".
2f03301 verified Download index.html from Tanmay0712/chaintagger: direct link, hf CLI and curl.
- Browser
- Download file 17.3 kB
-
https://huggingface.co/spaces/Tanmay0712/chaintagger/resolve/main/index.html
- Command line
-
hf download hf://spaces/Tanmay0712/chaintagger/index.html
-
curl -L -o index.html https://huggingface.co/spaces/Tanmay0712/chaintagger/resolve/main/index.html
17.3 kB
| <html lang="en" class="dark"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>ChainTagger | Crypto Address Intelligence</title> | |
| <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <script src="https://unpkg.com/framer-motion@10.16.4/dist/framer-motion.js"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> | |
| <script> | |
| tailwind.config = { | |
| darkMode: 'class', | |
| theme: { | |
| extend: { | |
| colors: { | |
| primary: { | |
| light: '#6366f1', | |
| dark: '#8b5cf6' | |
| }, | |
| secondary: { | |
| light: '#10b981', | |
| dark: '#06b6d4' | |
| } | |
| }, | |
| fontFamily: { | |
| sans: ['Inter', 'sans-serif'], | |
| mono: ['Fira Code', 'monospace'] | |
| } | |
| } | |
| } | |
| } | |
| </script> | |
| </head> | |
| <body class="bg-gray-50 dark:bg-gray-900 transition-colors duration-200 min-h-screen"> | |
| <div class="flex"> | |
| <!-- Sidebar --> | |
| <aside class="w-64 bg-white dark:bg-gray-800 shadow-lg dark:shadow-gray-700/50 fixed h-screen transition-all duration-300 z-50"> | |
| <div class="p-4 border-b border-gray-200 dark:border-gray-700"> | |
| <div class="flex items-center space-x-3"> | |
| <div class="w-10 h-10 bg-gradient-to-r from-primary-light to-primary-dark rounded-lg flex items-center justify-center"> | |
| <i data-feather="link-2" class="text-white"></i> | |
| </div> | |
| <h1 class="text-xl font-bold text-gray-800 dark:text-white">ChainTagger</h1> | |
| </div> | |
| </div> | |
| <nav class="p-4 space-y-2"> | |
| <a href="#" class="flex items-center space-x-3 p-3 rounded-lg bg-primary-light/10 dark:bg-primary-dark/10 text-primary-light dark:text-primary-dark font-medium"> | |
| <i data-feather="activity"></i> | |
| <span>Dashboard</span> | |
| </a> | |
| <a href="#" class="flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"> | |
| <i data-feather="search"></i> | |
| <span>Search</span> | |
| </a> | |
| <a href="#" class="flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"> | |
| <i data-feather="users"></i> | |
| <span>Entities</span> | |
| </a> | |
| <a href="#" class="flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"> | |
| <i data-feather="git-branch"></i> | |
| <span>Graph View</span> | |
| </a> | |
| <a href="#" class="flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"> | |
| <i data-feather="clock"></i> | |
| <span>Timeline</span> | |
| </a> | |
| <a href="#" class="flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"> | |
| <i data-feather="download"></i> | |
| <span>Exports</span> | |
| </a> | |
| <a href="#" class="flex items-center space-x-3 p-3 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"> | |
| <i data-feather="settings"></i> | |
| <span>Settings</span> | |
| </a> | |
| </nav> | |
| </aside> | |
| <!-- Main Content --> | |
| <div class="flex-1 ml-64 transition-all duration-300"> | |
| <!-- Header --> | |
| <header class="bg-white dark:bg-gray-800 shadow-sm dark:shadow-gray-700/30 p-4 fixed w-full z-40"> | |
| <div class="flex justify-between items-center"> | |
| <div class="flex items-center space-x-4"> | |
| <button class="md:hidden text-gray-600 dark:text-gray-300"> | |
| <i data-feather="menu"></i> | |
| </button> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <button id="theme-toggle" class="p-2 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300"> | |
| <i data-feather="moon" class="hidden dark:block"></i> | |
| <i data-feather="sun" class="dark:hidden"></i> | |
| </button> | |
| <div class="w-10 h-10 rounded-full bg-gradient-to-r from-primary-light to-primary-dark"></div> | |
| </div> | |
| </div> | |
| </header> | |
| <!-- Dashboard Content --> | |
| <main class="p-6 pt-24"> | |
| <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8"> | |
| <div class="bg-white dark:bg-gray-800 rounded-2xl p-6 shadow-sm dark:shadow-gray-700/30 border border-gray-100 dark:border-gray-700 hover:shadow-md dark:hover:shadow-primary-dark/20 transition-all"> | |
| <div class="flex justify-between items-start"> | |
| <div> | |
| <p class="text-gray-500 dark:text-gray-400 text-sm">Total Addresses</p> | |
| <h3 class="text-2xl font-bold text-gray-800 dark:text-white mt-1">24,589</h3> | |
| </div> | |
| <div class="p-3 rounded-lg bg-primary-light/10 dark:bg-primary-dark/10 text-primary-light dark:text-primary-dark"> | |
| <i data-feather="hash"></i> | |
| </div> | |
| </div> | |
| <div class="mt-4"> | |
| <div class="h-1 w-full bg-gray-100 dark:bg-gray-700 rounded-full"> | |
| <div class="h-1 bg-gradient-to-r from-primary-light to-primary-dark rounded-full" style="width: 65%"></div> | |
| </div> | |
| <p class="text-xs text-gray-500 dark:text-gray-400 mt-2">+12% from last month</p> | |
| </div> | |
| </div> | |
| <div class="bg-white dark:bg-gray-800 rounded-2xl p-6 shadow-sm dark:shadow-gray-700/30 border border-gray-100 dark:border-gray-700 hover:shadow-md dark:hover:shadow-primary-dark/20 transition-all"> | |
| <div class="flex justify-between items-start"> | |
| <div> | |
| <p class="text-gray-500 dark:text-gray-400 text-sm">Total Entities</p> | |
| <h3 class="text-2xl font-bold text-gray-800 dark:text-white mt-1">1,842</h3> | |
| </div> | |
| <div class="p-3 rounded-lg bg-secondary-light/10 dark:bg-secondary-dark/10 text-secondary-light dark:text-secondary-dark"> | |
| <i data-feather="users"></i> | |
| </div> | |
| </div> | |
| <div class="mt-4"> | |
| <div class="h-1 w-full bg-gray-100 dark:bg-gray-700 rounded-full"> | |
| <div class="h-1 bg-gradient-to-r from-secondary-light to-secondary-dark rounded-full" style="width: 45%"></div> | |
| </div> | |
| <p class="text-xs text-gray-500 dark:text-gray-400 mt-2">+8% from last month</p> | |
| </div> | |
| </div> | |
| <div class="bg-white dark:bg-gray-800 rounded-2xl p-6 shadow-sm dark:shadow-gray-700/30 border border-gray-100 dark:border-gray-700 hover:shadow-md dark:hover:shadow-primary-dark/20 transition-all"> | |
| <div class="flex justify-between items-start"> | |
| <div> | |
| <p class="text-gray-500 dark:text-gray-400 text-sm">Latest Scan</p> | |
| <h3 class="text-2xl font-bold text-gray-800 dark:text-white mt-1">2 min ago</h3> | |
| </div> | |
| <div class="p-3 rounded-lg bg-yellow-500/10 text-yellow-500"> | |
| <i data-feather="clock"></i> | |
| </div> | |
| </div> | |
| <div class="mt-4"> | |
| <div class="h-1 w-full bg-gray-100 dark:bg-gray-700 rounded-full"> | |
| <div class="h-1 bg-gradient-to-r from-yellow-400 to-yellow-600 rounded-full" style="width: 85%"></div> | |
| </div> | |
| <p class="text-xs text-gray-500 dark:text-gray-400 mt-2">Next scan in 58 min</p> | |
| </div> | |
| </div> | |
| <div class="bg-white dark:bg-gray-800 rounded-2xl p-6 shadow-sm dark:shadow-gray-700/30 border border-gray-100 dark:border-gray-700 hover:shadow-md dark:hover:shadow-primary-dark/20 transition-all"> | |
| <div class="flex justify-between items-start"> | |
| <div> | |
| <p class="text-gray-500 dark:text-gray-400 text-sm">Sources Tracked</p> | |
| <h3 class="text-2xl font-bold text-gray-800 dark:text-white mt-1">18</h3> | |
| </div> | |
| <div class="p-3 rounded-lg bg-green-500/10 text-green-500"> | |
| <i data-feather="database"></i> | |
| </div> | |
| </div> | |
| <div class="mt-4"> | |
| <div class="h-1 w-full bg-gray-100 dark:bg-gray-700 rounded-full"> | |
| <div class="h-1 bg-gradient-to-r from-green-400 to-green-600 rounded-full" style="width: 75%"></div> | |
| </div> | |
| <p class="text-xs text-gray-500 dark:text-gray-400 mt-2">3 new sources last week</p> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="grid grid-cols-1 lg:grid-cols-3 gap-6"> | |
| <div class="lg:col-span-2 bg-white dark:bg-gray-800 rounded-2xl p-6 shadow-sm dark:shadow-gray-700/30 border border-gray-100 dark:border-gray-700"> | |
| <div class="flex justify-between items-center mb-6"> | |
| <h2 class="text-lg font-semibold text-gray-800 dark:text-white">Address Collection Timeline</h2> | |
| <select class="bg-gray-50 dark:bg-gray-700 border border-gray-200 dark:border-gray-600 text-gray-700 dark:text-gray-300 text-sm rounded-lg px-3 py-1 focus:ring-2 focus:ring-primary-light dark:focus:ring-primary-dark outline-none"> | |
| <option>Last 7 days</option> | |
| <option>Last 30 days</option> | |
| <option>Last 90 days</option> | |
| <option selected>Last year</option> | |
| </select> | |
| </div> | |
| <div class="relative h-80"> | |
| <canvas id="collectionChart"></canvas> | |
| </div> | |
| </div> | |
| <div class="bg-white dark:bg-gray-800 rounded-2xl p-6 shadow-sm dark:shadow-gray-700/30 border border-gray-100 dark:border-gray-700"> | |
| <h2 class="text-lg font-semibold text-gray-800 dark:text-white mb-6">Quick Actions</h2> | |
| <div class="space-y-4"> | |
| <a href="#" class="flex items-center space-x-3 p-4 rounded-xl bg-gradient-to-r from-primary-light/5 to-primary-light/10 dark:from-primary-dark/5 dark:to-primary-dark/10 border border-primary-light/20 dark:border-primary-dark/20 group hover:border-primary-light dark:hover:border-primary-dark transition-all"> | |
| <div class="p-3 rounded-lg bg-primary-light/10 dark:bg-primary-dark/10 text-primary-light dark:text-primary-dark group-hover:bg-primary-light/20 dark:group-hover:bg-primary-dark/20"> | |
| <i data-feather="download"></i> | |
| </div> | |
| <div> | |
| <h3 class="font-medium text-gray-800 dark:text-white">Export Data</h3> | |
| <p class="text-sm text-gray-500 dark:text-gray-400">CSV, JSON formats</p> | |
| </div> | |
| </a> | |
| <a href="#" class="flex items-center space-x-3 p-4 rounded-xl bg-gradient-to-r from-secondary-light/5 to-secondary-light/10 dark:from-secondary-dark/5 dark:to-secondary-dark/10 border border-secondary-light/20 dark:border-secondary-dark/20 group hover:border-secondary-light dark:hover:border-secondary-dark transition-all"> | |
| <div class="p-3 rounded-lg bg-secondary-light/10 dark:bg-secondary-dark/10 text-secondary-light dark:text-secondary-dark group-hover:bg-secondary-light/20 dark:group-hover:bg-secondary-dark/20"> | |
| <i data-feather="search"></i> | |
| </div> | |
| <div> | |
| <h3 class="font-medium text-gray-800 dark:text-white">New Search</h3> | |
| <p class="text-sm text-gray-500 dark:text-gray-400">Advanced filters</p> | |
| </div> | |
| </a> | |
| <a href="#" class="flex items-center space-x-3 p-4 rounded-xl bg-gradient-to-r from-yellow-500/5 to-yellow-500/10 dark:from-yellow-500/5 dark:to-yellow-500/10 border border-yellow-500/20 group hover:border-yellow-500 transition-all"> | |
| <div class="p-3 rounded-lg bg-yellow-500/10 text-yellow-500 group-hover:bg-yellow-500/20"> | |
| <i data-feather="git-branch"></i> | |
| </div> | |
| <div> | |
| <h3 class="font-medium text-gray-800 dark:text-white">Graph Explorer</h3> | |
| <p class="text-sm text-gray-500 dark:text-gray-400">Entity relationships</p> | |
| </div> | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| </main> | |
| </div> | |
| </div> | |
| <script> | |
| // Theme toggle | |
| const themeToggle = document.getElementById('theme-toggle'); | |
| themeToggle.addEventListener('click', () => { | |
| document.documentElement.classList.toggle('dark'); | |
| localStorage.setItem('theme', document.documentElement.classList.contains('dark') ? 'dark' : 'light'); | |
| }); | |
| // Mobile sidebar toggle | |
| document.querySelector('button.md\\:hidden').addEventListener('click', () => { | |
| document.querySelector('aside').classList.toggle('-translate-x-full'); | |
| document.querySelector('div.flex-1').classList.toggle('ml-0'); | |
| }); | |
| // Chart initialization | |
| feather.replace(); | |
| document.addEventListener('DOMContentLoaded', function() { | |
| const ctx = document.getElementById('collectionChart').getContext('2d'); | |
| new Chart(ctx, { | |
| type: 'line', | |
| data: { | |
| labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], | |
| datasets: [{ | |
| label: 'Addresses Collected', | |
| data: [1200, 1900, 1500, 1800, 2100, 2300, 2700, 2500, 3000, 2800, 3200, 3500], | |
| borderColor: '#6366f1', | |
| backgroundColor: 'rgba(99, 102, 241, 0.1)', | |
| borderWidth: 2, | |
| fill: true, | |
| tension: 0.4 | |
| }] | |
| }, | |
| options: { | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| plugins: { | |
| legend: { | |
| display: false | |
| } | |
| }, | |
| scales: { | |
| y: { | |
| beginAtZero: true, | |
| grid: { | |
| color: 'rgba(0, 0, 0, 0.05)' | |
| } | |
| }, | |
| x: { | |
| grid: { | |
| display: false | |
| } | |
| } | |
| } | |
| } | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> |