template / index.html
Ai-ethic's picture
undefined - Follow Up Deployment
a742c98 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PromptHub Blog</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
background-color: #ffffff;
overflow-x: hidden;
}
.gradient-bar {
background: linear-gradient(to bottom, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4, #feca57);
width: 6px;
height: 32px;
border-radius: 3px;
animation: shimmer 3s ease-in-out infinite;
}
@keyframes shimmer {
0%, 100% { opacity: 0.9; }
50% { opacity: 1; }
}
.menu-icon span {
transition: all 0.3s ease;
transform-origin: center;
}
.menu-icon.active span:nth-child(1) {
transform: translateY(6px) rotate(45deg);
}
.menu-icon.active span:nth-child(2) {
opacity: 0;
}
.menu-icon.active span:nth-child(3) {
transform: translateY(-6px) rotate(-45deg);
}
.mobile-menu {
transform: translateY(-100%);
transition: transform 0.3s ease;
}
.mobile-menu.active {
transform: translateY(0);
}
.subscription-box {
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
transition: box-shadow 0.3s ease;
}
.subscription-box:hover {
box-shadow: 0 12px 48px rgba(0, 0, 0, 0.12);
}
.subscribe-btn {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.subscribe-btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
transition: left 0.5s;
}
.subscribe-btn:hover::before {
left: 100%;
}
.subscribe-btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 16px rgba(102, 126, 234, 0.4);
}
.substack-logo {
width: 24px;
height: 24px;
fill: #ff6719;
transition: transform 0.3s ease;
}
.substack-logo:hover {
transform: scale(1.1);
}
input:focus {
outline: none;
box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
}
.fade-in {
animation: fadeIn 0.8s ease-out;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.blog-title {
background: linear-gradient(135deg, #1a1a1a 0%, #4a5568 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
</style>
</head>
<body class="min-h-screen flex flex-col">
<!-- Header -->
<header class="w-full px-4 sm:px-6 lg:px-8 py-6">
<div class="max-w-4xl mx-auto flex justify-between items-center">
<div class="flex items-center space-x-2">
<div class="gradient-bar"></div>
<h1 class="text-2xl font-bold text-gray-900">PromptHub</h1>
</div>
<button id="menu-toggle" class="menu-icon md:hidden p-2">
<span class="block w-5 h-0.5 bg-gray-800 mb-1"></span>
<span class="block w-5 h-0.5 bg-gray-800 mb-1"></span>
<span class="block w-5 h-0.5 bg-gray-800"></span>
</button>
<nav class="hidden md:flex space-x-8">
<a href="#" class="text-gray-700 hover:text-gray-900 transition-colors">Blog</a>
<a href="#" class="text-gray-700 hover:text-gray-900 transition-colors">About</a>
<a href="#" class="text-gray-700 hover:text-gray-900 transition-colors">Contact</a>
</nav>
</div>
</header>
<!-- Mobile Menu -->
<div id="mobile-menu" class="mobile-menu md:hidden fixed top-0 left-0 w-full bg-white shadow-lg z-50">
<div class="flex justify-end p-4">
<button id="close-menu" class="p-2">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
</svg>
</button>
</div>
<nav class="flex flex-col items-center space-y-4 py-8">
<a href="#" class="text-gray-700 text-lg">Blog</a>
<a href="#" class="text-gray-700 text-lg">About</a>
<a href="#" class="text-gray-700 text-lg">Contact</a>
</nav>
</div>
<!-- Main Content -->
<main class="flex-1 w-full px-4 sm:px-6 lg:px-8 py-8">
<div class="max-w-4xl mx-auto">
<div class="fade-in mb-12">
<h1 class="blog-title text-4xl md:text-5xl lg:text-6xl font-bold mb-4">PromptHub Blog</h1>
<p class="text-lg md:text-xl text-gray-600 max-w-2xl">Updates, tips, and tactics to help you get more out of your prompts</p>
</div>
<!-- Subscription Box -->
<div class="subscription-box fade-in bg-white border border-gray-200 rounded-lg p-6 md:p-8 max-w-md">
<h2 class="text-xl font-semibold text-gray-900 mb-4">Get the latest updates, directly in your inbox</h2>
<form id="subscription-form" class="space-y-4">
<div>
<label for="email" class="block text-sm font-medium text-gray-700 mb-2">Type your email:</label>
<input
type="email"
id="email"
name="email"
placeholder="your@email.com"
class="w-full px-4 py-3 border border-gray-300 rounded-md focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500 transition-colors"
required
>
</div>
<button type="submit" class="subscribe-btn w-full text-white py-3 rounded-md font-medium">
Subscribe
</button>
</form>
<p class="text-xs text-gray-500 mt-4">
By subscribing you agree to Substack's
<a href="#" class="text-gray-600 underline">Terms of Use</a>,
our <a href="#" class="text-gray-600 underline">Privacy Policy</a>
and our information <a href="#" class="text-gray-600 underline">collection notice</a>
</p>
<div class="flex justify-center mt-6">
<a href="https://substack.com" target="_blank" rel="noopener noreferrer" class="inline-block">
<svg class="substack-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M7.83 9.19L12 5.69L16.17 9.19C16.69 9.62 17 10.25 17 10.95V21H7V10.95C7 10.25 7.31 9.62 7.83 9.19ZM11 16H13V18H11V16ZM11 14H13V12H11V14ZM11 10H13V8H11V10Z"/>
</svg>
</a>
</div>
</div>
</div>
</main>
<script>
// Mobile menu toggle
const menuToggle = document.getElementById('menu-toggle');
const mobileMenu = document.getElementById('mobile-menu');
const closeMenu = document.getElementById('close-menu');
menuToggle.addEventListener('click', () => {
mobileMenu.classList.add('active');
document.body.style.overflow = 'hidden';
});
closeMenu.addEventListener('click', () => {
mobileMenu.classList.remove('active');
document.body.style.overflow = 'auto';
});
// Close menu when clicking outside
mobileMenu.addEventListener('click', (e) => {
if (e.target === mobileMenu) {
mobileMenu.classList.remove('active');
document.body.style.overflow = 'auto';
}
});
// Form submission
const form = document.getElementById('subscription-form');
form.addEventListener('submit', (e) => {
e.preventDefault();
const email = document.getElementById('email');
const button = form.querySelector('button[type="submit"]');
// Simple validation
if (!email.value || !email.validity.valid) {
email.style.borderColor = '#ef4444';
return;
}
// Show loading state
button.textContent = 'Subscribing...';
button.disabled = true;
// Simulate API call
setTimeout(() => {
button.textContent = 'Subscribed!';
button.style.background = 'linear-gradient(135deg, #48bb78 0%, #38a169 100%)';
email.value = '';
// Reset after 3 seconds
setTimeout(() => {
button.textContent = 'Subscribe';
button.disabled = false;
button.style.background = 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)';
}, 3000);
}, 1500);
});
// Add fade-in animation to elements
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
document.querySelectorAll('.fade-in').forEach(el => {
el.style.opacity = '0';
el.style.transform = 'translateY(20px)';
el.style.transition = 'opacity 0.8s ease, transform 0.8s ease';
observer.observe(el);
});
</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=Ai-ethic/template" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>