Loaders Component
A responsive Material Design loader component with triadic color scheme, suitable for a portfolio, featuring dark theme support and multiple interactive elements.
HTML Code
<div class="flex flex-col items-center justify-center min-h-screen bg-gray-100 dark:bg-gray-900 p-4">
<!-- Component: Complex Material Design Loader for Portfolio -->
<div class="w-full max-w-2xl bg-white dark:bg-gray-800 rounded-lg shadow-xl p-8 space-y-8 animate-fade-in">
<!-- Header/Title Section -->
<div class="flex items-center justify-between pb-4 border-b border-gray-200 dark:border-gray-700">
<h2 class="text-3xl font-extrabold text-blue-600 dark:text-blue-400 capitalize">Portfolio Showcase Loading</h2>
<div class="flex space-x-2">
<div class="w-8 h-8 bg-purple-500 dark:bg-purple-600 rounded-full animate-pulse"></div>
<div class="w-8 h-8 bg-green-500 dark:bg-green-600 rounded-full animate-pulse delay-75"></div>
</div>
</div>
<!-- Project/Item Loading Cards (Grid Layout) -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Loading Card 1 -->
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-6 shadow-md animate-pulse-slow">
<div class="w-full h-40 bg-gray-200 dark:bg-gray-600 rounded-md mb-4"></div>
<div class="h-6 bg-gray-200 dark:bg-gray-600 rounded w-3/4 mb-2"></div>
<div class="h-4 bg-gray-200 dark:bg-gray-600 rounded w-1/2"></div>
</div>
<!-- Loading Card 2 -->
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-6 shadow-md animate-pulse-slow delay-150">
<div class="w-full h-40 bg-gray-200 dark:bg-gray-600 rounded-md mb-4"></div>
<div class="h-6 bg-gray-200 dark:bg-gray-600 rounded w-3/4 mb-2"></div>
<div class="h-4 bg-gray-200 dark:bg-gray-600 rounded w-1/2"></div>
</div>
<!-- Loading Card 3 -->
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-6 shadow-md animate-pulse-slow delay-300">
<div class="w-full h-40 bg-gray-200 dark:bg-gray-600 rounded-md mb-4"></div>
<div class="h-6 bg-gray-200 dark:bg-gray-600 rounded w-3/4 mb-2"></div>
<div class="h-4 bg-gray-200 dark:bg-gray-600 rounded w-1/2"></div>
</div>
<!-- Loading Card 4 (for larger screens) -->
<div class="hidden lg:block bg-gray-50 dark:bg-gray-700 rounded-lg p-6 shadow-md animate-pulse-slow delay-[450ms]">
<div class="w-full h-40 bg-gray-200 dark:bg-gray-600 rounded-md mb-4"></div>
<div class="h-6 bg-gray-200 dark:bg-gray-600 rounded w-3/4 mb-2"></div>
<div class="h-4 bg-gray-200 dark:bg-gray-600 rounded w-1/2"></div>
</div>
</div>
<!-- Progress Bar Section -->
<div class="space-y-4">
<div class="h-4 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden">
<div class="h-full w-2/3 bg-gradient-to-r from-blue-500 to-green-400 dark:from-blue-600 dark:to-green-500 rounded-full animate-progress-fill"></div>
</div>
<p class="text-center text-gray-600 dark:text-gray-400 text-sm">Loading portfolio items... Please wait.</p>
</div>
<!-- Call to Action / Interactive Elements (Placeholder) -->
<div class="flex flex-col sm:flex-row items-center justify-center space-y-4 sm:space-y-0 sm:space-x-4">
<button class="w-full sm:w-auto px-8 py-3 bg-fuchsia-500 dark:bg-fuchsia-600 text-white font-semibold rounded-full shadow-lg hover:shadow-xl transition duration-300 ease-in-out transform hover:-translate-y-1 animate-bounce-slow">
<div class="flex items-center justify-center space-x-2">
<svg class="w-5 h-5 animate-spin" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
</svg>
<span>Processing Data</span>
</div>
</button>
<button class="w-full sm:w-auto px-8 py-3 bg-gray-200 dark:bg-gray-700 text-gray-800 dark:text-gray-200 font-semibold rounded-full shadow-lg hover:shadow-xl transition duration-300 ease-in-out transform hover:-translate-y-1">
<span class="animate-pulse">Fetching Assets</span>
</button>
</div>
</div>
<!-- Tailwind CSS Customizations (Animations) -->
<style>
@keyframes fade-in {
from { opacity: 0; transform: translateY(-20px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in {
animation: fade-in 0.8s ease-out forwards;
}
@keyframes pulse-slow {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.animate-pulse-slow {
animation: pulse-slow 2s infinite ease-in-out;
}
@keyframes progress-fill {
0% { width: 0%; }
100% { width: 66.66%; } /* Simulating 2/3 progress */
}
.animate-progress-fill {
animation: progress-fill 1.5s ease-out forwards;
}
@keyframes bounce-slow {
0%, 100% { transform: translateY(0); }
25% { transform: translateY(-5px); }
50% { transform: translateY(0); }
75% { transform: translateY(-2px); }
100% { transform: translateY(0); }
}
.animate-bounce-slow {
animation: bounce-slow 4s infinite ease-in-out;
}
</style>
</div>
Related Components
Retro_Vintage_Loader_Component
A simple, responsive retro/vintage-themed loader component with sepia/brown tones, suitable for event and conference websites, featuring dark mode support.