habits-log-example / index.html
44xClub's picture
Add 3 files
dec271c verified
Raw
History Blame Contribute Delete
21.5 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CLUB44 - Habit Tracker</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:wght@700&display=swap">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
body {
font-family: 'Montserrat', sans-serif;
background-color: #0a0a0a;
color: #ffffff;
-webkit-tap-highlight-color: transparent;
}
.habit-card {
transition: all 0.3s ease;
transform-origin: top;
}
.habit-card.expanded {
transform: scaleY(1.1);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}
.streak-flame {
animation: pulse 1.5s infinite alternate;
}
@keyframes pulse {
0% { opacity: 0.8; }
100% { opacity: 1; }
}
.progress-bar {
transition: width 0.5s ease;
}
.toggle-switch {
transition: all 0.3s ease;
}
.toggle-switch:active {
transform: scale(0.95);
}
</style>
</head>
<body class="max-w-md mx-auto relative overflow-hidden" style="height: 100vh;">
<!-- Main Content -->
<div class="container mx-auto px-4 py-6 h-full flex flex-col">
<!-- Header -->
<div class="flex justify-between items-center mb-6">
<div>
<h1 class="text-2xl font-bold text-white">Habit Logs</h1>
<p class="text-gray-400 text-sm">Today, June 12</p>
</div>
<div class="flex space-x-3">
<button class="bg-gray-800 p-2 rounded-full">
<i class="fas fa-filter text-gray-400"></i>
</button>
<button class="bg-gray-800 p-2 rounded-full">
<i class="fas fa-calendar text-gray-400"></i>
</button>
</div>
</div>
<!-- Streak Counter -->
<div class="bg-gradient-to-r from-indigo-900 to-purple-900 rounded-xl p-4 mb-6 flex items-center justify-between">
<div>
<p class="text-gray-300 text-sm">Current Streak</p>
<div class="flex items-center mt-1">
<div class="streak-flame text-yellow-400 mr-2">
<i class="fas fa-fire text-2xl"></i>
</div>
<h2 class="text-3xl font-bold">14 <span class="text-lg text-gray-300">days</span></h2>
</div>
</div>
<div class="text-right">
<p class="text-gray-300 text-sm">Best Streak</p>
<h2 class="text-3xl font-bold">27 <span class="text-lg text-gray-300">days</span></h2>
</div>
</div>
<!-- Habits List -->
<div class="flex-1 overflow-y-auto pb-20">
<!-- Habit Card 1 -->
<div class="habit-card bg-gray-900 rounded-xl p-4 mb-4 relative overflow-hidden">
<div class="flex justify-between items-center">
<div>
<h3 class="font-bold text-lg">Morning Routine</h3>
<p class="text-gray-400 text-sm">5:30 AM - 6:30 AM</p>
</div>
<div class="flex items-center">
<span class="text-yellow-400 text-sm font-bold mr-3">3/5</span>
<div class="relative">
<div class="toggle-switch w-12 h-6 bg-gray-700 rounded-full p-1 cursor-pointer">
<div class="w-4 h-4 bg-purple-500 rounded-full transition-transform duration-300 transform translate-x-6"></div>
</div>
</div>
</div>
</div>
<!-- Progress Bar -->
<div class="mt-3">
<div class="w-full bg-gray-800 rounded-full h-2">
<div class="progress-bar bg-gradient-to-r from-purple-500 to-indigo-500 h-2 rounded-full" style="width: 60%"></div>
</div>
</div>
<!-- Expanded Content (hidden by default) -->
<div class="mt-4 hidden">
<div class="flex justify-between text-sm mb-2">
<span class="text-gray-400">Started: May 29</span>
<span class="text-gray-400">Completion: 72%</span>
</div>
<div class="grid grid-cols-5 gap-2 mt-3">
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Mon</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Tue</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Wed</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Thu</p>
<i class="fas fa-times text-red-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Fri</p>
<i class="fas fa-times text-red-400"></i>
</div>
</div>
<div class="mt-4 flex space-x-2">
<button class="flex-1 bg-gray-800 text-gray-300 py-2 rounded-lg text-sm">Edit</button>
<button class="flex-1 bg-purple-600 text-white py-2 rounded-lg text-sm">Details</button>
</div>
</div>
</div>
<!-- Habit Card 2 -->
<div class="habit-card bg-gray-900 rounded-xl p-4 mb-4 relative overflow-hidden">
<div class="flex justify-between items-center">
<div>
<h3 class="font-bold text-lg">Gym Session</h3>
<p class="text-gray-400 text-sm">7:00 AM - 8:30 AM</p>
</div>
<div class="flex items-center">
<span class="text-yellow-400 text-sm font-bold mr-3">5/5</span>
<div class="relative">
<div class="toggle-switch w-12 h-6 bg-gray-700 rounded-full p-1 cursor-pointer">
<div class="w-4 h-4 bg-green-500 rounded-full transition-transform duration-300"></div>
</div>
</div>
</div>
</div>
<!-- Progress Bar -->
<div class="mt-3">
<div class="w-full bg-gray-800 rounded-full h-2">
<div class="progress-bar bg-gradient-to-r from-green-500 to-teal-500 h-2 rounded-full" style="width: 100%"></div>
</div>
</div>
<!-- Expanded Content (hidden by default) -->
<div class="mt-4 hidden">
<div class="flex justify-between text-sm mb-2">
<span class="text-gray-400">Started: June 1</span>
<span class="text-gray-400">Completion: 100%</span>
</div>
<div class="grid grid-cols-5 gap-2 mt-3">
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Mon</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Tue</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Wed</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Thu</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Fri</p>
<i class="fas fa-check text-green-400"></i>
</div>
</div>
<div class="mt-4 flex space-x-2">
<button class="flex-1 bg-gray-800 text-gray-300 py-2 rounded-lg text-sm">Edit</button>
<button class="flex-1 bg-green-600 text-white py-2 rounded-lg text-sm">Details</button>
</div>
</div>
</div>
<!-- Habit Card 3 -->
<div class="habit-card bg-gray-900 rounded-xl p-4 mb-4 relative overflow-hidden">
<div class="flex justify-between items-center">
<div>
<h3 class="font-bold text-lg">Cold Shower</h3>
<p class="text-gray-400 text-sm">After workout</p>
</div>
<div class="flex items-center">
<span class="text-yellow-400 text-sm font-bold mr-3">2/5</span>
<div class="relative">
<div class="toggle-switch w-12 h-6 bg-gray-700 rounded-full p-1 cursor-pointer">
<div class="w-4 h-4 bg-blue-500 rounded-full transition-transform duration-300 transform translate-x-6"></div>
</div>
</div>
</div>
</div>
<!-- Progress Bar -->
<div class="mt-3">
<div class="w-full bg-gray-800 rounded-full h-2">
<div class="progress-bar bg-gradient-to-r from-blue-500 to-cyan-500 h-2 rounded-full" style="width: 40%"></div>
</div>
</div>
<!-- Expanded Content (hidden by default) -->
<div class="mt-4 hidden">
<div class="flex justify-between text-sm mb-2">
<span class="text-gray-400">Started: June 5</span>
<span class="text-gray-400">Completion: 35%</span>
</div>
<div class="grid grid-cols-5 gap-2 mt-3">
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Mon</p>
<i class="fas fa-times text-red-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Tue</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Wed</p>
<i class="fas fa-times text-red-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Thu</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Fri</p>
<i class="fas fa-times text-red-400"></i>
</div>
</div>
<div class="mt-4 flex space-x-2">
<button class="flex-1 bg-gray-800 text-gray-300 py-2 rounded-lg text-sm">Edit</button>
<button class="flex-1 bg-blue-600 text-white py-2 rounded-lg text-sm">Details</button>
</div>
</div>
</div>
<!-- Habit Card 4 -->
<div class="habit-card bg-gray-900 rounded-xl p-4 mb-4 relative overflow-hidden">
<div class="flex justify-between items-center">
<div>
<h3 class="font-bold text-lg">Reading</h3>
<p class="text-gray-400 text-sm">30 min before bed</p>
</div>
<div class="flex items-center">
<span class="text-yellow-400 text-sm font-bold mr-3">4/5</span>
<div class="relative">
<div class="toggle-switch w-12 h-6 bg-gray-700 rounded-full p-1 cursor-pointer">
<div class="w-4 h-4 bg-orange-500 rounded-full transition-transform duration-300 transform translate-x-0"></div>
</div>
</div>
</div>
</div>
<!-- Progress Bar -->
<div class="mt-3">
<div class="w-full bg-gray-800 rounded-full h-2">
<div class="progress-bar bg-gradient-to-r from-orange-500 to-amber-500 h-2 rounded-full" style="width: 80%"></div>
</div>
</div>
<!-- Expanded Content (hidden by default) -->
<div class="mt-4 hidden">
<div class="flex justify-between text-sm mb-2">
<span class="text-gray-400">Started: May 20</span>
<span class="text-gray-400">Completion: 85%</span>
</div>
<div class="grid grid-cols-5 gap-2 mt-3">
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Mon</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Tue</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Wed</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Thu</p>
<i class="fas fa-check text-green-400"></i>
</div>
<div class="bg-gray-800 rounded p-2 text-center">
<p class="text-xs text-gray-400">Fri</p>
<i class="fas fa-times text-red-400"></i>
</div>
</div>
<div class="mt-4 flex space-x-2">
<button class="flex-1 bg-gray-800 text-gray-300 py-2 rounded-lg text-sm">Edit</button>
<button class="flex-1 bg-orange-600 text-white py-2 rounded-lg text-sm">Details</button>
</div>
</div>
</div>
</div>
<!-- Add New Habit Button -->
<div class="absolute bottom-24 right-6">
<button id="addHabitBtn" class="bg-purple-600 w-14 h-14 rounded-full flex items-center justify-center shadow-lg hover:bg-purple-700 transition-colors">
<i class="fas fa-plus text-white text-xl"></i>
</button>
</div>
</div>
<!-- Bottom Navigation -->
<div class="absolute bottom-0 left-0 right-0 bg-gray-900 border-t border-gray-800 flex justify-around py-3">
<a href="#" class="text-purple-500 flex flex-col items-center">
<i class="fas fa-home text-xl"></i>
<span class="text-xs mt-1">Dashboard</span>
</a>
<a href="#" class="text-white flex flex-col items-center">
<i class="fas fa-list-check text-xl"></i>
<span class="text-xs mt-1">Logs</span>
</a>
<a href="#" class="text-gray-500 flex flex-col items-center">
<i class="fas fa-vault text-xl"></i>
<span class="text-xs mt-1">Vault</span>
</a>
<a href="#" class="text-gray-500 flex flex-col items-center">
<i class="fas fa-book text-xl"></i>
<span class="text-xs mt-1">Journal</span>
</a>
<a href="#" class="text-gray-500 flex flex-col items-center">
<i class="fas fa-user text-xl"></i>
<span class="text-xs mt-1">Profile</span>
</a>
</div>
<script>
// Toggle habit card expansion
document.querySelectorAll('.habit-card').forEach(card => {
card.addEventListener('click', function(e) {
// Don't toggle if clicking on a button inside the card
if (e.target.tagName === 'BUTTON' || e.target.closest('button')) {
return;
}
const content = this.querySelector('.hidden');
this.classList.toggle('expanded');
if (content.classList.contains('hidden')) {
content.classList.remove('hidden');
content.classList.add('block');
} else {
content.classList.remove('block');
content.classList.add('hidden');
}
});
});
// Toggle switch functionality
document.querySelectorAll('.toggle-switch').forEach(switchEl => {
switchEl.addEventListener('click', function(e) {
e.stopPropagation();
const knob = this.querySelector('div');
if (knob.classList.contains('translate-x-6')) {
knob.classList.remove('translate-x-6');
knob.classList.add('translate-x-0');
knob.classList.remove('bg-purple-500', 'bg-green-500', 'bg-blue-500', 'bg-orange-500');
knob.classList.add('bg-gray-500');
} else {
knob.classList.remove('translate-x-0');
knob.classList.add('translate-x-6');
knob.classList.remove('bg-gray-500');
// Determine which color to use based on parent card
const card = this.closest('.habit-card');
if (card.querySelector('.bg-purple-600')) {
knob.classList.add('bg-purple-500');
} else if (card.querySelector('.bg-green-600')) {
knob.classList.add('bg-green-500');
} else if (card.querySelector('.bg-blue-600')) {
knob.classList.add('bg-blue-500');
} else {
knob.classList.add('bg-orange-500');
}
}
});
});
// Add habit button
document.getElementById('addHabitBtn').addEventListener('click', function() {
alert('Add new habit functionality would go here');
});
</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=44xClub/habits-log-example" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>