|
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>Browser Tools Pro</title> |
|
<script src="https://cdn.tailwindcss.com"></script> |
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
<style> |
|
|
|
@keyframes toolSlideIn { |
|
from { transform: translateY(20px); opacity: 0; } |
|
to { transform: translateY(0); opacity: 1; } |
|
} |
|
|
|
.tool-card { |
|
animation: toolSlideIn 0.3s ease-out forwards; |
|
opacity: 0; |
|
animation-delay: calc(var(--order) * 0.1s); |
|
} |
|
|
|
.gradient-bg { |
|
background: linear-gradient(135deg, #6e8efb, #a777e3); |
|
} |
|
|
|
.tab-active { |
|
position: relative; |
|
} |
|
|
|
.tab-active::after { |
|
content: ''; |
|
position: absolute; |
|
bottom: -1px; |
|
left: 0; |
|
right: 0; |
|
height: 3px; |
|
background: #6e8efb; |
|
border-radius: 3px 3px 0 0; |
|
} |
|
|
|
.tool-icon { |
|
transition: all 0.2s ease; |
|
} |
|
|
|
.tool-card:hover .tool-icon { |
|
transform: scale(1.1); |
|
} |
|
|
|
.search-box:focus { |
|
box-shadow: 0 0 0 3px rgba(110, 142, 251, 0.3); |
|
} |
|
</style> |
|
</head> |
|
<body class="bg-gray-100 font-sans"> |
|
<div class="min-h-screen flex flex-col"> |
|
|
|
<header class="gradient-bg text-white shadow-lg"> |
|
<div class="container mx-auto px-4 py-6"> |
|
<div class="flex justify-between items-center"> |
|
<div class="flex items-center space-x-3"> |
|
<i class="fas fa-tools text-2xl"></i> |
|
<h1 class="text-2xl font-bold">Browser Tools Pro</h1> |
|
</div> |
|
<div class="flex items-center space-x-4"> |
|
<button class="bg-white text-indigo-600 px-4 py-2 rounded-lg font-medium hover:bg-gray-100 transition"> |
|
<i class="fas fa-sign-in-alt mr-2"></i>Sign In |
|
</button> |
|
<button class="bg-indigo-800 text-white px-4 py-2 rounded-lg font-medium hover:bg-indigo-900 transition"> |
|
<i class="fas fa-user-plus mr-2"></i>Register |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
</header> |
|
|
|
|
|
<main class="flex-grow container mx-auto px-4 py-8"> |
|
|
|
<div class="mb-8"> |
|
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4"> |
|
<div class="relative flex-grow max-w-2xl"> |
|
<input type="text" |
|
placeholder="Search tools..." |
|
class="search-box w-full pl-10 pr-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:border-indigo-500 transition"> |
|
<i class="fas fa-search absolute left-3 top-3.5 text-gray-400"></i> |
|
</div> |
|
<div class="flex space-x-2 overflow-x-auto pb-2"> |
|
<button class="filter-btn px-4 py-2 bg-white rounded-lg border border-gray-300 hover:bg-gray-50 transition whitespace-nowrap" data-filter="all"> |
|
All Tools |
|
</button> |
|
<button class="filter-btn px-4 py-2 bg-white rounded-lg border border-gray-300 hover:bg-gray-50 transition whitespace-nowrap" data-filter="dev"> |
|
<i class="fas fa-code mr-2 text-blue-500"></i>Developer |
|
</button> |
|
<button class="filter-btn px-4 py-2 bg-white rounded-lg border border-gray-300 hover:bg-gray-50 transition whitespace-nowrap" data-filter="seo"> |
|
<i class="fas fa-chart-line mr-2 text-green-500"></i>SEO |
|
</button> |
|
<button class="filter-btn px-4 py-2 bg-white rounded-lg border border-gray-300 hover:bg-gray-50 transition whitespace-nowrap" data-filter="design"> |
|
<i class="fas fa-paint-brush mr-2 text-purple-500"></i>Design |
|
</button> |
|
<button class="filter-btn px-4 py-2 bg-white rounded-lg border border-gray-300 hover:bg-gray-50 transition whitespace-nowrap" data-filter="security"> |
|
<i class="fas fa-shield-alt mr-2 text-red-500"></i>Security |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="mb-8 border-b border-gray-200"> |
|
<div class="flex space-x-8"> |
|
<button class="tab-btn py-2 px-1 font-medium text-gray-500 hover:text-indigo-600 transition tab-active" data-tab="all"> |
|
All Tools |
|
</button> |
|
<button class="tab-btn py-2 px-1 font-medium text-gray-500 hover:text-indigo-600 transition" data-tab="favorites"> |
|
<i class="fas fa-star mr-2 text-yellow-400"></i>Favorites |
|
</button> |
|
<button class="tab-btn py-2 px-1 font-medium text-gray-500 hover:text-indigo-600 transition" data-tab="recent"> |
|
<i class="fas fa-history mr-2 text-blue-400"></i>Recently Used |
|
</button> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6" id="tools-container"> |
|
|
|
</div> |
|
|
|
|
|
<div id="empty-state" class="hidden text-center py-16"> |
|
<i class="fas fa-search text-5xl text-gray-300 mb-4"></i> |
|
<h3 class="text-xl font-medium text-gray-500">No tools found</h3> |
|
<p class="text-gray-400 mt-2">Try adjusting your search or filter to find what you're looking for.</p> |
|
</div> |
|
</main> |
|
|
|
|
|
<footer class="bg-gray-800 text-white py-8"> |
|
<div class="container mx-auto px-4"> |
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8"> |
|
<div> |
|
<h3 class="text-lg font-semibold mb-4">Browser Tools Pro</h3> |
|
<p class="text-gray-400">Powerful tools to enhance your browsing experience and productivity.</p> |
|
</div> |
|
<div> |
|
<h4 class="font-medium mb-4">Categories</h4> |
|
<ul class="space-y-2 text-gray-400"> |
|
<li><a href="#" class="hover:text-white transition">Developer Tools</a></li> |
|
<li><a href="#" class="hover:text-white transition">SEO Tools</a></li> |
|
<li><a href="#" class="hover:text-white transition">Design Tools</a></li> |
|
<li><a href="#" class="hover:text-white transition">Security Tools</a></li> |
|
</ul> |
|
</div> |
|
<div> |
|
<h4 class="font-medium mb-4">Resources</h4> |
|
<ul class="space-y-2 text-gray-400"> |
|
<li><a href="#" class="hover:text-white transition">Documentation</a></li> |
|
<li><a href="#" class="hover:text-white transition">API</a></li> |
|
<li><a href="#" class="hover:text-white transition">Blog</a></li> |
|
<li><a href="#" class="hover:text-white transition">Support</a></li> |
|
</ul> |
|
</div> |
|
<div> |
|
<h4 class="font-medium mb-4">Connect</h4> |
|
<div class="flex space-x-4"> |
|
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-twitter text-xl"></i></a> |
|
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-github text-xl"></i></a> |
|
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-discord text-xl"></i></a> |
|
<a href="#" class="text-gray-400 hover:text-white transition"><i class="fab fa-youtube text-xl"></i></a> |
|
</div> |
|
<div class="mt-6"> |
|
<button class="bg-indigo-600 hover:bg-indigo-700 text-white px-4 py-2 rounded-lg transition"> |
|
<i class="fas fa-download mr-2"></i>Download Extension |
|
</button> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="border-t border-gray-700 mt-8 pt-6 text-center text-gray-400"> |
|
<p>© 2023 Browser Tools Pro. All rights reserved.</p> |
|
</div> |
|
</div> |
|
</footer> |
|
</div> |
|
|
|
<script> |
|
|
|
const tools = [ |
|
{ |
|
id: 1, |
|
name: "JSON Formatter", |
|
description: "Format and validate JSON data with syntax highlighting", |
|
category: "dev", |
|
icon: "fas fa-brackets-curly", |
|
color: "text-blue-500", |
|
bgColor: "bg-blue-50", |
|
favorite: true, |
|
lastUsed: "2023-07-15" |
|
}, |
|
{ |
|
id: 2, |
|
name: "Color Picker", |
|
description: "Pick colors from any webpage and get HEX, RGB values", |
|
category: "design", |
|
icon: "fas fa-eye-dropper", |
|
color: "text-purple-500", |
|
bgColor: "bg-purple-50", |
|
favorite: false, |
|
lastUsed: "2023-07-10" |
|
}, |
|
{ |
|
id: 3, |
|
name: "SEO Analyzer", |
|
description: "Analyze webpage SEO factors and get improvement suggestions", |
|
category: "seo", |
|
icon: "fas fa-chart-pie", |
|
color: "text-green-500", |
|
bgColor: "bg-green-50", |
|
favorite: true, |
|
lastUsed: "2023-07-12" |
|
}, |
|
{ |
|
id: 4, |
|
name: "Password Generator", |
|
description: "Generate strong, secure passwords with customizable options", |
|
category: "security", |
|
icon: "fas fa-key", |
|
color: "text-red-500", |
|
bgColor: "bg-red-50", |
|
favorite: false, |
|
lastUsed: "2023-06-28" |
|
}, |
|
{ |
|
id: 5, |
|
name: "Base64 Encoder", |
|
description: "Encode and decode Base64 strings quickly", |
|
category: "dev", |
|
icon: "fas fa-lock", |
|
color: "text-blue-500", |
|
bgColor: "bg-blue-50", |
|
favorite: false, |
|
lastUsed: "2023-07-05" |
|
}, |
|
{ |
|
id: 6, |
|
name: "Responsive Tester", |
|
description: "Test how your website looks on different screen sizes", |
|
category: "design", |
|
icon: "fas fa-mobile-alt", |
|
color: "text-purple-500", |
|
bgColor: "bg-purple-50", |
|
favorite: true, |
|
lastUsed: "2023-07-14" |
|
}, |
|
{ |
|
id: 7, |
|
name: "Meta Tag Inspector", |
|
description: "View and analyze meta tags of any webpage", |
|
category: "seo", |
|
icon: "fas fa-tags", |
|
color: "text-green-500", |
|
bgColor: "bg-green-50", |
|
favorite: false, |
|
lastUsed: "2023-06-30" |
|
}, |
|
{ |
|
id: 8, |
|
name: "SSL Checker", |
|
description: "Verify SSL certificate details for any website", |
|
category: "security", |
|
icon: "fas fa-lock-open", |
|
color: "text-red-500", |
|
bgColor: "bg-red-50", |
|
favorite: false, |
|
lastUsed: "2023-07-01" |
|
} |
|
]; |
|
|
|
|
|
const toolsContainer = document.getElementById('tools-container'); |
|
const searchBox = document.querySelector('.search-box'); |
|
const filterButtons = document.querySelectorAll('.filter-btn'); |
|
const tabButtons = document.querySelectorAll('.tab-btn'); |
|
const emptyState = document.getElementById('empty-state'); |
|
|
|
|
|
let currentFilter = 'all'; |
|
let currentTab = 'all'; |
|
let searchQuery = ''; |
|
|
|
|
|
function init() { |
|
renderTools(); |
|
setupEventListeners(); |
|
} |
|
|
|
|
|
function setupEventListeners() { |
|
|
|
searchBox.addEventListener('input', (e) => { |
|
searchQuery = e.target.value.toLowerCase(); |
|
renderTools(); |
|
}); |
|
|
|
|
|
filterButtons.forEach(button => { |
|
button.addEventListener('click', () => { |
|
filterButtons.forEach(btn => btn.classList.remove('bg-indigo-100', 'border-indigo-300')); |
|
button.classList.add('bg-indigo-100', 'border-indigo-300'); |
|
currentFilter = button.dataset.filter; |
|
renderTools(); |
|
}); |
|
}); |
|
|
|
|
|
tabButtons.forEach(button => { |
|
button.addEventListener('click', () => { |
|
tabButtons.forEach(btn => btn.classList.remove('tab-active', 'text-indigo-600')); |
|
button.classList.add('tab-active', 'text-indigo-600'); |
|
currentTab = button.dataset.tab; |
|
renderTools(); |
|
}); |
|
}); |
|
} |
|
|
|
|
|
function renderTools() { |
|
toolsContainer.innerHTML = ''; |
|
|
|
let filteredTools = [...tools]; |
|
|
|
|
|
if (currentTab === 'favorites') { |
|
filteredTools = filteredTools.filter(tool => tool.favorite); |
|
} else if (currentTab === 'recent') { |
|
filteredTools = filteredTools.sort((a, b) => new Date(b.lastUsed) - new Date(a.lastUsed)).slice(0, 4); |
|
} |
|
|
|
|
|
if (currentFilter !== 'all') { |
|
filteredTools = filteredTools.filter(tool => tool.category === currentFilter); |
|
} |
|
|
|
|
|
if (searchQuery) { |
|
filteredTools = filteredTools.filter(tool => |
|
tool.name.toLowerCase().includes(searchQuery) || |
|
tool.description.toLowerCase().includes(searchQuery) |
|
); |
|
} |
|
|
|
|
|
if (filteredTools.length === 0) { |
|
emptyState.classList.remove('hidden'); |
|
return; |
|
} else { |
|
emptyState.classList.add('hidden'); |
|
} |
|
|
|
|
|
filteredTools.forEach((tool, index) => { |
|
const toolCard = document.createElement('div'); |
|
toolCard.className = `tool-card bg-white rounded-xl shadow-md overflow-hidden hover:shadow-lg transition`; |
|
toolCard.style.setProperty('--order', index); |
|
|
|
toolCard.innerHTML = ` |
|
<div class="p-6"> |
|
<div class="flex items-start justify-between"> |
|
<div class="${tool.bgColor} p-3 rounded-lg"> |
|
<i class="${tool.icon} ${tool.color} text-xl tool-icon"></i> |
|
</div> |
|
<button class="favorite-btn text-gray-300 hover:text-yellow-400 transition ${tool.favorite ? 'text-yellow-400' : ''}" data-id="${tool.id}"> |
|
<i class="fas fa-star"></i> |
|
</button> |
|
</div> |
|
<div class="mt-4"> |
|
<h3 class="text-lg font-semibold text-gray-800">${tool.name}</h3> |
|
<p class="mt-2 text-gray-600">${tool.description}</p> |
|
</div> |
|
<div class="mt-6 flex justify-between items-center"> |
|
<span class="text-xs px-2 py-1 rounded-full ${getCategoryClass(tool.category)}"> |
|
${getCategoryName(tool.category)} |
|
</span> |
|
<button class="use-btn bg-indigo-600 hover:bg-indigo-700 text-white px-4 py-2 rounded-lg text-sm font-medium transition"> |
|
Use Tool |
|
</button> |
|
</div> |
|
</div> |
|
`; |
|
|
|
toolsContainer.appendChild(toolCard); |
|
}); |
|
|
|
|
|
document.querySelectorAll('.favorite-btn').forEach(button => { |
|
button.addEventListener('click', (e) => { |
|
e.stopPropagation(); |
|
const toolId = parseInt(button.dataset.id); |
|
const tool = tools.find(t => t.id === toolId); |
|
if (tool) { |
|
tool.favorite = !tool.favorite; |
|
button.classList.toggle('text-yellow-400'); |
|
button.classList.toggle('text-gray-300'); |
|
} |
|
}); |
|
}); |
|
|
|
|
|
document.querySelectorAll('.use-btn').forEach(button => { |
|
button.addEventListener('click', (e) => { |
|
e.stopPropagation(); |
|
const toolCard = e.target.closest('.tool-card'); |
|
const toolName = toolCard.querySelector('h3').textContent; |
|
alert(`Launching ${toolName}...`); |
|
|
|
}); |
|
}); |
|
} |
|
|
|
|
|
function getCategoryName(category) { |
|
const names = { |
|
'dev': 'Developer', |
|
'seo': 'SEO', |
|
'design': 'Design', |
|
'security': 'Security' |
|
}; |
|
return names[category] || 'Other'; |
|
} |
|
|
|
function getCategoryClass(category) { |
|
const classes = { |
|
'dev': 'bg-blue-100 text-blue-800', |
|
'seo': 'bg-green-100 text-green-800', |
|
'design': 'bg-purple-100 text-purple-800', |
|
'security': 'bg-red-100 text-red-800' |
|
}; |
|
return classes[category] || 'bg-gray-100 text-gray-800'; |
|
} |
|
|
|
|
|
init(); |
|
</script> |
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - <a href="https://enzostvs-deepsite.hf.space?remix=kcrazy/deepsite" style="color: #fff;text-decoration: underline;" target="_blank" >🧬 Remix</a></p></body> |
|
</html> |